/******************************************************************************/
/*   Copyright (C) 2014-2015 by Philippe Groarke <philippe.groarke@gmail.com> */
/*                                                                            */
/*                                                                            */
/*   This program is free software: you can redistribute it and/or modify     */
/*   it under the terms of the GNU General Public License as published by     */
/*   the Free Software Foundation, either version 2 of the License, or        */
/*   (at your option) any later version.                                      */
/*                                                                            */
/*   This program is distributed in the hope that it will be useful,          */
/*   but WITHOUT ANY WARRANTY; without even the implied warranty of           */
/*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            */
/*   GNU General Public License for more details.                             */
/*                                                                            */
/*                                                                            */
/*   You should have received a copy of the GNU General Public License        */
/*   along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
/******************************************************************************/

/* Colors */

OBSThemeMeta {
    dark: 'true';
    author: 'Warchamp7';
}

/* Custom theme information.  This will set the application's QPalette, as
 * well as pass to QML via the OBSTheme object.
 * Can also use OBSTheme::disabled, OBSTheme::active, and OBSTheme::inactive.
 * Using it without will set all three (making 'active' a bit redundant) */
OBSTheme {
    window: rgb(31,33,42);
    windowText: rgb(255,254,255);

    base: rgb(43,46,56);
    alternateBase: rgb(11,10,11);

    text: rgb(255,254,255);

    button: rgb(60,64,75);
    buttonText: rgb(255,254,255);

    brightText: rgb(255,254,255);

    light: rgb(88,87,88);
    mid: rgb(31,33,42);
    dark: rgb(43,46,56);
    shadow: rgb(11,10,11);

    primary: rgb(40,76,184);
    primaryLight: rgb(54,92,192);
    primaryDark: rgb(25,27,38);

    highlight: rgb(42,130,218);
    highlightText: rgb(255,254,255);

    link: rgb(77,166,255);
    linkVisited: rgb(77,166,255);
}

OBSTheme::disabled {
    windowText: rgb(153,153,153);
    text: rgb(153,153,153);
    button: rgb(27,29,34);

    buttonText: rgb(43,46,56);
    brightText: rgb(43,46,56);
}

OBSTheme::inactive {
    text: rgb(255,254,255);

    highlight: rgb(25,28,34);
    highlightText: rgb(255,255,255);
}

/* Default widget style, we override only what is needed. */

QWidget {
    alternate-background-color: palette(base);
    color: palette(text);
    selection-background-color: rgb(40,76,184);
    selection-color: palette(text);
    font-size: 10pt;
    font-family: 'Open Sans', '.AppleSystemUIFont', Helvetica, Arial, 'MS Shell Dlg', sans-serif;
}

QWidget:disabled {
    color: rgb(153,153,153);
}

/* Container windows */

QDialog,
QMainWindow,
QStatusBar,
QMenuBar,
QMenu {
    background-color: palette(window);
}

/* macOS Separator Fix */

QMainWindow::separator {
    background: transparent;
    width: 4px;
    height: 4px;
}

/* General Widgets */

QLabel,
QGroupBox,
QCheckBox {
    background: transparent;
}

QComboBox,
QCheckBox,
QPushButton,
QSpinBox,
QDoubleSpinBox {
    margin-top: 3px;
    margin-bottom: 3px;
}

QListWidget QWidget,
SceneTree QWidget,
SourceTree QWidget {
    margin-top: 0;
    margin-bottom: 0;
}

* [frameShape="1"], * [frameShape="2"], * [frameShape="3"], * [frameShape="4"], * [frameShape="5"], * [frameShape="6"] {
    border: 1px solid palette(dark);
}


/* Misc */

QAbstractItemView, QStackedWidget#stackedMixerArea QWidget {
    background-color: palette(base);
}

QToolTip {
    background-color: palette(base);
    color: palette(text);
    border: none;
}

/* Context Menu */

QMenu::icon {
    left: 4px;
}

QMenu::separator {
    background: palette(button);
    height: 1px;
    margin: 3px 6px;
}

QMenu::item:disabled {
    color: rgb(153,153,153);
    background: transparent;
}

QMenu::right-arrow {
    image: url(theme:Dark/expand.svg);
}

/* Top Menu Bar Items */
QMenuBar::item {
    background-color: transparent;
}

QMenuBar::item:selected {
    background: rgb(40,76,184);
}

/* Item Lists */
QListWidget {
    border-radius: 4px;
}

QListWidget::item {
    color: palette(text);
}

QListWidget,
QMenu,
SceneTree,
SourceTree {
    padding: 3px;
}

QListWidget::item,
SourceTreeItem,
QMenu::item,
SceneTree::item {
    padding: 6px;
}

QMenu::item {
    padding-right: 20px;
}

