diff --git a/appinfo/info.xml b/appinfo/info.xml
index d60c0b5..54239ec 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -38,7 +38,7 @@ Settings > Personal > Appearance and accessibility > Breeze Dark
 
 Under the Theming section in the admin settings you can add your own custom styling to the theme. Only standard CSS can be used. This custom styling will be applied whenever the theme is enabled and only affects the Breeze Dark theme.
     ]]></description>
-    <version>25.0.2</version>
+    <version>26.0.0</version>
     <licence>agpl</licence>
     <author mail="mw@mwalbeck.org" homepage="https://github.com/mwalbeck/nextcloud-breeze-dark">Magnus Walbeck</author>
     <namespace>BreezeDark</namespace>
@@ -47,7 +47,7 @@ Under the Theming section in the admin settings you can add your own custom styl
     <bugs>https://github.com/mwalbeck/nextcloud-breeze-dark/issues</bugs>
     <screenshot>https://raw.githubusercontent.com/mwalbeck/nextcloud-breeze-dark/master/screenshot.png</screenshot>
     <dependencies>
-        <nextcloud min-version="25" max-version="25"/>
+        <nextcloud min-version="26" max-version="26"/>
     </dependencies>
     <repair-steps>
 		<post-migration>
diff --git a/css/apps/core/_photos.scss b/css/apps/core/_photos.scss
new file mode 100644
index 0000000..460f659
--- /dev/null
+++ b/css/apps/core/_photos.scss
@@ -0,0 +1,21 @@
+/***
+ * @copyright Copyright (c) 2023, Magnus Walbeck <mw@mwalbeck.org>
+ *
+ * @license GNU AGPL version 3 or any later version, see COPYING file for more.
+ */
+
+/* Notifications ------------------------------------------------------------ */
+
+.app-photos#content-vue {
+    .files-list-viewer__placeholder {
+        background: var(--color-background-hover) !important;
+    }
+
+    .file-container {
+        background: var(--color-background-hover) !important;
+    }
+
+    .file-container .selection-checkbox .checkbox-radio-switch__label::after {
+        background: var(--color-background-darker);
+    }
+}
diff --git a/css/apps/official/_calendar.scss b/css/apps/official/_calendar.scss
index b3ce32a..ca59cbd 100644
--- a/css/apps/official/_calendar.scss
+++ b/css/apps/official/_calendar.scss
@@ -77,22 +77,6 @@
     }
 }
 
