:root {
  --brand-primary: #3a4cd9;
  --brand-primary-hover: #2d3eb8;
  --brand-primary-text: #ffffff;
  --brand-accent-on-dark: #3a4cd9;
  --brand-navbar-bg: #faf9f6;
  --brand-navbar-text: #3a3633;
  --brand-navbar-hover: #f0ede5;
  --brand-sidebar-bg: #faf9f6;
  --brand-sidebar-text: #3a3633;
  --brand-sidebar-active: #3a4cd9;
  --brand-surface: #ffffff;
  --brand-surface-alt: #f5f3ed;
  --brand-border: #ebe7df;
  --brand-font-family: "Inter", sans-serif;
  --brand-font-mono: "JetBrains Mono", monospace;
  --brand-radius: 7px;
  --brand-shadow: none;
}

:root {
  --bs-primary: #3a4cd9;
  --bs-primary-rgb: 58, 76, 217;
  --bs-link-color: #3a4cd9;
  --bs-link-hover-color: #2d3eb8;
  --o-action-color: #3a4cd9;
  --o-action-bg: #3a4cd9;
  --o-component-active-color: #3a4cd9;
  --o-component-active-border: #3a4cd9;
  --o-stat-text-color: #3a4cd9;
  --brand-accent-on-light: #3a4cd9;
  --brand-canvas: #eeedeb;
  --brand-ink: #22201b;
  --brand-label: #6a6557;
  --brand-muted: #6c6759;
  --brand-hairline: #e2e0db;
  --brand-header-tint: #e8e7e3;
  --brand-accent-on-dark: #3a4cd9;
  --brand-card: #ffffff;
}
.o_main_navbar {
  --NavBar-entry-backgroundColor: transparent;
  --NavBar-entry-backgroundColor--hover: #f0ede5;
  --NavBar-entry-backgroundColor--focus: #f0ede5;
  --NavBar-entry-backgroundColor--active: #f0ede5;
  --NavBar-entry-borderColor-active: #3a4cd9;
  --NavBar-entry-color--active: #3a4cd9;
  background-color: #faf9f6 !important;
  color: #3a3633 !important;
}
/* Every interactive label IN the bar uses navbar_text. Descendant (not
   direct-child) selectors so .dropdown-toggle app-menu entries are covered too
   — those otherwise fall through to the compiled editorial dark graphite and
   render unreadable on a dark navbar. NB: scoped to entries inside the bar;
   the open dropdown PANEL (.dropdown-item) is portaled out and keeps its own
   light-surface styling.
   .kodemeio-hamburger — the theme's own sidebar-collapse button, order:-1 so
   it is the FIRST thing in the bar — was missing from this roll-call, which is
   how it ended up the one navbar glyph not painted in navbar_text: it fell
   through to sidebar.scss's work-area muted grey and read dim beside the
   systray icons on every dark-navbar palette. */
.o_main_navbar .o_menu_brand,
.o_main_navbar .o_menu_toggle,
.o_main_navbar .kodemeio-hamburger,
.o_main_navbar .o_grid_apps_menu__button,
.o_main_navbar .o_grid_apps_menu__button i,
.o_main_navbar .o_grid_apps_menu__button .oi,
.o_main_navbar .o_menu_sections .o_nav_entry,
.o_main_navbar .o_menu_sections .dropdown-toggle,
.o_main_navbar .o_menu_systray,
.o_main_navbar .o_menu_systray a,
.o_main_navbar .o_menu_systray button,
.o_main_navbar .o_menu_systray .btn,
.o_main_navbar .o_menu_systray .dropdown-toggle,
.o_main_navbar .o_menu_systray i,
.o_main_navbar .o_menu_systray .fa,
.o_main_navbar .o_menu_systray .oi,
.o_main_navbar .o_menu_systray .o_nav_entry {
  color: #3a3633 !important;
}
.o_main_navbar .o_menu_sections .o_nav_entry:hover,
.o_main_navbar .o_menu_sections .dropdown-toggle:hover {
  background-color: #f0ede5 !important;
  color: #3a3633 !important;
}
/* Apps-menu grid button hover/focus: web_responsive paints the hover bg a
   light editorial wash ($o-navbar-entry-bg--hover), so the light icon vanishes
   (white-on-white) on a dark navbar. Use navbar_hover + keep navbar_text. */