QListWidget::item,
SourceTreeItem,
QMenu::item,
SceneTree::item,
SourceTree::item {
    border-radius: 4px;
    color: palette(text);
    border: 0px solid transparent;
}

QMenu::item:selected,
QListWidget::item:selected,
SceneTree::item:selected,
SourceTree::item:selected {
    background-color: rgb(40,76,184);
}

QMenu::item:hover,
QListWidget::item:hover,
SceneTree::item:hover,
SourceTree::item:hover,
QMenu::item:selected:hover,
QListWidget::item:selected:hover,
SceneTree::item:selected:hover,
SourceTree::item:selected:hover {
    background-color: rgb(54,92,192);
    color: palette(text);
}

QListWidget::item:disabled,
QListWidget::item:disabled:hover,
SourceTree::item:disabled,
SourceTree::item:disabled:hover,
SceneTree::item:disabled,
SceneTree::item:disabled:hover {
    background: transparent;
    color: rgb(153,153,153);
}

QListWidget QLineEdit,
SceneTree QLineEdit,
SourceTree QLineEdit {
    padding:  0px;
    padding-bottom: 2px;
    margin: 0px;
    border: 1px solid #FFF;
    border-radius: 4px;
}

QListWidget QLineEdit:focus,
SceneTree QLineEdit:focus,
SourceTree QLineEdit:focus {
    border: 1px solid #FFF;
}

/* Settings QList */

OBSBasicSettings QListWidget {
    border-radius: 4px;
    padding: 3px;
}

OBSBasicSettings QListWidget::item {
    border-radius: 4px;
    padding: 6px;
}

/* Settings properties view */
OBSBasicSettings #PropertiesContainer {
    background-color: palette(dark);
}

#PropertiesContainer QListWidget {
    background-color: palette(button);
}

/* Dock Widget */
OBSDock > QWidget {
    background: palette(dark);
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
}

OBSDock QFrame {
    background: palette(dark);
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
}

#transitionsContainer QPushButton {
    margin: 0px 0px;
    padding: 4px 6px;
}

OBSDock QLabel {
    background: transparent;
}

OBSDock QComboBox,
OBSDock QPushButton {
    margin: 1px 2px;
}

QDockWidget {
    font-size: 10.5pt;
    font-weight: bold;

    titlebar-close-icon: url(theme:Dark/close.svg);
    titlebar-normal-icon: url(theme:Dark/popout.svg);
}

QDockWidget::title {
    text-align: left;
    background-color: palette(button);
    padding: 6px 8px;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
}

QDockWidget::close-button, QDockWidget::float-button {
    border: 0px solid transparent;
    border-radius: 4px;
    background: transparent;
    margin-right: 1px;
    opacity: .5;
}

QDockWidget::close-button:hover, QDockWidget::float-button:hover {
    background: rgb(79,83,94);
    opacity: 1;
}

QDockWidget::close-button:pressed, QDockWidget::float-button:pressed {
    padding: 1px -1px -1px 1px;
}

QScrollArea {
    border-radius: 4px;
}

/* Qt enforces a padding inside its status bar, so we
 * oversize it and use margin to crunch it back down
 */
OBSBasicStatusBar {
    margin-top: 4px;
    border-top: 1px solid #3c404b;
    background: palette(dark);
}

StatusBarWidget > QFrame {
    margin-top: 1px;
    border: 0px solid #3c404b;
    border-left-width: 1px;
    padding: 0px 12px 2px;
}

/* Group Box */

QGroupBox {
    background: palette(dark);
    border-radius: 4px;
    padding-top: 32px;
    padding-bottom: 8px;
    font-weight: bold;
    margin-bottom: 6px;
}

QGroupBox::title {
    subcontrol-origin: margin;
    left: 8px;
    top: 8px;
}


/* ScrollBars */

::corner {
    background-color: palette(window);
    border: none;
}

QScrollBar:vertical {
    background-color: transparent;
    width: 14px;
    margin: 0px;
}

QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
    border: none;
    background: none;
    height: 0px;
}

QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical, QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
    border: none;
    background: none;
    color: none;
}

QScrollBar:horizontal {
    background-color: transparent;
    height: 14px;
    margin: 0px;
}

QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
    border: none;
    background: none;
    width: 0px;
}

QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal, QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
    border: none;
    background: none;
    color: none;
}

QScrollBar::handle {
    background-color: palette(button);
    margin: 2px;
    border-radius: 2px;
    border: 1px solid palette(button);
}

QScrollBar::handle:hover {
    background-color: rgb(79,83,94);
    border-color: rgb(79,83,94);
}

QScrollBar::handle:pressed {
    background-color: rgb(40,76,184);
    border-color: rgb(40,76,184);
}

