# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

nb.dark.theme=true
nb.preferred.color.profile=FlatLaf Dark


nb.errorForeground=#DB5860
nb.warningForeground=@foreground

# Keep the tree background at @background rather than the very slightly lighter
# @componentBackground, to make the Projects/Files/Services and Navigator backgrounds connect
# seamlessly with the background of their tab on top.
Tree.background = @background

#---- EditorView ----

Nb.EmptyEditorArea.background=darken(@background,8%)


#---- EditorTab ----

EditorTab.background=$Nb.EmptyEditorArea.background
EditorTab.foreground=darken(@foreground,10%)
EditorTab.activeBackground=shade($TabbedPane.underlineColor,75%)
EditorTab.activeForeground=darken(@foreground,10%)
EditorTab.selectedBackground=@background
EditorTab.selectedForeground=@foreground
# Add the hover effect only for unselected tabs.
EditorTab.hoverBackground=lighten($EditorTab.activeBackground,7%)
EditorTab.selectedHoverBackground=$EditorTab.selectedBackground
EditorTab.hoverForeground=@foreground
EditorTab.attentionBackground=#E6C840
EditorTab.attentionForeground=#000
EditorTab.underlineColor=$TabbedPane.underlineColor
EditorTab.inactiveUnderlineColor=#00000000
EditorTab.tabSeparatorColor=darken($Component.borderColor,15%)

#---- ViewTab ----

ViewTab.background=$EditorTab.background
ViewTab.foreground=$EditorTab.foreground
ViewTab.activeBackground=$EditorTab.activeBackground
ViewTab.activeForeground=$EditorTab.activeForeground
ViewTab.selectedBackground=$EditorTab.selectedBackground
ViewTab.selectedForeground=$EditorTab.selectedForeground
ViewTab.hoverBackground=$EditorTab.hoverBackground
ViewTab.selectedHoverBackground=$EditorTab.selectedHoverBackground
ViewTab.hoverForeground=$EditorTab.hoverForeground
ViewTab.attentionBackground=$EditorTab.attentionBackground
ViewTab.attentionForeground=$EditorTab.attentionForeground
ViewTab.underlineColor=$EditorTab.underlineColor
ViewTab.inactiveUnderlineColor=$EditorTab.inactiveUnderlineColor
ViewTab.tabSeparatorColor=$EditorTab.tabSeparatorColor

#---- SlidingButton ----

SlidingButton.hoverBackground=$ViewTab.hoverBackground
SlidingButton.selectedBackground=lighten($SlidingButton.hoverBackground,15%)
SlidingButton.attentionBackground=$ViewTab.attentionBackground
SlidingButton.attentionForeground=$ViewTab.attentionForeground


#---- Multi-tabs ----

nb.multitabs.project.1.background=rgb(96, 135, 117)
nb.multitabs.project.2.background=rgb(135, 101, 101)
nb.multitabs.project.3.background=rgb(135, 127, 94)
nb.multitabs.project.4.background=rgb(96, 119, 135)
nb.multitabs.project.5.background=rgb(121, 135, 89)
nb.multitabs.project.6.background=rgb(135, 105, 89)
nb.multitabs.project.7.background=rgb(108, 135, 96)
nb.multitabs.project.8.background=rgb(107, 135, 38)
nb.multitabs.project.9.background=rgb(118, 89, 135)
nb.multitabs.project.foreground=#f0f0f0


#---- PropSheet ----

PropSheet.setBackground=lighten(@background,10%)
PropSheet.setForeground=@foreground


#---- formdesigner ----

nb.formdesigner.borderColor=#687e95
nb.formdesigner.gap.fixed.color=darken(@background,2%)
nb.formdesigner.gap.resizing.color=darken(@background,2%)
nb.formdesigner.gap.min.color=darken(@background,5%)
nb.formdesigner.gap.border.color=lighten(@background,10%)
nb.formdesigner.saw.color=lighten(@background,15%)

