/*
 * Perfect ERP design system.
 *
 * This file intentionally styles public Frappe Desk components without
 * replacing templates or patching framework assets. Keeping every selector
 * behind .perfect-desk-theme makes the customization removable and safer
 * across ERPNext / Frappe version-15 updates.
 */

body.perfect-desk-theme {
  --perfect-navy: var(--perfect-config-sidebar, #1f286d);
  --perfect-navy-2: #2b3789;
  --perfect-ink: #263842;
  --perfect-ink-2: #3d525d;
  --perfect-primary: var(--perfect-config-primary, #2b398f);
  --perfect-primary-hover: color-mix(in srgb, var(--perfect-primary) 78%, #000000);
  --perfect-primary-soft: color-mix(in srgb, var(--perfect-primary) 9%, #ffffff);
  --perfect-accent: var(--perfect-config-accent, #5968c9);
  --perfect-teal: #455259;
  --perfect-teal-soft: #edf3f5;
  --perfect-gold: #c39438;
  --perfect-success: #16825d;
  --perfect-warning: #b7791f;
  --perfect-danger: #c83b45;
  --perfect-danger-soft: #fcecef;
  --perfect-green: #16825d;
  --perfect-blue-soft: #eef0fb;
  --perfect-surface: #ffffff;
  --perfect-surface-soft: #f9fbfc;
  --perfect-canvas: #f4f6f9;
  --perfect-line: #dce3e8;
  --perfect-input-line: #ccd6dc;
  --perfect-input-readonly: #f7f9fa;
  --perfect-muted: #647782;
  --perfect-radius-sm: 8px;
  --perfect-radius: 12px;
  --perfect-radius-lg: 16px;
  --perfect-shadow-sm: 0 2px 8px rgba(24, 36, 111, 0.055);
  --perfect-shadow: 0 10px 30px rgba(24, 36, 111, 0.08);
  --perfect-shadow-lg: 0 20px 48px rgba(24, 36, 111, 0.14);

  background: var(--perfect-canvas);
  color: var(--perfect-ink);
}

body.perfect-desk-theme .main-section,
body.perfect-desk-theme .page-container,
body.perfect-desk-theme .layout-main-section,
body.perfect-desk-theme .layout-main-section-wrapper,
body.perfect-desk-theme .workspace-container {
  background: var(--perfect-canvas);
}

/* Top navigation */
body.perfect-desk-theme .navbar {
  min-height: 64px;
  background: var(--perfect-surface) !important;
  border-bottom: 1px solid var(--perfect-line);
  box-shadow: 0 1px 0 rgba(24, 36, 111, 0.03);
}

body.perfect-desk-theme .navbar .container,
body.perfect-desk-theme .navbar .container-fluid {
  min-height: 64px;
}

body.perfect-desk-theme .navbar .navbar-brand,
body.perfect-desk-theme .navbar .navbar-home {
  color: var(--perfect-ink) !important;
  font-weight: 800;
}

body.perfect-desk-theme .navbar .search-bar .awesomplete input,
body.perfect-desk-theme .navbar .search-bar input,
body.perfect-desk-theme .navbar .form-control {
  min-height: 38px;
  background: #fafbfc;
  border: 1px solid var(--perfect-line);
  border-radius: 10px;
  box-shadow: none;
}

body.perfect-desk-theme .navbar .search-bar input:focus,
body.perfect-desk-theme .navbar .form-control:focus {
  background: var(--perfect-surface);
  border-color: rgba(38, 53, 138, 0.62);
  box-shadow: 0 0 0 3px rgba(38, 53, 138, 0.11);
}

/* Page header and actions */
body.perfect-desk-theme .page-head {
  background: var(--perfect-canvas);
  border-bottom: 1px solid transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  overflow: visible !important;
  z-index: 20;
}

/* Chromium can clip the Actions/Menu dropdown at the sticky page-head edge
   when the header or one of its flex wrappers becomes a composited layer. */
body.perfect-desk-theme .page-head .container,
body.perfect-desk-theme .page-head .page-head-content,
body.perfect-desk-theme .page-head .page-actions,
body.perfect-desk-theme .page-head .standard-actions,
body.perfect-desk-theme .page-head .actions-btn-group,
body.perfect-desk-theme .page-head .menu-btn-group {
  overflow: visible !important;
}

body.perfect-desk-theme .page-head .actions-btn-group,
body.perfect-desk-theme .page-head .menu-btn-group {
  position: relative;
}

body.perfect-desk-theme .page-head .actions-btn-group.show,
body.perfect-desk-theme .page-head .menu-btn-group.show {
  z-index: 21;
}

body.perfect-desk-theme .page-head .dropdown-menu {
  z-index: 1070;
  max-height: min(70vh, 500px);
}

body.perfect-desk-theme .page-title .title-text,
body.perfect-desk-theme .page-title h3,
body.perfect-desk-theme .workspace-title {
  color: var(--perfect-ink);
  font-weight: 800;
  letter-spacing: 0;
}

body.perfect-desk-theme .breadcrumb-container,
body.perfect-desk-theme .breadcrumb-container a,
body.perfect-desk-theme .page-head .sub-heading {
  color: var(--perfect-muted);
}

body.perfect-desk-theme .btn {
  min-height: 34px;
  border-radius: var(--perfect-radius-sm);
  font-weight: 700;
  box-shadow: none !important;
}

body.perfect-desk-theme .btn-primary,
body.perfect-desk-theme .btn-primary-dark {
  color: #fff !important;
  background: var(--perfect-primary) !important;
  border-color: var(--perfect-primary) !important;
}

body.perfect-desk-theme .btn-primary:hover,
body.perfect-desk-theme .btn-primary:focus,
body.perfect-desk-theme .btn-primary-dark:hover,
body.perfect-desk-theme .btn-primary-dark:focus {
  background: var(--perfect-primary-hover) !important;
  border-color: var(--perfect-primary-hover) !important;
}

body.perfect-desk-theme .btn-default,
body.perfect-desk-theme .btn-secondary {
  color: var(--perfect-ink);
  background: var(--perfect-surface);
  border-color: var(--perfect-line);
}

/* Workspace sidebar: visual treatment only; Frappe keeps ownership of data,
   visibility, order, collapse state, and navigation behavior. */
body.perfect-desk-theme .desk-sidebar,
body.perfect-desk-theme .standard-sidebar {
  background: var(--perfect-navy);
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--perfect-navy) 92%, #ffffff) 0%,
    color-mix(in srgb, var(--perfect-navy) 78%, #000000) 100%
  );
  border: 0;
  border-radius: var(--perfect-radius-lg);
  padding: 12px 8px;
  color: #fff;
  box-shadow: var(--perfect-shadow);
}

body.perfect-desk-theme .desk-sidebar .sidebar-label,
body.perfect-desk-theme .standard-sidebar .sidebar-label,
body.perfect-desk-theme .desk-sidebar .sidebar-item-label,
body.perfect-desk-theme .standard-sidebar .sidebar-item-label,
body.perfect-desk-theme .desk-sidebar .item-anchor,
body.perfect-desk-theme .standard-sidebar .item-anchor {
  color: rgba(255, 255, 255, 0.78) !important;
}

body.perfect-desk-theme .desk-sidebar .sidebar-item-container,
body.perfect-desk-theme .standard-sidebar .sidebar-item-container,
body.perfect-desk-theme .desk-sidebar .desk-sidebar-item,
body.perfect-desk-theme .standard-sidebar .desk-sidebar-item {
  border-radius: 9px;
}

body.perfect-desk-theme .desk-sidebar .sidebar-item-container:hover,
body.perfect-desk-theme .standard-sidebar .sidebar-item-container:hover,
body.perfect-desk-theme .desk-sidebar .desk-sidebar-item:hover,
body.perfect-desk-theme .standard-sidebar .desk-sidebar-item:hover {
  background: rgba(255, 255, 255, 0.075);
}

body.perfect-desk-theme .desk-sidebar .selected,
body.perfect-desk-theme .standard-sidebar .selected,
body.perfect-desk-theme .desk-sidebar .active,
body.perfect-desk-theme .standard-sidebar .active {
  background: rgba(255, 255, 255, 0.13) !important;
  box-shadow: inset 3px 0 0 var(--perfect-accent);
}

[dir="rtl"] body.perfect-desk-theme .desk-sidebar .selected,
[dir="rtl"] body.perfect-desk-theme .standard-sidebar .selected,
[dir="rtl"] body.perfect-desk-theme .desk-sidebar .active,
[dir="rtl"] body.perfect-desk-theme .standard-sidebar .active {
  box-shadow: inset -3px 0 0 var(--perfect-accent);
}

body.perfect-desk-theme .desk-sidebar svg,
body.perfect-desk-theme .standard-sidebar svg {
  color: rgba(255, 255, 255, 0.74) !important;
  stroke: currentColor;
}

body.perfect-desk-theme .desk-sidebar .selected .sidebar-item-label,
body.perfect-desk-theme .standard-sidebar .selected .sidebar-item-label,
body.perfect-desk-theme .desk-sidebar .active .sidebar-item-label,
body.perfect-desk-theme .standard-sidebar .active .sidebar-item-label {
  color: #fff !important;
  font-weight: 800;
}

/* Workspace cards and blocks */
body.perfect-desk-theme .widget,
body.perfect-desk-theme .widget-group .widget,
body.perfect-desk-theme .widget.number-widget-box,
body.perfect-desk-theme .widget.dashboard-widget-box,
body.perfect-desk-theme .shortcut-widget-box,
body.perfect-desk-theme .links-widget-box,
body.perfect-desk-theme .quick-list-widget-box {
  background: var(--perfect-surface);
  border: 1px solid var(--perfect-line);
  border-radius: var(--perfect-radius);
  box-shadow: none;
}

body.perfect-desk-theme .widget:hover,
body.perfect-desk-theme .shortcut-widget-box:hover {
  border-color: #c8d3dc;
  box-shadow: var(--perfect-shadow);
}

body.perfect-desk-theme .widget .widget-head,
body.perfect-desk-theme .widget .widget-title,
body.perfect-desk-theme .widget .widget-title-text,
body.perfect-desk-theme .widget .number {
  color: var(--perfect-ink);
}

body.perfect-desk-theme .widget .widget-title,
body.perfect-desk-theme .widget .widget-title-text {
  font-weight: 800;
}

body.perfect-desk-theme .widget.number-widget-box {
  min-height: 116px;
  overflow: hidden;
  position: relative;
}

body.perfect-desk-theme .widget.number-widget-box::before {
  content: "";
  position: absolute;
  inset-inline-start: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: linear-gradient(180deg, var(--perfect-primary), #5264c7);
}

body.perfect-desk-theme .widget.number-widget-box .number {
  font-size: clamp(1.45rem, 2vw, 2rem);
  font-weight: 800;
}

body.perfect-desk-theme .shortcut-widget-box {
  min-height: 72px;
}

body.perfect-desk-theme .shortcut-widget-box .widget-title,
body.perfect-desk-theme .shortcut-widget-box .widget-label {
  font-weight: 750;
}

body.perfect-desk-theme .widget .chart-container,
body.perfect-desk-theme .widget .frappe-chart {
  background: transparent;
}

/* Forms: improve hierarchy without changing DocType layouts or field rules. */
body.perfect-desk-theme .form-layout .form-page,
body.perfect-desk-theme .form-layout .form-section,
body.perfect-desk-theme .form-layout .section-body,
body.perfect-desk-theme .form-dashboard-section,
body.perfect-desk-theme .form-sidebar .sidebar-menu {
  background: var(--perfect-surface);
}

body.perfect-desk-theme .form-layout .form-section,
body.perfect-desk-theme .form-dashboard-section {
  margin-bottom: 14px;
  border: 1px solid var(--perfect-line);
  border-radius: var(--perfect-radius);
  box-shadow: none;
}

/* Link controls render their Awesomplete results outside the field/section.
   Keep sections open, but never create a stacking context here: Frappe opens
   table rows inside the section and deliberately places its freeze layer below
   that row. A z-index on the section would trap the row below the layer. */
body.perfect-desk-theme .form-layout .form-section {
  overflow: visible;
}

body.perfect-desk-theme
  .form-layout
  .form-section
  .awesomplete
  > [role="listbox"] {
  z-index: 30;
}

body.perfect-desk-theme .form-dashboard-section {
  overflow: hidden;
}

body.perfect-desk-theme .form-layout .section-head {
  color: var(--perfect-ink);
  font-size: 14px;
  font-weight: 800;
}

body.perfect-desk-theme .control-label,
body.perfect-desk-theme .grid-heading-row,
body.perfect-desk-theme .form-group label {
  color: var(--perfect-ink);
  font-weight: 700;
}

body.perfect-desk-theme .form-control,
body.perfect-desk-theme
  .input-with-feedback:not([type="checkbox"]):not([type="radio"]),
body.perfect-desk-theme .awesomplete > input,
body.perfect-desk-theme .ql-container,
body.perfect-desk-theme .like-disabled-input {
  min-height: 38px;
  background: var(--perfect-surface);
  border: 1px solid var(--perfect-input-line);
  border-radius: var(--perfect-radius-sm);
  box-shadow: none;
}

/* Check and Radio controls keep Frappe's native dimensions and state image.
   Applying the text-input background/min-height here hides the checked state
   and stretches a checkbox into a narrow vertical pill. */
body.perfect-desk-theme
  .frappe-control[data-fieldtype="Check"]
  input[type="checkbox"] {
  min-height: var(--checkbox-size);
  width: var(--checkbox-size) !important;
  height: var(--checkbox-size);
  padding: 0;
  background-color: var(--control-bg);
  border: 1px solid var(--gray-500);
  border-radius: 4px;
  box-shadow: none;
  cursor: pointer;
}

body.perfect-desk-theme
  .frappe-control[data-fieldtype="Check"]
  input[type="checkbox"]:checked {
  background-color: var(--perfect-primary);
  border: 0;
}

body.perfect-desk-theme
  .frappe-control[data-fieldtype="Check"]
  input[type="checkbox"]:focus {
  box-shadow: var(--checkbox-focus-shadow);
}

/* Frappe renders saved form values as .like-disabled-input instead of a real
   input. Give read-only values the same visual field boundary as edit mode so
   employee details remain easy to scan without changing field behaviour. */
body.perfect-desk-theme .form-layout .control-value.like-disabled-input {
  display: block;
  width: 100%;
  padding: 7px 10px;
  background: var(--perfect-input-readonly);
  color: var(--perfect-ink);
  line-height: 22px;
  overflow-wrap: anywhere;
}

body.perfect-desk-theme .form-layout .form-control:disabled,
body.perfect-desk-theme .form-layout .form-control[readonly],
body.perfect-desk-theme
  .form-layout
  .input-with-feedback:not([type="checkbox"]):not([type="radio"]):disabled,
body.perfect-desk-theme
  .form-layout
  .input-with-feedback:not([type="checkbox"]):not([type="radio"])[readonly] {
  background: var(--perfect-input-readonly);
  color: var(--perfect-ink);
  opacity: 1;
}

body.perfect-desk-theme .form-control:focus,
body.perfect-desk-theme
  .input-with-feedback:not([type="checkbox"]):not([type="radio"]):focus,
body.perfect-desk-theme .awesomplete > input:focus {
  border-color: rgba(38, 53, 138, 0.66);
  box-shadow: 0 0 0 3px rgba(38, 53, 138, 0.11);
}

body.perfect-desk-theme .form-control::placeholder,
body.perfect-desk-theme
  .input-with-feedback:not([type="checkbox"]):not([type="radio"])::placeholder {
  color: #98a2b3;
}

/* Lists, query reports and data tables */
body.perfect-desk-theme .frappe-list,
body.perfect-desk-theme .result,
body.perfect-desk-theme .report-wrapper,
body.perfect-desk-theme .datatable,
body.perfect-desk-theme .dt-scrollable {
  background: var(--perfect-surface);
}

body.perfect-desk-theme .frappe-list,
body.perfect-desk-theme .report-wrapper,
body.perfect-desk-theme .datatable {
  border: 1px solid var(--perfect-line);
  border-radius: var(--perfect-radius);
  overflow: hidden;
}

body.perfect-desk-theme .list-row-head,
body.perfect-desk-theme .dt-header .dt-row,
body.perfect-desk-theme .dt-row-header {
  background: #eef1f8;
  color: var(--perfect-ink);
  font-weight: 800;
}

body.perfect-desk-theme .list-row-container,
body.perfect-desk-theme .dt-row {
  border-color: var(--perfect-line);
}

body.perfect-desk-theme .list-row-container:hover,
body.perfect-desk-theme .dt-row:hover .dt-cell {
  background: #f5f6fc;
}

body.perfect-desk-theme .indicator-pill,
body.perfect-desk-theme .indicator-pill-right,
body.perfect-desk-theme .list-row .indicator-pill {
  border-radius: 999px;
  font-weight: 700;
}

body.perfect-desk-theme .indicator-pill.green,
body.perfect-desk-theme .indicator-pill-right.green {
  color: #067647;
  background: #ecfdf3;
}

body.perfect-desk-theme .indicator-pill.orange,
body.perfect-desk-theme .indicator-pill-right.orange,
body.perfect-desk-theme .indicator-pill.yellow,
body.perfect-desk-theme .indicator-pill-right.yellow {
  color: #b54708;
  background: #fffaeb;
}

body.perfect-desk-theme .indicator-pill.red,
body.perfect-desk-theme .indicator-pill-right.red {
  color: #b42318;
  background: var(--perfect-danger-soft);
}

/* Dialogs, menus, and editable table rows.
   Frappe's grid editor is an inline form, not a Bootstrap modal. It freezes
   the rest of the page with #freeze.grid-form while the active grid row must
   remain immediately above it and continue receiving mouse/keyboard input. */
body.perfect-desk-theme #freeze.grid-form {
  z-index: 1020;
}

body.perfect-desk-theme .grid-row-open {
  position: relative;
  z-index: 1021;
}

body.perfect-desk-theme .modal-content,
body.perfect-desk-theme .dropdown-menu,
body.perfect-desk-theme .popover {
  border: 1px solid var(--perfect-line);
  border-radius: var(--perfect-radius);
  box-shadow: var(--perfect-shadow-lg);
}

body.perfect-desk-theme .modal-header,
body.perfect-desk-theme .modal-footer {
  border-color: var(--perfect-line);
}

body.perfect-desk-theme .modal-title {
  color: var(--perfect-ink);
  font-weight: 800;
}

/* RTL polish */
[dir="rtl"] body.perfect-desk-theme .page-title,
[dir="rtl"] body.perfect-desk-theme .workspace-header,
[dir="rtl"] body.perfect-desk-theme .widget,
[dir="rtl"] body.perfect-desk-theme .form-layout,
[dir="rtl"] body.perfect-desk-theme .frappe-list,
[dir="rtl"] body.perfect-desk-theme .report-wrapper {
  text-align: right;
}

[dir="rtl"] body.perfect-desk-theme .form-control,
[dir="rtl"]
  body.perfect-desk-theme
  .input-with-feedback:not([type="checkbox"]):not([type="radio"]),
[dir="rtl"] body.perfect-desk-theme .control-input,
[dir="rtl"] body.perfect-desk-theme .ql-editor {
  direction: rtl;
  text-align: right;
}

/* Keep the standard compact sidebar and readable card grid on smaller screens. */
@media (max-width: 991.98px) {
  body.perfect-desk-theme .desk-sidebar,
  body.perfect-desk-theme .standard-sidebar {
    border-radius: 0;
    box-shadow: none;
  }

  body.perfect-desk-theme .widget.number-widget-box {
    min-height: 102px;
  }
}

@media (max-width: 767.98px) {
  body.perfect-desk-theme .page-head {
    backdrop-filter: none;
  }

  body.perfect-desk-theme .form-layout .form-section,
  body.perfect-desk-theme .form-dashboard-section,
  body.perfect-desk-theme .frappe-list,
  body.perfect-desk-theme .report-wrapper,
  body.perfect-desk-theme .datatable {
    border-radius: 10px;
  }
}

/* -------------------------------------------------------------------------
 * Modern Enterprise Workspace cards (visual layer only)
 * ---------------------------------------------------------------------- */

body.perfect-desk-theme[data-perfect-workspace="1"] {
  --perfect-card-radius: 14px;
  --perfect-card-border: #e1e7ed;
  --perfect-card-shadow: 0 3px 14px rgba(20, 32, 72, 0.06);
  --perfect-card-shadow-hover: 0 10px 26px rgba(20, 32, 72, 0.1);
}

/* Frappe draws dividers between Workspace blocks. They read as heavy black
   edges in RTL, so the card border itself becomes the only separator. */
body.perfect-desk-theme[data-perfect-workspace="1"]
  .codex-editor__redactor
  .ce-block
  .divider {
  display: none;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .codex-editor__redactor {
  row-gap: 2px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .codex-editor__redactor
  > .ce-block {
  min-inline-size: 0;
  padding-inline: 7px;
}

body.perfect-desk-theme[data-perfect-workspace="1"] .widget-group {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card {
  --perfect-card-accent: var(--perfect-primary);
  --perfect-card-accent-soft: color-mix(
    in srgb,
    var(--perfect-card-accent) 10%,
    #ffffff
  );
  background:
    linear-gradient(
      145deg,
      var(--perfect-card-accent-soft) 0,
      #ffffff 38%,
      #ffffff 100%
    );
  border: 1px solid var(--perfect-card-border);
  border-radius: var(--perfect-card-radius);
  box-shadow: var(--perfect-card-shadow);
  color: var(--perfect-ink);
  isolation: isolate;
  overflow: hidden;
  position: relative;
  transition:
    border-color 160ms ease,
    box-shadow 160ms ease,
    transform 160ms ease;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card[data-perfect-card-tone="success"] {
  --perfect-card-accent: var(--perfect-success);
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card[data-perfect-card-tone="warning"] {
  --perfect-card-accent: var(--perfect-warning);
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card[data-perfect-card-tone="danger"] {
  --perfect-card-accent: var(--perfect-danger);
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card[data-perfect-card-tone="neutral"] {
  --perfect-card-accent: #647782;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card:hover {
  border-color: color-mix(in srgb, var(--perfect-card-accent) 22%, #dce3e8);
  box-shadow: var(--perfect-card-shadow-hover);
  transform: translateY(-2px);
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card:has(a:focus-visible),
body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card[role="link"]:focus-visible,
body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card
  a:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--perfect-primary) 28%, transparent);
  outline-offset: 2px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card
  .widget-head {
  align-items: center;
  display: grid;
  gap: 10px;
  grid-template-columns: auto minmax(0, 1fr) auto;
  inline-size: 100%;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card
  .widget-label,
body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card
  .widget-title,
body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card
  .widget-title
  .ellipsis {
  min-inline-size: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card
  .perfect-card-icon {
  align-items: center;
  align-self: start;
  background: var(--perfect-card-accent-soft);
  border: 1px solid color-mix(in srgb, var(--perfect-card-accent) 13%, #ffffff);
  border-radius: 11px;
  color: var(--perfect-card-accent);
  display: inline-flex;
  flex: 0 0 auto;
  block-size: 40px;
  inline-size: 40px;
  justify-content: center;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .perfect-enterprise-card
  .perfect-card-icon
  svg {
  block-size: 20px;
  fill: none;
  inline-size: 20px;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

/* KPI cards: hierarchy is icon, clear title, dominant value, then native
   Frappe comparison status when the Number Card provides one. */
body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box.perfect-enterprise-card {
  min-block-size: 132px;
  padding: 16px 17px 15px;
  text-align: start;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box.perfect-enterprise-card::before {
  background: var(--perfect-card-accent);
  block-size: 3px;
  border-radius: 0 0 999px 999px;
  content: "";
  inline-size: 42px;
  inset-block: 0 auto;
  inset-inline: 18px auto;
  position: absolute;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box
  .widget-head {
  align-items: start;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box
  .widget-title {
  color: var(--perfect-muted);
  cursor: pointer;
  font-size: 12.5px;
  font-weight: 750;
  line-height: 1.55;
  margin: 1px 0 0;
  text-transform: none;
  white-space: normal;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box
  .widget-control {
  block-size: auto;
  inset: auto;
  position: static;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box
  .card-actions {
  color: var(--perfect-muted);
  margin: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box
  .widget-body {
  text-align: start;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box
  .widget-content {
  align-items: start;
  gap: 7px;
  padding-block-start: 14px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box
  .number {
  color: var(--perfect-ink);
  font-size: clamp(1.75rem, 2.3vw, 2.25rem);
  font-variant-numeric: tabular-nums;
  font-weight: 850;
  letter-spacing: -0.035em;
  line-height: 1.08;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.number-widget-box
  .card-stats {
  color: var(--perfect-muted);
  font-size: 11.5px;
  line-height: 1.45;
}

/* Action cards keep Frappe's route and count badge, while making the entire
   target compact, readable, and visually clickable. */
body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.shortcut-widget-box.perfect-enterprise-card {
  align-items: stretch;
  border-inline-start: 1px solid var(--perfect-card-border);
  cursor: pointer;
  min-block-size: 82px;
  padding: 14px 15px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .shortcut-widget-box
  .perfect-card-icon {
  block-size: 36px;
  inline-size: 36px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .shortcut-widget-box
  .perfect-card-icon
  svg {
  block-size: 18px;
  inline-size: 18px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .shortcut-widget-box
  .widget-title {
  color: var(--perfect-ink);
  cursor: pointer;
  font-size: 13.5px;
  font-weight: 800;
  line-height: 1.45;
  white-space: normal;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .shortcut-widget-box
  .widget-control {
  align-items: center;
  display: flex;
  flex-direction: row;
  gap: 7px;
  justify-content: flex-end;
  margin: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .shortcut-widget-box
  .widget-control
  > * {
  margin: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .shortcut-widget-box
  .indicator-pill {
  background: var(--perfect-card-accent-soft);
  color: var(--perfect-card-accent);
  font-size: 10.5px;
  font-weight: 750;
  max-inline-size: 120px;
  padding: 4px 8px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .shortcut-widget-box
  .widget-control
  svg {
  color: var(--perfect-muted);
  stroke: currentColor;
}

/* Report / navigation cards become useful content panels rather than empty
   white rectangles. Existing anchors and routes remain untouched. */
body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.links-widget-box.perfect-enterprise-card {
  border-block-start: 1px solid var(--perfect-card-border);
  min-block-size: 154px;
  padding: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .widget-head {
  border-block-end: 1px solid #edf1f4;
  padding: 14px 15px 12px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .perfect-card-icon {
  block-size: 36px;
  inline-size: 36px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .widget-title {
  color: var(--perfect-ink);
  font-size: 14px;
  font-weight: 850;
  line-height: 1.45;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .widget-body {
  display: grid;
  gap: 2px;
  padding: 7px 9px 9px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .link-item {
  align-items: center;
  border-radius: 9px;
  color: var(--perfect-ink-2);
  display: flex;
  font-size: 12.5px;
  line-height: 1.45;
  margin: 0;
  min-block-size: 36px;
  padding-block: 7px;
  padding-inline: 9px;
  transition:
    background-color 140ms ease,
    color 140ms ease;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .link-item:first-child {
  margin-block-start: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .link-item:hover,
body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .link-item:focus-visible {
  background: var(--perfect-card-accent-soft);
  color: var(--perfect-card-accent);
  text-decoration: none;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .link-content {
  align-items: center;
  display: flex;
  gap: 6px;
  justify-content: space-between;
  min-inline-size: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .links-widget-box
  .link-content
  svg {
  color: var(--perfect-muted);
  flex: 0 0 auto;
  margin: 0;
  stroke: currentColor;
}

/* Charts share the same header, spacing, border, legend, and interaction
   language as the cards around them. */
body.perfect-desk-theme[data-perfect-workspace="1"]
  .widget.dashboard-widget-box.perfect-enterprise-card {
  min-block-size: 300px;
  padding: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .widget-head {
  border-block-end: 1px solid #edf1f4;
  padding: 15px 17px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .widget-title {
  color: var(--perfect-ink);
  font-size: 14px;
  font-weight: 850;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .widget-body {
  padding: 14px 17px 16px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .chart-container,
body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .frappe-chart {
  inline-size: 100%;
  min-inline-size: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .graph-stats-container,
body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .chart-legend {
  align-items: center;
  border-block-start: 1px solid #edf1f4;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-block-start: 10px;
  padding-block-start: 12px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .graph-stats-container
  .stats,
body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .chart-legend
  .legend-item {
  color: var(--perfect-muted);
  font-size: 11.5px;
  margin: 0;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  svg
  text {
  font-family: "Cairo", sans-serif;
  font-size: 10.5px;
}

body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .filter-chart,
body.perfect-desk-theme[data-perfect-workspace="1"]
  .dashboard-widget-box
  .btn-xs {
  background: var(--perfect-surface-soft);
  border: 1px solid var(--perfect-card-border);
  border-radius: 8px;
}

/* The hidden native login heading previously left Frappe's 45px top padding,
   producing the empty white strip visible above the dynamic client logo. */
body.perfect-desk-theme.perfect-login-page
  .login-content.page-card,
body.perfect-desk-theme.perfect-login-page
  .for-login
  .page-card,
body.perfect-desk-theme.perfect-login-page
  .for-forgot
  .page-card,
body.perfect-desk-theme.perfect-login-page
  .for-signup
  .page-card {
  padding-block-start: 0;
}

@media (max-width: 1366px) {
  body.perfect-desk-theme[data-perfect-workspace="1"]
    .layout-main-section {
    padding: 14px;
  }

  body.perfect-desk-theme[data-perfect-workspace="1"]
    .widget.number-widget-box.perfect-enterprise-card {
    min-block-size: 126px;
    padding-inline: 14px;
  }

  body.perfect-desk-theme[data-perfect-workspace="1"]
    .perfect-enterprise-card
    .perfect-card-icon {
    block-size: 36px;
    inline-size: 36px;
  }
}

@media (max-width: 991.98px) {
  body.perfect-desk-theme[data-perfect-workspace="1"]
    .codex-editor__redactor {
    margin-inline: -5px;
  }

  body.perfect-desk-theme[data-perfect-workspace="1"]
    .codex-editor__redactor
    > .ce-block {
    padding-inline: 5px;
  }

  body.perfect-desk-theme[data-perfect-workspace="1"]
    .shortcut-widget-box
    .indicator-pill {
    max-inline-size: 100px;
  }
}

@media (max-width: 767.98px) {
  body.perfect-desk-theme[data-perfect-workspace="1"]
    .layout-main-section {
    border: 0;
    box-shadow: none;
    padding: 8px;
  }

  body.perfect-desk-theme[data-perfect-workspace="1"]
    .perfect-enterprise-card:hover {
    transform: none;
  }

  body.perfect-desk-theme[data-perfect-workspace="1"]
    .widget.number-widget-box.perfect-enterprise-card,
  body.perfect-desk-theme[data-perfect-workspace="1"]
    .widget.shortcut-widget-box.perfect-enterprise-card {
    min-block-size: 78px;
  }

  body.perfect-desk-theme[data-perfect-workspace="1"]
    .dashboard-widget-box
    .widget-head,
  body.perfect-desk-theme[data-perfect-workspace="1"]
    .dashboard-widget-box
    .widget-body {
    padding-inline: 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.perfect-desk-theme[data-perfect-workspace="1"]
    .perfect-enterprise-card {
    transition: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.perfect-desk-theme *,
  body.perfect-desk-theme *::before,
  body.perfect-desk-theme *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* Arabic payroll surfaces: scoped to salary issuance and payroll reports. */
body.perfect-desk-theme[data-perfect-payroll="1"] .page-head,
body.perfect-desk-theme[data-perfect-payroll="1"] .layout-main-section,
body.perfect-desk-theme[data-perfect-payroll="1"] .layout-main-section-wrapper,
body.perfect-desk-theme[data-perfect-payroll="1"] .form-layout,
body.perfect-desk-theme[data-perfect-payroll="1"] .frappe-list,
body.perfect-desk-theme[data-perfect-payroll="1"] .report-wrapper {
  direction: rtl;
  text-align: right;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .page-head .page-title,
body.perfect-desk-theme[data-perfect-payroll="1"] .page-head .page-actions {
  direction: rtl;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .page-head .page-actions {
  margin-right: auto;
  margin-left: 0;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .form-tabs-list {
  background: #ffffff;
  border: 1px solid var(--perfect-line);
  border-radius: 12px 12px 0 0;
  padding: 0 8px;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .form-tabs-list .nav-link {
  color: var(--perfect-muted);
  font-weight: 700;
  padding: 12px 14px;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .form-tabs-list .nav-link.active {
  border-bottom-color: var(--perfect-primary);
  color: var(--perfect-ink);
}

body.perfect-desk-theme[data-perfect-payroll="1"] .form-layout .section-head {
  border-right: 4px solid var(--perfect-primary);
  border-left: 0;
  color: var(--perfect-ink);
  font-size: 14px;
  font-weight: 800;
  margin: 0 0 12px;
  padding: 2px 10px 2px 0;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .form-grid {
  border: 1px solid var(--perfect-line);
  border-radius: 10px;
  overflow: hidden;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .form-grid .grid-heading-row,
body.perfect-desk-theme[data-perfect-payroll="1"] .form-grid .grid-footer {
  background: #f7f8fa;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .form-grid .grid-heading-row .static-area {
  color: var(--perfect-ink-2);
  font-weight: 800;
  text-align: right;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .form-grid .grid-row:hover {
  background: #f5f6fc;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .control-label,
body.perfect-desk-theme[data-perfect-payroll="1"] .grid-heading-row,
body.perfect-desk-theme[data-perfect-payroll="1"] .help-box,
body.perfect-desk-theme[data-perfect-payroll="1"] .form-message {
  text-align: right;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .form-control,
body.perfect-desk-theme[data-perfect-payroll="1"] .control-input,
body.perfect-desk-theme[data-perfect-payroll="1"] .control-value {
  direction: rtl;
  text-align: right;
}

body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Currency"] .form-control,
body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Float"] .form-control,
body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Int"] .form-control,
body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Date"] .form-control,
body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Datetime"] .form-control,
body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Currency"] .control-value,
body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Float"] .control-value,
body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Int"] .control-value,
body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Date"] .control-value,
body.perfect-desk-theme[data-perfect-payroll="1"] [data-fieldtype="Datetime"] .control-value {
  direction: ltr;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .report-wrapper .filter-section,
body.perfect-desk-theme[data-perfect-payroll="1"] .report-wrapper .report-summary,
body.perfect-desk-theme[data-perfect-payroll="1"] .report-wrapper .datatable {
  background: #ffffff;
  border: 1px solid var(--perfect-line);
  border-radius: 12px;
  box-shadow: none;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .report-wrapper .filter-section {
  margin-bottom: 12px;
  padding: 12px;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .report-wrapper .dt-header .dt-cell,
body.perfect-desk-theme[data-perfect-payroll="1"] .report-wrapper .dt-row-header .dt-cell {
  background: var(--perfect-navy);
  color: #ffffff;
  font-weight: 800;
}

body.perfect-desk-theme[data-perfect-payroll="1"] .report-wrapper .dt-cell__content {
  font-variant-numeric: tabular-nums;
  text-align: right;
}

@media (max-width: 767.98px) {
  body.perfect-desk-theme[data-perfect-payroll="1"] .form-tabs-list {
    border-radius: 9px 9px 0 0;
    overflow-x: auto;
  }

  body.perfect-desk-theme[data-perfect-payroll="1"] .page-head .page-actions {
    margin: 0;
  }
}

/* -------------------------------------------------------------------------
 * Perfect Solutions identity and cross-module finishing layer
 * ---------------------------------------------------------------------- */
body.perfect-desk-theme {
  --primary: var(--perfect-primary);
  --primary-color: var(--perfect-primary);
  --btn-primary: var(--perfect-primary);
  accent-color: var(--perfect-primary);
}

body.perfect-desk-theme a:not(.btn):not(.dropdown-item) {
  color: var(--perfect-primary);
}

body.perfect-desk-theme a:not(.btn):not(.dropdown-item):hover {
  color: var(--perfect-primary-hover);
}

/* Official lockup. The supplied transparent logo remains untouched. The Desk
   mark is a CSS crop of its symbol; the complete artwork is used on login. */
body.perfect-desk-theme .navbar .navbar-home,
body.perfect-desk-theme .navbar a.navbar-brand,
body.perfect-desk-theme .navbar .navbar-brand {
  max-width: none;
  min-width: max-content;
  padding: 4px 8px;
  text-decoration: none;
}

body.perfect-desk-theme .perfect-brand-lockup {
  align-items: center;
  display: inline-flex;
  direction: ltr;
  gap: 10px;
  min-width: 0;
}

body.perfect-desk-theme .perfect-brand-mark-shell {
  display: inline-block;
  flex: 0 0 36px;
  height: 39px;
  overflow: hidden;
  position: relative;
  width: 36px;
}

body.perfect-desk-theme .perfect-brand-mark {
  display: block;
  height: 50px;
  left: -19px;
  max-width: none !important;
  position: absolute;
  top: 0;
  width: 62px;
}

body.perfect-desk-theme .perfect-brand-copy {
  display: grid;
  line-height: 1.15;
  min-width: 0;
}

body.perfect-desk-theme .perfect-brand-product {
  color: var(--perfect-navy);
  font-size: 14px;
  font-weight: 900;
  letter-spacing: 0.01em;
  white-space: nowrap;
}

body.perfect-desk-theme .perfect-brand-provider {
  color: var(--perfect-muted);
  font-size: 9px;
  font-weight: 700;
  margin-top: 2px;
  white-space: nowrap;
}

body.perfect-desk-theme .navbar .nav-link,
body.perfect-desk-theme .navbar .dropdown-toggle {
  border-radius: 9px;
  color: var(--perfect-ink-2);
}

body.perfect-desk-theme .navbar .nav-link:hover,
body.perfect-desk-theme .navbar .dropdown-toggle:hover {
  background: var(--perfect-primary-soft);
  color: var(--perfect-primary);
}

body.perfect-desk-theme .navbar .search-bar .awesomplete input,
body.perfect-desk-theme .navbar .search-bar input,
body.perfect-desk-theme .navbar .form-control {
  background: #f6f8fa;
  border-color: transparent;
  min-height: 40px;
}

body.perfect-desk-theme .navbar .search-bar .awesomplete input:hover,
body.perfect-desk-theme .navbar .search-bar input:hover,
body.perfect-desk-theme .navbar .form-control:hover {
  border-color: var(--perfect-line);
}

/* Page hierarchy */
body.perfect-desk-theme .page-head .container,
body.perfect-desk-theme .page-head .container-fluid {
  padding-bottom: 8px;
  padding-top: 8px;
}

body.perfect-desk-theme .page-title .title-text,
body.perfect-desk-theme .page-title h3,
body.perfect-desk-theme .workspace-title {
  font-size: clamp(1.22rem, 1.7vw, 1.55rem);
  letter-spacing: -0.015em;
}

body.perfect-desk-theme .page-title::after,
body.perfect-desk-theme .workspace-title::after {
  background: linear-gradient(90deg, var(--perfect-primary), #6675d1);
  border-radius: 999px;
  content: "";
  display: block;
  height: 3px;
  margin-top: 7px;
  width: 34px;
}

[dir="rtl"] body.perfect-desk-theme .page-title::after,
[dir="rtl"] body.perfect-desk-theme .workspace-title::after {
  margin-inline-start: auto;
}

/* Buttons */
body.perfect-desk-theme .btn {
  align-items: center;
  display: inline-flex;
  justify-content: center;
  transition: background-color 150ms ease, border-color 150ms ease,
    color 150ms ease, transform 150ms ease;
}

body.perfect-desk-theme .btn-primary,
body.perfect-desk-theme .btn-primary-dark {
  background: linear-gradient(
    135deg,
    var(--perfect-primary),
    color-mix(in srgb, var(--perfect-primary) 78%, #ffffff)
  ) !important;
  border-color: var(--perfect-primary) !important;
}

body.perfect-desk-theme .btn-primary:hover,
body.perfect-desk-theme .btn-primary-dark:hover {
  background: linear-gradient(
    135deg,
    var(--perfect-primary-hover),
    var(--perfect-primary)
  ) !important;
  transform: translateY(-1px);
}

body.perfect-desk-theme .btn-default:hover,
body.perfect-desk-theme .btn-secondary:hover {
  background: var(--perfect-primary-soft);
  border-color: #bdc6e7;
  color: var(--perfect-primary);
}

body.perfect-desk-theme .btn-danger {
  background: var(--perfect-danger) !important;
  border-color: var(--perfect-danger) !important;
}

/* Sidebar navigation */
body.perfect-desk-theme .desk-sidebar,
body.perfect-desk-theme .standard-sidebar {
  box-shadow: 0 14px 36px rgba(24, 36, 111, 0.17);
}

body.perfect-desk-theme .desk-sidebar .sidebar-label,
body.perfect-desk-theme .standard-sidebar .sidebar-label {
  color: rgba(255, 255, 255, 0.55) !important;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.055em;
  text-transform: uppercase;
}

body.perfect-desk-theme .desk-sidebar .selected,
body.perfect-desk-theme .standard-sidebar .selected,
body.perfect-desk-theme .desk-sidebar .active,
body.perfect-desk-theme .standard-sidebar .active {
  background: rgba(255, 255, 255, 0.14) !important;
}

body.perfect-desk-theme .desk-sidebar .selected svg,
body.perfect-desk-theme .standard-sidebar .selected svg,
body.perfect-desk-theme .desk-sidebar .active svg,
body.perfect-desk-theme .standard-sidebar .active svg {
  color: #cbd2ff !important;
}

/* Workspaces and dashboards */
body.perfect-desk-theme .widget,
body.perfect-desk-theme .shortcut-widget-box,
body.perfect-desk-theme .links-widget-box,
body.perfect-desk-theme .quick-list-widget-box {
  box-shadow: var(--perfect-shadow-sm);
  transition: border-color 160ms ease, box-shadow 160ms ease,
    transform 160ms ease;
}

body.perfect-desk-theme .widget:hover,
body.perfect-desk-theme .shortcut-widget-box:hover {
  box-shadow: var(--perfect-shadow);
  transform: translateY(-2px);
}

body.perfect-desk-theme .shortcut-widget-box .widget-head .widget-icon,
body.perfect-desk-theme .widget .widget-head .widget-icon {
  align-items: center;
  background: var(--perfect-primary-soft);
  border-radius: 10px;
  color: var(--perfect-primary);
  display: inline-flex;
  justify-content: center;
  min-height: 34px;
  min-width: 34px;
}

body.perfect-desk-theme .widget.number-widget-box:nth-of-type(3n + 2)::before {
  background: linear-gradient(180deg, #46616d, #6f8791);
}

body.perfect-desk-theme .widget.number-widget-box:nth-of-type(3n + 3)::before {
  background: linear-gradient(180deg, var(--perfect-gold), #d5b66e);
}

/* Forms and tabs */
body.perfect-desk-theme .form-layout .form-section,
body.perfect-desk-theme .form-dashboard-section {
  box-shadow: var(--perfect-shadow-sm);
}

body.perfect-desk-theme .form-layout .section-head {
  align-items: center;
  display: flex;
  gap: 8px;
  padding-block: 10px;
}

body.perfect-desk-theme .form-layout .section-head::before {
  background: linear-gradient(180deg, var(--perfect-primary), #6675d1);
  border-radius: 999px;
  content: "";
  display: inline-block;
  flex: 0 0 4px;
  height: 18px;
}

body.perfect-desk-theme .form-tabs-list {
  border-bottom: 1px solid var(--perfect-line);
  gap: 4px;
}

body.perfect-desk-theme .form-tabs-list .nav-link {
  border-radius: 8px 8px 0 0;
  color: var(--perfect-muted);
  font-weight: 700;
}

body.perfect-desk-theme .form-tabs-list .nav-link:hover {
  background: var(--perfect-primary-soft);
  color: var(--perfect-primary);
}

body.perfect-desk-theme .form-tabs-list .nav-link.active {
  border-bottom-color: var(--perfect-primary);
  color: var(--perfect-primary);
}

body.perfect-desk-theme .frappe-control[data-fieldtype="Check"] input[type="checkbox"]:checked {
  background-color: var(--perfect-primary);
}

body.perfect-desk-theme .form-control,
body.perfect-desk-theme .input-with-feedback,
body.perfect-desk-theme .awesomplete > input {
  transition: background-color 140ms ease, border-color 140ms ease,
    box-shadow 140ms ease;
}

/* Lists, tables and reports */
body.perfect-desk-theme .frappe-list,
body.perfect-desk-theme .report-wrapper,
body.perfect-desk-theme .datatable {
  box-shadow: var(--perfect-shadow-sm);
}

body.perfect-desk-theme .list-row-head,
body.perfect-desk-theme .dt-header .dt-row,
body.perfect-desk-theme .dt-row-header,
body.perfect-desk-theme .form-grid .grid-heading-row {
  background: #eef1f8;
  color: var(--perfect-navy);
}

body.perfect-desk-theme .list-row-container:nth-child(even),
body.perfect-desk-theme .dt-scrollable .dt-row:nth-child(even) .dt-cell {
  background: #fbfcfd;
}

body.perfect-desk-theme .list-row-container:hover,
body.perfect-desk-theme .dt-row:hover .dt-cell,
body.perfect-desk-theme .form-grid .grid-row:hover {
  background: #f3f5fc;
}

body.perfect-desk-theme .dt-cell__content,
body.perfect-desk-theme [data-fieldtype="Currency"],
body.perfect-desk-theme [data-fieldtype="Float"],
body.perfect-desk-theme [data-fieldtype="Int"] {
  font-variant-numeric: tabular-nums;
}

/* Semantic status colours are reserved for meaning, not branding. */
body.perfect-desk-theme .indicator-pill.green,
body.perfect-desk-theme .indicator-pill-right.green {
  background: #e9f7f1;
  color: #0f704f;
}

body.perfect-desk-theme .indicator-pill.orange,
body.perfect-desk-theme .indicator-pill-right.orange,
body.perfect-desk-theme .indicator-pill.yellow,
body.perfect-desk-theme .indicator-pill-right.yellow {
  background: #fff5df;
  color: #946114;
}

body.perfect-desk-theme .indicator-pill.red,
body.perfect-desk-theme .indicator-pill-right.red {
  background: var(--perfect-danger-soft);
  color: #a52e38;
}

body.perfect-desk-theme .indicator-pill.blue,
body.perfect-desk-theme .indicator-pill-right.blue {
  background: var(--perfect-primary-soft);
  color: var(--perfect-primary);
}

/* Menus, dialogs and empty states */
body.perfect-desk-theme .dropdown-menu,
body.perfect-desk-theme .modal-content,
body.perfect-desk-theme .popover {
  background: var(--perfect-surface);
}

body.perfect-desk-theme .dropdown-item {
  border-radius: 7px;
  margin: 2px 6px;
  width: calc(100% - 12px);
}

body.perfect-desk-theme .dropdown-item:hover,
body.perfect-desk-theme .dropdown-item:focus {
  background: var(--perfect-primary-soft);
  color: var(--perfect-primary);
}

body.perfect-desk-theme .modal-header {
  background: linear-gradient(180deg, #fff, #fafbfe);
}

body.perfect-desk-theme .no-result,
body.perfect-desk-theme .empty-state,
body.perfect-desk-theme .nothing-to-show {
  color: var(--perfect-muted);
}

/* Login and public authentication pages */
body.perfect-desk-theme:has(.login-content),
body.perfect-desk-theme:has(.for-login) {
  background:
    radial-gradient(circle at 12% 18%, rgba(38, 53, 138, 0.11), transparent 32%),
    radial-gradient(circle at 88% 82%, rgba(70, 97, 109, 0.1), transparent 30%),
    var(--perfect-canvas);
  min-height: 100vh;
}

body.perfect-desk-theme .login-content,
body.perfect-desk-theme .for-login .page-card {
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid var(--perfect-line);
  border-radius: 20px;
  box-shadow: var(--perfect-shadow-lg);
}

body.perfect-desk-theme .perfect-login-brand {
  border-bottom: 1px solid var(--perfect-line);
  margin-bottom: 22px;
  padding: 4px 8px 20px;
  text-align: center;
}

body.perfect-desk-theme .perfect-login-logo {
  display: block;
  height: auto;
  margin: 0 auto;
  max-width: min(210px, 72vw);
}

body.perfect-desk-theme .perfect-login-message {
  color: var(--perfect-muted);
  font-size: 12px;
  font-weight: 650;
  margin: 8px 0 0;
}

/* Accessibility and motion */
body.perfect-desk-theme :focus-visible {
  outline: 3px solid rgba(38, 53, 138, 0.22);
  outline-offset: 2px;
}

body.perfect-desk-theme ::selection {
  background: rgba(38, 53, 138, 0.2);
  color: var(--perfect-navy);
}

body.perfect-desk-theme * {
  scrollbar-color: #aeb9c6 transparent;
  scrollbar-width: thin;
}

@media (max-width: 991.98px) {
  body.perfect-desk-theme .perfect-brand-provider {
    display: none;
  }

  body.perfect-desk-theme .perfect-brand-lockup {
    gap: 7px;
  }
}

@media (max-width: 575.98px) {
  body.perfect-desk-theme .perfect-brand-copy {
    display: none;
  }

  body.perfect-desk-theme .navbar .navbar-home,
  body.perfect-desk-theme .navbar a.navbar-brand,
  body.perfect-desk-theme .navbar .navbar-brand {
    padding-inline: 2px;
  }

  body.perfect-desk-theme .page-head .container,
  body.perfect-desk-theme .page-head .container-fluid {
    padding-bottom: 5px;
    padding-top: 5px;
  }
}

/* -------------------------------------------------------------------------
 * White-label controls and contrast refinements (Perfect ERP Branding v2)
 * ---------------------------------------------------------------------- */

/* Login defaults are intentionally private-label. JavaScript can opt back in
   when the site administrator enables either setting. */
body.perfect-desk-theme:has(.for-login):not(.perfect-show-login-top-brand)
  .navbar
  .navbar-brand,
body.perfect-desk-theme:has(.for-forgot):not(.perfect-show-login-top-brand)
  .navbar
  .navbar-brand,
body.perfect-desk-theme:has(.for-signup):not(.perfect-show-login-top-brand)
  .navbar
  .navbar-brand,
body.perfect-desk-theme.perfect-hide-login-top-brand .navbar .navbar-brand,
body.perfect-desk-theme.perfect-hide-desk-brand .navbar .navbar-brand {
  display: none !important;
}

body.perfect-desk-theme:has(.for-login):not(.perfect-show-native-login-head)
  .for-login
  .page-card-head,
body.perfect-desk-theme:has(.for-forgot):not(.perfect-show-native-login-head)
  .for-forgot
  .page-card-head,
body.perfect-desk-theme:has(.for-signup):not(.perfect-show-native-login-head)
  .for-signup
  .page-card-head,
body.perfect-desk-theme.perfect-hide-native-login-head .page-card-head {
  display: none !important;
}

body.perfect-desk-theme .perfect-brand-mark-shell--custom {
  align-items: center;
  display: inline-flex;
  flex-basis: 46px;
  height: 40px;
  justify-content: center;
  width: 46px;
}

body.perfect-desk-theme .perfect-brand-mark-shell--custom .perfect-brand-mark {
  height: 100%;
  inset: auto;
  object-fit: contain;
  position: static;
  width: 100%;
}

body.perfect-desk-theme .perfect-login-company {
  color: var(--perfect-navy);
  font-size: 17px;
  font-weight: 850;
  letter-spacing: -0.01em;
  margin: 12px 0 0;
}

body.perfect-desk-theme .perfect-login-logo + .perfect-login-company:empty {
  display: none;
}

body.perfect-desk-theme .perfect-login-message {
  margin-top: 5px;
}

body.perfect-desk-theme.perfect-login-page .login-content,
body.perfect-desk-theme.perfect-login-page .for-login .page-card,
body.perfect-desk-theme.perfect-login-page .for-forgot .page-card,
body.perfect-desk-theme.perfect-login-page .for-signup .page-card {
  overflow: hidden;
}

body.perfect-desk-theme.perfect-login-page .perfect-login-brand {
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--perfect-primary) 4%, #ffffff),
    #ffffff
  );
  margin-inline: -8px;
  padding-top: 10px;
}

/* The help dropdown is an ERPNext/Frappe support surface. Perfect ERP sites
   can hide it without removing notifications or the user account menu. */
body.perfect-desk-theme.perfect-hide-help-menu .navbar .dropdown-help {
  display: none !important;
}

body.perfect-desk-theme #navbar-search,
body.perfect-desk-theme .navbar .search-bar input {
  direction: rtl;
  text-align: right;
}

body.perfect-desk-theme #navbar-search::placeholder,
body.perfect-desk-theme .navbar .search-bar input::placeholder {
  color: #8795a1;
  opacity: 1;
}

/* Enforce readable foregrounds on every Frappe sidebar variant, including
   workspace group toggles whose inline variables otherwise render dark text. */
body.perfect-desk-theme .desk-sidebar,
body.perfect-desk-theme .standard-sidebar {
  --icon-stroke: rgba(255, 255, 255, 0.78);
  --icon-fill-bg: rgba(255, 255, 255, 0.1);
}

body.perfect-desk-theme .desk-sidebar .sidebar-item-container,
body.perfect-desk-theme .standard-sidebar .sidebar-item-container,
body.perfect-desk-theme .desk-sidebar .desk-sidebar-item,
body.perfect-desk-theme .standard-sidebar .desk-sidebar-item,
body.perfect-desk-theme .desk-sidebar .sidebar-item-control,
body.perfect-desk-theme .standard-sidebar .sidebar-item-control,
body.perfect-desk-theme .desk-sidebar .dropdown-toggle,
body.perfect-desk-theme .standard-sidebar .dropdown-toggle {
  color: rgba(255, 255, 255, 0.82) !important;
}

body.perfect-desk-theme .desk-sidebar .sidebar-item-container *,
body.perfect-desk-theme .standard-sidebar .sidebar-item-container *,
body.perfect-desk-theme .desk-sidebar .desk-sidebar-item *,
body.perfect-desk-theme .standard-sidebar .desk-sidebar-item * {
  color: inherit !important;
}

body.perfect-desk-theme .desk-sidebar .sidebar-item-container svg,
body.perfect-desk-theme .standard-sidebar .sidebar-item-container svg,
body.perfect-desk-theme .desk-sidebar .desk-sidebar-item svg,
body.perfect-desk-theme .standard-sidebar .desk-sidebar-item svg,
body.perfect-desk-theme .desk-sidebar .drop-icon svg,
body.perfect-desk-theme .standard-sidebar .drop-icon svg {
  color: currentColor !important;
  fill: none;
  stroke: currentColor !important;
}

body.perfect-desk-theme .desk-sidebar .selected,
body.perfect-desk-theme .standard-sidebar .selected,
body.perfect-desk-theme .desk-sidebar .active,
body.perfect-desk-theme .standard-sidebar .active {
  color: #ffffff !important;
  font-weight: 800;
}

body.perfect-desk-theme .desk-sidebar .selected *,
body.perfect-desk-theme .standard-sidebar .selected *,
body.perfect-desk-theme .desk-sidebar .active *,
body.perfect-desk-theme .standard-sidebar .active * {
  color: #ffffff !important;
}

/* Give the home Workspace a more intentional product shell while preserving
   Frappe's layout, permissions, drag/drop, and widget data ownership. */
body.perfect-desk-theme[data-perfect-workspace="1"] .layout-main-section {
  background:
    linear-gradient(
      135deg,
      color-mix(in srgb, var(--perfect-primary) 3%, #ffffff),
      rgba(255, 255, 255, 0.72)
    );
  border: 1px solid var(--perfect-line);
  border-radius: var(--perfect-radius-lg);
  box-shadow: var(--perfect-shadow-sm);
  padding: clamp(12px, 1.7vw, 22px);
}

body.perfect-desk-theme[data-perfect-workspace="1"] .widget-group {
  background: rgba(255, 255, 255, 0.45);
  border: 1px solid color-mix(in srgb, var(--perfect-line) 78%, transparent);
  border-radius: 14px;
  margin-bottom: 16px;
  padding: 12px;
}

body.perfect-desk-theme[data-perfect-workspace="1"] .widget-group-head {
  color: var(--perfect-navy);
  margin-bottom: 10px;
}

body.perfect-desk-theme[data-perfect-workspace="1"] .widget-group-title {
  color: var(--perfect-navy) !important;
  font-weight: 850;
}

body.perfect-desk-theme[data-perfect-workspace="1"] .shortcut-widget-box {
  border-inline-start: 3px solid var(--perfect-accent);
}

body.perfect-desk-theme[data-perfect-workspace="1"] .links-widget-box {
  border-top: 3px solid color-mix(in srgb, var(--perfect-primary) 68%, #ffffff);
}

body.perfect-desk-theme[data-perfect-workspace="1"] .widget .widget-title,
body.perfect-desk-theme[data-perfect-workspace="1"] .widget .widget-title-text,
body.perfect-desk-theme[data-perfect-workspace="1"] .widget .widget-label {
  color: var(--perfect-ink) !important;
}

@media (max-width: 767.98px) {
  body.perfect-desk-theme[data-perfect-workspace="1"] .layout-main-section {
    border-radius: 12px;
    padding: 10px;
  }

  body.perfect-desk-theme[data-perfect-workspace="1"] .widget-group {
    padding: 8px;
  }

  body.perfect-desk-theme .perfect-login-company {
    font-size: 15px;
  }
}

/* Keep the Enterprise card layer authoritative over the earlier Workspace
   shell rules while leaving branding variables and dynamic identity intact. */
body.perfect-desk-theme[data-perfect-workspace="1"] .widget-group {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
}

@media (max-width: 1366px) {
  body.perfect-desk-theme[data-perfect-workspace="1"] .layout-main-section {
    padding: 14px;
  }
}

@media (max-width: 767.98px) {
  body.perfect-desk-theme[data-perfect-workspace="1"] .layout-main-section {
    border: 0;
    box-shadow: none;
    padding: 8px;
  }
}