QScrollBar::handle:vertical {
    min-height: 20px;
}

QScrollBar::handle:horizontal {
    min-width: 20px;
}

/* Source Context Bar */

#contextContainer {
  background-color: palette(dark);
  margin-top: 4px;
  border-radius: 4px;
}

#contextContainer QPushButton {
    padding-left: 12px;
    padding-right: 12px;
}

QPushButton#sourcePropertiesButton {
    qproperty-icon: url(theme:Dark/settings/general.svg);
}

QPushButton#sourceFiltersButton {
    qproperty-icon: url(theme:Dark/filter.svg);
}

/* Scenes and Sources toolbar */

QToolBar {
    background-color: palette(dark);
    border: none;
    padding: 0px;
    margin: 4px 0px;
}

QPushButton[toolButton="true"],
QToolButton {
    background-color: rgb(60,64,75);
    padding: 4px 6px;
    margin: 0px 2px;
    border-radius: 4px;
}

QPushButton[toolButton="true"]:last-child,
QToolButton:last-child {
    margin-right: 0px;
}

QToolButton:hover {
    background-color: rgb(79,83,94);
}

QToolButton:pressed {
    background-color: rgb(25,27,38);
}

* [themeID="addIconSmall"] {
    qproperty-icon: url(theme:Dark/plus.svg);
}

* [themeID="removeIconSmall"] {
    qproperty-icon: url(theme:Dark/trash.svg);
}

* [themeID="clearIconSmall"] {
    qproperty-icon: url(theme:Dark/entry-clear.svg);
}

* [themeID="propertiesIconSmall"] {
    qproperty-icon: url(theme:Dark/settings/general.svg);
}

* [themeID="configIconSmall"] {
    qproperty-icon: url(theme:Dark/settings/general.svg);
}

* [themeID="menuIconSmall"] {
    qproperty-icon: url(theme:Dark/dots-vert.svg);
}

* [themeID="refreshIconSmall"] {
    qproperty-icon: url(theme:Dark/refresh.svg);
}

* [themeID="cogsIcon"] {
    qproperty-icon: url(theme:Dark/cogs.svg);
}

#sourceInteractButton {
    qproperty-icon: url(theme:Dark/interact.svg);
}

* [themeID="upArrowIconSmall"] {
    qproperty-icon: url(theme:Dark/up.svg);
}

* [themeID="downArrowIconSmall"] {
    qproperty-icon: url(theme:Dark/down.svg);
}

* [themeID="pauseIconSmall"] {
    qproperty-icon: url(theme:Dark/media-pause.svg);
}

* [themeID="filtersIcon"] {
    qproperty-icon: url(theme:Dark/filter.svg);
}

QToolBarExtension {
    background: palette(button);
    min-width: 12px;
    max-width: 12px;
    padding: 4px 0px;
    margin-left: 0px;

    qproperty-icon: url(theme:Dark/dots-vert.svg);
}


/* Tab Widget */

QTabWidget::pane { /* The tab widget frame */
    border-top: 4px solid palette(base);
}

QTabWidget::tab-bar {
    alignment: left;
}

QTabBar QToolButton {
    background: rgb(44,46,53);
    border: none;
}

QTabBar::tab:top {
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
}

QTabBar::tab:bottom {
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
}

QTabBar::tab {
    background: palette(dark);
    color: palette(text);
    border: none;
    padding: 8px 12px;
    min-width: 50px;
    margin: 1px 2px;
}

QTabBar::tab:pressed {
    background: rgb(25,27,38);
}

QTabBar::tab:hover {
    background: rgb(79,83,94);
    color: palette(text);
}

QTabBar::tab:selected {
    background: rgb(60,64,75);
    color: palette(text);
}

QTabBar::tab:top:selected {
    border-bottom: 2px solid rgb(250,250,250);
}

QTabBar::tab:bottom:selected {
    border-top: 2px solid rgb(250,250,250);
}

QTabBar QToolButton {
    background: palette(button);
    min-width: 16px;
    padding: 0px;
}

/* ComboBox */

QComboBox,
QDateTimeEdit {
    background-color: rgb(60,64,75);
    border-style: solid;
    border: 1px;
    border-radius: 4px;
    border-color: rgb(60,64,75);
    padding: 4px;
    padding-left: 10px;
}

QComboBox:hover,
QComboBox:selected,
QDateTimeEdit:hover,
QDateTimeEdit:selected {
    background-color: rgb(79,83,94);
}

QComboBox::drop-down,
QDateTimeEdit::drop-down {
    border:none;
    border-left: 1px solid rgb(25,28,34);
    width: 20px;
}