-.color-picker .vc-chrome {
-    background-color: var(--color-main-background);
-
-    .vc-chrome-saturation-wrap {
-        border: 1px solid var(--color-border);
-    }
-
-    .vc-chrome-body {
-        background-color: var(--color-main-background);
-
-        .vc-chrome-controls .vc-chrome-color-wrap .vc-chrome-active-color {
-            border: 1px solid var(--color-border);
-        }
-    }
-}
-
 .modal--scheduler .fc .fc-button-primary {
     background-color: var(--color-main-background);
     border-color: var(--color-border);
diff --git a/css/apps/thirdparty/_snappymail.scss b/css/apps/thirdparty/_snappymail.scss
new file mode 100644
index 0000000..d205c5e
--- /dev/null
+++ b/css/apps/thirdparty/_snappymail.scss
@@ -0,0 +1,12 @@
+/***
+ * @copyright Copyright (c) 2023, Magnus Walbeck <mw@mwalbeck.org>
+ *
+ * @license GNU AGPL version 3 or any later version, see COPYING file for more.
+ */
+
+/* Radio -------------------------------------------------------------------- */
+
+#rl-app input {
+    background-color: var(--input-bg-clr,#fff);
+    color: var(--input-clr,#555);
+}
diff --git a/css/base/_elements.scss b/css/base/_elements.scss
index 9c95bfe..5a4f99d 100644
--- a/css/base/_elements.scss
+++ b/css/base/_elements.scss
@@ -6,7 +6,7 @@
 
 /* Buttons ------------------------------------------------------------------- */
 
-button,
+button:not(.color-picker__simple-color-circle):not(.property-color__color-preview),
 .button,
 input[type="button"],
 input[type="submit"] {
@@ -29,7 +29,7 @@ input[type="submit"] {
     }
 }
 
-.button-vue.button-vue--vue-secondary {
+.button-vue.button-vue--vue-secondary:not(.property-color__color-preview) {
     background-color: var(--color-main-background) !important;
     border: 1px solid var(--color-border) !important;
     color: var(--color-main-text) !important;
@@ -43,6 +43,16 @@ input[type="submit"] {
         background-color: var(--color-primary) !important;
         border-color: var(--color-primary-element) !important;
     }
+
+    &.close-button {
+        border: none !important;
+    }
+}
+
+input[type="text"] + .icon-confirm,
+input[type="password"] + .icon-confirm,
+input[type="email"] + .icon-confirm {
+	background-color: var(--color-background-darker) !important;
 }
 
 /* Input Fields -------------------------------------------------------------- */
@@ -74,12 +84,17 @@ textarea:not(:disabled) {
     }
 }
 
+.checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__input:hover + .checkbox-radio-switch__label,
+.checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__input:focus + .checkbox-radio-switch__label,
 .checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__label:hover,
-.checkbox-radio-switch:not(.checkbox-radio-switch--disabled)
-    .checkbox-radio-switch__label:focus-within {
+.checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__label:focus-within {
     background-color: var(--color-background-hover) !important;
 }
 
+.checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__input:focus + .checkbox-radio-switch__label {
+	box-shadow: unset !important;
+}
+
 /* Action items -------------------------------------------------------------- */
 
 .action-input .action-input__label,
@@ -113,6 +128,12 @@ select option {
     background-color: var(--color-background-hover) !important;
 }
 
+/* vs__search ---------------------------------------------------------------- */
+
+.vs__search {
+    background-color: unset !important;
+}
+
 /* Table --------------------------------------------------------------------- */
 
 tbody tr:hover,
diff --git a/css/server-automatic.css b/css/server-automatic.css
index 1cc16e9..7595cd1 100644
--- a/css/server-automatic.css
+++ b/css/server-automatic.css
@@ -114,6 +114,7 @@
     --color-box-shadow-rgb: rgba(0, 0, 0, 0) !important;
     --color-border: var(--color-border-grey) !important;
     --color-border-dark: var(--color-border) !important;
+    --color-border-maxcontrast: var(--color-border) !important;
     --color-icon: rgba(242, 242, 242, 1);
     --table-color-border: var(--color-border) !important;
     --table-color-heading: var(--color-primary-text) !important;
@@ -121,31 +122,31 @@
     --table-color-background: var(--color-main-background) !important;
     --table-color-background-hover: var(--color-background-hover) !important;
     --table-border-radius: var(--border-radius) !important;
-    --color-main-background-rgb: rgb(23, 23, 23);
-    --color-main-background-blur: rgba(var(--color-main-background-rgb), 0.8);
-    --background-invert-if-dark: invert(100%);
-    --background-invert-if-bright: no;
-    --color-success-rgb: 70, 186, 97;
-    --color-success-hover: #6ac780;
-    --color-warning-rgb: 236, 167, 0;
-    --color-warning-hover: #efb832;
-    --color-error-rgb: 233, 50, 45;
-    --color-error-hover: #ed5a56;
-    --color-scrollbar: #3d3d3d;
-    --color-text-maxcontrast-background-blur: #919191;
-    --color-text-maxcontrast-default: #8c8c8c;
-    --color-placeholder-light: #313131;
-    --color-placeholder-dark: #4a4a4a;
-    --color-primary-default: #0082c9;
-    --color-primary-hover: #04537f;
-    --color-primary-light-text: #99c0d6;
-    --color-primary-light-hover: #1d272d;
-    --color-primary-element-default-hover: #046ca5;
-    --color-primary-element-text: #fff;
-    --color-primary-element-hover: #04537f;
-    --color-primary-element-light-text: #99c0d6;
-    --color-primary-element-light-hover: #1d272d;
-    --color-primary-element-text-dark: #ededed;
+    --color-main-background-rgb: rgb(23, 23, 23) !important;
+    --color-main-background-blur: rgba(23, 23, 23, 0.8) !important;
+    --background-invert-if-dark: invert(100%) !important;
+    --background-invert-if-bright: no !important;
+    --color-success-rgb: 70, 186, 97 !important;
+    --color-success-hover: #6ac780 !important;
+    --color-warning-rgb: 236, 167, 0 !important;
+    --color-warning-hover: #efb832 !important;
+    --color-error-rgb: 233, 50, 45 !important;
+    --color-error-hover: #ed5a56 !important;
+    --color-scrollbar: #3d3d3d !important;
+    --color-text-maxcontrast-background-blur: #919191 !important;
+    --color-text-maxcontrast-default: #8c8c8c !important;
+    --color-placeholder-light: #313131 !important;
+    --color-placeholder-dark: #4a4a4a !important;
+    --color-primary-default: #0082c9 !important;
+    --color-primary-hover: #04537f !important;
+    --color-primary-light-text: #99c0d6 !important;
+    --color-primary-light-hover: #1d272d !important;
+    --color-primary-element-default-hover: #046ca5 !important;
+    --color-primary-element-text: #fff !important;
+    --color-primary-element-hover: #04537f !important;
+    --color-primary-element-light-text: #99c0d6 !important;
+    --color-primary-element-light-hover: #1d272d !important;
+    --color-primary-element-text-dark: #ededed !important;
   }
   /***
    * @copyright Copyright (c) 2020, Magnus Walbeck <mw@mwalbeck.org>
@@ -153,7 +154,7 @@
    * @license GNU AGPL version 3 or any later version, see COPYING file for more.
    */
   /* Buttons ------------------------------------------------------------------- */
-  button.primary,
+  button:not(.color-picker__simple-color-circle):not(.property-color__color-preview).primary,
   .button.primary,
   input[type=button].primary,
   input[type=submit].primary {
@@ -161,13 +162,13 @@
     border-color: var(--color-border) !important;
     color: var(--color-main-text) !important;
   }
-  button.primary:hover,
+  button:not(.color-picker__simple-color-circle):not(.property-color__color-preview).primary:hover,
   .button.primary:hover,
   input[type=button].primary:hover,
   input[type=submit].primary:hover {
     border-color: var(--color-primary-element) !important;
   }
-  button:focus, button:active, button.primary:focus, button.primary:active,
+  button:not(.color-picker__simple-color-circle):not(.property-color__color-preview):focus, button:not(.color-picker__simple-color-circle):not(.property-color__color-preview):active, button:not(.color-picker__simple-color-circle):not(.property-color__color-preview).primary:focus, button:not(.color-picker__simple-color-circle):not(.property-color__color-preview).primary:active,
   .button:focus,
   .button:active,
   .button.primary:focus,
@@ -183,18 +184,26 @@
     background-color: var(--color-primary) !important;
     border-color: var(--color-primary-element) !important;
   }
-  .button-vue.button-vue--vue-secondary {
+  .button-vue.button-vue--vue-secondary:not(.property-color__color-preview) {
     background-color: var(--color-main-background) !important;
     border: 1px solid var(--color-border) !important;
     color: var(--color-main-text) !important;
   }
-  .button-vue.button-vue--vue-secondary:hover {
+  .button-vue.button-vue--vue-secondary:not(.property-color__color-preview):hover {
     border-color: var(--color-primary-element) !important;
   }
-  .button-vue.button-vue--vue-secondary:focus, .button-vue.button-vue--vue-secondary:active {
+  .button-vue.button-vue--vue-secondary:not(.property-color__color-preview):focus, .button-vue.button-vue--vue-secondary:not(.property-color__color-preview):active {
     background-color: var(--color-primary) !important;
     border-color: var(--color-primary-element) !important;
   }
+  .button-vue.button-vue--vue-secondary:not(.property-color__color-preview).close-button {
+    border: none !important;
+  }
+  input[type=text] + .icon-confirm,
+  input[type=password] + .icon-confirm,
+  input[type=email] + .icon-confirm {
+    background-color: var(--color-background-darker) !important;
+  }
   /* Input Fields -------------------------------------------------------------- */
   input:not([type=range]):not([type=button]):not([type=submit]) {
     background-color: var(--color-background-darker);
@@ -211,10 +220,15 @@
   .multiselect .multiselect__input {
     background-color: inherit !important;
   }
+  .checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__input:hover + .checkbox-radio-switch__label,
+  .checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__input:focus + .checkbox-radio-switch__label,
   .checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__label:hover,
   .checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__label:focus-within {
     background-color: var(--color-background-hover) !important;
   }
+  .checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__input:focus + .checkbox-radio-switch__label {
+    box-shadow: unset !important;
+  }
   /* Action items -------------------------------------------------------------- */
   .action-input .action-input__label,
   .action-text-editable .action-text-editable__label {
@@ -239,6 +253,10 @@
   .multiselect .multiselect__content-wrapper .multiselect__option--highlight {
     background-color: var(--color-background-hover) !important;
   }
+  /* vs__search ---------------------------------------------------------------- */
+  .vs__search {
+    background-color: unset !important;
+  }
   /* Table --------------------------------------------------------------------- */
   tbody tr:hover,
   tbody tr:focus,
@@ -292,7 +310,8 @@
   .bubble::after,
   .app-navigation-entry-menu::after,
   .menu::after,
-  .popovermenu::after {
+  .popovermenu::after,
+  .v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container {
     border-bottom-color: var(--color-border) !important;
   }
   .popover__arrow {
@@ -304,6 +323,9 @@
   .action-item__menu .action-item__menu_arrow {
     border-bottom-color: var(--color-border) !important;
   }
+  .v-popper__popper button.action-button {
+    border-radius: 6px !important;
+  }
   /* Search ------------------------------------------------------------------- */
   .header-menu__wrapper {
     border: 1px solid var(--color-border);
@@ -330,6 +352,9 @@
   .oc-dialog .fileexists .conflict .filename {
     color: var(--color-main-text) !important;
   }
+  .reference-picker .oc-dialog {
+    border: none;
+  }
   /* Settings ------------------------------------------------------------------ */
   #cropper .inner-container {
     background-color: var(--color-main-background) !important;
@@ -415,6 +440,11 @@
   .app-level .official {
     border-color: var(--color-success);
   }
+  /* Smart picker ------------------------------------------------------------- */
+  .tribute-container-link {
+    border: 1px solid var(--color-border);
+    border-radius: 6px !important;
+  }
   /***
    * @copyright Copyright (c) 2017, Magnus Walbeck <mw@mwalbeck.org>
    *
@@ -768,6 +798,21 @@
   .notification-container.menu .dismiss-all:hover {
     background-color: var(--color-background-hover);
   }
+  /***
+   * @copyright Copyright (c) 2023, Magnus Walbeck <mw@mwalbeck.org>
+   *
+   * @license GNU AGPL version 3 or any later version, see COPYING file for more.
+   */
+  /* Notifications ------------------------------------------------------------ */
+  .app-photos#content-vue .files-list-viewer__placeholder {
+    background: var(--color-background-hover) !important;
+  }
+  .app-photos#content-vue .file-container {
+    background: var(--color-background-hover) !important;
+  }
+  .app-photos#content-vue .file-container .selection-checkbox .checkbox-radio-switch__label::after {
+    background: var(--color-background-darker);
+  }
   /***
    * @copyright Copyright (c) 2019, Magnus Walbeck <mw@mwalbeck.org>
    *
@@ -894,18 +939,6 @@
   .app-calendar .app-sidebar .repeat-option-set-section-grid-item.primary:hover {
     background-color: var(--color-background-hover) !important;
   }
-  .color-picker .vc-chrome {
-    background-color: var(--color-main-background);
-  }
-  .color-picker .vc-chrome .vc-chrome-saturation-wrap {
-    border: 1px solid var(--color-border);
-  }
-  .color-picker .vc-chrome .vc-chrome-body {
-    background-color: var(--color-main-background);
-  }
-  .color-picker .vc-chrome .vc-chrome-body .vc-chrome-controls .vc-chrome-color-wrap .vc-chrome-active-color {
-    border: 1px solid var(--color-border);
-  }
   .modal--scheduler .fc .fc-button-primary {
     background-color: var(--color-main-background);
     border-color: var(--color-border);
@@ -2218,6 +2251,12 @@
    * @license GNU AGPL version 3 or any later version, see COPYING file for more.
    */
   /* Radio -------------------------------------------------------------------- */
+  /***
+   * @copyright Copyright (c) 2023, Magnus Walbeck <mw@mwalbeck.org>
+   *
+   * @license GNU AGPL version 3 or any later version, see COPYING file for more.
+   */
+  /* Radio -------------------------------------------------------------------- */
   /***
    * @copyright Copyright (c) 2020, Magnus Walbeck (mw@mwalbeck.org)
    *
@@ -3212,6 +3251,12 @@
     background-color: var(--color-background-hover) !important;
   }
 }
+@media (prefers-color-scheme: dark) {
+  #rl-app input {
+    background-color: var(--input-bg-clr, #fff);
+    color: var(--input-clr, #555);
+  }
+}
 @media (prefers-color-scheme: dark) {
   #terms_of_service_confirm .v--modal-overlay .v--modal-background-click {
     background-color: rgba(0, 0, 0, 0.5);
diff --git a/css/server.css b/css/server.css
index 32cf0fa..5ad9bd5 100644
--- a/css/server.css
+++ b/css/server.css
@@ -82,6 +82,7 @@
   --color-box-shadow-rgb: rgba(0, 0, 0, 0) !important;
   --color-border: var(--color-border-grey) !important;
   --color-border-dark: var(--color-border) !important;
+  --color-border-maxcontrast: var(--color-border) !important;
   --color-icon: rgba(242, 242, 242, 1);
   --table-color-border: var(--color-border) !important;
   --table-color-heading: var(--color-primary-text) !important;
@@ -89,31 +90,31 @@
   --table-color-background: var(--color-main-background) !important;
   --table-color-background-hover: var(--color-background-hover) !important;
   --table-border-radius: var(--border-radius) !important;
-  --color-main-background-rgb: rgb(23, 23, 23);
-  --color-main-background-blur: rgba(var(--color-main-background-rgb), 0.8);
-  --background-invert-if-dark: invert(100%);
-  --background-invert-if-bright: no;
-  --color-success-rgb: 70, 186, 97;
-  --color-success-hover: #6ac780;
-  --color-warning-rgb: 236, 167, 0;
-  --color-warning-hover: #efb832;
-  --color-error-rgb: 233, 50, 45;
-  --color-error-hover: #ed5a56;
-  --color-scrollbar: #3d3d3d;
-  --color-text-maxcontrast-background-blur: #919191;
-  --color-text-maxcontrast-default: #8c8c8c;
-  --color-placeholder-light: #313131;
-  --color-placeholder-dark: #4a4a4a;
-  --color-primary-default: #0082c9;
-  --color-primary-hover: #04537f;
-  --color-primary-light-text: #99c0d6;
-  --color-primary-light-hover: #1d272d;
-  --color-primary-element-default-hover: #046ca5;
-  --color-primary-element-text: #fff;
-  --color-primary-element-hover: #04537f;
-  --color-primary-element-light-text: #99c0d6;
-  --color-primary-element-light-hover: #1d272d;
-  --color-primary-element-text-dark: #ededed;
+  --color-main-background-rgb: rgb(23, 23, 23) !important;
+  --color-main-background-blur: rgba(23, 23, 23, 0.8) !important;
+  --background-invert-if-dark: invert(100%) !important;
+  --background-invert-if-bright: no !important;
+  --color-success-rgb: 70, 186, 97 !important;
+  --color-success-hover: #6ac780 !important;
+  --color-warning-rgb: 236, 167, 0 !important;
+  --color-warning-hover: #efb832 !important;
+  --color-error-rgb: 233, 50, 45 !important;
+  --color-error-hover: #ed5a56 !important;
+  --color-scrollbar: #3d3d3d !important;
+  --color-text-maxcontrast-background-blur: #919191 !important;
+  --color-text-maxcontrast-default: #8c8c8c !important;
+  --color-placeholder-light: #313131 !important;
+  --color-placeholder-dark: #4a4a4a !important;
+  --color-primary-default: #0082c9 !important;
+  --color-primary-hover: #04537f !important;
+  --color-primary-light-text: #99c0d6 !important;
+  --color-primary-light-hover: #1d272d !important;
+  --color-primary-element-default-hover: #046ca5 !important;
+  --color-primary-element-text: #fff !important;
+  --color-primary-element-hover: #04537f !important;
+  --color-primary-element-light-text: #99c0d6 !important;
+  --color-primary-element-light-hover: #1d272d !important;
+  --color-primary-element-text-dark: #ededed !important;
 }
 
 /***
@@ -122,7 +123,7 @@
  * @license GNU AGPL version 3 or any later version, see COPYING file for more.
  */
 /* Buttons ------------------------------------------------------------------- */
-button.primary,
+button:not(.color-picker__simple-color-circle):not(.property-color__color-preview).primary,
 .button.primary,
 input[type=button].primary,
 input[type=submit].primary {
@@ -130,13 +131,13 @@ input[type=submit].primary {
   border-color: var(--color-border) !important;
   color: var(--color-main-text) !important;
 }
-button.primary:hover,
+button:not(.color-picker__simple-color-circle):not(.property-color__color-preview).primary:hover,
 .button.primary:hover,
 input[type=button].primary:hover,
 input[type=submit].primary:hover {
   border-color: var(--color-primary-element) !important;
 }
-button:focus, button:active, button.primary:focus, button.primary:active,
+button:not(.color-picker__simple-color-circle):not(.property-color__color-preview):focus, button:not(.color-picker__simple-color-circle):not(.property-color__color-preview):active, button:not(.color-picker__simple-color-circle):not(.property-color__color-preview).primary:focus, button:not(.color-picker__simple-color-circle):not(.property-color__color-preview).primary:active,
 .button:focus,
 .button:active,
 .button.primary:focus,
@@ -153,18 +154,27 @@ input[type=submit].primary:active {
   border-color: var(--color-primary-element) !important;
 }
 
-.button-vue.button-vue--vue-secondary {
+.button-vue.button-vue--vue-secondary:not(.property-color__color-preview) {
   background-color: var(--color-main-background) !important;
   border: 1px solid var(--color-border) !important;
   color: var(--color-main-text) !important;
 }
-.button-vue.button-vue--vue-secondary:hover {
+.button-vue.button-vue--vue-secondary:not(.property-color__color-preview):hover {
   border-color: var(--color-primary-element) !important;
 }
-.button-vue.button-vue--vue-secondary:focus, .button-vue.button-vue--vue-secondary:active {
+.button-vue.button-vue--vue-secondary:not(.property-color__color-preview):focus, .button-vue.button-vue--vue-secondary:not(.property-color__color-preview):active {
   background-color: var(--color-primary) !important;
   border-color: var(--color-primary-element) !important;
 }
+.button-vue.button-vue--vue-secondary:not(.property-color__color-preview).close-button {
+  border: none !important;
+}
+
+input[type=text] + .icon-confirm,
+input[type=password] + .icon-confirm,
+input[type=email] + .icon-confirm {
+  background-color: var(--color-background-darker) !important;
+}
 
 /* Input Fields -------------------------------------------------------------- */
 input:not([type=range]):not([type=button]):not([type=submit]) {
@@ -185,11 +195,17 @@ textarea:not(:disabled):active {
   background-color: inherit !important;
 }
 
+.checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__input:hover + .checkbox-radio-switch__label,
+.checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__input:focus + .checkbox-radio-switch__label,
 .checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__label:hover,
 .checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__label:focus-within {
   background-color: var(--color-background-hover) !important;
 }
 
+.checkbox-radio-switch:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__input:focus + .checkbox-radio-switch__label {
+  box-shadow: unset !important;
+}
+
 /* Action items -------------------------------------------------------------- */
 .action-input .action-input__label,
 .action-text-editable .action-text-editable__label {
@@ -220,6 +236,11 @@ select option {
   background-color: var(--color-background-hover) !important;
 }
 
+/* vs__search ---------------------------------------------------------------- */
+.vs__search {
+  background-color: unset !important;
+}
+
 /* Table --------------------------------------------------------------------- */
 tbody tr:hover,
 tbody tr:focus,
@@ -279,7 +300,8 @@ progress:not(.vue) {
 .bubble::after,
 .app-navigation-entry-menu::after,
 .menu::after,
-.popovermenu::after {
+.popovermenu::after,
+.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container {
   border-bottom-color: var(--color-border) !important;
 }
 
@@ -294,6 +316,10 @@ progress:not(.vue) {
   border-bottom-color: var(--color-border) !important;
 }
 
+.v-popper__popper button.action-button {
+  border-radius: 6px !important;
+}
+
 /* Search ------------------------------------------------------------------- */
 .header-menu__wrapper {
   border: 1px solid var(--color-border);
@@ -325,6 +351,10 @@ progress:not(.vue) {
   color: var(--color-main-text) !important;
 }
 
+.reference-picker .oc-dialog {
+  border: none;
+}
+
 /* Settings ------------------------------------------------------------------ */
 #cropper .inner-container {
   background-color: var(--color-main-background) !important;
@@ -420,6 +450,12 @@ progress:not(.vue) {
   border-color: var(--color-success);
 }
 
+/* Smart picker ------------------------------------------------------------- */
+.tribute-container-link {
+  border: 1px solid var(--color-border);
+  border-radius: 6px !important;
+}
+
 /***
  * @copyright Copyright (c) 2017, Magnus Walbeck <mw@mwalbeck.org>
  *
@@ -827,6 +863,22 @@ table tr.mouseOver td {
   background-color: var(--color-background-hover);
 }
 
+/***
+ * @copyright Copyright (c) 2023, Magnus Walbeck <mw@mwalbeck.org>
+ *
+ * @license GNU AGPL version 3 or any later version, see COPYING file for more.
+ */
+/* Notifications ------------------------------------------------------------ */
+.app-photos#content-vue .files-list-viewer__placeholder {
+  background: var(--color-background-hover) !important;
+}
+.app-photos#content-vue .file-container {
+  background: var(--color-background-hover) !important;
+}
+.app-photos#content-vue .file-container .selection-checkbox .checkbox-radio-switch__label::after {
+  background: var(--color-background-darker);
+}
+
 /***
  * @copyright Copyright (c) 2019, Magnus Walbeck <mw@mwalbeck.org>
  *
@@ -963,19 +1015,6 @@ table tr.mouseOver td {
   background-color: var(--color-background-hover) !important;
 }
 
-.color-picker .vc-chrome {
-  background-color: var(--color-main-background);
-}
-.color-picker .vc-chrome .vc-chrome-saturation-wrap {
-  border: 1px solid var(--color-border);
-}
-.color-picker .vc-chrome .vc-chrome-body {
-  background-color: var(--color-main-background);
-}
-.color-picker .vc-chrome .vc-chrome-body .vc-chrome-controls .vc-chrome-color-wrap .vc-chrome-active-color {
-  border: 1px solid var(--color-border);
-}
-
 .modal--scheduler .fc .fc-button-primary {
   background-color: var(--color-main-background);
   border-color: var(--color-border);
@@ -3295,6 +3334,17 @@ tags-input .autocomplete .suggestion-item.selected {
   background-color: var(--color-background-hover) !important;
 }
 
+/***
+ * @copyright Copyright (c) 2023, Magnus Walbeck <mw@mwalbeck.org>
+ *
+ * @license GNU AGPL version 3 or any later version, see COPYING file for more.
+ */
+/* Radio -------------------------------------------------------------------- */
+#rl-app input {
+  background-color: var(--input-bg-clr, #fff);
+  color: var(--input-clr, #555);
+}
+
 /***
  * @copyright Copyright (c) 2020, Magnus Walbeck (mw@mwalbeck.org)
  *
diff --git a/css/server.scss b/css/server.scss
index bdddb4c..c722fed 100644
--- a/css/server.scss
+++ b/css/server.scss
@@ -38,6 +38,7 @@
 @import "apps/core/files";
 @import "apps/core/firstrunwizard";
 @import "apps/core/notifications";
+@import "apps/core/photos";
 @import "apps/core/text";
 // Official Apps
 @import "apps/official/announcement-center";
@@ -84,6 +85,7 @@
 @import "apps/thirdparty/polls";
 @import "apps/thirdparty/quicknotes";
 @import "apps/thirdparty/radio";
+@import "apps/thirdparty/snappymail";
 @import "apps/thirdparty/terms-of-service";
 @import "apps/thirdparty/timemanager";
 @import "apps/thirdparty/user-account-deletion";
diff --git a/css/server/_server.scss b/css/server/_server.scss
index f20dc5b..a19b34c 100644
--- a/css/server/_server.scss
+++ b/css/server/_server.scss
@@ -37,7 +37,8 @@
 .bubble::after,
 .app-navigation-entry-menu::after,
 .menu::after,
-.popovermenu::after {
+.popovermenu::after,
+.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-container {
     border-bottom-color: var(--color-border) !important;
 }
 
@@ -54,6 +55,10 @@
     }
 }
 
+.v-popper__popper button.action-button {
+    border-radius: 6px !important;
+}
+
 /* Search ------------------------------------------------------------------- */
 
 .header-menu__wrapper {
@@ -89,6 +94,10 @@
     }
 }
 
+.reference-picker .oc-dialog {
+    border: none;
+}
+
 /* Settings ------------------------------------------------------------------ */
 
 // Image cropper
@@ -203,3 +212,10 @@
 .app-level .official {
     border-color: var(--color-success);
 }
+
+/* Smart picker ------------------------------------------------------------- */
+
+.tribute-container-link {
+    border: 1px solid var(--color-border);
+    border-radius: 6px !important;
+}
diff --git a/css/variables/_color-variables.scss b/css/variables/_color-variables.scss
index 4901373..4a95759 100644
--- a/css/variables/_color-variables.scss
+++ b/css/variables/_color-variables.scss
@@ -74,6 +74,7 @@
 
     --color-border: var(--color-border-grey) !important;
     --color-border-dark: var(--color-border) !important;
+    --color-border-maxcontrast: var(--color-border) !important;
 
     --color-icon: rgba(242, 242, 242, 1);
 
@@ -87,29 +88,29 @@
 
     // Variables from the official dark theme that needs to be set incase Nextcloud thinks the light theme is preferred.
     // The variables should be adapted to better suit the Breeze Dark theme, but for the moment this will ensure a usable experience.
-    --color-main-background-rgb: rgb(23, 23, 23);
-    --color-main-background-blur: rgba(var(--color-main-background-rgb), 0.8);
-    --background-invert-if-dark: invert(100%);
-    --background-invert-if-bright: no;
-    --color-success-rgb: 70, 186, 97;
-    --color-success-hover: #6ac780;
-    --color-warning-rgb: 236, 167, 0;
-    --color-warning-hover: #efb832;
-    --color-error-rgb: 233, 50, 45;
-    --color-error-hover: #ed5a56;
-    --color-scrollbar: #3d3d3d;
-    --color-text-maxcontrast-background-blur: #919191;
-    --color-text-maxcontrast-default: #8c8c8c;
-    --color-placeholder-light: #313131;
-    --color-placeholder-dark: #4a4a4a;
-    --color-primary-default: #0082c9;
-    --color-primary-hover: #04537f;
-    --color-primary-light-text: #99c0d6;
-    --color-primary-light-hover: #1d272d;
-    --color-primary-element-default-hover: #046ca5;
-    --color-primary-element-text: #fff;
-    --color-primary-element-hover: #04537f;
-    --color-primary-element-light-text: #99c0d6;
-    --color-primary-element-light-hover: #1d272d;
-    --color-primary-element-text-dark: #ededed;
+    --color-main-background-rgb: rgb(23, 23, 23) !important;
+    --color-main-background-blur: rgba(23, 23, 23, 0.8) !important;
+    --background-invert-if-dark: invert(100%) !important;
+    --background-invert-if-bright: no !important;
+    --color-success-rgb: 70, 186, 97 !important;
+    --color-success-hover: #6ac780 !important;
+    --color-warning-rgb: 236, 167, 0 !important;
+    --color-warning-hover: #efb832 !important;
+    --color-error-rgb: 233, 50, 45 !important;
+    --color-error-hover: #ed5a56 !important;
+    --color-scrollbar: #3d3d3d !important;
+    --color-text-maxcontrast-background-blur: #919191 !important;
+    --color-text-maxcontrast-default: #8c8c8c !important;
+    --color-placeholder-light: #313131 !important;
+    --color-placeholder-dark: #4a4a4a !important;
+    --color-primary-default: #0082c9 !important;
+    --color-primary-hover: #04537f !important;
+    --color-primary-light-text: #99c0d6 !important;
+    --color-primary-light-hover: #1d272d !important;
+    --color-primary-element-default-hover: #046ca5 !important;
+    --color-primary-element-text: #fff !important;
+    --color-primary-element-hover: #04537f !important;
+    --color-primary-element-light-text: #99c0d6 !important;
+    --color-primary-element-light-hover: #1d272d !important;
+    --color-primary-element-text-dark: #ededed !important;
 }