# startpage
nb.startpage.defaultbackground=true
# Colors from content_banner_dark image edges
nb.startpage.contentheader.color1=rgb(12, 33, 61)
nb.startpage.contentheader.color2=rgb(16, 24, 42)
# Light red from NB Icon palette
nb.startpage.rss.date.color=#EA205E

# editor
nb.editor.errorstripe.caret.color=@foreground

# wizard
nb.wizard.hideimage=true

# debugger
nb.debugger.debugging.currentThread=#316838
nb.debugger.debugging.highlightColor=darken($nb.debugger.debugging.currentThread,5%)
nb.debugger.debugging.BPHits=rgb(65, 65, 0)
nb.debugger.debugging.bars.BPHits=rgb(120, 120, 25)
nb.debugger.debugging.bars.currentThread=lighten($nb.debugger.debugging.currentThread,5%)

# bug tracking
nb.bugtracking.comment.background=@background
nb.bugtracking.comment.background=#f00
nb.bugtracking.comment.foreground=@foreground
nb.bugtracking.label.highlight=rgb(205, 205, 0)
nb.bugtracking.table.background=$Table.background
nb.bugtracking.table.background.alternate=darken($Table.background,5%)
nb.bugtracking.new.color=rgb(73, 210, 73)
nb.bugtracking.modified.color=rgb(26, 184, 255)
nb.bugtracking.obsolete.color=rgb(142, 142, 142)
nb.bugtracking.conflict.color=rgb(255, 100, 100)

# db.dataview
nb.dataview.table.grid=$Table.gridColor
nb.dataview.table.altbackground=darken($Table.background,5%)
nb.dataview.tablecell.focused=rgb(13, 41, 62)
nb.dataview.tablecell.edited.selected.foreground=rgb(255, 184, 26)
nb.dataview.tablecell.edited.unselected.foreground=rgb(26, 184, 255)

# autoupdate
nb.autoupdate.search.highlight=rgb(13, 41, 62)

# git
nb.versioning.added.color=rgb(73, 210, 73)
nb.versioning.modified.color=rgb(26, 184, 255)
nb.versioning.deleted.color=rgb(255, 175, 175)
nb.versioning.conflicted.color=rgb(255, 100, 100)
nb.versioning.ignored.color=rgb(142, 142, 142)
nb.versioning.remotemodification.color=#000
nb.versioning.textannotation.color=#fff
nb.versioning.tooltip.background.color=rgb(92, 92, 66)

# diff
nb.diff.added.color=rgb(43, 85, 43)
nb.diff.changed.color=rgb(40, 85, 112)
nb.diff.deleted.color=rgb(85, 43, 43)
nb.diff.applied.color=rgb(68, 113, 82)
nb.diff.notapplied.color=rgb(67, 105, 141)
nb.diff.unresolved.color=rgb(130, 30, 30)
nb.diff.sidebar.deleted.color=rgb(85, 43, 43)
nb.diff.sidebar.changed.color=rgb(30, 75, 112)

# output
nb.output.foreground=@foreground
nb.output.backgorund=#2B2B2B
nb.output.selectionBackground=#214283
nb.output.err.foreground=#FF4040
nb.output.input=#CC7832
nb.output.link.foreground=$Component.linkColor
nb.output.link.foreground.important=$Component.linkColor
nb.output.warning.foreground=#FFC66D
nb.output.failure.foreground=#FF4040
nb.output.success.foreground=#A8C023
nb.output.debug.foreground=#808080

# AddModulePanel
selection.highlight=rgb(202, 152, 0)

# browser picker
Nb.browser.picker.background.light=rgb(116,116,116)
Nb.browser.picker.foreground.light=rgb(192,192,192)

# search in projects
nb.search.sandbox.highlight=@selectionBackground
nb.search.sandbox.regexp.wrong=rgb(255, 71, 71)


#---- OptionsPanel ----

nb.options.categories.selectionBackground = @selectionBackground
nb.options.categories.highlightBackground = $TabbedPane.hoverColor