QComboBox::down-arrow,
QDateTimeEdit::down-arrow {
    qproperty-alignment: AlignTop;
    image: url(theme:Dark/updown.svg);
    width: 100%;
}

QComboBox:on,
QDateTimeEdit:on {
    background-color: rgb(25,27,38);
}

QComboBox:editable:hover {

}

QComboBox::drop-down:editable,
QDateTimeEdit::drop-down:editable {
    border-top-right-radius: 4px;
    border-bottom-right-radius: 4px;
}

QComboBox::down-arrow:editable,
QDateTimeEdit::down-arrow:editable {
    qproperty-alignment: AlignTop;
    image: url(theme:Dark/down.svg);
    width: 8%;
}

/* Textedits etc */

QLineEdit, QTextEdit, QPlainTextEdit {
    background-color: palette(button);
    border: none;
    border-radius: 4px;
    padding: 5px 2px 5px 7px;
    border: 2px solid transparent;
}

QLineEdit:hover,
QTextEdit:hover,
QPlainTextEdit:hover {
    border: 2px solid rgb(99,102,111);
}

QLineEdit:focus,
QTextEdit:focus,
QPlainTextEdit:focus {
    background-color: palette(mid);
    border: 2px solid rgb(40,76,184);
}

/* Spinbox and doubleSpinbox */

QSpinBox,
QDoubleSpinBox {
    background-color: palette(button);
    border: 2px solid palette(button);
    border-radius: 4px;
    margin-right: 3px;
    padding: 3px 0px 4px 5px;
}

QSpinBox:hover,
QDoubleSpinBox:hover {
    border: 2px solid rgb(99,102,111);
}

QSpinBox:focus,
QDoubleSpinBox:focus {
    background-color: palette(mid);
    border: 2px solid rgb(40,76,184);
}

QSpinBox::up-button, QDoubleSpinBox::up-button {
    subcontrol-origin: padding;
    subcontrol-position: top right; /* position at the top right corner */
    right: 2px;
    border-radius: 3px;
    border-width: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    border-bottom-width: 0;
}

QSpinBox::down-button, QDoubleSpinBox::down-button {
    subcontrol-origin: padding;
    subcontrol-position: bottom right; /* position at the top right corner */
    right: 2px;
    border-radius: 3px;
    border-width: 0;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    border-top-width: 0;
}

QSpinBox::up-button:hover, QSpinBox::down-button:hover, QDoubleSpinBox::up-button:hover, QDoubleSpinBox::down-button:hover {
    background-color: rgb(79,83,94);
}

QSpinBox::up-button:pressed, QSpinBox::down-button:pressed, QDoubleSpinBox::up-button:pressed, QDoubleSpinBox::down-button:pressed {
    background-color: rgb(25,27,38);
}

QSpinBox::up-button:disabled, QSpinBox::up-button:off, QSpinBox::down-button:disabled, QSpinBox::down-button:off {
    background-color: rgb(25,27,38);
}

QDoubleSpinBox::up-button:disabled, QDoubleSpinBox::up-button:off, QDoubleSpinBox::down-button:disabled, QDoubleSpinBox::down-button:off {
    background-color: rgb(25,27,38);
}

QSpinBox::up-arrow, QDoubleSpinBox::up-arrow {
    image: url(theme:Dark/up.svg);
    width: 100%;
    margin: 2px;
}

QSpinBox::down-arrow, QDoubleSpinBox::down-arrow {
    image: url(theme:Dark/down.svg);
    width: 100%;
    padding: 2px;
}


/* Controls Dock */
#controlsDock QPushButton {
    margin: 1px;
}

#streamButton,
#recordButton,
QPushButton[themeID="replayBufferButton"],
#broadcastButton {
    padding: 10px;
}

/* Primary Control Button Checked Coloring */
#streamButton:!hover:!pressed:checked,
#recordButton:!hover:!pressed:checked,
QPushButton[themeID="replayBufferButton"]:!hover:!pressed:checked,
QPushButton[themeID="vcamButton"]:!hover:!pressed:checked,
#modeSwitch:!hover:!pressed:checked,
#broadcastButton:!hover:!pressed:checked {
    background: rgb(40,76,184);
}

/* Primary Control Button Hover Coloring */
#streamButton:hover:!pressed:checked,
#recordButton:hover:!pressed:checked,
QPushButton[themeID="replayBufferButton"]:!pressed:checked,
QPushButton[themeID="vcamButton"]:!pressed:checked,
#modeSwitch:hover:!pressed:checked,
#broadcastButton:hover:!pressed:checked {
    background: rgb(54,92,192);
    color: palette(text);
}


/* Buttons */

QPushButton {
    color: palette(text);
    background-color: palette(button);
    min-height: 18px;
    border: none;
    border-radius: 4px;
    padding: 6px 16px;
}