.o_main_navbar .o_grid_apps_menu__button:hover,
.o_main_navbar .o_grid_apps_menu__button:focus,
.o_main_navbar .kodemeio-hamburger:hover,
.o_main_navbar .kodemeio-hamburger:focus {
  background-color: #f0ede5 !important;
  color: #3a3633 !important;
}
.o_main_navbar .o_grid_apps_menu__button:hover i,
.o_main_navbar .o_grid_apps_menu__button:focus i,
.o_main_navbar .o_grid_apps_menu__button:hover .oi,
.o_main_navbar .o_grid_apps_menu__button:focus .oi {
  color: #3a3633 !important;
}
.o_main_navbar .o_menu_sections .o_nav_entry:active,
.o_main_navbar .o_menu_sections .dropdown-toggle:active,
.o_main_navbar .o_menu_sections .dropdown.show > .dropdown-toggle,
.o_main_navbar .o_menu_sections .dropdown-toggle.show {
  background-color: #f0ede5 !important;
  color: #3a3633 !important;
  box-shadow: inset 0 -2px 0 #3a4cd9;
}
/* MOBILE: on small screens the current app title is rendered in the navbar's
   own breadcrumb (.o_navbar_breadcrumbs) instead of .o_menu_brand. The theme's
   content-breadcrumb rule paints the last crumb editorial ink (#171513), which
   is unreadable on a dark navbar. Force navbar-scoped breadcrumb text (incl.
   the inner truncating span) to the navbar text color. Higher specificity than
   `.o_breadcrumb .o_last_breadcrumb_item` so it wins inside the bar only. */
.o_main_navbar .o_navbar_breadcrumbs,
.o_main_navbar .o_navbar_breadcrumbs .btn,
.o_main_navbar .o_breadcrumb .breadcrumb-item,
.o_main_navbar .o_breadcrumb .o_last_breadcrumb_item,
.o_main_navbar .o_breadcrumb .o_last_breadcrumb_item span {
  color: #3a3633 !important;
}
/* APPS DRAWER: web_responsive's full-screen launcher pins its surface +
   item colors to the compiled Editorial defaults ($app-menu-*), so it ignores
   the active palette ("still minimal"). Re-skin it to the brand canvas with
   accent-colored app links. */
.o_grid_apps_menu .app-menu-container,
.app-menu-container {
  background: #eeedeb !important;
}
.app-menu-container .o-app-menu-item {
  color: #3a4cd9 !important;
}
/* Hover / focus / current-app highlight: a brand-accent wash instead of the
   compiled translucent-white ($app-menu-hover-background) that reads as cream
   over a themed canvas. */
.app-menu-container .o-app-menu-item:hover,
.app-menu-container .o-app-menu-item:focus {
  background-color: rgba(var(--bs-primary-rgb), 0.12) !important;
}
.app-menu-container .o-app-menu-item__active {
  color: #3a4cd9 !important;
}
/* Apps-menu search box: theme the field + accent focus ring instead of the
   editorial input wash. */
.app-menu-container .search-input {
  background: transparent !important;
}
.app-menu-container input.form-control {
  background-color: #ffffff !important;
  border-color: #ebe7df !important;
}
.app-menu-container input.form-control:focus {
  border-color: #3a4cd9 !important;
  box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25) !important;
}

/* Primary action buttons follow the brand accent so the palette shows up in
   the (otherwise neutral) content area — SAP blue, Salesforce blue, Oracle red,
   etc. Editorial palettes resolve #3a4cd9 to their own indigo. */
