Compare commits

...

6 Commits
2.5.0 ... main

Author SHA1 Message Date
passivestar 3250c3c798
Update README 2025-12-13 14:13:05 +07:00
passivestar a94a281a31 Fix 2D ruler visibility 2025-11-15 21:04:06 +07:00
passivestar ceab4ec7ef Merge branch 'main' of https://github.com/passivestar/godot-minimal-theme 2025-11-07 09:02:37 +07:00
passivestar a1eee9667c Improve visibility of separators
Backport of https://github.com/godotengine/godot/pull/112313
2025-11-07 08:34:03 +07:00
passivestar b858bc4c25
Update recommended settings 2025-11-07 08:26:12 +07:00
passivestar 472933311a Fix icons in the light theme
Backport of https://github.com/godotengine/godot/pull/112277, closes #57
2025-11-07 08:23:41 +07:00
2 changed files with 123 additions and 99 deletions

@ -4,6 +4,9 @@
# Godot Minimal Theme
> [!NOTE]
> This theme has been ported to Godot natively and is the new default theme starting with Godot 4.6. You don't need to install it anymore. All of the future UI improvements will happen in the [Godot repository](https://github.com/godotengine/godot).
## Installation
1. Download the `minimal_theme.tres` file of the [latest theme version](https://github.com/passivestar/godot-minimal-theme/releases/latest).
@ -16,9 +19,9 @@ Minimal theme supports all editor settings. My recommendations are:
`Editor Settings -> Interface -> Theme`:
- Base Color: `#252525`
- Base Color: `#272727`
- Accent Color: `#569eff`
- Contrast: `0.25-0.3`
- Contrast: `0.3-0.35`
- Icon Saturation: `2`
- Corner Radius: `4-5`

@ -61,7 +61,7 @@ func _init() -> void:
var color_mono : Color = Color.WHITE if dark_theme else Color.BLACK
var color_mono_inv : Color = Color.BLACK if dark_theme else Color.WHITE
var color_mono_icon_and_font : Color = Color.WHITE if dark_theme_icon_and_font else Color.BLACK
var color_mono_font : Color = Color.WHITE if dark_theme_icon_and_font else Color.BLACK
# Ensure minimum contrast with the light theme. The default
# contrast makes it hard to see the UI elements
@ -77,11 +77,20 @@ func _init() -> void:
var color_surface_higher : Color = _get_base_color(0.35, 0.8)
var color_surface_highest : Color = _get_base_color(0.55, 0.6)
# Font and icon colors
var color_font_and_icon_normal : Color = color_mono_icon_and_font * Color(1, 1, 1, 0.7)
var color_font_and_icon_secondary : Color = color_mono_icon_and_font * Color(1, 1, 1, 0.45)
var color_font_and_icon_highlighted : Color = color_mono_icon_and_font
var color_font_and_icon_dimmed : Color = color_mono_icon_and_font * Color(1, 1, 1, 0.35 if dark_theme_icon_and_font else 0.5)
# Font colors
var color_font_normal : Color = color_mono_font * Color(1, 1, 1, 0.7)
var color_font_secondary : Color = color_mono_font * Color(1, 1, 1, 0.45)
var color_font_highlighted : Color = color_mono_font
var color_font_dimmed : Color = color_mono_font * Color(1, 1, 1, 0.35 if dark_theme_icon_and_font else 0.5)
# Icon colors
var color_icon_normal : Color = Color(1, 1, 1, 0.7 if dark_theme_icon_and_font else 0.95)
var color_icon_secondary : Color = Color(1, 1, 1, 0.45 if dark_theme_icon_and_font else 0.6)
var color_icon_focus : Color = Color(1, 1, 1)
var color_icon_hover : Color = Color(1, 1, 1)
var color_icon_pressed : Color = accent_color * (1.15 if dark_theme_icon_and_font else 3.5)
color_icon_pressed.a = 1.0
var color_icon_disabled : Color = Color(1, 1, 1, 0.35 if dark_theme_icon_and_font else 0.5)
# Button colors
var color_button_normal : Color = _get_base_color(0.35, 0.85)
@ -166,8 +175,8 @@ func _init() -> void:
set_color('track_focus_color', 'AnimationBezierTrackEdit', color_mono * Color(1, 1, 1, 0.1))
set_color('v_line_color', 'AnimationBezierTrackEdit', Color.TRANSPARENT)
set_color('font_primary_color', 'AnimationTimelineEdit', color_font_and_icon_normal)
set_color('font_secondary_color', 'AnimationTimelineEdit', color_font_and_icon_dimmed)
set_color('font_primary_color', 'AnimationTimelineEdit', color_font_normal)
set_color('font_secondary_color', 'AnimationTimelineEdit', color_font_dimmed)
set_color('h_line_color', 'AnimationTimelineEdit', Color.TRANSPARENT)
set_color('v_line_primary_color', 'AnimationTimelineEdit', color_mono * Color(1, 1, 1, 0.4))
set_color('v_line_secondary_color', 'AnimationTimelineEdit', color_mono * Color(1, 1, 1, 0.08))
@ -244,14 +253,18 @@ func _init() -> void:
# Button
set_color('font_color', 'Button', color_font_and_icon_normal)
set_color('font_disabled_color', 'Button', color_font_and_icon_dimmed)
set_color('font_focus_color', 'Button', color_font_and_icon_highlighted)
set_color('font_hover_color', 'Button', color_font_and_icon_highlighted)
set_color('font_hover_pressed_color', 'Button', color_font_and_icon_highlighted)
set_color('font_pressed_color', 'Button', color_font_and_icon_highlighted)
set_color('icon_disabled_color', 'Button', color_font_and_icon_dimmed)
set_color('icon_normal_color', 'Button', color_font_and_icon_normal)
set_color('font_color', 'Button', color_font_normal)
set_color('font_disabled_color', 'Button', color_font_dimmed)
set_color('font_focus_color', 'Button', color_font_highlighted)
set_color('font_hover_color', 'Button', color_font_highlighted)
set_color('font_hover_pressed_color', 'Button', color_font_highlighted)
set_color('font_pressed_color', 'Button', color_font_highlighted)
set_color('icon_disabled_color', 'Button', color_icon_disabled)
set_color('icon_focus_color', 'Button', color_icon_focus)
set_color('icon_hover_color', 'Button', color_icon_hover)
set_color('icon_hover_pressed_color', 'Button', color_icon_hover)
set_color('icon_normal_color', 'Button', color_icon_normal)
set_color('icon_pressed_color', 'Button', color_icon_pressed)
set_constant('outline_size', 'Button', 0)
set_stylebox('disabled', 'Button', button_disabled_sb)
set_stylebox('disabled_mirrored', 'Button', button_disabled_sb)
@ -267,8 +280,8 @@ func _init() -> void:
# Checkbox
set_color('font_hover_pressed_color', 'CheckBox', color_font_and_icon_highlighted)
set_color('font_pressed_color', 'CheckBox', color_font_and_icon_normal)
set_color('font_hover_pressed_color', 'CheckBox', color_font_highlighted)
set_color('font_pressed_color', 'CheckBox', color_font_normal)
sb = base_sb.duplicate()
sb.draw_center = false
@ -278,9 +291,9 @@ func _init() -> void:
# CheckButton
set_color('font_focus_color', 'CheckButton', color_font_and_icon_normal)
set_color('font_hover_pressed_color', 'CheckButton', color_font_and_icon_highlighted)
set_color('font_pressed_color', 'CheckButton', color_font_and_icon_normal)
set_color('font_focus_color', 'CheckButton', color_font_normal)
set_color('font_hover_pressed_color', 'CheckButton', color_font_highlighted)
set_color('font_pressed_color', 'CheckButton', color_font_normal)
# Editor
@ -288,14 +301,14 @@ func _init() -> void:
set_color('box_selection_fill_color', 'Editor', color_mono * Color(1, 1, 1, 0.12))
set_color('box_selection_stroke_color', 'Editor', color_mono * Color(1, 1, 1, 0.4))
# Ruler in 2D view:
set_color('dark_color_2', 'Editor', color_mono_inv * Color(1, 1, 1, 0.3))
set_color('dark_color_2', 'Editor', base_color.lerp(color_mono_inv, 0.3) * Color(1, 1, 1, 0.8))
# Shortcut tree cell background:
set_color('dark_color_3', 'Editor', color_surface_lower)
set_color('forward_plus_color', 'Editor', Color(0.54902, 0.752941, 0.392157))
set_color('gl_compatibility_color', 'Editor', Color(0.447059, 0.698039, 0.890196))
set_color('mobile_color', 'Editor', Color(0.862745, 0.482353, 0.584314))
set_color('property_color_w', 'Editor', color_font_and_icon_normal)
set_color('property_color_w', 'Editor', color_font_normal)
set_color('property_color_x', 'Editor', Color('#E16277') if dark_theme_icon_and_font else Color('#670A18'))
set_color('property_color_y', 'Editor', Color('#C3EF65') if dark_theme_icon_and_font else Color('#455E10'))
set_color('property_color_z', 'Editor', Color('#6AABF6') if dark_theme_icon_and_font else Color('#143862'))
@ -351,7 +364,7 @@ func _init() -> void:
# EditorProperty
set_color('property_color', 'EditorProperty', color_font_and_icon_normal)
set_color('property_color', 'EditorProperty', color_font_normal)
set_color('warning_color', 'EditorProperty', get_color('warning_color', 'Editor'))
set_stylebox('bg', 'EditorProperty', base_empty_sb)
@ -426,15 +439,15 @@ func _init() -> void:
set_stylebox('hover', 'RunBarButton', sb)
# Godot 4.5:
set_color('icon_normal_color', 'RunBarButtonMovieMakerDisabled', color_font_and_icon_normal)
set_color('icon_pressed_color', 'RunBarButtonMovieMakerDisabled', color_font_and_icon_highlighted)
set_color('icon_hover_color', 'RunBarButtonMovieMakerDisabled', color_font_and_icon_highlighted)
set_color('icon_hover_pressed_color', 'RunBarButtonMovieMakerDisabled', color_font_and_icon_highlighted)
set_color('icon_normal_color', 'RunBarButtonMovieMakerDisabled', color_font_normal)
set_color('icon_pressed_color', 'RunBarButtonMovieMakerDisabled', color_font_highlighted)
set_color('icon_hover_color', 'RunBarButtonMovieMakerDisabled', color_font_highlighted)
set_color('icon_hover_pressed_color', 'RunBarButtonMovieMakerDisabled', color_font_highlighted)
set_color('icon_normal_color', 'RunBarButtonMovieMakerEnabled', color_font_and_icon_normal)
set_color('icon_pressed_color', 'RunBarButtonMovieMakerEnabled', color_font_and_icon_highlighted)
set_color('icon_hover_color', 'RunBarButtonMovieMakerEnabled', color_font_and_icon_highlighted)
set_color('icon_hover_pressed_color', 'RunBarButtonMovieMakerEnabled', color_font_and_icon_highlighted)
set_color('icon_normal_color', 'RunBarButtonMovieMakerEnabled', color_font_normal)
set_color('icon_pressed_color', 'RunBarButtonMovieMakerEnabled', color_font_highlighted)
set_color('icon_hover_color', 'RunBarButtonMovieMakerEnabled', color_font_highlighted)
set_color('icon_hover_pressed_color', 'RunBarButtonMovieMakerEnabled', color_font_highlighted)
# Godot 4.4 and earlier:
set_color('movie_writer_icon_hover', 'EditorStyles', Color(1, 1, 1, 0.8))
@ -451,14 +464,18 @@ func _init() -> void:
# FlatButton
set_color('font_color', 'FlatButton', color_font_and_icon_normal)
set_color('font_disabled_color', 'FlatButton', color_font_and_icon_dimmed)
set_color('font_focus_color', 'FlatButton', color_font_and_icon_highlighted)
set_color('font_hover_color', 'FlatButton', color_font_and_icon_highlighted)
set_color('font_hover_pressed_color', 'FlatButton', color_font_and_icon_highlighted)
set_color('font_pressed_color', 'FlatButton', color_font_and_icon_highlighted)
set_color('icon_disabled_color', 'FlatButton', color_font_and_icon_dimmed)
set_color('icon_normal_color', 'FlatButton', color_font_and_icon_normal)
set_color('font_color', 'FlatButton', color_font_normal)
set_color('font_disabled_color', 'FlatButton', color_font_dimmed)
set_color('font_focus_color', 'FlatButton', color_font_highlighted)
set_color('font_hover_color', 'FlatButton', color_font_highlighted)
set_color('font_hover_pressed_color', 'FlatButton', color_font_highlighted)
set_color('font_pressed_color', 'FlatButton', color_font_highlighted)
set_color('icon_disabled_color', 'FlatButton', color_icon_disabled)
set_color('icon_focus_color', 'FlatButton', color_icon_focus)
set_color('icon_hover_color', 'FlatButton', color_icon_hover)
set_color('icon_hover_pressed_color', 'FlatButton', color_icon_hover)
set_color('icon_normal_color', 'FlatButton', color_icon_normal)
set_color('icon_pressed_color', 'FlatButton', color_icon_pressed)
set_stylebox('disabled', 'FlatButton', base_empty_wide_sb)
set_stylebox('disabled_mirrored', 'FlatButton', base_empty_wide_sb)
@ -473,19 +490,19 @@ func _init() -> void:
# FlatMenuButton
set_color('font_color', 'FlatMenuButton', color_font_and_icon_normal)
set_color('font_disabled_color', 'FlatMenuButton', color_font_and_icon_dimmed)
set_color('font_focus_color', 'FlatMenuButton', color_font_and_icon_highlighted)
set_color('font_hover_color', 'FlatMenuButton', color_font_and_icon_highlighted)
set_color('font_hover_pressed_color', 'FlatMenuButton', color_font_and_icon_highlighted)
set_color('font_pressed_color', 'FlatMenuButton', color_font_and_icon_highlighted)
set_color('font_color', 'FlatMenuButton', color_font_normal)
set_color('font_disabled_color', 'FlatMenuButton', color_font_dimmed)
set_color('font_focus_color', 'FlatMenuButton', color_font_highlighted)
set_color('font_hover_color', 'FlatMenuButton', color_font_highlighted)
set_color('font_hover_pressed_color', 'FlatMenuButton', color_font_highlighted)
set_color('font_pressed_color', 'FlatMenuButton', color_font_highlighted)
set_color('icon_normal_color', 'FlatMenuButton', color_font_and_icon_normal)
set_color('icon_disabled_color', 'FlatMenuButton', color_font_and_icon_dimmed)
set_color('icon_focus_color', 'FlatMenuButton', color_font_and_icon_highlighted)
set_color('icon_hover_color', 'FlatMenuButton', color_font_and_icon_highlighted)
set_color('icon_hover_pressed_color', 'FlatMenuButton', color_font_and_icon_highlighted)
set_color('icon_pressed_color', 'FlatMenuButton', color_font_and_icon_highlighted)
set_color('icon_disabled_color', 'FlatMenuButton', color_icon_disabled)
set_color('icon_focus_color', 'FlatMenuButton', color_icon_focus)
set_color('icon_hover_color', 'FlatMenuButton', color_icon_hover)
set_color('icon_hover_pressed_color', 'FlatMenuButton', color_icon_hover)
set_color('icon_normal_color', 'FlatMenuButton', color_icon_normal)
set_color('icon_pressed_color', 'FlatMenuButton', color_icon_pressed)
set_stylebox('disabled', 'FlatMenuButton', base_empty_wide_sb)
set_stylebox('disabled_mirrored', 'FlatMenuButton', base_empty_wide_sb)
@ -575,7 +592,7 @@ func _init() -> void:
# Label
set_color('font_color', 'Label', color_font_and_icon_normal)
set_color('font_color', 'Label', color_font_normal)
empty_sb = base_empty_sb.duplicate()
# Keeping vertical margin low otherwise quick open looks bad
@ -584,7 +601,7 @@ func _init() -> void:
# LineEdit and TextEdit
set_color('font_placeholder_color', 'LineEdit', color_font_and_icon_dimmed)
set_color('font_placeholder_color', 'LineEdit', color_font_dimmed)
sb = base_sb.duplicate()
sb.bg_color = color_surface_lowest
@ -625,19 +642,19 @@ func _init() -> void:
# MenuButton
set_color('font_color', 'MenuButton', color_font_and_icon_normal)
set_color('font_disabled_color', 'MenuButton', color_font_and_icon_dimmed)
set_color('font_focus_color', 'MenuButton', color_font_and_icon_highlighted)
set_color('font_hover_color', 'MenuButton', color_font_and_icon_highlighted)
set_color('font_hover_pressed_color', 'MenuButton', color_font_and_icon_highlighted)
set_color('font_pressed_color', 'MenuButton', color_font_and_icon_highlighted)
set_color('font_color', 'MenuButton', color_font_normal)
set_color('font_disabled_color', 'MenuButton', color_font_dimmed)
set_color('font_focus_color', 'MenuButton', color_font_highlighted)
set_color('font_hover_color', 'MenuButton', color_font_highlighted)
set_color('font_hover_pressed_color', 'MenuButton', color_font_highlighted)
set_color('font_pressed_color', 'MenuButton', color_font_highlighted)
set_color('icon_normal_color', 'MenuButton', color_font_and_icon_normal)
set_color('icon_disabled_color', 'MenuButton', color_font_and_icon_dimmed)
set_color('icon_focus_color', 'MenuButton', color_font_and_icon_highlighted)
set_color('icon_hover_color', 'MenuButton', color_font_and_icon_highlighted)
set_color('icon_hover_pressed_color', 'MenuButton', color_font_and_icon_highlighted)
set_color('icon_pressed_color', 'MenuButton', color_font_and_icon_highlighted)
set_color('icon_disabled_color', 'MenuButton', color_icon_disabled)
set_color('icon_focus_color', 'MenuButton', color_icon_focus)
set_color('icon_hover_color', 'MenuButton', color_icon_hover)
set_color('icon_hover_pressed_color', 'MenuButton', color_icon_hover)
set_color('icon_normal_color', 'MenuButton', color_icon_normal)
set_color('icon_pressed_color', 'MenuButton', color_icon_pressed)
set_stylebox('disabled', 'MenuButton', base_empty_wide_sb)
set_stylebox('disabled_mirrored', 'MenuButton', base_empty_wide_sb)
@ -655,14 +672,18 @@ func _init() -> void:
set_constant('arrow_margin', 'OptionButton', int(base_margin * 2 * scale))
set_color('font_color', 'OptionButton', color_font_and_icon_normal)
set_color('font_disabled_color', 'OptionButton', color_font_and_icon_dimmed)
set_color('font_focus_color', 'OptionButton', color_font_and_icon_highlighted)
set_color('font_hover_color', 'OptionButton', color_font_and_icon_highlighted)
set_color('font_hover_pressed_color', 'OptionButton', color_font_and_icon_highlighted)
set_color('font_pressed_color', 'OptionButton', color_font_and_icon_highlighted)
set_color('icon_disabled_color', 'OptionButton', color_font_and_icon_dimmed)
set_color('icon_normal_color', 'OptionButton', color_font_and_icon_normal)
set_color('font_color', 'OptionButton', color_font_normal)
set_color('font_disabled_color', 'OptionButton', color_font_dimmed)
set_color('font_focus_color', 'OptionButton', color_font_highlighted)
set_color('font_hover_color', 'OptionButton', color_font_highlighted)
set_color('font_hover_pressed_color', 'OptionButton', color_font_highlighted)
set_color('font_pressed_color', 'OptionButton', color_font_highlighted)
set_color('icon_disabled_color', 'OptionButton', color_icon_disabled)
set_color('icon_focus_color', 'OptionButton', color_icon_focus)
set_color('icon_hover_color', 'OptionButton', color_icon_hover)
set_color('icon_hover_pressed_color', 'OptionButton', color_icon_hover)
set_color('icon_normal_color', 'OptionButton', color_icon_normal)
set_color('icon_pressed_color', 'OptionButton', color_icon_pressed)
set_stylebox('disabled', 'OptionButton', button_disabled_sb)
set_stylebox('disabled_mirrored', 'OptionButton', button_disabled_sb)
@ -693,9 +714,9 @@ func _init() -> void:
set_stylebox('panel', 'PopupMenu', sb)
var line_sb : StyleBoxLine = StyleBoxLine.new()
line_sb.color = Color(0, 0, 0, 0.2 if dark_theme else 0.1)
line_sb.grow_begin = base_margin * -1.5 * scale
line_sb.grow_end = base_margin * -1.5 * scale
line_sb.color = color_mono * Color(1, 1, 1, 0.075 if dark_theme else 0.125)
line_sb.grow_begin = base_margin * -2.0 * scale
line_sb.grow_end = base_margin * -2.0 * scale
line_sb.thickness = int(ceilf(scale * 2))
set_stylebox('labeled_separator_left', 'PopupMenu', line_sb)
set_stylebox('labeled_separator_right', 'PopupMenu', line_sb)
@ -804,23 +825,23 @@ func _init() -> void:
# TabContainer
set_color('font_selected_color', 'TabBar', color_font_and_icon_normal)
set_color('font_selected_color', 'TabContainer', color_font_and_icon_normal)
set_color('font_hovered_color', 'TabBar', color_font_and_icon_highlighted)
set_color('font_hovered_color', 'TabContainer', color_font_and_icon_highlighted)
set_color('font_unselected_color', 'TabBar', color_font_and_icon_secondary)
set_color('font_unselected_color', 'TabContainer', color_font_and_icon_secondary)
set_color('font_disabled_color', 'TabBar', color_font_and_icon_dimmed * Color(1, 1, 1, 0.55))
set_color('font_disabled_color', 'TabContainer', color_font_and_icon_dimmed * Color(1, 1, 1, 0.55))
set_color('icon_selected_color', 'TabBar', color_font_and_icon_normal)
set_color('icon_selected_color', 'TabContainer', color_font_and_icon_normal)
set_color('icon_hovered_color', 'TabBar', color_font_and_icon_highlighted)
set_color('icon_hovered_color', 'TabContainer', color_font_and_icon_highlighted)
set_color('icon_unselected_color', 'TabBar', color_font_and_icon_secondary)
set_color('icon_unselected_color', 'TabContainer', color_font_and_icon_secondary)
set_color('icon_disabled_color', 'TabBar', color_font_and_icon_dimmed * Color(1, 1, 1, 0.55))
set_color('icon_disabled_color', 'TabContainer', color_font_and_icon_dimmed * Color(1, 1, 1, 0.55))
set_color('font_selected_color', 'TabBar', color_font_normal)
set_color('font_selected_color', 'TabContainer', color_font_normal)
set_color('font_hovered_color', 'TabBar', color_font_highlighted)
set_color('font_hovered_color', 'TabContainer', color_font_highlighted)
set_color('font_unselected_color', 'TabBar', color_font_secondary)
set_color('font_unselected_color', 'TabContainer', color_font_secondary)
set_color('font_disabled_color', 'TabBar', color_font_dimmed * Color(1, 1, 1, 0.55))
set_color('font_disabled_color', 'TabContainer', color_font_dimmed * Color(1, 1, 1, 0.55))
set_color('icon_selected_color', 'TabBar', color_font_normal)
set_color('icon_selected_color', 'TabContainer', color_font_normal)
set_color('icon_hovered_color', 'TabBar', color_font_highlighted)
set_color('icon_hovered_color', 'TabContainer', color_font_highlighted)
set_color('icon_unselected_color', 'TabBar', color_font_secondary)
set_color('icon_unselected_color', 'TabContainer', color_font_secondary)
set_color('icon_disabled_color', 'TabBar', color_font_dimmed * Color(1, 1, 1, 0.55))
set_color('icon_disabled_color', 'TabContainer', color_font_dimmed * Color(1, 1, 1, 0.55))
sb = base_sb.duplicate()
_set_margin(sb, base_margin * 4, base_margin * 2.1, base_margin * 4, base_margin * 2.1)
@ -877,8 +898,8 @@ func _init() -> void:
# Tree
set_color('drop_position_color', 'Tree', color_font_and_icon_dimmed)
set_color('font_color', 'Tree', color_font_and_icon_normal)
set_color('drop_position_color', 'Tree', color_font_dimmed)
set_color('font_color', 'Tree', color_font_normal)
set_color('guide_color', 'Tree', Color.TRANSPARENT)
set_color('parent_hl_line_color', 'Tree', color_mono * Color(1, 1, 1, relationship_line_opacity))
set_constant('children_hl_line_width', 'Tree', 0)
@ -946,7 +967,7 @@ func _init() -> void:
# Separators
line_sb = StyleBoxLine.new()
line_sb.color = Color(0, 0, 0, 0.3) if dark_theme else Color(0, 0, 0, 0.1)
line_sb.color = Color(0, 0, 0, 0.4) if dark_theme else Color(0, 0, 0, 0.2)
line_sb.grow_begin = base_margin * -1 * scale
line_sb.grow_end = base_margin * -1 * scale
line_sb.thickness = int(ceilf(scale * 2))