QPushButton::flat {
    background-color: rgb(60,64,75);
}

QPushButton:checked {
    background-color: rgb(40,76,184);
}

QPushButton:hover {
    background-color: rgb(79,83,94);
}

QPushButton:pressed {
    background-color: rgb(25,27,38);
}

QPushButton:disabled, QToolButton:disabled {
    background-color: rgb(25,27,38);
}

QPushButton::menu-indicator {
    image: url(theme:Dark/down.svg);
    subcontrol-position: right;
    subcontrol-origin: padding;
    width: 25px;
}

/* Sliders */

QSlider::groove:horizontal {
    background-color: rgb(60,64,75);
    height: 4px;
    border: none;
    border-radius: 2px;
}

QSlider::handle:horizontal {
    background-color: palette(text);
    border: 1px solid palette(mid);
    border-radius: 3px;
    height: 10px;
    width: 18px;
    margin: -3px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
}

QSlider::handle:horizontal:pressed {
    background-color: palette(text);
}

QSlider::sub-page:horizontal {
    background-color: palette(highlight);
    border-radius: 2px;
}

QSlider::sub-page:horizontal:disabled {
    background-color: palette(window);
    border-radius: 2px;
}

QSlider::groove:vertical {
    background-color: rgb(60,64,75);
    width: 4px;
    border: none;
    border-radius: 2px;
}

QSlider::handle:vertical {
    background-color: palette(text);
    border: 1px solid palette(mid);
    border-radius: 3px;
    width: 10px;
    height: 18px;
    margin: 0 -3px; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
}

QSlider::handle:vertical:pressed {
    background-color: palette(text);
}

QSlider::add-page:vertical {
    background-color: palette(highlight);
    border-radius: 2px;
}

QSlider::add-page:vertical:disabled {
    background-color: palette(window);
    border-radius: 2px;
}

QSlider::handle:hover {
    background-color: rgb(200,199,200);
}

QSlider::handle:disabled {
    background-color: rgb(68,75,110);
}

/* Volume Control */

#stackedMixerArea QPushButton {
    min-width: 16px;
    padding: 4px 8px;
}

/* This is an incredibly cursed but necessary fix */
#stackedMixerArea QPushButton:!hover {
    background-color: palette(button);
}

#stackedMixerArea QPushButton:hover {
    background-color: rgb(79,83,94);
}

#stackedMixerArea QPushButton:pressed {
    background-color: rgb(25,27,38);
}

VolumeMeter {
    qproperty-backgroundNominalColor: rgb(66,112,24);
    qproperty-backgroundWarningColor: rgb(112,91,28);
    qproperty-backgroundErrorColor: rgb(112,39,53);
    qproperty-foregroundNominalColor: rgb(115,189,49);
    qproperty-foregroundWarningColor: rgb(189,144,9);
    qproperty-foregroundErrorColor: rgb(189,47,73);
    qproperty-magnitudeColor: rgb(0,0,0);
    qproperty-majorTickColor: palette(text);
    qproperty-minorTickColor: palette(light);
}

/* Status Bar */

QStatusBar::item {
    border: none;
}

/* Table View */

QTableView {
    background: palette(base);
    gridline-color: palette(light);
}

QTableView::item {
    margin: 0px;
    padding: 0px;
}

QTableView QLineEdit {
    background: palette(mid);
    padding: 0;
    margin: 0;
}

QTableView QPushButton,
QTableView QToolButton {
    margin: 1px 1px 2px;
}

QHeaderView::section {
    background-color: palette(button);
    color: palette(text);
    border: none;
    border-left: 1px solid palette(window);
    border-right: 1px solid palette(window);
    padding: 2px 4px;
    margin-bottom: 2px;
}

/* Mute CheckBox */

MuteCheckBox::indicator:checked {
    image: url(theme:Dark/mute.svg);
}

MuteCheckBox::indicator:indeterminate {
    image: url(theme:Dark/unassigned.svg);
}

MuteCheckBox::indicator:unchecked {
    image: url(theme:Dark/settings/audio.svg);
}

OBSHotkeyLabel[hotkeyPairHover=true] {
    color: rgb(53,82,222);
}

/* Label warning/error */

QLabel#warningLabel {
    color: rgb(192,128,0);
    font-weight: bold;
}

QLabel#errorLabel {
    color: rgb(192,0,0);
    font-weight: bold;
}

* [themeID="warning"] {
    color: rgb(192,128,0);
    font-weight: bold;
}

* [themeID="error"] {
    color: rgb(192,0,0);
    font-weight: bold;
}

* [themeID="good"] {
    color: rgb(0,192,0);
    font-weight: bold;
}

/* About dialog */

* [themeID="aboutName"] {
    font-size: 26pt;
    font-weight: bold;
}