.btn-primary,
.o_form_button_save,
.btn.btn-primary {
  background-color: #3a4cd9 !important;
  border-color: #3a4cd9 !important;
  color: #ffffff !important;
  border-radius: 7px;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active,
.btn.btn-primary:hover, .btn.btn-primary:focus, .btn.btn-primary:active {
  background-color: #2d3eb8 !important;
  border-color: #2d3eb8 !important;
  color: #ffffff !important;
}
.btn-outline-primary {
  color: #3a4cd9 !important;
  border-color: #3a4cd9 !important;
}
.btn-outline-primary:hover {
  background-color: #3a4cd9 !important;
  border-color: #3a4cd9 !important;
  color: #ffffff !important;
}

    /* Content links only. Do not recolor navbar, menu, dropdown, notebook,
       breadcrumb, or app navigation links; those components own their states.
       `.tab` is the settings side-nav entry — an <a> by markup, navigation by
       role, and it owns its state through --settings__tab-color plus the
       .selected treatment below. Without this exclusion every entry in that
       column paints itself the accent, so the whole rail reads as a list of
       links and the selected one has nothing left to distinguish it. */
    .o_action_manager .o_content a:not(.btn):not(.dropdown-item):not(.dropdown-toggle):not(.o_app):not(.o_menu_brand):not(.o_nav_entry):not(.nav-link):not(.breadcrumb-item):not(.tab) {
      color: #3a4cd9;
    }
    .o_action_manager .o_content a:not(.btn):not(.dropdown-item):not(.dropdown-toggle):not(.o_app):not(.o_menu_brand):not(.o_nav_entry):not(.nav-link):not(.breadcrumb-item):not(.tab):hover {
      color: #2d3eb8;
    }
.text-primary,
.o_field_widget.o_required_modifier label,
.breadcrumb-item.active {
  color: #3a4cd9 !important;
}

/* Selected list rows / active form labels / focus rings */
.o_list_view .o_data_row.o_data_row_selected,
.o_list_view tr.o_data_row.table-info {
  background-color: rgba(58, 76, 217, 0.08) !important;
}
.form-control:focus,
.form-select:focus,
.o_input:focus {
  border-color: #3a4cd9 !important;
  box-shadow: 0 0 0 0.2rem rgba(58, 76, 217, 0.18) !important;
}

/* Notebook tab + control-panel underline */
.o_notebook_headers .nav-link.active,
.o_control_panel .o_breadcrumb .active,
.o_pager_value {
  color: #3a4cd9 !important;
  border-color: #3a4cd9 !important;
}

/* Charts (graph view + dashboard kanbans use these) */
.o_graph_renderer .o_view_nocontent {
  color: #3a4cd9;
}

/* Content-area surfaces — neutral "desk" behind, white "paper" on top. The
   desk (#eeedeb) is a near-neutral light grey carrying only a whisper of the
   accent (palette-aware temperature); every document surface (#ffffff = white)
   floats on it. Brand identity stays in the chrome + accents, not the work
   area. Light mode only; dark mode owns its surfaces. */
body:not(.kodemeio-dark) {
  --o-webclient-background-color: #eeedeb;
  --o-view-background-color: #ffffff;
}
body:not(.kodemeio-dark) .o_action_manager,
body:not(.kodemeio-dark) .o_content,
body:not(.kodemeio-dark) .o_form_view .o_form_sheet_bg,
body:not(.kodemeio-dark) .o_list_view,
body:not(.kodemeio-dark) .o_list_renderer,
body:not(.kodemeio-dark) .o_kanban_view,
body:not(.kodemeio-dark) .o_control_panel,
body:not(.kodemeio-dark) .o_cp_top,
body:not(.kodemeio-dark) .o_controller_with_rendererwrapper {
  background-color: #eeedeb !important;
}
/* All content surfaces share ONE tinted card color so every view type reads
   consistently (form sheet == list table == kanban card == settings card),
   instead of forms looking white while kanbans look blue. */
body:not(.kodemeio-dark) .o_form_sheet,
body:not(.kodemeio-dark) .o_setting_box,
body:not(.kodemeio-dark) .o_kanban_record,
body:not(.kodemeio-dark) .o_list_table,
body:not(.kodemeio-dark) .o_list_table > tbody > tr,
body:not(.kodemeio-dark) .modal-content {
  background-color: #ffffff !important;
}
/* Section / list-column headers a touch stronger to delineate them. The list
   FOOTER (the totals band) is grouped with them deliberately: web_responsive
   pins it (position: sticky / bottom 0 / z-index 2) against an opaque
   --ListRenderer-thead-bg-color, so it is the same case as the settings
   section header — leave it transparent and the rows scroll through the
   totals. Any sticky surface in this file must carry a real background. */
body:not(.kodemeio-dark) .o_list_renderer thead th,
body:not(.kodemeio-dark) .o_list_footer,
body:not(.kodemeio-dark) .o_list_footer td,
body:not(.kodemeio-dark) table.o_list_table thead th {
  background-color: #e8e7e3 !important;
}
/* Inner sub-panels that ship a hardcoded white bg (notebook tab bar, data
   cells, x2many add-a-line row, field groups) made transparent so
   they inherit the tinted card/sheet instead of punching white holes. */
body:not(.kodemeio-dark) .o_notebook .nav-tabs,
body:not(.kodemeio-dark) .o_notebook_content,
body:not(.kodemeio-dark) .tab-pane,
body:not(.kodemeio-dark) .o_form_sheet .o_field_x2many,
body:not(.kodemeio-dark) .o_form_sheet .o_list_renderer,
body:not(.kodemeio-dark) .o_form_sheet .o_list_table,
body:not(.kodemeio-dark) .o_form_sheet .o_list_table thead,
body:not(.kodemeio-dark) .o_form_sheet .o_list_table tbody,
body:not(.kodemeio-dark) .o_form_sheet .o_list_table tfoot,
body:not(.kodemeio-dark) .o_form_sheet .o_list_table tr,
body:not(.kodemeio-dark) .o_form_sheet .o_list_table th,
body:not(.kodemeio-dark) .o_form_sheet .o_list_table td,
body:not(.kodemeio-dark) .o_data_cell,
body:not(.kodemeio-dark) .o_field_cell,
body:not(.kodemeio-dark) .o_field_x2many_list_row_add,
body:not(.kodemeio-dark) .o_list_record_remove,
body:not(.kodemeio-dark) .o_control_panel .breadcrumb,
body:not(.kodemeio-dark) .o_breadcrumb .breadcrumb,
/* Every cell of any list row (incl. the record-selector checkbox column and
   the trailing optional-columns / buttons column, which aren't .o_data_cell)
   inherits the row tint instead of staying white. */
body:not(.kodemeio-dark) .o_list_table > tbody > tr > td,
body:not(.kodemeio-dark) .o_list_record_selector,
body:not(.kodemeio-dark) .o_list_sortable_caret,
body:not(.kodemeio-dark) .o_group {
  background-color: transparent !important;
}
/* Search box reads as a clean surface field (not the see-through canvas) so
   the placeholder + filter chips stay legible on the tinted control panel. */
body:not(.kodemeio-dark) .o_control_panel .o_searchview,
body:not(.kodemeio-dark) .o_cp_searchview .o_searchview {
  background-color: #ffffff !important;
  border: 1px solid #ebe7df !important;
}
body:not(.kodemeio-dark) .o_control_panel .o_searchview:focus-within {
  border-color: #3a4cd9 !important;
  box-shadow: 0 0 0 0.15rem rgba(58, 76, 217, 0.18) !important;
}
/* Hairline divider under the control panel so the toolbar/breadcrumb header
   reads as a distinct band above the (lightly tinted) content. */
body:not(.kodemeio-dark) .o_control_panel {
  border-bottom: 1px solid #ebe7df !important;
}
/* Chatter (incl. its top bar) shares the page canvas. */
body:not(.kodemeio-dark) .o-mail-Chatter,
body:not(.kodemeio-dark) .o-mail-Chatter-topbar,
body:not(.kodemeio-dark) .o_form_view .o-mail-Form-chatter {
  background-color: #eeedeb !important;
}
/* Discuss app — neutral nav rail (sidebar) on the desk, WHITE conversation
   "paper" (header + thread + composer) so the reading area matches forms and
   reports. .o-mail-Thread is scoped to .o-mail-Discuss so form chatter threads
   keep their own (canvas) treatment above. */
body:not(.kodemeio-dark) .o-mail-DiscussSidebar,
body:not(.kodemeio-dark) .o-mail-discussSidebarBgColor,
body:not(.kodemeio-dark) .o-mail-DiscussSidebar-top,
body:not(.kodemeio-dark) .o-mail-Discuss {
  background-color: #eeedeb !important;
}
body:not(.kodemeio-dark) .o-mail-Discuss-main,
body:not(.kodemeio-dark) .o-mail-Discuss-content,
body:not(.kodemeio-dark) .o-mail-Discuss-header,
body:not(.kodemeio-dark) .o-mail-Discuss .o-mail-Thread,
body:not(.kodemeio-dark) .o-mail-Discuss .o-mail-Composer {
  background-color: #ffffff !important;
}
/* General Settings form: the .settings root ships a white bg and each section
   header is an unclassed gray <h2> band — tint to the canvas so the settings
   page matches the rest of the themed content. */
body:not(.kodemeio-dark) .o_form_view .settings {
  background-color: #eeedeb !important;
}
/* The section header must stay OPAQUE, and must be painted the canvas rather
   than left transparent. web_responsive pins it (`.app_settings_block > h2`,
   position: sticky / top 0 / z-index 10 on md+), and a sticky header only
   works because it occludes what scrolls beneath it — transparent, the pinned
   title and the setting box under it draw on top of each other and the top of
   the page becomes an unreadable smudge. Canvas-on-canvas looks identical to
   transparent while it is unpinned, so this costs nothing and keeps the band
   the stock grey never comes back. */
body:not(.kodemeio-dark) .o_form_view .settings h2 {
  background-color: #eeedeb !important;
}
/* Settings side-nav + section bands. All three are declared as custom
   properties on the renderer root and default to fixed greys, which leaves the
   nav column a third near-white wedged between the desk and the paper. The
   active entry is worse: its wash and its 2px marker are COMPILED from the
   build-time accent (mix($o-action, $o-gray-100, 20%)), so every palette shows
   the default accent there no matter what the company picked. The wash is a
   variable and can simply be re-pointed; the marker and its text are Sass
   literals in the shipped bundle, so they need the explicit rule below. */
body:not(.kodemeio-dark) .o_base_settings_view .o_form_renderer {
  --settings__tab-bg: #eeedeb;
  --settings__tab-bg--active: rgba(58, 76, 217, 0.10);
  --settings__title-bg: #eeedeb;
}
body:not(.kodemeio-dark) .settings_tab .tab.selected {
  box-shadow: inset 2px 0 0 #3a4cd9 !important;
  color: #3a4cd9 !important;
}
/* Paper edge: the form + report sheet reads as a defined white card floating
   on the desk (hairline border + soft shadow), instead of a borderless white
   block that bleeds into the grey. */
body:not(.kodemeio-dark) .o_form_sheet {
  border: 1px solid #ebe7df !important;
  border-radius: 6px;
  box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 2px 6px rgba(16, 24, 40, 0.05) !important;
}
body:not(.kodemeio-dark) .o_list_view {
  border-color: #ebe7df !important;
}
/* A setting box is a GRID COLUMN, not a card: no border, no radius, and only
   an 8px vertical margin. Painting it white therefore produced bands of
   whatever width the column happened to be (full for a two-field row, half for
   a one-field row) with raw edges bleeding into the desk. `border-color` alone
   is a no-op here — there is no border-width to colour — so the edge has to be
   declared outright. Horizontal padding is left to the row gutter so the grid
   arithmetic is untouched; only the vertical padding is ours, to keep the new
   border off the content. */
body:not(.kodemeio-dark) .o_setting_box {
  border: 1px solid #ebe7df !important;
  border-radius: 6px;
  padding-top: 10px;
  padding-bottom: 10px;
}
/* Status bar (RFQ -> Purchase Order, etc.): the current stage pill defaults to
   a lavender secondary fill; re-skin it to a light brand-accent wash with
   accent text so it reads on-palette. */
body:not(.kodemeio-dark) .o_statusbar_status {
  --o-statusbar-background-active: rgba(58, 76, 217, 0.14);
  --o-statusbar-background-hover: rgba(58, 76, 217, 0.08);
}
body:not(.kodemeio-dark) .o_statusbar_status .o_arrow_button_current {
  color: #3a4cd9 !important;
}

body {
  font-family: "Inter", sans-serif;
}
.kodemeio-sb {
  --kr-bg: #faf9f6;
  --kr-text: #3a3633;
  --kr-text-strong: #3a3633;
  --kr-text-muted: rgba(58, 54, 51, 0.7);
  --kr-text-faint: rgba(58, 54, 51, 0.5);
  --kr-hover-bg: #f0ede5;
  --kr-active-bg: rgba(58, 76, 217, 0.10);
  --kr-active-text: #3a4cd9;
  --kr-active-accent: #3a4cd9;
  --kr-border: #ebe7df;
  --kr-surface: #ffffff;
  --kr-logo-bg: #f5f3ed;
  --kr-scrollbar: rgba(0, 0, 0, 0.15);
}