* [themeID="aboutVersion"] {
    font-size: 12pt;
    margin-bottom: 20px;
}

* [themeID="aboutInfo"] {
    margin-bottom: 20px;
}

* [themeID="aboutHLayout"] {
    background-color: palette(base);
}

/* Canvas / Preview background color */

OBSQTDisplay {
    qproperty-displayBackgroundColor: rgb(25,27,38);
    border-radius: 10px;
}

/* Filters Window */

OBSBasicFilters QListWidget {
    border-radius: 4px;
    padding: 3px;
}

OBSBasicFilters QListWidget::item {
    border-radius: 4px;
    padding: 6px;
}

OBSBasicFilters #widget,
OBSBasicFilters #widget_2 {
    margin: 0px;
    padding: 0px;
    padding-bottom: 4px;
}

OBSBasicFilters #widget QPushButton,
OBSBasicFilters #widget_2 QPushButton {
    min-width: 16px;
    padding: 4px 8px;
    margin-top: 0px;
}

/* Preview/Program labels */

* [themeID="previewProgramLabels"] {
    font-size: 14pt;
    font-weight: bold;
    color: rgb(210,210,210);
    margin-bottom: 4px;
}

/* Settings Icons */

OBSBasicSettings {
    qproperty-generalIcon: url(theme:Dark/settings/general.svg);
    qproperty-streamIcon: url(theme:Dark/settings/stream.svg);
    qproperty-outputIcon: url(theme:Dark/settings/output.svg);
    qproperty-audioIcon: url(theme:Dark/settings/audio.svg);
    qproperty-videoIcon: url(theme:Dark/settings/video.svg);
    qproperty-hotkeysIcon: url(theme:Dark/settings/hotkeys.svg);
    qproperty-accessibilityIcon: url(theme:Dark/settings/accessibility.svg);
    qproperty-advancedIcon: url(theme:Dark/settings/advanced.svg);
}

/* Checkboxes */
QCheckBox {

}

QCheckBox::indicator,
QGroupBox::indicator {
    width: 18px;
    height: 18px;
}

QGroupBox::indicator {
    margin-left: 2px;
}

QCheckBox::indicator:unchecked,
QGroupBox::indicator:unchecked {
    image: url(theme:Yami/checkbox_unchecked.svg);
}

QCheckBox::indicator:unchecked:hover,
QGroupBox::indicator:unchecked:hover {
    border: none;
    image: url(theme:Yami/checkbox_unchecked_focus.svg);
}

QCheckBox::indicator:checked,
QGroupBox::indicator:checked {
    image: url(theme:Yami/checkbox_checked.svg);
}

QCheckBox::indicator:checked:hover,
QGroupBox::indicator:checked:hover {
    border: none;
    image: url(theme:Yami/checkbox_checked_focus.svg);
}

QCheckBox::indicator:checked:disabled,
QGroupBox::indicator:checked:disabled {
    image: url(theme:Yami/checkbox_checked_disabled.svg);
}

QCheckBox::indicator:unchecked:disabled,
QGroupBox::indicator:unchecked:disabled {
    image: url(theme:Yami/checkbox_unchecked_disabled.svg);
}

/* Locked CheckBox */

QCheckBox[lockCheckBox=true] {
    outline: none;
    background: transparent;
}

QCheckBox[lockCheckBox=true]::indicator {
    width: 16px;
    height: 16px;
}

QCheckBox[lockCheckBox=true]::indicator:checked,
QCheckBox[lockCheckBox=true]::indicator:checked:hover {
    image: url(theme:Dark/locked.svg);
}

QCheckBox[lockCheckBox=true]::indicator:unchecked,
QCheckBox[lockCheckBox=true]::indicator:unchecked:hover {
    image: url(:res/images/unlocked.svg);
}

/* Visibility CheckBox */

QCheckBox[visibilityCheckBox=true] {
    outline: none;
    background: transparent;
}

QCheckBox[visibilityCheckBox=true]::indicator {
    width: 16px;
    height: 16px;
}

QCheckBox[visibilityCheckBox=true]::indicator:checked,
QCheckBox[visibilityCheckBox=true]::indicator:checked:hover {
    image: url(theme:Dark/visible.svg);
}

QCheckBox[visibilityCheckBox=true]::indicator:unchecked,
QCheckBox[visibilityCheckBox=true]::indicator:unchecked:hover {
    image: url(:res/images/invisible.svg);
}

* [themeID="revertIcon"] {
    qproperty-icon: url(theme:Dark/revert.svg);
}

QPushButton#extraPanelDelete {
    background-color: palette(mid);
    margin: 0;
    padding: 0;
}

QPushButton#extraPanelDelete:hover {
    background-color: rgb(68,75,110);
}

QPushButton#extraPanelDelete:pressed {
    background-color: palette(dark);
}

/* Mute CheckBox */

MuteCheckBox {
    outline: none;
}

MuteCheckBox::indicator {
    width: 16px;
    height: 16px;
}

MuteCheckBox::indicator:checked {
    image: url(theme:Dark/mute.svg);
}

MuteCheckBox::indicator:unchecked {
    image: url(theme:Dark/settings/audio.svg);
}

MuteCheckBox::indicator:unchecked:hover {
    image: url(theme:Dark/settings/audio.svg);
}

MuteCheckBox::indicator:unchecked:focus {
    image: url(theme:Dark/settings/audio.svg);
}

MuteCheckBox::indicator:checked:hover {
    image: url(theme:Dark/mute.svg);
}

MuteCheckBox::indicator:checked:focus {
    image: url(theme:Dark/mute.svg);
}

MuteCheckBox::indicator:checked:disabled {
    image: url(theme:Dark/mute.svg);
}

MuteCheckBox::indicator:unchecked:disabled {
    image: url(theme:Dark/settings/audio.svg);
}

#hotkeyFilterReset {
    margin-top: 0px;
}

OBSHotkeyWidget {
    padding: 8px 0px;
    margin: 2px 0px;
}

OBSHotkeyLabel {
    padding: 4px 0px;
}

OBSHotkeyLabel[hotkeyPairHover=true] {
    color: rgb(53,82,222);
}

OBSHotkeyWidget QPushButton {
    min-width: 16px;
    padding: 4px 4px;
    margin-top: 0px;
    margin-left: 4px;
}


/* Sources List Group Collapse Checkbox */

QCheckBox[sourceTreeSubItem=true] {
    background: transparent;
    outline: none;
    padding: 0px;
}

QCheckBox[sourceTreeSubItem=true]::indicator {
    width: 12px;
    height: 12px;
}

QCheckBox[sourceTreeSubItem=true]::indicator:checked,
QCheckBox[sourceTreeSubItem=true]::indicator:checked:hover {
    image: url(theme:Dark/expand.svg);
}

QCheckBox[sourceTreeSubItem=true]::indicator:unchecked,
QCheckBox[sourceTreeSubItem=true]::indicator:unchecked:hover {
    image: url(theme:Dark/collapse.svg);
}

/* Source Icons */

OBSBasic {
    qproperty-imageIcon: url(theme:Dark/sources/image.svg);
    qproperty-colorIcon: url(theme:Dark/sources/brush.svg);
    qproperty-slideshowIcon: url(theme:Dark/sources/slideshow.svg);
    qproperty-audioInputIcon: url(theme:Dark/sources/microphone.svg);
    qproperty-audioOutputIcon: url(theme:Dark/settings/audio.svg);
    qproperty-desktopCapIcon: url(theme:Dark/settings/video.svg);
    qproperty-windowCapIcon: url(theme:Dark/sources/window.svg);
    qproperty-gameCapIcon: url(theme:Dark/sources/gamepad.svg);
    qproperty-cameraIcon: url(theme:Dark/sources/camera.svg);
    qproperty-textIcon: url(theme:Dark/sources/text.svg);
    qproperty-mediaIcon: url(theme:Dark/sources/media.svg);
    qproperty-browserIcon: url(theme:Dark/sources/globe.svg);
    qproperty-groupIcon: url(theme:Dark/sources/group.svg);
    qproperty-sceneIcon: url(theme:Dark/sources/scene.svg);
    qproperty-defaultIcon: url(theme:Dark/sources/default.svg);
    qproperty-audioProcessOutputIcon: url(theme:Dark/sources/windowaudio.svg);
}

/* Scene Tree Grid Mode */

SceneTree {
    qproperty-gridItemWidth: 154;
    qproperty-gridItemHeight: 31;
}

*[gridMode="true"] SceneTree::item {
    color: palette(text);
    background-color: palette(button);
    border-radius: 4px;
    margin: 2px;
}

*[gridMode="true"] SceneTree::item:selected {
    background-color: rgb(40,76,184);
}

*[gridMode="true"] SceneTree::item:checked {
    background-color: rgb(40,76,184);
}

*[gridMode="true"] SceneTree::item:hover {
    background-color: rgb(79,83,94);
}

*[gridMode="true"] SceneTree::item:selected:hover {
    background-color: rgb(54,92,192);
}

/* Save icon */

* [themeID="replayIconSmall"] {
    qproperty-icon: url(theme:Dark/save.svg);
}

/* Studio Mode T-Bar */

QSlider[themeID="tBarSlider"] {
    height: 24px;
}

QSlider::groove:horizontal[themeID="tBarSlider"] {
    border: 1px solid #4c4c4c;
    height: 5px;
    background: palette(dark);
}

QSlider::sub-page:horizontal[themeID="tBarSlider"] {
    background: palette(dark);
    border: 1px solid #4c4c4c;
}

QSlider::handle:horizontal[themeID="tBarSlider"] {
    background-color: #d2d2d2;
    width: 12px;
    height: 24px;
    margin: -24px 0px;
}

/* Media icons */

* [themeID="playIcon"] {
    qproperty-icon: url(theme:Dark/media/media_play.svg);
}

* [themeID="pauseIcon"] {
    qproperty-icon: url(theme:Dark/media/media_pause.svg);
}

* [themeID="restartIcon"] {
    qproperty-icon: url(theme:Dark/media/media_restart.svg);
}

* [themeID="stopIcon"] {
    qproperty-icon: url(theme:Dark/media/media_stop.svg);
}

* [themeID="nextIcon"] {
    qproperty-icon: url(theme:Dark/media/media_next.svg);
}

* [themeID="previousIcon"] {
    qproperty-icon: url(theme:Dark/media/media_previous.svg);
}

/* YouTube Integration */
OBSYoutubeActions {
    qproperty-thumbPlaceholder: url(theme:Dark/sources/image.svg);
}

#ytEventList QLabel {
    color: palette(text);
    background-color: palette(button);
    border: none;
    border-radius: 4px;
    padding: 4px 20px;
}

#ytEventList QLabel:hover {
    background-color: rgb(79,83,94);
}

#ytEventList QLabel[isSelectedEvent=true] {
    background-color: rgb(40,76,184);
    border: none;
}

#ytEventList QLabel[isSelectedEvent=true]:hover {
    background-color: rgb(54,92,192);
    color: palette(text);
}

/* Calendar Widget */
QDateTimeEdit::down-arrow {
    qproperty-alignment: AlignTop;
    image: url(theme:Dark/down.svg);
    width: 100%;
}

QDateTimeEdit:on {
    background-color: palette(mid);
}

/* Calendar Top Bar */
QCalendarWidget QWidget#qt_calendar_navigationbar {
    background-color: palette(base);
    padding: 4px 8px;
}

/* Calendar Top Bar Buttons */
QCalendarWidget QToolButton {
    background-color: palette(button);
    padding: 2px 16px;
    border-radius: 4px;
    margin: 2px;
}

#qt_calendar_monthbutton::menu-indicator {
    image: url(theme:Dark/down.svg);
    subcontrol-position: right;
    padding-top: 2px;
    padding-right: 6px;
    height: 10px;
    width: 10px;
}

QCalendarWidget #qt_calendar_prevmonth {
    padding: 2px;
    qproperty-icon: url(theme:Dark/left.svg);
    icon-size: 16px, 16px;
}

QCalendarWidget #qt_calendar_nextmonth {
    padding: 2px;
    qproperty-icon: url(theme:Dark/right.svg);
    icon-size: 16px, 16px;
}

QCalendarWidget QToolButton:hover {
    background-color: rgb(79,83,94);
    border-radius: 4px;
}

QCalendarWidget QToolButton:pressed {
    background-color: rgb(25,27,38);
}

/* Month Dropdown Menu */
QCalendarWidget QMenu {

}
/* Year spinbox */
QCalendarWidget QSpinBox {
    background-color: rgb(25,27,38);
    border: none;
    border-radius: 4px;
    margin: 0px 3px 0px 0px;
    padding: 4px 16px;
}

QCalendarWidget QSpinBox::up-button { subcontrol-origin: border; subcontrol-position: top right; width: 16px; }
QCalendarWidget QSpinBox::down-button {subcontrol-origin: border; subcontrol-position: bottom right; width: 16px;}
QCalendarWidget QSpinBox::up-arrow { width: 10px; height: 10px; }
QCalendarWidget QSpinBox::down-arrow { width: 10px; height: 10px; }

/* Days of the Week Bar */
QCalendarWidget QWidget { alternate-background-color: palette(mid); }

QCalendarWidget QAbstractItemView:enabled {
    background-color: palette(base);
    color: palette(text);
}

QCalendarWidget QAbstractItemView:disabled {
    color: rgb(122,121,122);
}

/* VirtualCam Plugin Fixes */

#VirtualProperties QWidget {
    margin-top: 0;
    margin-bottom: 0;
}

/* Disable icons on QDialogButtonBox */
QDialogButtonBox {
    dialogbuttonbox-buttons-have-icons: 0;
}

/* Stats dialog */
OBSBasicStats {
    background: palette(dark);
}

/* Advanced audio dialog */
OBSBasicAdvAudio #scrollAreaWidgetContents {
    background: palette(dark);
}
