/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
p.image-attachment .attachment-links a:before,
.quota-widget:before,
.table-widget table.options-table td:not(:first-child) span:before,
table.table th.checkbox-cell:before,
a.button.icon:before,
button.btn:before,
.floating-action-buttons a.button:before,
.ui-dialog .ui-dialog-titlebar-close:before,
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset a.btn-link.options:before,
.ui-datepicker .ui-datepicker-prev:before,
.ui-datepicker .ui-datepicker-next:before,
.pgpkeyimport div.key label.keyid + a:before,
.pgpkeyimport li.uid:before,
.menu a:before,
.popover .menu li a[aria-haspopup]:after,
.searchbar form:before,
.searchbar a:before,
.ui.alert > i.icon:before,
.listing td.action a:before,
.listing.iconized li a:before,
.listing.iconized li > i:before,
.listing.iconized tr td:before,
.listing.iconized.selectable li a:before,
ul.treelist li div.treetoggle:before,
.folderlist .header .header-title.username:before,
.messagelist tr.thread td.threads div:before,
.messagelist td.subject span.msgicon.status:before,
.messagelist td.subject span.msgicon.status.replied.forwarded:after,
.messagelist span.attachment span,
.messagelist span.flagged:before,
.messagelist tr.flaggedroot:not(:hover) span.unflagged:before,
.contactlist td.contact:before,
.contactlist td.contactgroup:before,
.contactlist li a:before,
.attachmentslist li:before,
.attachmentslist li a.cancelupload:before,
.attachmentslist li a.delete:before,
.keylist li:before,
#identities-table td.mail:before,
#responses-table td.name:before,
#filterslist td.name:before,
#filtersetslist td.name:before,
.propform td.rowbuttons a:before,
fieldset.advanced > legend:after,
.input-group .icon:before,
.multi-input a.icon.reset:before,
.tagedit-list li.tagedit-listelement-old a:before,
div.tox .tox-dialog__header .tox-button:before,
div.tox .tox-dialog__footer .tox-button:before,
.html-editor .editor-toolbar .mce-i-html:before,
.googie_list li .googie_list_revert:before,
.googie_list li .googie_add_to_dict:before,
body.status-flagged #message-header > .subject:before,
#message-header > .subject a.extwin:before,
#message-header .header-links a:before,
.message-part blockquote span.blockquote-link:after,
.message-htmlpart blockquote span.blockquote-link:after {
  font-size: 1.25em;
  display: block;
  float: left;
  margin: 0 0.25rem 0 0;
  width: 1.18em;
  height: 1em;
  font-family: "Icons";
  font-style: normal;
  font-weight: 900;
  text-decoration: inherit;
  text-align: center;
  speak: none;
  font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
}
/*** Fonts ***/
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: local("Inter"), local("Inter-Regular");
}
@font-face {
  font-family: "Icons";
  font-style: normal;
  font-weight: 900;
  src:
    url("../fonts/fa-solid-900.woff2") format("woff2"),
    url("../fonts/fa-solid-900.woff") format("woff");
}
@font-face {
  font-family: "Icons";
  font-style: normal;
  font-weight: 400;
  src:
    url("../fonts/fa-regular-400.woff2") format("woff2"),
    url("../fonts/fa-regular-400.woff") format("woff");
}
@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 400;
  src:
    local("Roboto"),
    local("Roboto-Regular"),
    url("../fonts/roboto-v29-regular.woff2") format("woff2"),
    url("../fonts/roboto-v29-regular.woff") format("woff");
}
@font-face {
  font-family: "Roboto";
  font-style: italic;
  font-weight: 400;
  src:
    local("Roboto Italic"),
    local("Roboto-Italic"),
    url("../fonts/roboto-v29-italic.woff2") format("woff2"),
    url("../fonts/roboto-v29-italic.woff") format("woff");
}
@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 700;
  src:
    local("Roboto Bold"),
    local("Roboto-Bold"),
    url("../fonts/roboto-v29-regular-700.woff2") format("woff2"),
    url("../fonts/roboto-v29-regular-700.woff") format("woff");
}
@font-face {
  font-family: "Roboto";
  font-style: italic;
  font-weight: 700;
  src:
    local("Roboto Bold Italic"),
    local("Roboto-BoldItalic"),
    url("../fonts/roboto-v29-italic-700.woff2") format("woff2"),
    url("../fonts/roboto-v29-italic-700.woff") format("woff");
}
/*** Material Symbols ***/
.material-symbols-outlined {
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: "liga";
  -webkit-font-smoothing: antialiased;
  font-variation-settings:
    "FILL" 0,
    "wght" 400,
    "GRAD" 0,
    "opsz" 24;
}
/*** Tooltips (modern, unified) ***
 *
 * Roundcube historically relied on the browser's native `title=` tooltip,
 * which the OS renders with a small, dated look. Bootstrap's tooltip
 * plugin is bundled in deps/bootstrap.bundle.min.js, so we hijack every
 * element that has a `title` attribute and route it through Bootstrap
 * with a single, modern dark-pill design.
 *
 * The CSS works in tandem with the auto-init that lives in ui.js
 * (init_tooltips() called from bootstrap_style / init).
 *
 * Two themes:
 *  - Light: light surface, dark text, subtle border + shadow
 *  - Dark:  near-black pill, light text, accent ring
 *
 * Both themes add a tiny caret that points at the trigger.
 */
/* Container: floating popper */
.tooltip {
  position: absolute;
  z-index: 1080;
  display: block;
  margin: 0;
  font-family:
    "Inter",
    system-ui,
    -apple-system,
    "Segoe UI",
    sans-serif;
  font-style: normal;
  font-weight: 500;
  font-size: 0.75rem;
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  letter-spacing: normal;
  word-break: normal;
  word-spacing: normal;
  white-space: normal;
  word-wrap: break-word;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.12s ease-in-out;
}
/* Shown state */
.tooltip.show {
  opacity: 1;
}
/* Inner content bubble */
.tooltip .tooltip-inner {
  max-width: 240px;
  padding: 0.4375rem 0.75rem;
  color: hsl(0 0% 98%);
  background-color: hsl(240 10% 3.9%);
  border-radius: 0.5rem;
  letter-spacing: 0.01em;
}
/* Light-theme variant (for light-mode pages).
 * Triggered by adding `tooltip-light` class on the .tooltip popper, which
 * the JS adds when document.documentElement does NOT have .dark-mode. */
.tooltip.tooltip-light .tooltip-inner {
  color: hsl(240 10% 3.9%);
  background-color: hsl(0 0% 100%);
  border: 1px solid hsl(240 5% 94%);
}
/* Auto-theme: when no explicit `tooltip-light` class is set, the tooltip
 * is rendered near the top of <body> — but the page theme lives on
 * <html>. Use a descendant selector on the html element so light-mode
 * pages get a light pill by default. */
html:not(.dark-mode) .tooltip:not(.tooltip-light) .tooltip-inner {
  color: hsl(240 10% 3.9%);
  background-color: hsl(0 0% 100%);
  border: 1px solid hsl(240 5% 94%);
}
/* Caret / arrow. Bootstrap 4's template emits `<div class="arrow"></div>`
 * but Popper 1.x sometimes fails to attach positioning to it; we hide the
 * stale arrow and draw our own with a CSS pseudo-element on the bubble.
 * Modern design choice: a small, low-profile notch that points at the
 * trigger without competing with the pill's typography. */
.tooltip .arrow,
.tooltip .tooltip-arrow {
  display: none !important;
}
.tooltip[x-placement^="top"] .tooltip-inner::before,
.tooltip.tooltip-light[x-placement^="top"] .tooltip-inner::before {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%) rotate(45deg);
  width: 0.5rem;
  height: 0.5rem;
  background-color: inherit;
  margin-top: -0.25rem;
  z-index: -1;
}
.tooltip[x-placement^="bottom"] .tooltip-inner::before,
.tooltip.tooltip-light[x-placement^="bottom"] .tooltip-inner::before {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%) rotate(45deg);
  width: 0.5rem;
  height: 0.5rem;
  background-color: inherit;
  margin-bottom: -0.25rem;
  z-index: -1;
}
/* Hide the Bootstrap-generated `<div class="arrow"></div>` caret.
 * Popper 1.x sometimes fails to position it correctly in this skin, so
 * we deliberately omit the caret and rely on the bubble's box-shadow
 * for depth. Modern design choice: a clean, soft pill (Linear / Apple
 * Mail style) — no caret. */
.tooltip .arrow,
.tooltip .tooltip-arrow {
  display: none !important;
}
/* Theme-toggle handling: JS dispatches a synthetic `mouseleave` on
 * every visible tooltip instance so Bootstrap's `_leave` runs, which
 * hides the popper cleanly. No CSS class hack needed — just rely on
 * the normal `.show` fade-out transition. */
/*** Theme tokens (Tailwind-style border-border/40) ***/
:root {
  --border: 0.922 0 0;
  --foreground: 240 10% 3.9%;
  --muted-foreground: 240 3.8% 46.1%;
  --accent: 240 4.8% 95.9%;
  --accent-foreground: 240 5.9% 10%;
  --background: 0 0% 100%;
  --popover: 0 0% 100%;
  --popover-foreground: 240 10% 3.9%;
  --ring: 240 5% 64.9%;
  --default-transition-duration: 150ms;
  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  --pixie-panel-light: #fff;
  --pixie-bg-light: #fff;
  --pixie-text-light: #2c363a;
  --pixie-muted-light: #737677;
  --pixie-border-light: #f1f3f4;
  --pixie-ui-accent: #056dff;
  --pixie-ui-accent-soft: rgba(5, 109, 255, 0.1);
  --pixie-menu-surface: #ffffff;
  --pixie-menu-foreground: #18181b;
  --pixie-menu-border: #e4e4e7;
  /* Folder rows keep their neutral hover/selected treatment in BOTH
   * themes. These are NOT accent colors — selected/hovered folders use
   * a calm pill that matches the rest of the sidebar's hover pattern.
   *
   * Light mode: soft black-tinted gray pill + dark text (matches every
   * other list-row hover in the skin — see recipient dialog, file
   * upload cancel, contact picker, etc.).
   * Dark mode: dark gray pill + light text (Spam-row pattern). */
  --pixie-folder-row-bg: transparent;
  --pixie-folder-row-fg: #737677;
  --pixie-folder-row-active-bg: rgba(0, 0, 0, 0.06);
  --pixie-folder-row-active-fg: #090A0B;
  --pixie-folder-row-active-border: transparent;
}
/*** Transition utilities (Tailwind v4 compatible) ***

These mirror Tailwind's `transition-colors` and `transition` utility
classes so any custom CSS or future Tailwind-compiled output can drop
straight into the existing component styles.  Per-instance overrides
work the same way: set `--tw-duration` or `--tw-ease` on the element
and they'll take precedence over the `:root` defaults. ***/
.transition-colors {
  transition-property:
    color, background-color, border-color, outline-color, text-decoration-color,
    fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(
    --tw-ease,
    var(--default-transition-timing-function)
  );
  transition-duration: var(--tw-duration, var(--default-transition-duration));
}
.transition-default {
  transition-property:
    color, background-color, border-color, outline-color, text-decoration-color,
    fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: var(
    --tw-ease,
    var(--default-transition-timing-function)
  );
  transition-duration: var(--tw-duration, var(--default-transition-duration));
}
html.dark-mode {
  --border: 0.27 0 0;
  --foreground: 206 6% 88%;
  --muted-foreground: 240 5% 64.9%;
  --accent: 240 3.7% 15.9%;
  --accent-foreground: 0 0% 98%;
  --background: 240 10% 3.9%;
  --popover: 240 10% 3.9%;
  --popover-foreground: 206 6% 88%;
  --ring: 240 4.9% 83.9%;
  --pixie-ui-accent: #ff5722;
  --pixie-ui-accent-soft: rgba(255, 87, 34, 0.14);
  --pixie-menu-surface: #090A0B;
  --pixie-menu-foreground: #f4f4f5;
  --pixie-menu-border: #2c373a;
  /* Folder rows keep the same neutral dark-grey treatment in dark mode
   * (Spam-row pattern). They must never inherit the orange accent. */
  --pixie-folder-row-bg: transparent;
  --pixie-folder-row-fg: #a1a1aa;
  --pixie-folder-row-active-bg: #36393d;
  --pixie-folder-row-active-fg: #f4f4f5;
  --pixie-folder-row-active-border: #36393d;
}
.border-border-40 {
  border-color: oklch(var(--border) / 0.4);
}
.text-foreground {
  color: hsl(var(--foreground));
}
.text-muted-foreground {
  color: hsl(var(--muted-foreground));
}
.bg-accent {
  background-color: hsl(var(--accent));
}
.hover-bg-accent-50:hover {
  background-color: hsl(var(--accent));
}
@supports (color: color-mix(in lab, red, red)) {
  .hover-bg-accent-50:hover {
    background-color: color-mix(in oklab, hsl(var(--accent)) 50%, transparent);
  }
}
/* Reset some Bootstrap style */
html,
body,
button,
input,
optgroup,
select,
textarea,
.popover {
  font-family: "Inter", Roboto, sans-serif;
  font-weight: 500;
  font-synthesis: none;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
button,
input,
select,
textarea {
  line-height: initial;
}
input {
  vertical-align: middle;
}
a {
  color: #00acff;
}
a:hover {
  color: #008acc;
}
a.disabled {
  pointer-events: none;
}
a.disabled:not(.btn) {
  opacity: 0.5;
}
/* Scrollbar styles */
html:not(.touch) ::-webkit-scrollbar {
  width: 6px;
}
html {
  scrollbar-color: #c1c1c1 #f1f1f1;
}
html:not(.touch) ::-webkit-scrollbar-track {
  background-color: #f1f1f1;
}
html:not(.touch) ::-webkit-scrollbar-thumb {
  background-color: #c1c1c1;
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** Responsive design - Layout ***/
/*
- Large screen (width > 1200px)
   -----------------------------------------------------------------------------------------------------
   |  menu  |        sidebar        |         list          |                 content                  |
   -----------------------------------------------------------------------------------------------------
- Normal screen (1200px => width => 768px) - typical: 768x1024 (iPad Mini/Air)
   -------------------------------------------------------------------
   |menu|    sidebar/list     |               content                |
   -------------------------------------------------------------------
- Small (480px < width < 768px)
   ------------------------------------------
   |menu|     sidebar/list/content          |
   ------------------------------------------
- Phone (width <= 480px) - typical: 320x480 (iPhone 5), 375x667 (iPhone 6-7), 360x564 (Galaxy S6)
   ------------------------
   | sidebar/list/content |
   ------------------------
*/
html {
  height: 100%;
  font-size: 14px;
}
body {
  min-width: 240px;
  height: 100%;
  color: #2c363a;
  overflow: hidden;
}
html.iframe body {
  overflow: auto;
}
#layout {
  overflow: hidden;
  display: flex;
  height: 100%;
  width: 100%;
}
#layout > div > .scroller {
  flex: 1;
  position: relative;
}
#layout > div > .header,
#layout > div > .footer {
  font-size: 1rem;
  font-weight: bold;
  line-height: 58px;
  height: 58px;
  min-height: 58px;
  padding: 0 0.25em;
  margin: 0;
  position: relative;
  overflow: hidden;
  white-space: nowrap;
  display: flex;
  justify-content: space-between;
}
#layout > div > .header {
  border-bottom: 0;
  color: #2c363a;
  background-color: #fdfdfd;
}
#layout > div > .header .header-title {
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  text-align: center;
  margin: 0 -20rem;
}
#layout > div > .header a.button {
  color: #2c363a;
}
#layout > div > .header a.toolbar-list-button,
#layout > div > .header a.toolbar-menu-button {
  order: 99;
}
#layout > div > .footer {
  border-top: 0;
  background-color: #fdfdfd;
}
#layout > div > .footer.small {
  height: 35px;
  min-height: 35px;
  line-height: 35px;
}
#layout > div > .footer:empty {
  display: none;
}
#layout-sidebar {
  position: relative;
  display: flex;
  flex-direction: column;
  flex: 2;
  max-width: 30%;
  min-width: 220px;
  border-right: 1px solid #f7f7f7;
  background-color: #fdfdfd;
}
#layout-sidebar > .header {
  background-color: #fdfdfd;
}
#layout-sidebar .sidebar-compose-btn {
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  height: 2.5rem;
  padding: 0.5rem 1rem;
  margin: 0.75rem;
  border-radius: 0.375rem;
  background: #056dff;
  color: #fff;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.25rem;
  text-decoration: none;
  white-space: nowrap;
  transition:
    background-color 120ms ease,
    box-shadow 120ms ease;
  cursor: pointer;
}
#layout-sidebar .sidebar-compose-btn .material-symbols-outlined {
  font-size: 1.125rem;
  color: inherit;
}
#layout-sidebar .sidebar-compose-btn:hover,
#layout-sidebar .sidebar-compose-btn:focus-visible {
  background: rgba(5, 109, 255, 0.9);
  outline: none;
  box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.05);
}
#layout-sidebar .sidebar-compose-btn:active {
  background: #005fe5;
}
#layout-sidebar .sidebar-compose-btn:disabled,
#layout-sidebar .sidebar-compose-btn.disabled {
  opacity: 0.5;
  pointer-events: none;
}
#layout-sidebar .sidebar-compose-btn + #folderlist-content {
  border-top: 1px solid var(--pixie-border-color, #e4e4e7);
}
#layout-sidebar.sidebar-right {
  order: 2;
  border-right: 0;
  border-left: 1px solid #f7f7f7;
  flex: 3;
}
#layout-list {
  position: relative;
  display: flex;
  flex-direction: column;
  flex: 3;
  max-width: 30%;
  min-width: 300px;
  background-color: #fff;
}
#layout-content {
  display: flex;
  flex: 6;
  flex-direction: column;
  background-color: #fff;
  width: 100%;
}
html.iframe #layout-content {
  height: 100%;
}
#layout-content > .formcontent,
#layout-content > .content {
  height: 100%;
  width: 100%;
  overflow: auto;
  flex: 1;
}
#layout-content .iframe-wrapper {
  width: 100%;
  flex: 1;
}
#layout-content .iframe-wrapper iframe {
  width: 100%;
  height: 100%;
  border: 0;
}
#layout-content.only > .scroller {
  overflow: auto;
}
#layout-menu {
  background-color: #fdfdfd;
}
#layout-menu.popover {
  left: 0 !important;
}
#layout-menu .popover-header {
  height: 58px;
  line-height: 58px;
  border: 0;
  border-radius: 0;
  text-align: center;
}
#layout-menu .popover-header img {
  max-height: 58px;
  max-width: 78px;
  padding: 0.25rem;
}
@media screen and (min-width: 481px) and (max-width: 1024px) {
  #layout-menu .popover-header img {
    max-width: 35.1px;
  }
}
#layout-menu .popover-header img.logo-sm {
  max-height: 34.8px;
  max-width: 46.8px;
  padding: 0;
  display: block;
  margin: 0 auto;
}
@media screen and (min-width: 481px) and (max-width: 1024px) {
  #layout-menu .popover-header img.logo-sm {
    max-width: 21.06px;
  }
}
@media screen and (min-width: 481px) {
  #layout-menu .popover-header {
    padding: 0 !important;
    background-color: #fdfdfd !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
  }
  #layout-menu .popover-header a {
    display: none !important;
  }
  #layout-menu .popover-header a.logo-link {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    line-height: 1;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
  }
  #layout-menu .popover-header a.logo-link:hover,
  #layout-menu .popover-header a.logo-link:focus,
  #layout-menu .popover-header a.logo-link:active {
    color: inherit;
    text-decoration: none;
  }
}
html.layout-phone #layout-menu .popover-header {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  height: 54px;
  min-height: 54px;
  padding: 0 10px;
  background: var(--pixie-menu-surface) !important;
  border-bottom: 1px solid var(--pixie-menu-border) !important;
  color: var(--pixie-menu-foreground);
}
html.layout-phone #layout-menu .popover-header img {
  max-width: 46px;
  max-height: 36px;
  object-fit: contain;
}
html.layout-phone #layout-menu .popover-header a {
  width: auto;
  flex: 0 0 auto;
}
html.layout-phone #layout-menu .popover-header a.logo-link {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  width: auto;
  min-width: 46px;
  height: 40px;
}
html.layout-phone #layout-menu .popover-header a.cancel {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  min-width: 40px;
  height: 40px;
  color: var(--pixie-menu-foreground);
  font-size: 0;
  border-radius: 6px;
}
html.layout-phone #layout-menu .popover-header a.cancel:hover,
html.layout-phone #layout-menu .popover-header a.cancel:focus-visible {
  color: var(--pixie-ui-accent);
  background: var(--pixie-ui-accent-soft) !important;
  outline: 0;
}
html.layout-phone #layout-menu .popover-header a.cancel .heroicon-host,
html.layout-phone #layout-menu .popover-header a.cancel .heroicon-host svg {
  width: 20px !important;
  height: 20px !important;
}
html.layout-phone #layout-menu .popover-header a:before,
html.layout-phone #layout-menu .popover-header a .inner {
  display: none;
}
.column-resizer {
  cursor: col-resize;
  z-index: 1;
  position: absolute;
  top: 0;
  right: -3px;
  width: 6px;
  height: 100%;
}
.column-resizer.inverted {
  right: auto;
  left: -3px;
}
.column-resizer.active {
  width: 10000px;
  right: -5000px;
}
.column-resizer.active.inverted {
  right: auto;
  left: -5000px;
}
@media screen and (max-width: 1200px) {
  #layout-sidebar,
  #layout-list {
    min-width: 260px;
    flex: 3;
  }
  #layout-list > .header > a.button {
    padding: 0 0.25rem;
    margin: 0 0.25rem;
  }
}
@media screen and (max-width: 1024px) {
  .column-resizer {
    display: none;
  }
  #layout-sidebar,
  #layout-list {
    width: auto !important;
    flex: 3 !important;
  }
}
@media screen and (max-width: 768px) {
  #layout-sidebar,
  #layout-list {
    max-width: none;
    border: 0 !important;
  }
  #layout > div > .header {
    background-color: #fdfdfd;
    /* Ensure all header children (hamburger, folder, title, refresh,
     * 3-dots) line up on the same vertical axis and the title fills
     * whatever space remains. The default desktop title uses a
     * `margin: 0 -20rem` "bleed" trick that collapses the title to
     * 0 width on mobile when sibling buttons have nonzero width —
     * we override that here. */
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    padding: 0 0.25rem;
    gap: 0;
  }
  #layout > div > .header .header-title {
    /* Drop the desktop -20rem bleed; let flex-1 expand the title into
     * whatever space is left between left and right chrome. */
    margin: 0 !important;
    flex: 1 1 0%;
    min-width: 0;
    line-height: 58px;
  }
  #layout > div > .header a.button {
    /* Tighten the per-button margin so 5 buttons + title fit in ~360px.
     * flex: 0 0 auto keeps each button at its intrinsic 30×58 size. */
    margin: 0 !important;
    padding: 0 !important;
    flex: 0 0 auto;
    width: 30px;
  }
  #layout > div > .header a.button:before {
    font-size: 1.75rem;
    height: 58px;
    margin: 0;
  }
  #layout > div > .header a.button.filter:before {
    font-size: 1.6rem;
  }
  #layout > div > .header a.button .inner {
    display: none;
  }
  #layout > div > .footer {
    background-color: #fdfdfd;
  }
  /* On small layouts the Roundcube toolbar UL is collapsed into a
   * popover that opens via the 3-dots button (.toolbar-menu-button).
   * The in-header UL is just visual noise at this size — Roundcube
   * leaves it rendered because the real content lives in the popover.
   * Force it hidden so the header only shows hamburger (left) +
   * folder (left) + title (center) + refresh (right) + 3-dots (right).
   *
   * Note: #toolbar-menu is REUSED as the popover content (not the
   * in-header toolbar), so we DO NOT hide it globally — only the
   * in-header copy. The compose toolbar (#messagetoolbar) is also
   * hidden because it lives inside the iframe and is never shown
   * on mobile. */
  #layout-list .header ul.menu.toolbar {
    display: none !important;
  }
  #messagetoolbar {
    display: none !important;
  }
  a.toolbar-list-button {
    display: none;
  }
}
@media screen and (max-width: 320px) {
  #layout-sidebar,
  #layout-list {
    min-width: 240px;
  }
}
@media screen and (min-width: 481px) {
  a.task-menu-button {
    display: none;
  }
  #layout-menu {
    background-color: #fdfdfd;
    width: 42px;
  }
}
@media screen and (min-width: 769px) {
  .floating-action-buttons,
  #layout-content > .header > .header-title,
  #layout > div > .header > .buttons,
  a.toolbar-menu-button {
    display: none;
  }
  /* Boost specificity so the heroicon show-flex rule
   * `a.button.icon.header-heroicon { display:flex }` (specificity 0,3,1,
   * later in source) can't override the hide at layout-normal and large.
   * Match its `.button.icon` plus add `body` to win the cascade.
   * Without this the 3-dots stays visible at 1080px, clicks move the
   * inline toolbar into a popover, and the user perceives the icons
   * "disappearing". */
  body a.button.icon.toolbar-menu-button,
  body a.button.icon.toolbar-list-button {
    display: none !important;
  }
}
@media screen and (min-width: 1025px) {
  #layout-menu {
    width: 78px;
  }
}
@media screen and (min-width: 1080px) {
  #layout-list > .header > .header-title:not(.all-sizes),
  a.toolbar-list-button,
  a.back-list-button,
  a.back-sidebar-button {
    display: none;
  }
  /* Beat the .header-heroicon "display: flex" override that was leaking the
     sidebar back button onto the desktop layout. */
  a.back-list-button.header-heroicon,
  a.back-sidebar-button.header-heroicon,
  a.toolbar-list-button.header-heroicon {
    display: none !important;
  }
}
html.layout-phone .hidden-phone {
  display: none !important;
}
html.layout-phone .hidden-small,
html.layout-small .hidden-small {
  display: none !important;
}
html.layout-small .hidden-lbs {
  display: none !important;
}
html.layout-large .hidden-lbs,
html.layout-normal .hidden-lbs,
html.layout-large .hidden-big,
html.layout-normal .hidden-big {
  display: none !important;
}
html.layout-large .hidden-large {
  display: none !important;
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** Common UI elements ***/
.rcmaddcontact,
.hidden,
.voice {
  display: none !important;
}
font.bold {
  font-weight: bold;
}
#rcmdraglayer {
  min-width: 260px;
  width: 260px;
  background-color: #fff;
  color: #fff;
  box-shadow: 3px 3px 5px #f1f3f4;
  border-radius: 0.3rem;
  z-index: 250;
  opacity: 0.92;
  padding: 0.5rem;
  white-space: nowrap;
}
#rcmdraglayer div {
  line-height: 1.6em;
  overflow: hidden;
  text-overflow: ellipsis;
}
.frame-content {
  padding: 1rem;
}
.frame-content h2 {
  font-weight: bold;
  font-size: 1.5em;
}
.frame-content h3 {
  font-weight: bold;
  font-size: 1.25em;
}
.listbox .scroller {
  width: 100%;
  overflow-x: hidden;
  overflow-y: auto;
}
.listbox .navlist {
  height: 0;
  flex: initial !important;
}
.listbox .navlist .listing tr:last-child td,
.listbox .navlist .listing li:last-child {
  border-bottom: 0;
}
.popup .listbox {
  height: 100%;
  display: flex;
  flex-direction: column;
}
.popup .listbox .scroller {
  flex: 1;
}
.popup .listbox .footer {
  border-top: 1px solid #d4dbde;
  background-color: #fbfbfb;
}
.contact-header {
  display: flex;
  margin-bottom: 1rem;
}
.contact-header .contact-photo {
  min-width: 112px;
}
.contact-header .contact-head {
  margin-left: 1rem;
  margin-top: 0 !important;
}
.contact-header .contact-head legend {
  display: none;
}
p.image-attachment {
  position: relative;
  border: 1px solid #ddd;
  border-radius: 0.3rem;
  background-color: rgba(5, 109, 255, 0.05);
  float: left;
  margin: 0.5rem;
  min-width: 47%;
  min-height: 250px;
  overflow: hidden;
  display: flex;
  justify-content: center;
}
@media screen and (max-width: 480px) {
  p.image-attachment {
    float: none;
    margin: 0.5rem 0 0.5rem 0;
  }
}
p.image-attachment .image-link {
  align-self: center;
  text-align: center;
  margin: 1.6rem 0.5rem;
}
p.image-attachment span {
  color: #737677;
  padding: 0 0.5rem;
  font-size: 90%;
  white-space: nowrap;
  position: absolute;
  line-height: 1.5rem;
}
p.image-attachment .image-filename {
  overflow: hidden;
  text-overflow: ellipsis;
  left: 0;
  top: 0;
  right: 0;
  padding-right: 4rem;
}
p.image-attachment .image-filesize {
  right: 0;
  top: 0;
}
p.image-attachment .attachment-links {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  text-align: center;
}
p.image-attachment .attachment-links a {
  text-decoration: none;
  display: inline-block;
  padding: 0 0.5rem;
  line-height: 1.5rem;
}
p.image-attachment .attachment-links a:before {
  display: inline-block;
}
p.image-attachment .attachment-links a.open:before {
  content: "\f360";
}
p.image-attachment .attachment-links a.download:before {
  content: "\f019";
}
fieldset.image-attachment {
  margin-top: 0.5rem;
}
fieldset.image-attachment legend {
  color: #737677;
  font-size: 0.9rem;
  border-top: 1px solid #f5f5f5;
  margin: 0;
}
fieldset.image-attachment img {
  max-width: 100%;
}
#folder-selector {
  overflow-y: auto;
}
.noselect {
  user-select: none;
  -moz-user-select: none;
  -khtml-user-select: none;
  -ms-user-select: none;
  -webkit-user-select: none;
}
.iframe-loader {
  width: 100%;
  position: absolute;
  top: 0;
  bottom: 0;
  background-color: rgba(255, 255, 255, 0.95);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 3;
}
.iframe-loader .spinner-border {
  width: 7rem;
  height: 7rem;
  color: #f1f3f4;
  border: 1rem solid;
  border-color: currentColor #737677 currentColor currentColor;
}
.footer.toolbar + .iframe-loader {
  top: 58px;
  bottom: 58px;
}
.ios-scroll {
  padding: 0;
  -webkit-overflow-scrolling: touch !important;
  overflow: scroll !important;
}
.ios-scroll.iframe-wrapper {
  margin-top: 1px;
}
.webkit-scroller::-webkit-scrollbar {
  -webkit-appearance: none;
}
.webkit-scroller::-webkit-scrollbar:vertical {
  width: 0.5rem;
}
.webkit-scroller::-webkit-scrollbar:horizontal {
  height: 0.5rem;
}
.webkit-scroller::-webkit-scrollbar-thumb {
  background-color: rgba(0, 0, 0, 0.3);
  border-radius: 0.25rem;
  border: 2px solid #fff;
}
.quota-widget {
  width: 100%;
  max-width: 15em;
  padding: 0.5rem 1rem;
  display: flex;
  align-items: center;
  color: #737677;
}
.quota-widget:before {
  content: "\f0a0";
  line-height: 1;
}
.quota-widget .count {
  font-size: 80%;
  order: 2;
}
.quota-widget .bar {
  flex: 1;
  height: 0.5rem;
  margin: 0 1rem;
  background-color: #fff;
  border: 1px solid #d4dbde;
  border-radius: 0.25rem;
  overflow: hidden;
}
.quota-widget .value {
  display: block;
  background-color: #056dff;
  height: 1rem;
  opacity: 0.75;
}
.quota-widget .value.warning {
  background-color: #ff5552;
}
.image-tools {
  position: absolute;
  top: 5rem;
  left: 0;
  height: 58px;
  overflow: hidden;
  transform: translateX(-87%);
  transition: transform 0.3s ease-in-out;
  background-color: rgba(5, 109, 255, 0.4);
  border-radius: 0 0.3rem 0.3rem 0;
}
.image-tools .menu {
  float: left;
}
.image-tools a.button.icon.tools {
  padding: 0 0.25rem;
  display: inline-block;
  height: 58px;
}
.image-tools a.button.icon.tools span.inner {
  display: none;
}
.image-tools a.button.icon.tools:before {
  line-height: 58px;
  margin: 0;
}
.image-tools.open {
  transform: translateX(0);
}
.image-tools.open a.button.icon.tools:before {
  content: "\f053";
}
.image-tools a {
  color: #fff !important;
}
.image-tools a:focus,
.image-tools a:hover {
  background-color: rgba(5, 109, 255, 0.5) !important;
  outline: 0;
}
.quota-info {
  width: 100%;
  display: table !important;
}
.quota-info td,
.quota-info th {
  text-align: center;
  white-space: nowrap;
}
.quota-info th {
  border-top: 0;
}
.quota-info .root {
  line-height: 1;
  font-style: italic;
  color: #737677;
  background-color: #f1f3f4;
}
.quota-info th:first-child,
.quota-info .name {
  text-align: left;
}
.nav-tabs {
  flex-wrap: nowrap;
}
.nav-tabs .nav-item {
  white-space: nowrap;
  overflow: hidden;
}
.nav-tabs .nav-link {
  overflow: hidden;
  text-overflow: ellipsis;
}
.props-table td.title {
  width: 7em;
}
.table-widget {
  display: flex;
  flex-direction: column;
  margin-bottom: 0.5rem;
  border: 1px solid #d4dbde;
}
.table-widget > .content {
  overflow-x: auto;
  flex-grow: 1;
  height: 18.5em;
}
.table-widget > .content table th {
  border-top: 0;
}
.table-widget > .footer {
  height: 3.5rem;
  border-top: 1px solid #d4dbde;
  text-align: left;
}
.table-widget > .footer a {
  padding: 0.2rem 0.45rem !important;
  height: calc(3.5rem - 1px) !important;
}
.table-widget table {
  margin: 0;
  max-height: 18.5em;
}
.table-widget table.options-table td,
.table-widget table.options-table th {
  text-align: center;
  vertical-align: middle;
}
.table-widget table.options-table td:first-child,
.table-widget table.options-table th:first-child {
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
}
.table-widget table.options-table tr:last-child td {
  border-bottom: 1px solid #d4dbde;
}
.table-widget table.options-table tr.selected td {
  background-color: #e6f0ff;
  color: #2c363a;
  outline: 0;
}
.table-widget table.options-table td:not(:first-child) span {
  display: inline-block;
  line-height: 1.25;
}
.table-widget table.options-table td.enabled span:before {
  content: "\f00c";
}
.table-widget table.options-table td.partial span:before {
  opacity: 0.3;
  content: "\f00c";
}
table.compact-table {
  margin: 0;
  width: 100%;
}
table.compact-table *:not(.invalid-feedback) {
  font-size: inherit;
}
table.compact-table td {
  padding: 0.25rem;
  border: 0;
}
table.compact-table td:first-child {
  padding-left: 0;
}
table.compact-table td:last-child {
  padding-right: 0;
}
table.table .checkbox-cell {
  width: 3rem;
  white-space: nowrap;
  overflow: hidden;
  text-align: center;
  padding: 0.5rem;
}
html.touch table.table .checkbox-cell {
  padding: 0.5rem 0.3rem;
}
table.table th.checkbox-cell {
  padding: 0.75rem 0;
  max-width: 1rem;
}
table.table th.checkbox-cell:before {
  cursor: pointer;
  margin: 0 1rem;
  line-height: 1;
}
table.table th.checkbox-cell.subscription:before {
  content: "\f143";
}
table.table th.checkbox-cell.alarm:before {
  content: "\f0f3";
  font-weight: 400;
}
table.table th.checkbox-cell.read:before {
  content: "\f06e";
}
table.table th.checkbox-cell.write:before {
  content: "\f303";
}
table.table .buttons-cell {
  width: 1%;
  white-space: nowrap;
  text-align: center;
}
table.table .buttons-cell a.button:before {
  line-height: 1;
  float: none;
  display: inline-block;
}
@media screen and (min-width: 480px) {
  table.table .buttons-cell a.button .inner {
    display: inline;
  }
}
table.table label {
  margin: 0;
  display: inline;
}
fieldset.tab-pane table.table thead th {
  border: 0;
}
table.table tr.deleted td {
  color: rgba(44, 54, 58, 0.5) !important;
}
/* Bootstrap's .table style overwrites */
.table thead th {
  border-width: 1px;
  white-space: nowrap;
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** Buttons ***/
.button.disabled {
  opacity: 0.5;
}
a.button {
  text-decoration: none !important;
}
/* font-icons */
a.button.icon.sidebar-menu:before,
button.btn.sidebar-menu:before,
a.button.icon.toolbar-menu-button:before,
button.btn.toolbar-menu-button:before,
a.button.icon.toolbar-list-button:before,
button.btn.toolbar-list-button:before {
  content: "\f142";
  width: 1em;
}
a.button.icon.task-menu-button:before,
button.btn.task-menu-button:before {
  content: "\f0c9";
}
a.button.icon.back-sidebar-button:before,
button.btn.back-sidebar-button:before,
a.button.icon.back-content-button:before,
button.btn.back-content-button:before,
a.button.icon.back-list-button:before,
button.btn.back-list-button:before {
  content: "\f053";
}
a.button.icon.refresh:before,
button.btn.refresh:before {
  content: "\f021";
}
a.button.icon.generate:before,
button.btn.generate:before,
a.button.icon.yes:before,
button.btn.yes:before,
a.button.icon.submit:before,
button.btn.submit:before,
a.button.icon.continue:before,
button.btn.continue:before,
a.button.icon.save:before,
button.btn.save:before {
  content: "\f00c";
}
a.button.icon.create:before,
button.btn.create:before {
  content: "\f0fe";
}
a.button.icon.edit:before,
button.btn.edit:before {
  content: "\f303";
}
a.button.icon.qrcode:before,
button.btn.qrcode:before {
  content: "\f029";
}
a.button.icon.search:before,
button.btn.search:before {
  content: "\f002";
}
a.button.icon.filter:before,
button.btn.filter:before {
  content: "\f0b0";
  font-size: 1.2em;
}
a.button.icon.import:before,
button.btn.import:before {
  content: "\f093";
}
a.button.icon.export:before,
button.btn.export:before {
  content: "\f019";
}
a.button.icon.discard:before,
button.btn.discard:before,
a.button.icon.delete:before,
button.btn.delete:before {
  content: "\f2ed";
  font-weight: 400;
}
a.button.icon.next:before,
button.btn.next:before {
  content: "\f061";
}
a.button.icon.restore:before,
button.btn.restore:before {
  content: "\f0e2";
}
a.button.icon.send:before,
button.btn.send:before,
a.button.icon.bounce:before,
button.btn.bounce:before {
  content: "\f1d8";
}
a.button.icon.attach:before,
button.btn.attach:before {
  content: "\f0c6";
}
a.button.icon.attach.vcard:before,
button.btn.attach.vcard:before {
  content: "\f007";
}
a.button.icon.no:before,
button.btn.no:before,
a.button.icon.close:before,
button.btn.close:before,
a.button.icon.cancel:before,
button.btn.cancel:before {
  content: "\f00d";
}
a.button.icon.back:before,
button.btn.back:before {
  content: "\f053";
}
a.button.icon.remove:before,
button.btn.remove:before {
  content: "\f00d";
}
a.button.icon.unlock:before,
button.btn.unlock:before {
  content: "\f09c";
}
a.button.icon.help:before,
button.btn.help:before {
  content: "\f1cd";
  font-weight: 400;
}
a.button.icon.folders:before,
button.btn.folders:before {
  content: "\f07c";
}
a.button.icon.options:before,
button.btn.options:before {
  content: "\f1de";
}
a.button.icon.tools:before,
button.btn.tools:before,
a.button.icon.settings:before,
button.btn.settings:before {
  content: "\f013";
}
a.button.icon.properties:before,
button.btn.properties:before {
  content: "\f05a";
}
a.button.icon.selection:before,
button.btn.selection:before {
  content: "\f14a";
  font-weight: 400;
}
a.button.icon.insert.recipient:before,
button.btn.insert.recipient:before {
  content: "\f234";
}
a.button.icon.encrypt:before,
button.btn.encrypt:before {
  content: "\f023";
}
a.button.icon.sign:before,
button.btn.sign:before {
  content: "\f5b7";
}
a.button.icon.sso:before,
button.btn.sso:before {
  content: "\f2f6";
}
a.button.icon.extwin:before,
button.btn.extwin:before {
  content: "\f360";
}
a.btn:before,
button.btn:before {
  display: inline !important;
  float: none !important;
  vertical-align: middle;
  margin-right: 0.4rem !important;
}
a.btn.oauth.google:before,
button.btn.oauth.google:before,
a.btn.oauth.outlook:before,
button.btn.oauth.outlook:before {
  content: " ";
  display: inline-block !important;
  height: 1.5rem;
  width: 1.5rem;
  margin-right: 0.8rem !important;
  background-size: 100% auto;
}
a.btn.oauth.google:before,
button.btn.oauth.google:before {
  background: url("../images/google-icon.svg") top left no-repeat;
}
a.btn.oauth.outlook:before,
button.btn.oauth.outlook:before {
  background: url("../images/microsoft-icon.svg") top left no-repeat;
}
a.button.icon.dropdown:before {
  content: "\f0d7";
  font-size: 1em;
}
a.button.icon > span.inner {
  display: none;
}
a.button.icon.sidebar-menu {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  align-self: center;
  width: 2.25rem;
  height: 2.25rem;
  min-width: 2.25rem;
  padding: 0;
  margin: 0;
  background-color: transparent;
  border: 0;
  border-radius: 0.5rem;
  box-shadow: none;
  color: hsl(220, 8.9%, 46.1%);
  text-decoration: none;
  transition:
    background-color 0.15s ease,
    color 0.15s ease,
    box-shadow 0.15s ease,
    border-color 0.15s ease;
  cursor: pointer;
}
a.button.icon.sidebar-menu:before {
  /* Elastic's `.header a.button::before { height: 58px; line-height: 58px;
   * font-size: 1.75rem }` (its mobile media query at `max-width: 768px`)
   * uses an ID selector (`#layout > div > .header ...`) which beats our
   * class selector (0,3,1 vs 1,2,2). The 58px `::before` is taller than
   * our 31.5px button → icon renders off-center, the "menu" glyph sits
   * against the top of the row, and Row's `line-height: 58px` adds
   * baseline drift. The `!important` flags restore the 1rem × 1rem box
   * and line-height that the flex container can then vertically center. */
  font-size: 1rem !important;
  line-height: 1 !important;
  width: 1rem !important;
  height: 1rem !important;
  margin: 0 !important;
}
a.button.icon.sidebar-menu:hover,
a.button.icon.sidebar-menu:focus {
  background-color: hsl(220, 14.3%, 95.9%) !important;
  color: hsl(240, 10%, 3.9%) !important;
  outline: none !important;
}
a.button.icon.sidebar-menu:active {
  background-color: transparent;
}
a.button.icon.sidebar-menu.active,
a.button.icon.sidebar-menu[aria-expanded="true"] {
  background-color: transparent;
  color: hsl(240, 10%, 3.9%);
}
/* When the button is in its `.active` / `aria-expanded="true"` state
 * the default `:hover` rule above IS still expecting to apply — both
 * selectors are (0,3,1) so source order decides and `.active` wins.
 * Re-issue the hover bg against the active compound so the user gets
 * the same gray pill feedback on every hover, even when the action
 * menu is open. */
a.button.icon.sidebar-menu.active:hover,
a.button.icon.sidebar-menu.active:focus,
a.button.icon.sidebar-menu[aria-expanded="true"]:hover,
a.button.icon.sidebar-menu[aria-expanded="true"]:focus {
  background-color: hsl(220, 14.3%, 95.9%) !important;
  color: hsl(240, 10%, 3.9%) !important;
  outline: none !important;
}
html.dark-mode a.button.icon.sidebar-menu {
  background-color: transparent;
  border-color: transparent;
  color: hsl(240, 5%, 64.9%);
  box-shadow: none;
}
html.dark-mode a.button.icon.sidebar-menu:hover,
html.dark-mode a.button.icon.sidebar-menu:focus {
  background-color: hsl(240, 3.7%, 15.9%) !important;
  color: hsl(0, 0%, 98%) !important;
  box-shadow: none !important;
}
html.dark-mode a.button.icon.sidebar-menu.active,
html.dark-mode a.button.icon.sidebar-menu:active,
html.dark-mode a.button.icon.sidebar-menu[aria-expanded="true"] {
  background-color: transparent;
  color: #f9f9f9;
  align-self: center;
}
/* Same hover-on-active override for dark mode so the gray pill still
 * appears on hover even when the action menu is open. */
html.dark-mode a.button.icon.sidebar-menu.active:hover,
html.dark-mode a.button.icon.sidebar-menu.active:focus,
html.dark-mode a.button.icon.sidebar-menu[aria-expanded="true"]:hover,
html.dark-mode a.button.icon.sidebar-menu[aria-expanded="true"]:focus {
  background-color: hsl(240, 3.7%, 15.9%) !important;
  color: hsl(0, 0%, 98%) !important;
  box-shadow: none !important;
}
html.touch .btn:focus {
  box-shadow: none !important;
}
.floating-action-buttons {
  position: absolute;
  right: 0;
  bottom: 0;
}
.footer:not(:empty) + .floating-action-buttons {
  bottom: 35px;
}
.floating-action-buttons a.button {
  display: block;
  float: left;
  width: 4rem;
  height: 4rem;
  border-radius: 50%;
  background: #056dff;
  color: white;
  opacity: 0.95;
  box-shadow: 0 0 5px 5px #b7d5ff;
  margin: 0 1rem 1rem 0;
}
.floating-action-buttons a.button:before {
  content: "\f067";
  width: 4rem;
  height: 4rem;
  line-height: 4rem;
}
.floating-action-buttons a.button.compose:before {
  content: "\f304";
}
.floating-action-buttons a.button .inner {
  display: none;
}
/*** Bootstrap button style overrides ***/
.btn {
  padding: 0.7rem 0.75rem;
}
.btn:focus {
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.3);
}
.btn-link {
  color: #00acff;
}
.btn-secondary {
  color: #fff;
  background: #8b9fa7;
  border-color: #8b9fa7;
}
.btn-secondary:focus {
  background: #7c939c;
  border-color: #778e98;
  box-shadow: 0 0 0 0.2rem rgba(139, 159, 167, 0.5);
}
.btn-secondary:hover {
  background: #7c939c;
  border-color: #778e98;
}
.btn-secondary.disabled,
.btn-secondary:disabled {
  background: #8b9fa7;
  border-color: #8b9fa7;
}
.btn-secondary:not(:disabled):not(.disabled):active,
.btn-secondary:not(:disabled):not(.disabled).active {
  background: #6e8791;
  border-color: #6a828b;
}
.btn-secondary:not(:disabled):not(.disabled):active:focus,
.btn-secondary:not(:disabled):not(.disabled).active:focus {
  box-shadow: 0 0 0 0.2rem rgba(139, 159, 167, 0.53);
}
.btn-primary {
  color: #fff;
  background: #056dff;
  border-color: #056dff;
}
.btn-primary:focus {
  background: #0062eb;
  border-color: #005de0;
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.5);
}
.btn-primary:hover {
  background: #0062eb;
  border-color: #005de0;
}
.btn-primary.disabled,
.btn-primary:disabled {
  background: #056dff;
  border-color: #056dff;
}
.btn-primary:not(:disabled):not(.disabled):active,
.btn-primary:not(:disabled):not(.disabled).active {
  background: #0057d1;
  border-color: #0053c7;
}
.btn-primary:not(:disabled):not(.disabled):active:focus,
.btn-primary:not(:disabled):not(.disabled).active:focus {
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.53);
}
.btn-danger {
  color: #fff;
  background: #ff5552;
  border-color: #ff5552;
}
.btn-danger:focus {
  background: #ff3c38;
  border-color: #ff322e;
  box-shadow: 0 0 0 0.2rem rgba(255, 85, 82, 0.5);
}
.btn-danger:hover {
  background: #ff3c38;
  border-color: #ff322e;
}
.btn-danger.disabled,
.btn-danger:disabled {
  background: #ff5552;
  border-color: #ff5552;
}
.btn-danger:not(:disabled):not(.disabled):active,
.btn-danger:not(:disabled):not(.disabled).active {
  background: #ff231f;
  border-color: #ff1915;
}
.btn-danger:not(:disabled):not(.disabled):active:focus,
.btn-danger:not(:disabled):not(.disabled).active:focus {
  box-shadow: 0 0 0 0.2rem rgba(255, 85, 82, 0.53);
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** jQuery-UI widgets' style overrides ***/
.ui-widget-overlay {
  background-color: rgba(44, 54, 58, 0.5);
  opacity: 1 !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.ui-widget-overlay.datepicker {
  z-index: 119;
}
.ui-widget {
  border: 1px solid #d4dbde;
  box-shadow: 3px 3px 5px #f1f3f4;
  border-radius: 0.3rem;
}
.ui-menu {
  overflow-y: auto;
  overflow-x: hidden;
  max-height: 400px;
  border-radius: 0.3rem;
  z-index: 240;
  position: absolute;
}
.ui-menu .ui-state-active {
  border: 0 !important;
  background-color: #056dff !important;
}
.ui-menu .ui-menu-item {
  white-space: nowrap;
  cursor: default;
}
.ui-menu .ui-menu-item-wrapper {
  margin: 0 !important;
}
.ui-dialog {
  border-radius: 0;
  box-shadow: none;
}
.ui-dialog.no-titlebar .ui-dialog-titlebar {
  display: none;
}
.ui-dialog .ui-dialog-titlebar {
  height: 58px;
  border-bottom: 1px solid #ddd;
}
.ui-dialog .ui-dialog-titlebar button:before {
  margin: 0;
}
.ui-dialog .ui-dialog-title {
  line-height: 58px;
  font-size: 1.25rem;
  padding: 0 3rem 0 1rem;
  color: #2c363a;
}
.ui-dialog .ui-dialog-titlebar-close {
  border: 0;
  color: #2c363a;
  background: transparent;
  right: 0;
  top: 0;
  position: absolute;
  padding: 0.25rem 0.5rem;
  margin: 15px 0.5rem;
}
.ui-dialog .ui-dialog-titlebar-close:before {
  content: "\f00d";
  line-height: 1.5rem;
  margin: 0 !important;
}
.ui-dialog .ui-dialog-content > .popupmenu {
  display: block !important;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
  display: flex;
  justify-content: flex-end;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset a.btn-link,
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button {
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 5rem;
  margin: 9px 4px;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset a.btn-link:last-child,
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:last-child {
  margin-right: 0;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset a.btn-link {
  padding-right: 0;
  padding-left: 0;
  text-decoration: none;
  color: #2c363a;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset a.btn-link:focus {
  background-color: rgba(5, 109, 255, 0.5);
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset a.btn-link.options {
  order: -1;
  padding: 0.375rem 0.25rem;
  margin-right: 0.3rem;
}
.ui-dialog
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  a.btn-link.options:before {
  content: "\f013";
  width: 100%;
  height: 1.25em;
}
.ui-dialog iframe,
.ui-dialog .ui-dialog-content.iframe {
  padding: 0;
  width: 100% !important;
  height: 100%;
  border: 0;
  overflow: hidden;
}
.ui-dialog,
.ui-dialog-content {
  box-sizing: initial;
}
.ui-widget-content .ui-icon.ui-resizable-se {
  background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%0A%20%20%3Cpath%20fill%3D%22%23888%22%20d%3D%22M6.7%2016L16%206.7V5.3L5.3%2016zM9.7%2016L16%209.7V8.3L8.3%2016zM12.7%2016l3.3-3.3v-1.4L11.3%2016zM15.7%2016l.3-.3v-1.4L14.3%2016z%22%2F%3E%0A%3C%2Fsvg%3E%0A");
}
/* FIXME: why do I need !important here? */
@media screen and (max-width: 480px) {
  .ui-dialog {
    width: 100% !important;
    height: 100% !important;
    display: flex;
    flex-direction: column;
    border: 0;
    top: 0 !important;
  }
  .ui-dialog .ui-resizable-handle {
    display: none !important;
  }
  /* X close button — restored on mobile so users have an obvious gesture
   * to dismiss the dialog (instead of having to find Cancel).
   * 44×44 touch target; inside sits an inline x-mark heroicon (22×22,
   * vertically/horizontally centered). Hide the existing FontAwesome
   * ::before glyph since heroicons injects its own. */
  .ui-dialog .ui-dialog-titlebar-close {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 44px !important;
    height: 44px !important;
    min-width: 44px !important;
    max-width: 44px !important;
    min-height: 44px !important;
    max-height: 44px !important;
    margin: 7px 8px !important;
    padding: 0 !important;
    border-radius: 9999px !important;
    background: transparent !important;
    color: #2c363a !important;
    font-size: 0 !important;
    text-indent: -9999px !important;
    overflow: hidden !important;
    cursor: pointer;
  }
  .ui-dialog .ui-dialog-titlebar-close:hover,
  .ui-dialog .ui-dialog-titlebar-close:focus-visible {
    background: rgba(0, 0, 0, 0.06) !important;
  }
  .ui-dialog .ui-dialog-titlebar-close:before {
    content: none !important;
  }
  .ui-dialog .ui-dialog-titlebar-close > .heroicon-host {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 22px !important;
    height: 22px !important;
    pointer-events: none;
  }
  .ui-dialog .ui-dialog-titlebar-close > .heroicon-host > svg {
    width: 22px !important;
    height: 22px !important;
    fill: currentColor !important;
  }
  .ui-dialog .ui-dialog-titlebar {
    height: 58px;
    text-align: left !important;
    background-color: #fdfdfd;
    padding: 0 8px 0 16px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
  }
  .ui-dialog .ui-dialog-title {
    line-height: 1.25 !important;
    font-size: 1.0625rem;
    font-weight: 600;
    padding: 0 !important;
    margin: 0 !important;
    flex: 1 1 auto !important;
    text-align: left !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .ui-dialog .ui-dialog-content {
    flex: 1;
  }
  .ui-dialog .ui-dialog-content:not(.iframe) {
    padding: 1rem;
  }
  /* Buttons row — Cancel sits at the LEFT (per platform convention on
   * iOS / Android / Material), the primary action sits at the RIGHT.
   * Both have 44×44 minimum touch height, generous horizontal padding,
   * and a clear type weight. */
  .ui-dialog .ui-dialog-buttonpane {
    padding: 0 8px !important;
    text-align: right !important;
    border-top: 1px solid #ddd;
    min-height: 56px !important;
    height: auto !important;
    background-color: #fdfdfd;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-end !important;
    width: 100% !important;
    gap: 0.5rem !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button {
    margin: 0 !important;
    padding: 0 1.25rem !important;
    min-height: 44px !important;
    height: 44px !important;
    width: auto !important;
    min-width: 88px !important;
    max-width: none !important;
    border-radius: 8px !important;
    border: 0 !important;
    box-shadow: none;
    font-size: 0.9375rem !important;
    font-weight: 600 !important;
    line-height: 1.2;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:before {
    height: 1rem !important;
    line-height: 1 !important;
    margin: 0 0.375rem 0 0 !important;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:active {
    box-shadow: none;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button.btn-primary {
    color: #ffffff !important;
    background: rgb(5, 109, 255) !important;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button.btn-secondary {
    color: #2c363a !important;
    background: transparent !important;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button.btn-danger {
    color: #ffffff !important;
    background: rgb(220, 38, 38) !important;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button.disabled,
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:disabled {
    opacity: 0.5;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button.cancel {
    order: -1;
    color: #ffffff !important;
    background: rgba(0, 0, 0, 0.08) !important;
  }
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset a.btn-link {
    color: #2c363a;
    margin: 0;
    padding: 0.45rem;
    font-size: 90%;
  }
  .ui-dialog
    .ui-dialog-buttonpane
    .ui-dialog-buttonset
    a.btn-link.options:before {
    display: block !important;
    height: 1.75rem;
    line-height: 1.75;
    margin: 0;
  }
}
/* Slider widget */
.ui-slider {
  box-shadow: none;
}
.ui-slider .ui-slider-range {
  border-radius: 0.3rem;
  background: #9ec6ff;
}
.ui-slider .ui-slider-handle {
  border-radius: 0.3rem;
}
.ui-slider .ui-slider-handle.ui-state-active {
  background: #056dff;
  border-color: #002252;
}
/* Datepicker widget */
.ui-datepicker {
  margin: calc(50vh - 10em) calc(50vw - 10em) !important;
  top: 0 !important;
  left: 0 !important;
  box-shadow: none;
  user-select: none;
}
.ui-datepicker:not(.ui-datepicker-inline) {
  z-index: 120 !important;
}
.ui-datepicker .ui-datepicker-header,
.ui-datepicker .ui-datepicker-title {
  line-height: 4rem;
  height: 4rem;
  padding: 0;
}
.ui-datepicker .ui-datepicker-header {
  border-bottom: 1px solid #ddd;
}
.ui-datepicker .ui-datepicker-header a {
  height: 4rem;
}
.ui-datepicker .ui-datepicker-header select {
  display: inline-block;
}
.ui-datepicker .ui-icon {
  background-image: none !important;
  background-position: none !important;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
  cursor: pointer;
  width: auto;
  color: #2c363a;
  text-decoration: none;
}
.ui-datepicker .ui-datepicker-prev:before,
.ui-datepicker .ui-datepicker-next:before {
  content: "\f053";
  margin: 0 0.25em;
  height: auto;
  width: 1em;
}
.ui-datepicker .ui-datepicker-prev:before {
  content: "\f053";
}
.ui-datepicker .ui-datepicker-next:before {
  content: "\f054";
}
.ui-datepicker td a {
  padding: 0;
  line-height: 1.8em;
  border-radius: 0.3rem;
}
.ui-datepicker .ui-state-default,
.ui-datepicker.ui-widget-content .ui-state-default {
  border: 0;
  background: transparent;
  color: #2c363a;
}
.ui-datepicker .ui-datepicker-days-cell-over a,
.ui-datepicker .ui-datepicker-days-cell-over a.ui-state-default,
.ui-datepicker .ui-state-highlight,
.ui-datepicker.ui-widget-content .ui-state-highlight {
  background: #9ec6ff;
  color: #056dff;
}
.ui-datepicker a.ui-state-active {
  background: #056dff !important;
  color: #fff !important;
  font-weight: bold;
}
.ui-datepicker html.touch td a {
  font-size: 1.2em;
  line-height: 2.2em;
}
.input-group > .form-control.hasDatepicker {
  position: initial;
}
.minicolors-panel {
  border: 1px solid #d4dbde;
  box-shadow: 3px 3px 5px #f1f3f4;
  border-radius: 0.3rem;
  height: 152px;
  padding: 1px;
}
.input-group .minicolors-input {
  width: 100%;
  min-width: 130px;
  border-left: 0;
  border-right: 0;
}
@media screen and (max-width: 320px) {
  .ui-widget-content {
    border-radius: 0;
  }
  .ui-menu {
    border-radius: 0.3rem;
    left: 15px !important;
    right: 15px;
    width: auto;
  }
  .ui-dialog .ui-dialog-content:not(.iframe) {
    padding: 0.65rem;
  }
}
/* --------------------------------------------------------------------------
 * "List options" dialog (opened from the #layout-list toolbar's options
 * icon).  Restyled as a modern centered modal.  Only applies to the dialog
 * that wraps the #listoptions-menu (so other jQuery-UI dialogs are
 * unaffected).
 * ------------------------------------------------------------------------ */
.ui-dialog:has(> .ui-dialog-content #listoptions-menu) {
  border: 0;
  border-radius: 12px;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  background: #fff;
  padding: 0 0 1rem 0;
  color: #2c363a;
  overflow: visible;
}
@media screen and (min-width: 481px) {
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu) .ui-dialog-titlebar {
    height: auto;
    border-bottom: 0;
    padding: 1.25rem 1.5rem 1rem;
    background: transparent;
    cursor: default;
    display: block;
    position: relative;
    border-top-left-radius: 12px;
    border-top-right-radius: 12px;
  }
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
    .ui-dialog-titlebar::before {
    content: "";
    position: absolute;
    top: 1.25rem;
    left: 1.5rem;
    width: 1.5rem;
    height: 1.5rem;
    background: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23056DFF'><path fill-rule='evenodd' d='M7.84 1.804A1 1 0 0 1 8.82 1h2.36a1 1 0 0 1 .98.804l.331 1.652a6.993 6.993 0 0 1 1.929 1.115l1.598-.54a1 1 0 0 1 1.186.447l1.18 2.044a1 1 0 0 1-.205 1.251l-1.267 1.113a7.047 7.047 0 0 1 0 2.228l1.267 1.113a1 1 0 0 1 .206 1.25l-1.18 2.045a1 1 0 0 1-1.187.447l-1.598-.54a6.993 6.993 0 0 1-1.929 1.115l-.33 1.652a1 1 0 0 1-.98.804H8.82a1 1 0 0 1-.98-.804l-.331-1.652a6.993 6.993 0 0 1-1.929-1.115l-1.598.54a1 1 0 0 1-1.186-.447l-1.18-2.044a1 1 0 0 1 .205-1.251l1.267-1.114a7.05 7.05 0 0 1 0-2.227L1.821 7.773a1 1 0 0 1-.206-1.25l1.18-2.045a1 1 0 0 1 1.187-.447l1.598.54A6.992 6.992 0 0 1 7.51 3.456l.33-1.652ZM10 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/></svg>");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 1.5rem;
  }
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu) .ui-dialog-title {
    display: block;
    line-height: 1.4;
    padding: 0 1rem 0 3.25rem;
    font-size: 1.1rem;
    font-weight: 600;
    color: #2c363a;
    float: none !important;
  }
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
    .ui-dialog-titlebar-close,
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu) .ui-resizable-handle {
    display: none !important;
  }
}

.ui-dialog:has(> .ui-dialog-content #listoptions-menu) .ui-dialog-content {
  background: transparent;
  padding: 0.5rem 1.5rem 0.75rem;
  overflow: hidden;
  color: #2c363a;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content
  #listoptions-menu
  .form-group.row {
  align-items: center;
  margin-bottom: 0.75rem;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content
  #listoptions-menu
  .form-group.row
  .col-form-label {
  color: #737677;
  font-size: 0.85rem;
  font-weight: 500;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content
  #listoptions-menu
  .form-group.row
  .form-control {
  border-radius: 8px;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a {
  color: #2c363a;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a:hover {
  color: #2c363a;
  background-color: hsl(240, 5%, 96%);
  box-shadow: 0 0 0 1px hsl(240, 5%, 90%);
  border-radius: 0.375rem;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a:focus,
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a:focus-visible,
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a:active {
  color: #2c363a;
  background-color: hsl(240, 5%, 96%);
  box-shadow: 0 0 0 1px hsl(240, 5%, 90%);
  border-radius: 0.375rem;
  outline: 0;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected,
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected:hover,
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected:focus,
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected:focus-visible,
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected:active {
  color: #2c363a;
  background-color: hsl(240, 5%, 96%);
  box-shadow: 0 0 0 1px hsl(240, 5%, 90%);
  border-radius: 0.375rem;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content
  select.form-control:focus,
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content
  select.form-control:focus-visible {
  color: #2c363a !important;
  background-color: hsl(240, 5%, 96%) !important;
  border-color: hsl(240, 5%, 90%) !important;
  box-shadow: 0 0 0 1px hsl(240, 5%, 90%) !important;
  border-radius: 0.5rem;
  outline: 0 !important;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .listing
  li
  > a {
  border-left: 0 !important;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu) .ui-dialog-buttonpane {
  background: transparent;
  border-top: 1px solid #f1f3f4;
  padding: 0.85rem 1.5rem 1.75rem;
  margin: 0.5rem 0 0;
  border-bottom-left-radius: 12px;
  border-bottom-right-radius: 12px;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset {
  display: flex;
  justify-content: flex-end;
  gap: 0.5rem;
  float: none !important;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button {
  border-radius: 0.5rem;
  padding: 0.55rem 1.5rem;
  font-weight: 500;
  font-size: 0.875rem;
  min-width: 6.5rem;
  margin: 0 !important;
  box-shadow: none;
  transition:
    background-color 120ms ease,
    color 120ms ease,
    border-color 120ms ease;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.cancel {
  background: #dc2626;
  color: #fff;
  border: 1px solid #dc2626;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.cancel:hover {
  background: #ef4444;
  border-color: #ef4444;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.mainaction {
  background: #056dff;
  color: #fff;
  border: 1px solid #056dff;
}
.ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.mainaction:hover {
  background: #005fe5;
  border-color: #005fe5;
}
/* --------------------------------------------------------------------------
 * "Insert contact(s)" dialog (opened from the Add-contact icon next to the
 * To/Cc/Bcc fields in compose).  Mirrors the same Tailwind Plus dialog
 * pattern as the List options modal: rounded card, soft drop shadow,
 * bare accent icon in the titlebar, hidden X + resize handles, rounded
 * button pane with destructive-style Cancel + primary-style Save.  Only
 * applies to the dialog wrapping #recipient-dialog (so other jQuery-UI
 * dialogs are unaffected).
 * ------------------------------------------------------------------------ */
.ui-dialog:has(> .ui-dialog-content #recipient-dialog) {
  border: 0;
  border-radius: 12px;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  background: #fff;
  padding: 0 0 1rem 0;
  color: #2c363a;
  overflow: visible;
}
@media screen and (min-width: 481px) {
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog) .ui-dialog-titlebar {
    height: auto;
    border-bottom: 0;
    padding: 1.25rem 1.5rem 1rem;
    background: transparent;
    cursor: default;
    display: block;
    position: relative;
    border-top-left-radius: 12px;
    border-top-right-radius: 12px;
  }
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
    .ui-dialog-titlebar::before {
    content: "";
    position: absolute;
    top: 1.25rem;
    left: 1.5rem;
    width: 1.5rem;
    height: 1.5rem;
    background: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%232c363a'><path d='M7 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM14.5 9a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM1.615 16.428a1.224 1.224 0 0 1-.569-1.175 6.002 6.002 0 0 1 11.908 0c.058.467-.172.92-.57 1.174A9.953 9.953 0 0 1 7 18a9.953 9.953 0 0 1-5.385-1.572ZM14.5 16h-.106c.07-.297.088-.611.048-.933a7.47 7.47 0 0 0-1.588-3.755A4.502 4.502 0 0 1 17.5 16a2.5 2.5 0 0 1-2.5 2.5h-.5Z'/></svg>");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 1.5rem;
  }
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog) .ui-dialog-title {
    display: block;
    line-height: 1.4;
    padding: 0 1rem 0 3.25rem;
    font-size: 1.1rem;
    font-weight: 600;
    color: #2c363a;
    float: none !important;
  }
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
    .ui-dialog-titlebar-close,
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog) .ui-resizable-handle {
    display: none !important;
  }
}

.ui-dialog:has(> .ui-dialog-content #recipient-dialog) .ui-dialog-content {
  background: transparent;
  padding: 0.5rem 1.5rem 0.75rem !important;
  overflow: hidden;
  color: #2c363a;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog {
  height: 100%;
  padding: 0;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .listbox {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  border: 0;
  background: transparent;
  height: 100%;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar {
  margin: 0;
  height: auto;
  min-height: 2.4rem;
  line-height: 2.4rem;
  border-radius: 0.5rem;
  border: 1px solid #d4dbde;
  background: #fff;
  box-shadow: none;
  padding: 0 0.5rem;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar
  form {
  flex: 1;
  display: flex;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar
  form:before {
  margin: 0 0 0 0.5rem;
  color: #737677;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar
  input {
  background: transparent;
  padding: 0.5rem;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar
  a {
  color: #2c363a;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .scroller {
  flex: 1;
  border: 1px solid #d4dbde;
  border-radius: 0.5rem;
  background: transparent;
  overflow-y: auto;
  padding: 0.25rem;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist {
  background: transparent;
  padding: 0;
  border: 0;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  li {
  border-radius: 0.375rem;
  margin: 0.125rem 0;
  transition: background-color 120ms ease;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li
  > a,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  li
  > a {
  display: block;
  padding: 0.5rem 0.75rem;
  color: #737677;
  font-weight: 700;
  text-decoration: none;
  border-radius: 0.375rem;
  transition:
    background-color 120ms ease,
    color 120ms ease;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li
  > a:hover,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  li
  > a:hover,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li
  > a:focus,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  li
  > a:focus,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li
  > a:active,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  li
  > a:active {
  background-color: rgba(0, 0, 0, 0.06);
  color: #090A0B;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li.selected,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  li.selected {
  background-color: transparent;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li.selected
  > a,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  li.selected
  > a {
  background-color: rgba(0, 0, 0, 0.08);
  color: #090A0B;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li
  > a:before,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  li
  > a:before {
  margin-right: 0.6rem !important;
  color: #737677;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav {
  background: transparent;
  border-top: 1px solid #d4dbde;
  padding: 0.5rem 0.25rem 0;
  margin: 0;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  a {
  color: #737677;
  padding: 0.25rem 0.4rem;
  border-radius: 0.25rem;
  text-decoration: none;
  line-height: 1;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  a:before {
  margin: 0 !important;
  font-size: 0.85rem;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  a:hover,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  a:focus {
  background-color: rgba(0, 0, 0, 0.06);
  color: #2c363a;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  a.disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  .pagenav-text,
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  input {
  color: #737677;
  font-size: 0.775rem;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog) .ui-dialog-buttonpane {
  background: transparent;
  border-top: 1px solid #f1f3f4;
  padding: 0.85rem 1.5rem 1.75rem;
  margin: 0.5rem 0 0;
  border-bottom-left-radius: 12px;
  border-bottom-right-radius: 12px;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset {
  display: flex;
  justify-content: flex-end;
  gap: 0.5rem;
  float: none !important;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button {
  border-radius: 0.5rem;
  padding: 0.55rem 1.5rem;
  font-weight: 700;
  font-size: 0.875rem;
  min-width: 6.5rem;
  margin: 0 !important;
  box-shadow: none;
  transition:
    background-color 120ms ease,
    color 120ms ease,
    border-color 120ms ease;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.cancel {
  background: #dc2626;
  color: #fff;
  border: 1px solid #dc2626;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.cancel:hover {
  background: #ef4444;
  border-color: #ef4444;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.mainaction {
  background: #090A0B;
  color: #fff;
  border: 1px solid #090A0B;
}
.ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.mainaction:hover {
  background: #283134;
  border-color: #283134;
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** Dialogs and popovers ***/
.popupmenu {
  display: none;
  padding: 0;
  min-width: 180px;
  height: 100%;
}
.popupmenu li > a {
  width: 100%;
}
.popupmenu.propform {
  overflow: hidden;
  padding: 0.25rem;
}
.popupmenu.simplelist {
  min-width: 80px;
}
.popup.justified {
  display: flex;
  justify-content: space-around;
}
.popover-body {
  padding: 0;
  overflow-x: hidden;
}
.popover-body > .popupmenu {
  display: block !important;
}
.popover {
  background-color: #fff;
  border: 1px solid hsl(220, 13%, 91%);
  border-radius: 0.5rem;
  box-shadow:
    0 4px 6px -1px rgba(0, 0, 0, 0.1),
    0 2px 4px -2px rgba(0, 0, 0, 0.1);
}
.popover .popover-body {
  padding: 0.25rem;
}
.popover .menu.listing {
  margin: 0;
  padding: 0;
  list-style: none;
}
.popover .menu.listing li {
  display: block;
  height: auto;
  text-align: left;
}
.popover .menu.listing li.spacer,
.popover .menu.listing li.separator {
  display: none;
}
.popover .menu.listing li.separator.show {
  display: block;
  height: 1px;
  background-color: hsl(220, 13%, 91%);
  margin: 0.25rem 0;
  padding: 0;
}
.popover .menu.listing li a {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  width: 100%;
  line-height: 1.25rem;
  font-size: 0.875rem;
  padding: 0.5rem 0.75rem;
  border-radius: 0.5rem;
  color: hsl(240, 10%, 3.9%);
  text-decoration: none;
  cursor: pointer;
  transition:
    background-color 0.15s ease,
    color 0.15s ease;
}
.popover .menu.listing li a:before {
  line-height: inherit;
  height: inherit !important;
  margin: 0 !important;
  float: none !important;
  width: 1em !important;
  min-width: 1em;
  color: hsl(220, 8.9%, 46.1%);
}
.popover .menu.listing li a:not(.disabled):hover,
.popover .menu.listing li a:not(.disabled):focus {
  background-color: hsl(220, 14.3%, 95.9%);
  color: hsl(240, 10%, 3.9%);
  outline: none;
}
.popover .menu.listing li a:not(.disabled):hover:before,
.popover .menu.listing li a:not(.disabled):focus:before {
  color: hsl(240, 10%, 3.9%);
}
.popover .menu.listing li a.disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
html.dark-mode .popover {
  background-color: hsl(240, 10%, 3.9%);
  border-color: hsl(240, 3.7%, 15.9%);
}
html.dark-mode .popover .menu.listing li.separator.show {
  background-color: hsl(240, 3.7%, 15.9%);
}
html.dark-mode .popover .menu.listing li a {
  color: hsl(0, 0%, 98%);
}
html.dark-mode .popover .menu.listing li a:before {
  color: hsl(240, 5%, 64.9%);
}
html.dark-mode .popover .menu.listing li a:not(.disabled):hover,
html.dark-mode .popover .menu.listing li a:not(.disabled):focus {
  background-color: hsl(240, 3.7%, 15.9%);
  color: hsl(0, 0%, 98%);
}
html.dark-mode .popover .menu.listing li a:not(.disabled):hover:before,
html.dark-mode .popover .menu.listing li a:not(.disabled):focus:before {
  color: hsl(0, 0%, 98%);
}
.popover {
  box-shadow: 3px 3px 5px #f1f3f4;
  border-color: #d4dbde;
  padding: 0;
  z-index: 1300;
}
.popover .popover-header {
  display: none;
}
@media screen and (min-width: 769px) {
  .popover .listing li:first-child {
    border-radius: 0.25rem 0.25rem 0 0;
  }
  .popover .listing li:last-child {
    border-bottom-right-radius: 0.25rem;
    border-bottom-left-radius: 0.25rem;
  }
  .popover .listing ul.rounded-0 > li {
    border-radius: 0;
  }
}
html.layout-small .popover:not(.select-menu),
html.layout-phone .popover:not(.select-menu) {
  margin: 0 !important;
  padding: 0;
  right: 0;
  left: initial !important;
  bottom: 0;
  top: 0;
  width: 272px;
  transform: none !important;
  border-radius: 0;
  border: 0;
  display: flex;
  flex-direction: column;
  box-shadow: none;
}
html.layout-small .popover:not(.select-menu) div.arrow,
html.layout-phone .popover:not(.select-menu) div.arrow {
  display: none;
}
html.layout-small .popover:not(.select-menu) .listing li:last-child,
html.layout-phone .popover:not(.select-menu) .listing li:last-child {
  border-bottom: 1px solid #f1f3f4;
}
html.layout-small .popover-overlay,
html.layout-phone .popover-overlay {
  z-index: 1299;
  background-color: rgba(44, 54, 58, 0.5);
  position: absolute;
  top: 0;
  bottom: 0;
  width: 100%;
}
html.layout-small .popover-header,
html.layout-phone .popover-header {
  display: block;
  border-radius: 0;
  border: 0;
  padding: 0 0.5em;
  height: 58px;
  min-height: 58px;
  line-height: 58px;
  font-size: 16px;
  color: #fff;
  background-color: #002252;
}
html.layout-small .popover-header:before,
html.layout-phone .popover-header:before {
  display: none;
}
html.layout-small .popover-header a,
html.layout-phone .popover-header a {
  display: inline-block;
  width: 100%;
  color: #fff;
}
html.layout-small .popover-body > *,
html.layout-phone .popover-body > * {
  max-height: 100% !important;
}
html.touch .popover .listing li a {
  line-height: 47px;
  font-size: 16px;
  padding: 0 0.5em;
}
html.touch .popover .listing li a:before {
  float: left;
}
.select-menu {
  max-width: initial;
  margin: 0;
  height: auto;
  z-index: 1301;
  box-shadow: none;
}
.select-menu .popover-header {
  border-radius: 0.25rem 0.25rem 0 0 !important;
}
.select-menu .listing li a {
  padding-left: 0.25rem;
  outline: 0;
}
.select-menu .listing li:last-child {
  border-bottom-right-radius: 0.25rem;
  border-bottom-left-radius: 0.25rem;
}
.select-menu.inline .listing li {
  padding-right: 0.5rem;
}
.select-menu.inline .listing li:first-child {
  border-top-left-radius: 0.25rem;
  border-top-right-radius: 0.25rem;
}
/** PGP Key search/import dialog **/
.pgpkeyimport div.key {
  position: relative;
  padding: 0.5rem 0;
}
.pgpkeyimport div.key.revoked,
.pgpkeyimport div.key.disabled {
  color: #737677;
}
.pgpkeyimport div.key label {
  display: inline-block;
  margin-right: 0.5em;
  margin-bottom: 0;
}
.pgpkeyimport div.key label:after {
  content: ":";
}
.pgpkeyimport div.key label.keyid {
  display: none;
}
.pgpkeyimport div.key label + a,
.pgpkeyimport div.key label + span {
  line-height: 2.6rem;
  margin-right: 1em;
  white-space: nowrap;
  text-decoration: none;
}
.pgpkeyimport div.key label.keyid + a {
  font-weight: bold;
}
.pgpkeyimport div.key label.keyid + a:before {
  content: "\f084";
}
.pgpkeyimport ul.uids {
  margin: 0;
  padding: 0;
}
.pgpkeyimport li.uid {
  border: 0;
  padding: 0.25rem 0 0 1.5em;
  line-height: 1.5rem !important;
  list-style-type: none;
}
.pgpkeyimport li.uid:before {
  content: "\f007";
  opacity: 0.25;
  font-size: 1em;
  line-height: 1.25;
}
.pgpkeyimport button.importkey {
  position: absolute;
  top: 0.5rem;
  right: 0;
}
.pgpkeyimport button:disabled {
  display: none;
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** Toolbar widget ***/
.menu {
  margin: 0;
  text-align: center;
  white-space: nowrap;
}
.menu a {
  overflow: hidden;
  text-overflow: ellipsis;
  text-decoration: none;
}
.menu a:before {
  content: "\00a0";
}
.menu a:hover,
.menu a:focus {
  outline: 0;
}
.menu a:not(.disabled):focus,
.menu a:not(.disabled):hover {
  background-color: #f5f5f5;
}
.menu.toolbar li {
  display: inline-block;
  height: 58px;
}
.menu.toolbar a {
  color: #2c363a;
  display: block;
  float: left;
  border: 0 !important;
  height: 58px;
  min-width: 3.2rem;
  max-width: 6rem;
  width: auto;
  padding: 0.45rem;
  line-height: 1.5;
  cursor: pointer;
  font-size: 1rem;
  text-align: center;
}
.menu.toolbar a:before {
  height: 1.75rem !important;
  float: none !important;
  width: auto !important;
  margin: 0 !important;
}
.menu.toolbar a.selected {
  color: #41b849;
}
.menu.toolbar > .spacer {
  width: 1em;
}
.menu.toolbar .dropbutton:not(.disabled):hover {
  background-color: #f5f5f5;
}
.menu.toolbar .dropbutton a.dropdown {
  padding: 0 0.3rem;
}
.menu.toolbar .dropbutton a.dropdown:before {
  line-height: 58px;
}
.menu.toolbar .dropbutton a.dropdown:hover {
  background-color: #e9e9e9;
}
.menu span.inner {
  font-size: 90%;
  font-weight: normal;
}
.menu .dropbutton {
  display: inline-block;
}
.menu .dropbutton a.dropdown {
  font-size: 75%;
  min-width: 0;
}
html.ie11 .menu .dropbutton a.dropdown:before {
  font-size: 80%;
}
.menu .dropbutton a.dropdown span.inner {
  display: none;
}
.menu .dropbutton a:first-child {
  padding-right: 0;
}
/**
 * Compose page toolbar (#toolbar-menu / #messagetoolbar).
 *
 * The original Elastic skin expected FontAwesome `::before` glyphs that
 * filled the toolbar item vertically. We now swap in Heroicon SVGs
 * (inline `<svg>` inside `.material-symbols-outlined.heroicon-host`),
 * so the SVG needs an explicit size and the toolbar anchor needs to
 * centre its child — otherwise the icons sit at the bottom of the 58px
 * row instead of the middle.
 *
 * IMPORTANT: these selectors are scoped to the compose-page toolbar only.
 * `#taskmenu` is also a `.menu.toolbar` but it still relies on the
 * FontAwesome `::before` glyphs (with `display: block; font-size: 24px`
 * set by `#taskmenu a > .material-symbols-outlined`), so applying flex
 * here would break the sidebar icons.
 *
 * Roundcube's `.menu a:before { content: "\f0c7"; ... }` rules still
 * paint a FontAwesome glyph on every toolbar anchor. With the Heroicon
 * swap that produces a duplicate icon (the FA `::before` PLUS the SVG),
 * so we MUST kill the `::before` on any anchor that has a heroicon.
 *
 * `font-size: 0` on the span collapses the leftover Material Symbols
 * font glyph box so the SVG is the only visible element.
 */
/* NOTE: scoped with `.has-heroicon`, `.popover` and `.popupmenu` qualifiers so
 * the addressbook's INLINE `<ul id="toolbar-menu">` in the header (whose
 * anchors only carry a FontAwesome `::before` + `<span class="inner">`) keeps
 * Elastic's `display: block; text-align: center` treatment — icon on top,
 * label below. Without the qualifier every addressbook pill would become a
 * horizontal flex row, jamming the FA glyph against the text label ("icons
 * too close to words"). */
#messagetoolbar a,
#toolbar-menu.popupmenu a,
.popover #toolbar-menu a,
#toolbar-menu a.has-heroicon,
#messagetoolbar a.has-heroicon {
  display: flex;
  align-items: center;
  justify-content: center;
}
#messagetoolbar a.has-heroicon:before,
#messagetoolbar a:has(> .heroicon-host):before,
#toolbar-menu a.has-heroicon:before,
#toolbar-menu a:has(> .heroicon-host):before,
a.has-heroicon.header-heroicon:before,
a.has-heroicon.header-heroicon .material-symbols-outlined {
  content: none !important;
  display: none !important;
}
/* Header buttons (hamburger / 3-dots / back chevrons). Inherit
 * currentColor and size the inline SVG to 30px so it is clearly
 * visible against the header regardless of whether the FontAwesome
 * "Icons" font happens to render on the user's device. The 3-dots
 * (ellipsis-horizontal) is harder to see than the hamburger so we
 * use a 30px icon box and a hover background pill for affordance. */
a.button.icon.header-heroicon,
a.button.icon.header-heroicon:active,
a.button.icon.header-heroicon:hover {
  font-size: 0;
  position: relative;
  /* Center the 30px heroicon-host vertically inside the 58px header
   * bar. The <a> is `display: block` with `line-height: 58px` (inherited
   * from `#layout > div > .header`), which on its own can't vertically
   * align an inline-flex child — making the button a flex container
   * centers the child automatically. This works for every header
   * button (hamburger, 3-dots, back-arrow, refresh).
   *
   * Use plain `display: flex` (NOT `!important`): elastic's
   * `@media (min-width: 769px) { a.toolbar-menu-button,
   * a.toolbar-list-button { display: none } }` rule must be able to
   * hide these buttons desktop-side. With `!important` here that
   * hide rule is overridden, the 3-dots stays visible at 1080px,
   * clicking it detaches the inline toolbar into a popover, and the
   * header collapses — the user sees the icons disappear. */
  display: flex;
  align-items: center;
  justify-content: center;
}
a.button.icon.header-heroicon.task-menu-button,
a.button.icon.header-heroicon.toolbar-menu-button {
  /* No hover bg fill — header icons are flat on dark mode */
  background-color: transparent !important;
}
a.button.icon.header-heroicon > .heroicon-host,
a.button.icon.header-heroicon > .material-symbols-outlined {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  pointer-events: none;
}
a.button.icon.header-heroicon > .heroicon-host > svg,
a.button.icon.header-heroicon > svg {
  width: 30px;
  height: 30px;
  fill: currentColor;
  display: block;
}
#messagetoolbar a > .material-symbols-outlined,
#toolbar-menu a > .material-symbols-outlined {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  pointer-events: none;
  line-height: 0;
  font-size: 0;
  text-indent: -9999px;
  overflow: hidden;
}
#messagetoolbar a > .material-symbols-outlined > .heroicon,
#messagetoolbar a > .heroicon-host .heroicon,
#toolbar-menu a > .material-symbols-outlined > .heroicon,
#toolbar-menu a > .heroicon-host .heroicon {
  width: 20px;
  height: 20px;
  display: block;
  pointer-events: none;
  fill: currentColor;
}

/*
 * Compose page toolbar — Radix/shadcn-style horizontal nav.
 *
 * The bar itself is transparent (no shadow, no fill, no border) so it
 * sits as a row of pills on the existing header. Each `.radix-nav__item`
 * is the pill — it gets the accent fill only on hover, focus, or
 * while expanded. Adjacent dropdown half-buttons share a pill so they
 * look like a single connected control (shadcn split-button).
 *
 * Labels hide on small/phone layouts to fall back to icon-only nav.
 */
#messagetoolbar.radix-nav,
#toolbar-menu.radix-nav {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: auto;
  padding: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  border: 0;
}
.radix-nav__item,
#messagetoolbar .radix-nav__item,
#toolbar-menu .radix-nav__item,
.radix-nav li,
#messagetoolbar li,
/* NOTE: scoped to `.popupmenu` (the popover clone) so we do NOT
 * clobber the addressbook's INLINE `.header > #toolbar-menu` at desktop
 * widths, which elastic styles as 58px-tall inline-block rows. Without
 * the `.popupmenu` qualifier every addressbook pill would inherit the
 * 36px compact-nav metrics — leading to mixed heights (Export's split-
 * button stays at 58px from elastic's `.menu.toolbar` rule), differential
 * baseline drift, and headers icons that look "not even". */
#toolbar-menu.popupmenu li,
.popover ul#toolbar-menu li {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 38px;
  min-height: 0;
  line-height: 1;
  padding: 0 12px;
  border-radius: 10px;
  font-family:
    Inter,
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;
  font-size: 13px;
  font-weight: 600;
  color: #2f3437;
  background: transparent;
  border: 0;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition:
    background-color 120ms ease,
    color 120ms ease;
  user-select: none;
  min-width: 0;
  width: auto !important;
  max-width: none !important;
}
html.dark-mode .radix-nav__item,
html.dark-mode #messagetoolbar .radix-nav__item,
html.dark-mode #toolbar-menu .radix-nav__item,
html.dark-mode .radix-nav li,
html.dark-mode #messagetoolbar li,
html.dark-mode #toolbar-menu.popupmenu li,
html.dark-mode .popover ul#toolbar-menu li {
  color: rgba(255, 255, 255, 0.86);
  border-color: transparent;
}
/* Phase C1.1: beat the elastic `.menu.toolbar a { height: 58px }` and
 * `.menu.toolbar li { height: 58px }` so the compose toolbar items
 * collapse back to the 38px pill height. Scoped to compose only — does
 * NOT touch the addressbook inline `.header > #toolbar-menu` (frozen). */
#toolbar-menu.radix-nav .radix-nav__item,
#messagetoolbar.radix-nav .radix-nav__item,
#toolbar-menu.popupmenu .radix-nav__item {
  height: 38px !important;
  min-height: 0 !important;
  line-height: 1 !important;
}
#toolbar-menu.radix-nav > li,
#messagetoolbar.radix-nav > li,
#toolbar-menu.popupmenu > li {
  height: 38px !important;
  min-height: 0 !important;
  line-height: 1 !important;
}
/* Phase C1.1: Spell check active state — orange #f97316 (text + icon).
 * No background fill, no border, no layout shift. */
.radix-nav__item.spellcheck.selected,
.radix-nav__item.spellcheck.pressed,
.radix-nav__item.spellcheck[aria-pressed="true"],
a.radix-nav__item.spellcheck.selected,
a.radix-nav__item.spellcheck.pressed,
button.radix-nav__item.spellcheck.selected,
button.radix-nav__item.spellcheck.pressed {
  color: #f97316;
  background: transparent;
  border: 0;
}
.radix-nav__item.spellcheck.selected .material-symbols-outlined,
.radix-nav__item.spellcheck.pressed .material-symbols-outlined,
.radix-nav__item.spellcheck[aria-pressed="true"] .material-symbols-outlined,
.radix-nav__item.spellcheck.selected .heroicon,
.radix-nav__item.spellcheck.pressed .heroicon,
.radix-nav__item.spellcheck[aria-pressed="true"] .heroicon,
.radix-nav__item.spellcheck.selected svg,
.radix-nav__item.spellcheck.pressed svg,
.radix-nav__item.spellcheck[aria-pressed="true"] svg {
  color: #f97316;
  fill: #f97316;
}
/* Phase C1.2: Spell check active orange — specificity bump.
 * The plain `.radix-nav__item.spellcheck.selected` rule (above) loses
 * to `#toolbar-menu .radix-nav__item` (1,1,0) which beats (0,3,0).
 * Prefix with the same ID selectors that the toolbar uses so we match
 * specificity, and add the `html.dark-mode` prefix for dark mode. */
#toolbar-menu.radix-nav .radix-nav__item.spellcheck.selected,
#toolbar-menu.radix-nav .radix-nav__item.spellcheck.pressed,
#toolbar-menu.radix-nav .radix-nav__item.spellcheck[aria-pressed="true"],
#messagetoolbar.radix-nav .radix-nav__item.spellcheck.selected,
#messagetoolbar.radix-nav .radix-nav__item.spellcheck.pressed,
#messagetoolbar.radix-nav .radix-nav__item.spellcheck[aria-pressed="true"],
html.dark-mode #toolbar-menu.radix-nav .radix-nav__item.spellcheck.selected,
html.dark-mode #toolbar-menu.radix-nav .radix-nav__item.spellcheck.pressed,
html.dark-mode
  #toolbar-menu.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"],
html.dark-mode #messagetoolbar.radix-nav .radix-nav__item.spellcheck.selected,
html.dark-mode #messagetoolbar.radix-nav .radix-nav__item.spellcheck.pressed,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"] {
  color: #f97316;
  background: transparent;
  border: 0;
}
#toolbar-menu.radix-nav
  .radix-nav__item.spellcheck.selected
  .material-symbols-outlined,
#toolbar-menu.radix-nav
  .radix-nav__item.spellcheck.pressed
  .material-symbols-outlined,
#toolbar-menu.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  .material-symbols-outlined,
#toolbar-menu.radix-nav .radix-nav__item.spellcheck.selected .heroicon,
#toolbar-menu.radix-nav .radix-nav__item.spellcheck.pressed .heroicon,
#toolbar-menu.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  .heroicon,
#toolbar-menu.radix-nav .radix-nav__item.spellcheck.selected svg,
#toolbar-menu.radix-nav .radix-nav__item.spellcheck.pressed svg,
#toolbar-menu.radix-nav .radix-nav__item.spellcheck[aria-pressed="true"] svg,
#messagetoolbar.radix-nav
  .radix-nav__item.spellcheck.selected
  .material-symbols-outlined,
#messagetoolbar.radix-nav
  .radix-nav__item.spellcheck.pressed
  .material-symbols-outlined,
#messagetoolbar.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  .material-symbols-outlined,
#messagetoolbar.radix-nav .radix-nav__item.spellcheck.selected .heroicon,
#messagetoolbar.radix-nav .radix-nav__item.spellcheck.pressed .heroicon,
#messagetoolbar.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  .heroicon,
#messagetoolbar.radix-nav .radix-nav__item.spellcheck.selected svg,
#messagetoolbar.radix-nav .radix-nav__item.spellcheck.pressed svg,
#messagetoolbar.radix-nav .radix-nav__item.spellcheck[aria-pressed="true"] svg,
html.dark-mode
  #toolbar-menu.radix-nav
  .radix-nav__item.spellcheck.selected
  .material-symbols-outlined,
html.dark-mode
  #toolbar-menu.radix-nav
  .radix-nav__item.spellcheck.pressed
  .material-symbols-outlined,
html.dark-mode
  #toolbar-menu.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  .material-symbols-outlined,
html.dark-mode
  #toolbar-menu.radix-nav
  .radix-nav__item.spellcheck.selected
  .heroicon,
html.dark-mode
  #toolbar-menu.radix-nav
  .radix-nav__item.spellcheck.pressed
  .heroicon,
html.dark-mode
  #toolbar-menu.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  .heroicon,
html.dark-mode #toolbar-menu.radix-nav .radix-nav__item.spellcheck.selected svg,
html.dark-mode #toolbar-menu.radix-nav .radix-nav__item.spellcheck.pressed svg,
html.dark-mode
  #toolbar-menu.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  svg,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck.selected
  .material-symbols-outlined,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck.pressed
  .material-symbols-outlined,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  .material-symbols-outlined,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck.selected
  .heroicon,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck.pressed
  .heroicon,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  .heroicon,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck.selected
  svg,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck.pressed
  svg,
html.dark-mode
  #messagetoolbar.radix-nav
  .radix-nav__item.spellcheck[aria-pressed="true"]
  svg {
  color: #f97316;
  fill: #f97316;
}
/* Hide the inline heroicon/SVG icons so the nav reads as a text-only
 * strip per the shadcn reference. We keep the chevrons because
 * those signal dropdowns. */
#messagetoolbar.radix-nav .radix-nav__icon,
#toolbar-menu.radix-nav .radix-nav__icon {
  display: none !important;
}
.radix-nav__item:hover:not(.disabled):not([aria-disabled="true"]),
.radix-nav__item:focus-visible {
  background: rgba(0, 0, 0, 0.055);
  color: #2f3437;
  outline: none;
}
.radix-nav__item:active:not(.disabled):not([aria-disabled="true"]) {
  background: rgba(0, 0, 0, 0.08);
}
html.dark-mode
  .radix-nav__item:hover:not(.disabled):not([aria-disabled="true"]),
html.dark-mode .radix-nav__item:focus-visible {
  background: rgba(255, 255, 255, 0.075);
  color: rgba(255, 255, 255, 0.94);
}
html.dark-mode
  .radix-nav__item:active:not(.disabled):not([aria-disabled="true"]) {
  background: rgba(255, 255, 255, 0.105);
}
.radix-nav__item.disabled,
.radix-nav__item[aria-disabled="true"] {
  opacity: 0.5;
  pointer-events: none;
}
.radix-nav__item[aria-expanded="true"] {
  background: rgba(0, 0, 0, 0.08);
  color: #2f3437;
}
html.dark-mode .radix-nav__item[aria-expanded="true"] {
  background: rgba(255, 255, 255, 0.105);
  color: rgba(255, 255, 255, 0.94);
}
.radix-nav__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.radix-nav__icon > .heroicon,
.radix-nav__icon > svg,
.radix-nav__icon.heroicon-host {
  width: 16px;
  height: 16px;
  fill: currentColor;
  display: block;
}
/* Hide the heroicon text node that heroicons.js leaves behind after
 * swapping to the inline SVG. */
.radix-nav__icon:not(.heroicon-host) > span:not(.heroicon) {
  display: none;
}
.radix-nav.radix-nav .radix-nav__icon.material-symbols-outlined {
  font-size: 0;
  text-indent: -9999px;
  overflow: hidden;
  width: 16px;
  height: 16px;
  display: none;
}
/* When the toolbar is rendered inside a Bootstrap popover on desktop
 * (language/responses dropdowns), the shadcn-style nav drops the leading
 * icon so each row reads as a clean label. On phone (mobile drawer) the
 * icon stays visible — see the html.layout-phone override below. */
.popover.radix-popper .radix-nav__icon,
.popover-body .radix-nav__icon,
.popover.radix-popper .material-symbols-outlined,
.popover-body .material-symbols-outlined {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* On phone the popover becomes a side drawer. Restore the toolbar icons
 * (Heroicons SVG inside `.radix-nav__icon.heroicon-host` and the
 * Material Symbols fallback) and lift the row height to the standard
 * 46px so icon + label align with the rest of the drawer rows. */
html.layout-phone .popover:not(.select-menu):not(#layout-menu)
  .popover-body
  #toolbar-menu.radix-nav
  .radix-nav__item,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper
  #toolbar-menu.radix-nav
  .radix-nav__item {
  height: 46px !important;
  min-height: 46px;
  padding: 0 14px !important;
  gap: 12px !important;
}
html.layout-phone .popover:not(.select-menu):not(#layout-menu)
  .popover-body
  #toolbar-menu.radix-nav
  .radix-nav__icon,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper
  #toolbar-menu.radix-nav
  .radix-nav__icon,
html.layout-phone .popover:not(.select-menu):not(#layout-menu)
  .popover-body
  #toolbar-menu.radix-nav
  .radix-nav__icon.material-symbols-outlined,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper
  #toolbar-menu.radix-nav
  .radix-nav__icon.material-symbols-outlined,
html.layout-phone .popover:not(.select-menu):not(#layout-menu)
  .popover-body
  #toolbar-menu.radix-nav
  .material-symbols-outlined,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper
  #toolbar-menu.radix-nav
  .material-symbols-outlined {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 20px !important;
  height: 20px !important;
  margin: 0 !important;
  padding: 0 !important;
  flex: 0 0 20px !important;
}
html.layout-phone .popover:not(.select-menu):not(#layout-menu)
  .popover-body
  #toolbar-menu.radix-nav
  .radix-nav__icon
  > svg,
html.layout-phone .popover:not(.select-menu):not(#layout-menu)
  .popover-body
  #toolbar-menu.radix-nav
  .radix-nav__icon
  > .heroicon,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper
  #toolbar-menu.radix-nav
  .radix-nav__icon
  > svg,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper
  #toolbar-menu.radix-nav
  .radix-nav__icon
  > .heroicon,
html.layout-phone .popover:not(.select-menu):not(#layout-menu)
  .popover-body
  #toolbar-menu.radix-nav
  .radix-nav__icon.heroicon-host,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper
  #toolbar-menu.radix-nav
  .radix-nav__icon.heroicon-host {
  width: 20px !important;
  height: 20px !important;
}
html.layout-phone .popover:not(.select-menu):not(#layout-menu)
  .popover-body
  #toolbar-menu.radix-nav
  .radix-nav__label,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper
  #toolbar-menu.radix-nav
  .radix-nav__label {
  font-size: 14px !important;
  font-weight: 500 !important;
  line-height: 1.25;
}
html.layout-phone .popover:not(.select-menu):not(#layout-menu)
  #toolbar-menu.radix-nav
  .radix-nav__item,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper
  #toolbar-menu.radix-nav
  .radix-nav__item {
  font-size: 14px !important;
  font-weight: 500 !important;
  line-height: 1.25;
}
.radix-nav__label {
  font-family:
    Inter,
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
}
.radix-nav__chevron {
  width: 12px;
  height: 12px;
  flex: 0 0 auto;
  margin-left: 6px;
  transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0;
  line-height: 0;
  overflow: hidden;
}
.radix-nav__chevron > svg,
.radix-nav__chevron > .heroicon {
  width: 12px;
  height: 12px;
  fill: currentColor;
  display: block;
}
.radix-nav__chevron.material-symbols-outlined {
  font-size: 0;
  text-indent: -9999px;
  width: 12px !important;
  height: 12px !important;
}
.radix-nav__item[aria-expanded="true"] .radix-nav__chevron {
  transform: rotate(180deg);
}
.radix-dropdown__group {
  display: inline-flex;
  align-items: center;
  border-radius: 10px;
}
.radix-dropdown__group .radix-nav__item:first-child:not(:last-child) {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.radix-dropdown__group .radix-nav__item:last-child:not(:first-child) {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
  padding-left: 12px;
  padding-right: 12px;
}
.radix-dropdown__group .radix-nav__item + .radix-nav__item {
  margin-left: -1px;
}
.radix-dropdown__group:hover .radix-nav__item,
.radix-dropdown__group:focus-within .radix-nav__item {
  background: rgba(0, 0, 0, 0.055);
  color: #2f3437;
}
html.dark-mode .radix-dropdown__group:hover .radix-nav__item,
html.dark-mode .radix-dropdown__group:focus-within .radix-nav__item {
  background: rgba(255, 255, 255, 0.075);
  color: rgba(255, 255, 255, 0.94);
}

/* Responsive: hide labels on small layouts, leave icon-only mode for
 * the existing elastic-style compact view. */
@media (max-width: 1024px) {
  #messagetoolbar.radix-nav,
  #toolbar-menu.radix-nav {
    gap: 6px;
  }
  #messagetoolbar.radix-nav .radix-nav__label,
  #toolbar-menu.radix-nav .radix-nav__label {
    display: none;
  }
  #messagetoolbar.radix-nav .radix-nav__item,
  #toolbar-menu.radix-nav .radix-nav__item {
    padding: 0 10px;
    height: 36px;
  }
}
@media (max-width: 640px) {
  /* Hide everything on phone except essentials; this matches the
   * existing task-menu-button collapse logic. */
  #messagetoolbar.radix-nav
    .radix-nav__item:not(.options):not(.radix-dropdown__trigger),
  #toolbar-menu.radix-nav
    .radix-nav__item:not(.options):not(.radix-dropdown__trigger) {
    display: none;
  }
}

/* When the compose toolbar items appear INSIDE a Bootstrap popover
 * (the 3-dots menu on phone, plus the responses/languages/encryption
 * dropdowns), arrange them as a vertical shadcn-style menu so each
 * item is its own row. The toolbar itself stays horizontal when it
 * has direct DOM presence in the header. */
.popover-body #toolbar-menu.radix-nav,
.popover.radix-popper #toolbar-menu.radix-nav {
  display: flex !important;
  flex-direction: column !important;
  gap: 2px !important;
  align-items: stretch !important;
  background: transparent !important;
  box-shadow: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
  width: 100% !important;
  min-width: 200px;
  height: auto !important;
  margin: 0 !important;
}
.popover-body #toolbar-menu.radix-nav > li,
.popover.radix-popper #toolbar-menu.radix-nav > li {
  display: block !important;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
}
.popover-body #toolbar-menu.radix-nav .radix-nav__item,
.popover.radix-popper #toolbar-menu.radix-nav .radix-nav__item {
  display: flex !important;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  width: 100% !important;
  max-width: none !important;
  min-width: 0;
  height: 36px !important;
  padding: 0 12px;
  border-radius: 6px;
  margin: 0;
  gap: 8px;
  text-align: left;
  white-space: nowrap;
}
.popover-body #toolbar-menu.radix-nav .radix-nav__item:hover,
.popover.radix-popper #toolbar-menu.radix-nav .radix-nav__item:hover,
.popover-body #toolbar-menu.radix-nav .radix-nav__item:focus-visible,
.popover.radix-popper #toolbar-menu.radix-nav .radix-nav__item:focus-visible,
.popover-body #toolbar-menu.radix-nav .radix-nav__item[aria-expanded="true"],
.popover.radix-popper
  #toolbar-menu.radix-nav
  .radix-nav__item[aria-expanded="true"] {
  background: hsl(var(--accent));
  color: hsl(var(--accent-foreground));
}
/* Reveal labels inside popovers so users can read each menu entry. */
.popover-body #toolbar-menu.radix-nav .radix-nav__label,
.popover.radix-popper #toolbar-menu.radix-nav .radix-nav__label {
  display: inline-flex !important;
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* The split-button dropdown group (e.g. Spell check | Language) — on
 * desktop we render them as two pill halves side-by-side, but inside
 * a popover we want them to look like a single row: the action label
 * takes most of the width and the chevron hides on the right edge. */
.popover-body #toolbar-menu.radix-nav .radix-dropdown__group,
.popover.radix-popper #toolbar-menu.radix-nav .radix-dropdown__group {
  display: flex !important;
  flex-direction: row !important;
  align-items: stretch !important;
  gap: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 6px;
  overflow: hidden;
}
.popover-body #toolbar-menu.radix-nav .radix-dropdown__group > a,
.popover.radix-popper #toolbar-menu.radix-nav .radix-dropdown__group > a,
.popover-body #toolbar-menu.radix-nav .radix-dropdown__group > button,
.popover.radix-popper #toolbar-menu.radix-nav .radix-dropdown__group > button {
  border-radius: 0 !important;
  flex: 1 1 auto;
}
.popover-body
  #toolbar-menu.radix-nav
  .radix-dropdown__group
  > .radix-dropdown__trigger,
.popover.radix-popper
  #toolbar-menu.radix-nav
  .radix-dropdown__group
  > .radix-dropdown__trigger {
  flex: 0 0 36px !important;
  min-width: 36px !important;
  padding: 0 !important;
  justify-content: center !important;
  border-left: 1px solid hsl(var(--border));
  border-left-color: hsl(var(--border) / 0.5);
}
/* But when there's no primary action (just the trigger, like the
 * encryption menu), the trigger should stretch to full width. */
.popover-body
  #toolbar-menu.radix-nav
  .radix-dropdown__group
  > .radix-dropdown__trigger:only-child,
.popover.radix-popper
  #toolbar-menu.radix-nav
  .radix-dropdown__group
  > .radix-dropdown__trigger:only-child {
  flex: 1 1 auto !important;
  border-left: 0 !important;
}
/* Cap the popover that opens from the compose header on desktop so it
 * doesn't swallow the whole viewport. On mobile (layout-phone /
 * layout-small) Roundcube already docks the popover as a right-side
 * drawer that fills the viewport height, so we must NOT cap it there. */
@media screen and (min-width: 769px) {
  .popover.radix-popper.bs-popover-top {
    max-width: 280px !important;
    max-height: 70vh !important;
  }
  .popover.radix-popper .popover-body {
    max-height: calc(70vh - 40px);
    overflow-y: auto;
  }
}

/* Radix-style dropdown panel — used to override Bootstrap popover for
 * the compose toolbar dropdowns (responses, languages, encryption). The
 * Bootstrap popover manager still creates the underlying element so
 * Roundcube's data-popup plumbing keeps working, but we restyle the
 * popper with .radix-popper on the way out. */
.popover.radix-popper {
  padding: 4px;
  background: hsl(var(--popover));
  color: hsl(var(--popover-foreground));
  border: 1px solid var(--pixie-border-color, #e4e4e7);
  border-radius: 10px;
  box-shadow:
    0 6px 24px -4px rgba(0, 0, 0, 0.18),
    0 4px 8px -2px rgba(0, 0, 0, 0.1);
  min-width: 12rem;
  overflow: hidden;
}
html.dark-mode .popover.radix-popper {
  border-color: hsl(var(--border));
}
.popover.radix-popper .popover-body {
  padding: 4px;
}
.popover.radix-popper .popover-header {
  display: none;
}
/* On mobile (layout-phone/layout-small) the popover docks as a right
 * drawer; we need the "Close" header visible so the user can dismiss
 * it without resorting to tapping the overlay. */
html.layout-phone .popover.radix-popper .popover-header,
html.layout-small .popover.radix-popper .popover-header {
  display: block;
  padding: 12px 16px;
  border-bottom: 1px solid hsl(var(--border));
  background: transparent;
}
html.layout-phone .popover.radix-popper .popover-header a,
html.layout-small .popover.radix-popper .popover-header a {
  color: hsl(var(--foreground));
  font-size: 14px;
  font-weight: 500;
}
/* The "Back" header button in nested popovers (Mark / More / Select /
 * Threads submenus) should render the chevron-left icon LEFT of the
 * "Back" text — like a typical iOS-style back button. The Close
 * (cancel) button keeps its centered layout (icon only). */
html.layout-phone .popover.radix-popper .popover-header a.back,
html.layout-small .popover.radix-popper .popover-header a.back {
  justify-content: flex-start !important;
  gap: 8px;
}
/* On mobile, the popover items need their text labels visible.
 * Roundcube's header rule (`a.button.icon .inner { display: none }`)
 * hides them inside the in-header chrome, but the popover content
 * (which is the same `<a>` element re-rendered inside the popover)
 * still needs the labels. The `.list-options-flat` items we inject
 * via heroicons.js get a fresh `<a>` without the `.button.icon`
 * class, so their `.inner` shows by default — but the existing
 * popover items (Reply, Forward, …) also need labels.
 *
 * NOTE: we EXCLUDE `a.dropdown .inner` (the split-button chevron half
 * of Export / Reply-All / Forward). Roundcube emits the dropdown's
 * tooltip text inside its `<span class="inner">` (e.g. "Contact export
 * options"). Showing it makes the popover row balloon to 207px wide
 * and pushes the chevron off-screen on mobile. Elastic hides it via
 * `.popover .dropbutton a.dropdown span.inner { display: none }` and
 * only the chevron glyph renders. We must NOT override that hide rule
 * here — so we use `:not(.dropdown)` to skip dropdown anchors. */
html.layout-phone
  .popover.radix-popper
  ul.menu
  li[role="menuitem"]
  a:not(.dropdown)
  .inner,
html.layout-small
  .popover.radix-popper
  ul.menu
  li[role="menuitem"]
  a:not(.dropdown)
  .inner {
  display: inline !important;
  font-size: 14px;
  line-height: 1;
  margin-left: 0;
  margin-right: auto;
  padding: 0;
  color: inherit;
}
/* Flat list-options submenu we inject via heroicons.js (Select /
 * Threads / Options / Empty). The items live inside the popover UL
 * but need explicit icon sizing because the surrounding parent UL
 * carries the `radix-nav` class which collapses icons to 0 width. */
.popover.radix-popper .list-options-flat li a .heroicon-host,
.popover.radix-popper .list-options-flat li a .material-symbols-outlined {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  pointer-events: none;
}
.popover.radix-popper .list-options-flat li a .heroicon-host > svg,
.popover.radix-popper .list-options-flat li a svg {
  width: 18px !important;
  height: 18px !important;
  fill: currentColor;
  stroke: currentColor;
  display: block;
  flex-shrink: 0;
}
/* The label span sits after the icon — push it to leave a small gap. */
.popover.radix-popper .list-options-flat li a .inner {
  margin-left: 0;
  margin-right: auto;
}
.popover.radix-popper ul.menu {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}
/* Roundcube's `.menu.toolbar li { display: inline-block; height: 58px }`
 * and `.menu.toolbar a { float: left; height: 58px }` force horizontal
 * icon-bar layout for the in-header toolbar. Inside ANY popover
 * (mobile 3-dots dropdown, addressbook Actions, More, etc.) we want
 * a clean vertical list of icon+label rows instead.
 *
 * The desktop radix-nav style (#toolbar-menu.radix-nav li { display:
 * inline-flex !important; height: 36px }) also forces horizontal —
 * it's an ID selector (specificity 1,2,1) which beats any class-only
 * override, so we use an ID selector here too.
 *
 * NOTE: we deliberately EXCLUDE `.dropbutton a.dropdown` (the chevron
 * half of split-buttons like Export / Reply-all / Forward). Letting
 * the chevron stay at its natural size preserves the shadcn-style
 * pill-of-two-buttons look inside the popover row. */
.popover ul#toolbar-menu > li,
.popover ul#toolbar-menu.radix-nav > li,
.popover ul.menu.toolbar > li {
  display: block !important;
  float: none !important;
  height: auto !important;
  width: 100% !important;
  white-space: normal !important;
}
.popover ul#toolbar-menu > li > a,
.popover ul#toolbar-menu.radix-nav > li > a,
.popover ul.menu.toolbar > li > a {
  float: none !important;
  height: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  width: 100% !important;
  padding: 8px 12px !important;
  line-height: 1 !important;
  text-align: left !important;
  font-size: 13px !important;
  justify-content: flex-start !important;
  gap: 8px !important;
}
/* `.dropbutton` is a flex row containing the action <a> + chevron <a>.
 * On mobile popover rows the action takes 100% width and the chevron
 * sits to its right (as a small icon-only button at the end of the row).
 * Don't apply `width: 100%` to BOTH children — let the chevron be
 * its natural small width. */
.popover ul#toolbar-menu .dropbutton {
  display: flex !important;
  align-items: stretch !important;
  width: 100% !important;
}
.popover ul#toolbar-menu .dropbutton > a:first-child {
  flex: 1 1 auto !important;
  width: auto !important;
}
.popover ul#toolbar-menu .dropbutton > a.dropdown {
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: 36px !important;
  padding: 0 10px !important;
  justify-content: center !important;
}
.popover.radix-popper ul.menu li[role="menuitem"] a,
.popover.radix-popper ul.menu li a {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 13px;
  line-height: 1;
  color: hsl(var(--foreground));
  text-decoration: none;
  cursor: pointer;
  transition:
    background-color 80ms ease,
    color 80ms ease;
}
.popover.radix-popper ul.menu li[role="menuitem"] a:hover,
.popover.radix-popper ul.menu li[role="menuitem"] a:focus-visible,
.popover.radix-popper ul.menu li a:hover,
.popover.radix-popper ul.menu li a:focus-visible {
  background: hsl(var(--accent));
  color: hsl(var(--accent-foreground));
  outline: none;
}
.popover.radix-popper ul.menu li.selected a,
.popover.radix-popper ul.menu li.active a {
  background: hsl(var(--accent));
  color: hsl(var(--accent-foreground));
}
.popover .menu li > a.pixie-icon-control {
  min-height: 44px;
  padding: 0 14px;
  gap: 12px;
  font-family: Inter, Roboto, sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.25;
}
.popover .menu li > a.pixie-icon-control:not(.disabled):hover,
.popover .menu li > a.pixie-icon-control:not(.disabled):focus-visible,
.popover .menu li > a.pixie-icon-control[aria-expanded="true"],
.popover .menu li > a.pixie-icon-control.pixie-submenu-open {
  color: var(--pixie-ui-accent);
  background: var(--pixie-ui-accent-soft);
  outline: 0;
}
.popover .menu li > a.pixie-icon-control.disabled,
.popover .menu li > a.pixie-icon-control[aria-disabled="true"] {
  color: hsl(var(--muted-foreground));
  opacity: 0.55;
}
.popover .menu li > a.pixie-icon-control > .pixie-icon-menu {
  width: 20px;
  height: 20px;
  margin-right: 0;
}
.popover .menu li > a.pixie-icon-control > .pixie-icon-chevron {
  width: 16px;
  height: 16px;
  margin-left: auto;
}
html.layout-phone .popover:not(.select-menu) .popover-header,
html.layout-small .popover:not(.select-menu) .popover-header {
  display: flex;
  align-items: center;
  height: 58px;
  min-height: 58px;
  padding: 0 10px;
  color: var(--pixie-menu-foreground);
  background: var(--pixie-menu-surface) !important;
  border-bottom: 1px solid var(--pixie-menu-border);
  font-family: Inter, Roboto, sans-serif;
  line-height: 1;
}
html.layout-phone .popover:not(.select-menu) .popover-header > a.button,
html.layout-small .popover:not(.select-menu) .popover-header > a.button {
  display: inline-flex;
  flex: 0 0 40px;
  align-items: center;
  justify-content: center !important;
  width: 40px;
  min-width: 40px;
  height: 40px;
  padding: 0;
  gap: 0;
  color: var(--pixie-menu-foreground);
  background: transparent !important;
  border-radius: 6px;
  font-size: 0;
}
html.layout-phone .popover:not(.select-menu) .popover-header > a.button:hover,
html.layout-phone .popover:not(.select-menu) .popover-header > a.button:focus-visible,
html.layout-small .popover:not(.select-menu) .popover-header > a.button:hover,
html.layout-small .popover:not(.select-menu) .popover-header > a.button:focus-visible {
  color: var(--pixie-ui-accent);
  background: var(--pixie-ui-accent-soft) !important;
  outline: 0;
}
html.layout-phone .popover:not(.select-menu) .popover-header > a.button .heroicon-host,
html.layout-phone .popover:not(.select-menu) .popover-header > a.button .heroicon-host svg,
html.layout-small .popover:not(.select-menu) .popover-header > a.button .heroicon-host,
html.layout-small .popover:not(.select-menu) .popover-header > a.button .heroicon-host svg {
  width: 20px !important;
  height: 20px !important;
}
html.layout-phone .popover:not(.select-menu) .popover-header > .pixie-menu-title,
html.layout-small .popover:not(.select-menu) .popover-header > .pixie-menu-title {
  min-width: 0;
  margin-left: 6px;
  overflow: hidden;
  color: var(--pixie-menu-foreground);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
html.layout-phone .popover:not(.select-menu) .popover-body,
html.layout-small .popover:not(.select-menu) .popover-body {
  flex: 1 1 auto;
  background: var(--pixie-menu-surface);
}
html.layout-phone .popover:not(.select-menu) .menu li > a.pixie-icon-control,
html.layout-small .popover:not(.select-menu) .menu li > a.pixie-icon-control {
  min-height: 46px;
  padding: 0 14px !important;
  gap: 12px !important;
  border-radius: 6px;
  font-size: 14px !important;
  font-weight: 500;
  line-height: 1.25 !important;
}
.popover.radix-popper .arrow {
  display: none !important;
}

.menu.pagenav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 !important;
  font-size: 100%;
}
.menu.pagenav a {
  flex-grow: 1;
  display: inline-block;
  min-width: 2rem !important;
  height: 35px;
  color: #2c363a;
}
.menu.pagenav a:before {
  margin: 0;
  display: inline;
  float: none;
  line-height: 35px;
}
.menu.pagenav .pagenav-text {
  overflow: hidden;
  text-overflow: ellipsis;
  color: #737677;
  flex-grow: 4;
  font-size: 80%;
}
.menu.pagenav input {
  width: 3rem;
  max-width: 5rem;
  font-size: 90%;
  text-align: center;
  max-height: 1.6rem;
  margin: 0 0.2rem;
}
html.layout-phone .menu.pagenav input {
  display: none;
}
.menu.pagenav span.inner {
  display: none;
}
.menu.pagenav.pagenav-list {
  cursor: pointer;
  background-color: #fbfbfb;
  border-bottom: 1px solid #f1f3f4;
}
.menu.pagenav.pagenav-list a {
  flex-grow: unset;
}
.menu.pagenav.pagenav-list .pagenav-text {
  text-align: left;
  font-size: 100%;
}
.menu.pagenav.pagenav-list + .navlist {
  background-color: #fbfbfb;
}
.menu.pagenav.pagenav-list.expanded + .navlist {
  border-bottom: 1px solid #d4dbde;
}
.menu.content-frame-navigation.hide-nav-buttons a.next,
.menu.content-frame-navigation.hide-nav-buttons a.prev {
  display: none;
}
.menu .listselectors {
  max-width: 100%;
  display: flex;
  justify-content: space-around;
}
.menu .buttons {
  display: block;
}
.menu .buttons button {
  display: block;
  float: left;
  cursor: pointer;
  color: #2c363a;
  background-color: transparent;
  border: 0;
  padding: 0;
  height: 58px;
  line-height: 58px;
  width: 2.5em;
}
.menu .buttons button:before {
  font-size: 1.75rem;
}
.popover .menu li {
  display: block;
  height: auto;
  text-align: left;
}
.popover .menu li.spacer {
  display: none;
}
.popover .menu li:last-child {
  border: 0;
}
.popover .menu li.separator {
  line-height: 1.5rem !important;
  font-size: 0.75rem !important;
  padding: 0 0.5rem;
  color: #737677;
  background-color: #f1f3f4;
}
.popover .menu li.separator label {
  margin: 0;
}
.popover .menu li a {
  height: unset;
  max-width: 100%;
  width: 100%;
  line-height: 35px;
  display: block;
  padding: 0 0.5rem;
  text-align: left;
}
.popover .menu li a:before {
  line-height: inherit;
  height: inherit !important;
  margin-right: 0.5rem !important;
  float: left !important;
  width: 1.18em !important;
  min-width: 1.18em;
}
.popover .menu li a:not(.disabled):hover {
  color: #fff;
  background-color: #056dff;
}
.popover .menu li a[aria-haspopup] {
  display: flex;
  align-items: center;
  width: 100%;
  padding-right: 0.75rem;
}
.popover .menu li a[aria-haspopup]:after {
  color: #737677;
  font-size: 0.9em;
  flex: 0 0 1.18em;
  margin: 0 0 0 auto;
  min-width: 1.18em;
  text-align: center;
  content: "\f054";
}
html.layout-small .popover .menu li a[aria-haspopup]:after {
  margin-left: auto;
  margin-right: 0.2em;
}
.popover .menu li a[aria-haspopup].dropdown:after {
  color: #2c363a;
  margin-left: auto !important;
  margin-right: 0.6em !important;
}
.popover .menu li a[aria-haspopup]:hover:after {
  color: #737677;
}
.popover .menu li a[aria-haspopup][aria-expanded="true"]:after,
.popover .menu li a[aria-haspopup].pixie-submenu-open:after {
  color: var(--pixie-ui-accent);
}
.popover .menu li a[aria-haspopup] > span {
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1 1 auto;
  min-width: 0;
}
/* Pixie Icons are injected only after a valid SVG is available. These
 * selectors suppress legacy glyphs solely on successfully migrated controls. */
body.task-mail .pixie-icon-control::before,
body.task-mail .pixie-icon-control:has(> .pixie-icon-chevron)::after {
  content: none !important;
  display: none !important;
}
body.task-mail .pixie-icon-svg {
  display: block;
  fill: currentColor;
  pointer-events: none;
  flex-shrink: 0;
}
body.task-mail .pixie-icon-menu {
  width: 20px;
  height: 20px;
  margin-right: 0.5rem;
}
body.task-mail .pixie-icon-chevron {
  width: 17px;
  height: 17px;
  margin-left: auto;
  margin-right: 0;
  color: #737677;
}
body.task-mail .pixie-icon-control:hover > .pixie-icon-chevron {
  color: #737677;
}
body.task-mail .pixie-icon-control[aria-expanded="true"] > .pixie-icon-chevron,
body.task-mail .pixie-icon-control.pixie-submenu-open > .pixie-icon-chevron {
  color: var(--pixie-ui-accent);
}
html.dark-mode body.task-mail .pixie-icon-chevron,
html.dark-mode body.task-mail .pixie-icon-control:hover > .pixie-icon-chevron {
  color: #a1a1aa;
}
html.dark-mode body.task-mail .pixie-icon-control[aria-expanded="true"] > .pixie-icon-chevron,
html.dark-mode body.task-mail .pixie-icon-control.pixie-submenu-open > .pixie-icon-chevron {
  color: var(--pixie-ui-accent);
}
@media (hover: hover) and (pointer: fine) {
  .popover .menu li:focus-within > a[aria-haspopup]:after {
    color: var(--pixie-ui-accent);
  }
}
.popover .menu li span.inner {
  font-size: 100%;
}
.popover .menu .dropbutton {
  display: flex;
}
.popover .menu .dropbutton a:first-child {
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
}
.popover .menu .dropbutton:not(.disabled):hover {
  background-color: #f6f6f6;
}
/* Elastic gives the split-button chevron a solid gray pill
 * (`@color-popover-mobile-dropbutton-background = #f6f6f6`). On our
 * dark-mode-first skin, especially the shadcn `radix-popper` popover at
 * `layout-normal` (>=769px), that gray pill renders as the "big white
 * bar" the user reported. Instead we keep the chevron transparent and
 * let the row hover state (`.dropbutton:hover`) carry the highlight,
 * matching how every other item in the popover behaves. */
.popover .menu .dropbutton a.dropdown {
  width: 3.5rem;
  padding: 0 0.5em;
  background-color: transparent;
  color: inherit;
}
.popover .menu .dropbutton a.dropdown:hover {
  background-color: rgba(127, 127, 127, 0.12);
  color: inherit;
}
.popover .menu .dropbutton a.dropdown:before,
.popover .menu .dropbutton a.dropdown span.inner {
  display: none;
}
.popover .menu.no-icon a:before {
  display: none;
}
@media screen and (min-width: 769px) {
  .content-frame-navigation {
    display: none !important;
  }
  .header a.button.icon:not(.disabled):focus,
  .header a.button.icon:not(.disabled):hover {
    background-color: #f5f5f5;
    outline: 0;
  }
  .header a.button.icon:before {
    margin: 0;
  }
}
@media screen and (max-width: 768px) {
  .menu.footer {
    justify-content: space-around !important;
  }
  .menu.footer > * {
    flex-grow: 1;
  }
  .menu.footer .buttons {
    display: flex;
    justify-content: space-evenly;
  }
  .menu.footer .listselectors > * {
    flex-grow: 1;
  }
  .menu.listing a {
    color: #2c363a;
  }
}
a.toolbar-button {
  cursor: pointer;
}
@media screen and (min-width: 1080px) {
  a.toolbar-button {
    line-height: 1.5;
    padding: 0.45rem;
  }
  a.toolbar-button:before {
    float: none !important;
    height: 1.75rem !important;
    line-height: 1.5;
    width: auto !important;
  }
  a.toolbar-button span.inner {
    display: inline !important;
    font-weight: normal;
    font-size: 90%;
  }
}
/*** Menu button icons ***/
.menu a.mail:before {
  content: "\f0e0";
}
.menu a.contacts:before {
  content: "\f0c0";
}
.menu a.options:before {
  content: "\f1de";
}
.menu a.settings:before {
  content: "\f013";
}
.menu a.theme.light:before {
  content: "\f185";
}
.menu a.theme.dark:before {
  content: "\f186";
}
.menu a.help:before {
  content: "\f1cd";
}
.menu a.logout:before {
  content: "\f011";
}
.menu a.about:before {
  content: "\f128";
}
.menu a.refresh:before {
  content: "\f021";
}
.menu a.compose:before {
  content: "\f044";
}
.menu a.calendar:before {
  content: "\f073";
}
.menu a.tasklist:before {
  content: "\f0ae";
}
.menu a.files:before {
  content: "\f07b";
}
.menu a.notes:before {
  content: "\f249";
}
.menu a.chat:before {
  content: "\f086";
}
.menu a.actions:before {
  content: "\f013";
}
.menu a.addressbook:before {
  content: "\f007";
}
.menu a.archive:before {
  content: "\f187";
}
.menu a.assigngroup:before {
  content: "\f234";
}
.menu a.attach:before,
.menu a.vcard:before {
  content: "\f0c6";
}
.menu a.next:before {
  content: "\f061";
}
.menu a.prev:before,
.menu a.back:before {
  content: "\f060";
}
.menu a.check:before {
  content: "\00a0";
}
.menu a.check.selected:before {
  content: "\f00c";
}
.menu a.closewin:before {
  content: "\f410";
}
.menu a.collapse:before {
  content: "\f107";
}
.menu a.copy:before {
  content: "\f0c5";
}
.menu a.create:before {
  content: "\f0fe";
}
.menu a.delete:before {
  content: "\f2ed";
}
.menu a.download:before,
.menu a.download.eml:before,
.menu a.download.maildir:before,
.menu a.download.mbox:before {
  content: "\f019";
}
.menu a.dropdown:before {
  content: "\f0d7";
}
.menu a.edit:before {
  content: "\f303";
}
.menu a.encrypt:before,
.menu a.enigma:before {
  content: "\f023";
}
.menu a.encrypt.sign:before {
  content: "\f023";
}
.menu a.expand:before {
  content: "\f105";
}
.menu a.expand.all:before {
  content: "\f103";
}
.menu a.expand.none:before {
  content: "\f102";
}
.menu a.export:before,
.menu a.export.all:before,
.menu a.export.selection:before {
  content: "\f019";
}
.menu a.expunge:before {
  content: "\f78c";
}
.menu a.extwin:before {
  content: "\f360";
}
.menu a.filterlink:before {
  content: "\f0b0";
}
.menu a.firstpage:before {
  content: "\f100";
}
.menu a.nextpage:before {
  content: "\f105";
}
.menu a.prevpage:before {
  content: "\f104";
}
.menu a.lastpage:before {
  content: "\f101";
}
.menu a.flag:before,
.menu a.select.flagged:before {
  content: "\f024";
  font-weight: 900;
}
.menu a.unflag:before {
  content: "\f024";
  font-weight: 400;
}
.menu a.undo:before {
  content: "\f01e";
}
.menu a.folders:before {
  content: "\f07b";
}
.menu a.forward:before,
.menu a.forward.attachment:before,
.menu a.forward.bounce:before,
.menu a.forward.inline:before {
  content: "\f064";
}
.menu a.import:before,
.menu a.upload:before {
  content: "\f093";
}
.menu a.insertresponse:before {
  content: "\f075";
}
.menu a.junk:before {
  content: "\f7e4";
}
.menu a.notjunk:before {
  content: "\f01c";
}
.menu a.markmessage:before {
  content: "\f02b";
}
.menu a.more:before {
  content: "\f141";
}
.menu a.move:before {
  content: "\f07c";
}
.menu a.print:before {
  content: "\f02f";
}
.menu a.properties:before {
  content: "\f15b";
}
.menu a.purge:before {
  content: "\f12d";
}
.menu a.qrcode:before {
  content: "\f029";
}
.menu a.read:before {
  content: "\f2b6";
  font-weight: 400;
}
.menu a.unread:before,
.menu a.expand.unread:before,
.menu a.select.unread:before {
  content: "\f0e0";
  font-weight: 900;
}
.menu a.recipient:before {
  content: "\f0e0";
  font-weight: 400;
}
.menu a.refresh:before {
  content: "\f021";
}
.menu a.remove:before {
  content: "\f12d";
}
.menu a.removegroup:before {
  content: "\f235";
}
.menu a.rename:before {
  content: "\f303";
}
.menu a.reply:before {
  content: "\f3e5";
}
.menu a.reply-all:before,
.menu a.reply.all:before,
.menu a.reply.list:before {
  content: "\f122";
}
.menu a.responses:before {
  content: "\f075";
}
.menu a.rotate:before {
  content: "\f2f9";
}
.menu a.save:before {
  content: "\f0c7";
  font-weight: 400;
}
.menu a.search:before {
  content: "\f002";
}
.menu a.search.delete:before {
  content: "\f2ed";
}
.menu a.select:before {
  content: "\f245";
}
.menu a.select.all:before {
  content: "\f069";
}
.menu a.select.invert:before {
  content: "\f14a";
}
.menu a.select.none:before {
  content: "\f00d";
  font-weight: 900;
}
.menu a.select.page:before {
  content: "\f0c9";
  font-weight: 900;
}
.menu a.selection:before {
  content: "\f14a" !important;
  font-weight: 400 !important;
}
.menu a.send:before {
  content: "\f1d8";
}
.menu a.showurl:before {
  content: "\f0c1";
}
.menu a.signature:before {
  content: "\f5b7";
}
.menu a.source:before {
  content: "\f1c9";
}
.menu a.spellcheck:before {
  content: "\f891";
}
.menu a.status:before {
  content: "\f0eb";
  font-weight: 400;
}
.menu a.submit:before {
  content: "\f00c";
}
.menu a.info:before {
  content: "\f05a";
}
.menu a.threads:before {
  content: "\f086";
}
.menu a.zoomin:before {
  content: "\f00e";
}
.menu a.zoomout:before {
  content: "\f010";
}
/*** Searchbar and searchoptions widgets ***/
.searchbar {
  height: 36px;
  min-height: 36px;
  line-height: 36px;
  background-color: #fbfbfb;
  border-bottom: 0;
  border-radius: 5px;
  margin: 0.5rem 0.75rem;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  display: flex;
  align-items: center;
  overflow: hidden;
  position: relative;
  transition-property:
    color, background-color, border-color, outline-color, text-decoration-color,
    fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(
    --tw-ease,
    var(--default-transition-timing-function)
  );
  transition-duration: var(--tw-duration, var(--default-transition-duration));
}
.searchbar form {
  flex: 1;
  display: flex;
}
.searchbar form:before {
  content: "\f002";
  height: 36px;
  color: #737677;
  margin: 0 0 0 0.75rem;
}
.searchbar input {
  width: 100%;
  border: 0;
  background: transparent;
  padding: 0.5rem;
  line-height: normal;
  outline: 0;
  transition-property:
    color, background-color, border-color, outline-color, text-decoration-color,
    fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(
    --tw-ease,
    var(--default-transition-timing-function)
  );
  transition-duration: var(--tw-duration, var(--default-transition-duration));
}
.searchbar input::-ms-clear {
  display: none;
}
.searchbar a {
  color: #2c363a;
}
.searchbar a:before {
  width: 2rem;
  height: 36px;
  margin: 0;
}
.searchbar a.options:before {
  content: "\f107";
}
.searchbar a.reset:before {
  content: "\f00d";
  font-size: 1rem;
}
.searchbar a.unread:before {
  content: "\f0e0";
  font-weight: 900;
}
.searchbar a.reset,
.searchbar a.search {
  display: none;
}
.searchbar a.selected {
  color: #41b849;
}
.searchbar span.inner {
  display: none;
}
.searchbar.active a.reset {
  display: inline;
}
.searchbar.open a.options:before {
  content: "\f106";
}
.searchoptions button.search {
  width: 100%;
  font-family: inherit;
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.25;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
}
.searchoptions button.search:before {
  content: "";
  font-family: inherit;
  font-size: 1em;
  font-weight: inherit;
  font-style: normal;
  width: 1.1em;
  height: 1.1em;
  display: inline-block;
  float: none;
  margin: 0;
  background-color: currentColor;
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='white'><circle cx='9' cy='9' r='6' fill='none' stroke='white' stroke-width='2.25'/><path d='m13.5 13.5 4 4' fill='none' stroke='white' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='white'><circle cx='9' cy='9' r='6' fill='none' stroke='white' stroke-width='2.25'/><path d='m13.5 13.5 4 4' fill='none' stroke='white' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
}
.searchoptions ul.proplist + div {
  margin-top: 1rem;
}
.searchoptions .input-group:not(:last-child) {
  margin-bottom: 0.5rem;
}
.searchoptions .input-group .input-group-prepend {
  width: auto;
}
.searchoptions .input-group .input-group-prepend .input-group-text {
  background: transparent;
  border: 0;
  padding: 0.25rem 0;
  margin-right: 0.5rem;
  color: #737677;
  font-size: 0.85rem;
  font-weight: 500;
  border-radius: 0;
}
.searchoptions .input-group select.form-control {
  width: 100%;
  border-radius: 8px;
  border-color: hsl(240, 5%, 90%);
  background-color: hsl(240, 5%, 96%);
  color: #2c363a;
}
.searchoptions .input-group select.form-control:focus,
.searchoptions .input-group select.form-control:focus-visible {
  color: #2c363a;
  background-color: hsl(240, 5%, 96%);
  border-color: hsl(240, 5%, 90%);
  box-shadow: 0 0 0 1px hsl(240, 5%, 90%);
  outline: 0;
}
.searchoptions .input-group label {
  width: 100%;
}
.searchoptions .formbuttons {
  display: block !important;
}
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li {
  margin: 2px 4px;
}
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li
  a,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li
  a,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li
  a {
  padding: 0.3rem 0.625rem;
}
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li
  a:before,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li
  a:before,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li
  a:before {
  content: none !important;
  width: 0;
  margin: 0;
}
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li
  a:hover,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li
  a:hover,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li
  a:hover {
  color: #2c363a;
  background-color: hsl(240, 5%, 96%);
  box-shadow: 0 0 0 1px hsl(240, 5%, 90%);
  border-radius: 6px;
  outline: 0;
}
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li
  a.selected,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li
  a.selected,
.popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li
  a.selected {
  color: #2c363a;
  background-color: hsl(240, 5%, 96%);
  box-shadow: 0 0 0 1px hsl(240, 5%, 90%);
  border-radius: 6px;
}
/*** Taskmenu ***/
#taskmenu a {
  display: block;
  float: none;
}
html.layout-phone #taskmenu {
    z-index: 30001;
    overflow-x: hidden;
}
html.layout-phone #taskmenu a {
    max-width: unset;
    padding: 0 16px;
    margin-top: 1px;
    text-align: left;
    line-height: 1.25;
    height: 47px;
    border-bottom: 1px solid #f1f3f4 !important;
    color: #2c363a;
    /* Override the desktop center alignment — icon + label sit on the left.
       !important is required because a later unscoped rule (the "Material
       Symbols icons in #taskmenu" block) re-asserts `justify-content: center`
       at all viewports, which would otherwise keep the icon centered. */
    justify-content: flex-start !important;
    gap: 12px;
    font-family: Inter, Roboto, sans-serif;
    font-size: 14px;
    font-weight: 500;
}
html.layout-phone #taskmenu a:before {
    float: left !important;
    width: 1.2em !important;
    margin-right: 0.5rem !important;
}
  /* Render the localized tooltip text next to each icon (Compose → "Create
     a new message", theme → "Dark mode"/"Light mode", etc.). The <a> already
     carries data-original-title, populated by the Roundcube JS tooltip layer. */
html.layout-phone #taskmenu a::after {
    content: attr(data-original-title);
    font-weight: 500;
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
    font-weight: 500;
}
html.layout-phone #taskmenu span.inner {
    font-size: 100%;
}
html.layout-phone #taskmenu a.pixie-icon-control > .pixie-icon-rail {
    width: 20px;
    height: 20px;
}
@media screen and (min-width: 481px) {
  #taskmenu a {
    color: #2c363a;
    padding: 0.45rem 0;
    min-width: unset;
    background-color: transparent;
  }
  #taskmenu a.selected {
    color: #056dff;
    background: transparent;
  }
  #taskmenu a.selected:hover {
    color: #056dff;
    background: transparent;
  }
  #taskmenu a:hover {
    color: #2c363a;
    background: transparent;
  }
  #taskmenu .special-buttons {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: transparent;
    border-top: 1px solid oklch(var(--border, 0.922 0 0) / 0.4);
    padding-top: 0.25rem;
  }
  #taskmenu .action-buttons a {
    color: #056dff;
    background: transparent;
  }
  #taskmenu .action-buttons a:hover {
    color: #056dff;
    background: transparent;
  }
  #taskmenu a.logout {
    color: #ff5552 !important;
  }
  #taskmenu a.logout:hover {
    color: #ff5552 !important;
  }
}
@media screen and (min-width: 481px) and (max-width: 1024px) {
  #taskmenu a {
    width: 42px;
    height: 42px;
    font-size: 1.2rem;
    padding: 0;
  }
  #taskmenu a:before {
    line-height: 42px;
  }
  #taskmenu span.inner {
    display: none;
  }
}
@media screen and (min-width: 1025px) {
  #taskmenu a {
    width: 78px;
    font-size: 1rem;
  }
  #taskmenu a:before {
    float: none;
  }
  #taskmenu span.inner {
    padding: 0 0.1em;
  }
}
/*** Material Symbols icons in #taskmenu ***/
#taskmenu a {
  display: flex !important;
  align-items: center;
  justify-content: center;
  background-color: transparent !important;
  background-image: none !important;
  transition: color 0.15s ease;
}
#taskmenu a.compose:before,
#taskmenu a.mail:before,
#taskmenu a.contacts:before,
#taskmenu a.addressbook:before,
#taskmenu a.settings:before,
#taskmenu a.options:before,
#taskmenu a.theme:before,
#taskmenu a.about:before,
#taskmenu a.logout:before,
#taskmenu a.help:before {
  content: "";
  width: 0;
  height: 0;
  overflow: hidden;
  font-size: 0;
}
#taskmenu a:hover,
#taskmenu a:focus,
#taskmenu a:focus-visible,
#taskmenu a:focus-within {
  background-color: transparent !important;
  background-image: none !important;
  color: var(--pixie-ui-accent) !important;
  outline: 0;
}
#taskmenu a.selected,
#taskmenu a.selected:hover,
#taskmenu a.selected:focus {
  background-color: transparent !important;
  color: var(--pixie-ui-accent) !important;
}
#taskmenu a > .material-symbols-outlined {
  pointer-events: none;
  line-height: 1;
  font-size: 24px;
  display: block;
}
#taskmenu a > .heroicon-host .heroicon {
  width: 20px;
  height: 20px;
  display: block;
  pointer-events: none;
}
#taskmenu .action-buttons a.compose:hover,
#taskmenu .action-buttons a.compose:focus {
  color: var(--pixie-ui-accent) !important;
}
#taskmenu .action-buttons a.compose.selected {
  color: var(--pixie-ui-accent) !important;
}
#taskmenu a.logout,
#taskmenu a.logout:hover,
#taskmenu a.logout:focus {
  background-color: transparent !important;
  color: #ff5552 !important;
}
/*** Heroicons Solid app rail ***/
#taskmenu a.pixie-icon-control {
  color: #4b5563 !important;
  transition: none !important;
}
#taskmenu a.pixie-icon-control::before {
  content: none !important;
  display: none !important;
}
#taskmenu a.pixie-icon-control:hover,
#taskmenu a.pixie-icon-control:focus,
#taskmenu a.pixie-icon-control:focus-visible {
  color: var(--pixie-ui-accent) !important;
  background-color: var(--pixie-ui-accent-soft) !important;
}
#taskmenu a.pixie-icon-control.selected,
#taskmenu a.pixie-icon-control.selected:hover,
#taskmenu a.pixie-icon-control.selected:focus {
  color: var(--pixie-ui-accent) !important;
  background-color: transparent !important;
}
#taskmenu a.logout.pixie-icon-control,
#taskmenu a.logout.pixie-icon-control:hover,
#taskmenu a.logout.pixie-icon-control:focus {
  color: #ff5552 !important;
}
#taskmenu a.pixie-icon-control > .pixie-icon-rail {
  width: 22px;
  height: 22px;
  margin: 0;
  transition: none !important;
}
#taskmenu a > .material-symbols-outlined,
#taskmenu a > .heroicon-host,
#taskmenu a.theme.pixie-icon-control > .material-symbols-outlined {
  display: none !important;
}
html.dark-mode #taskmenu a.pixie-icon-control {
  color: #c5d1d3 !important;
}
html.dark-mode #taskmenu a.pixie-icon-control:hover,
html.dark-mode #taskmenu a.pixie-icon-control:focus,
html.dark-mode #taskmenu a.pixie-icon-control:focus-visible {
  color: var(--pixie-ui-accent) !important;
  background-color: var(--pixie-ui-accent-soft) !important;
}
html.dark-mode #taskmenu a.pixie-icon-control.selected,
html.dark-mode #taskmenu a.pixie-icon-control.selected:hover,
html.dark-mode #taskmenu a.pixie-icon-control.selected:focus {
  color: var(--pixie-ui-accent) !important;
  background-color: transparent !important;
}
html.dark-mode #taskmenu a.logout.pixie-icon-control,
html.dark-mode #taskmenu a.logout.pixie-icon-control:hover,
html.dark-mode #taskmenu a.logout.pixie-icon-control:focus {
  color: #ff5552 !important;
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** UI Messages ***/
.ui.alert {
  margin: 0;
  margin-bottom: 0.2rem;
  opacity: 0.95;
  width: 100%;
  padding: 0.75em;
  color: #2c363a;
  border: 1px solid transparent;
  background-color: rgba(5, 109, 255, 0.05);
  display: flex;
  align-items: center;
}
@media screen and (max-width: 480px) {
  .ui.alert {
    border: 0;
  }
}
.ui.alert span {
  margin: auto 0;
}
.ui.alert > i.icon {
  line-height: 1;
  color: #4d5f66;
  margin: auto 0;
}
.ui.alert > i.icon:before {
  content: "\f05a";
  margin-right: 0.6rem;
}
.ui.alert .btn {
  margin-left: 0.5rem;
}
.ui.alert.loading {
  color: #6b7275;
}
.ui.alert.loading > i.icon:before {
  content: "\f1ce";
  -webkit-animation: spinner-border 1.5s infinite linear;
  animation: spinner-border 1.5s infinite linear;
  width: 1em;
}
.ui.alert.alert-success > i.icon:before {
  content: "\f058";
  color: #41b849;
}
.ui.alert.alert-warning > i.icon:before {
  content: "\f071";
  color: #ffd452;
}
.ui.alert.alert-danger > i.icon:before {
  content: "\f06a";
  color: #ff5552;
}
.ui.alert.vcardattachment > i.icon:before {
  content: "\f2bb";
}
.ui.alert.enigmaattachment > i.icon:before {
  content: "\f084";
}
.ui.alert.signed > i.icon:before,
.ui.alert.encrypted > i.icon:before {
  content: "\f023";
}
.ui.alert.chat > i.icon:before {
  content: "\f075";
}
.ui.alert .boxbuttons {
  white-space: nowrap;
}
.ui.alert .boxbuttons .btn {
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 220px;
}
@media screen and (max-width: 480px) {
  .ui.alert .boxbuttons {
    display: flex;
    flex-direction: column;
  }
  .ui.alert .boxbuttons .btn {
    max-width: 160px;
  }
  .ui.alert .boxbuttons .btn:not(:first-child) {
    margin-top: 0.25rem;
  }
}
.ui.alert.aligned-buttons {
  display: flex;
}
.ui.alert.aligned-buttons span {
  flex: 1;
}
.ui.alert a:not(.btn) {
  color: #056dff;
  font-weight: normal;
}
.ui.alert h3 {
  font-weight: bold;
  font-size: 1.2rem;
}
.ui.alert p {
  margin: 1rem 0;
}
.ui.alert.boxerror,
.ui.alert.boxconfirmation,
.ui.alert.boxinformation,
.ui.alert.boxwarning {
  padding: 0.5em;
  border-radius: 0;
}
.ui.alert.boxerror i.icon,
.ui.alert.boxconfirmation i.icon,
.ui.alert.boxinformation i.icon,
.ui.alert.boxwarning i.icon {
  font-size: 1.5em !important;
}
.ui.alert.boxerror {
  background-color: rgba(255, 85, 82, 0.2);
}
.ui.alert.boxinformation {
  background-color: rgba(5, 109, 255, 0.2);
}
.ui.alert.boxconfirmation {
  background-color: rgba(65, 184, 73, 0.2);
}
.ui.alert.boxwarning {
  background-color: rgba(255, 212, 82, 0.2);
}
.ui.alert + table {
  margin-top: 1em;
}
/* === Toast/notification redesign (shadcn-style card) ==================
 * Roundcube's display_message() injects <div class="<type> content"> into
 * #messagestack. We rewrite those nodes into shadcn/toast-style cards
 * with: rounded card bg, semantic-colored icon, title + subtitle, close.
 * The transformation runs in ui.js `pixie_toast_init` via a delegated
 * MutationObserver so newly appended toasts (success/error/loading/etc)
 * get the same treatment.
 *
 * Type → accent color (light + dark variants):
 *   notice     → blue   #056DFF
 *   confirmation/success → green  #16a34a
 *   warning    → amber  #f59e0b
 *   error/danger → red   #dc2626
 *   loading/uploading → muted gray  #737677
 */
#messagestack {
  position: fixed;
  bottom: 1rem;
  right: 1rem;
  z-index: 200;
  width: 360px;
  max-width: calc(100vw - 2rem);
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  pointer-events: none;
  font-size: 14px;
  line-height: 1.4;
}
@media screen and (max-width: 480px) {
  #messagestack {
    left: 1rem;
    right: 1rem;
    bottom: 1rem;
    width: auto;
    max-width: none;
  }
}

#messagestack > div,
#messagestack > div.alert-info,
#messagestack > div.alert-success,
#messagestack > div.alert-warning,
#messagestack > div.alert-danger {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 0.75rem 0.75rem 0.75rem 0.75rem;
  border-radius: 0;
  background-color: transparent;
  border: 0;
  border-bottom: 1px solid rgba(115, 118, 119, 0.18);
  color: #374151;
  box-shadow: none;
  pointer-events: auto;
  overflow: hidden;
  /* Roundcube inline-set min-height on mobile (was 4.2rem) — keep roomy */
  min-height: 56px;
  transition: transform 180ms ease, opacity 180ms ease;
  animation: pixie-toast-in 220ms cubic-bezier(0.2, 0.9, 0.3, 1) both;
}
#messagestack > div:last-child {
  border-bottom: 0;
}
#messagestack > div.voice {
  position: absolute !important;
  top: -1000px !important;
  left: -1000px !important;
  width: 1px !important;
  height: 1px !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Left vertical accent bar — semantic color per type */
#messagestack > div::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: transparent;
}

/* Icon container — bare SVG, color is the only signal */
#messagestack > div .pixie-toast-icon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  background: transparent;
  color: #737677;
}
#messagestack > div .pixie-toast-icon svg {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
}

/* Body block: title (semibold) + subtitle (muted) */
#messagestack > div .pixie-toast-body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
  padding-top: 1px;
}
#messagestack > div .pixie-toast-title {
  margin: 0;
  padding: 0;
  font-size: 14px;
  font-weight: 600;
  color: #111827;
  line-height: 1.3;
  letter-spacing: -0.005em;
}
#messagestack > div .pixie-toast-subtitle {
  margin: 0;
  padding: 0;
  font-size: 13px;
  font-weight: 400;
  color: #6b7280;
  line-height: 1.35;
}

/* Close button — X icon, top-right */
#messagestack > div .pixie-toast-close {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0;
  cursor: pointer;
  color: #9ca3af;
  border-radius: 6px;
  transition: background-color 120ms ease, color 120ms ease, transform 120ms ease;
  margin-top: -2px;
  margin-right: -2px;
}
#messagestack > div .pixie-toast-close:hover {
  background-color: rgba(115, 118, 119, 0.12);
  color: #4b5563;
}
#messagestack > div .pixie-toast-close:active {
  transform: scale(0.94);
}
#messagestack > div .pixie-toast-close svg {
  width: 14px;
  height: 14px;
}

/* Hidden legend / fallback for aria */
#messagestack > div .pixie-toast-sr {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
  padding: 0 !important;
  margin: -1px !important;
}

/* Type-specific color tokens (the rest of the card stays neutral) */
#messagestack > div.pixie-toast-success .pixie-toast-icon {
  color: #16a34a;
}
#messagestack > div.pixie-toast-success::before { background: #16a34a; }

#messagestack > div.pixie-toast-notice .pixie-toast-icon {
  color: #056DFF;
}
#messagestack > div.pixie-toast-notice::before { background: #056DFF; }

#messagestack > div.pixie-toast-warning .pixie-toast-icon {
  color: #d97706;
}
#messagestack > div.pixie-toast-warning::before { background: #f59e0b; }

#messagestack > div.pixie-toast-error .pixie-toast-icon {
  color: #dc2626;
}
#messagestack > div.pixie-toast-error::before { background: #dc2626; }

#messagestack > div.pixie-toast-loading .pixie-toast-icon {
  color: #4b5563;
}
#messagestack > div.pixie-toast-loading::before { background: #737677; }
#messagestack > div.pixie-toast-loading .pixie-toast-icon svg {
  animation: pixie-toast-spin 0.9s linear infinite;
}

#messagestack > div.pixie-toast-uploading .pixie-toast-icon {
  color: #4b5563;
}
#messagestack > div.pixie-toast-uploading::before { background: #737677; }

/* Inline links inside body — subtle underline, semantic tint */
#messagestack > div a {
  color: #056DFF;
  text-decoration: underline;
  cursor: pointer;
}

@keyframes pixie-toast-in {
  from { transform: translateY(8px); opacity: 0; }
  to   { transform: translateY(0);   opacity: 1; }
}
@keyframes pixie-toast-spin {
  to { transform: rotate(360deg); }
}

/* === Dark mode === */
html.dark-mode #messagestack > div,
html.dark-mode #messagestack > div.alert-info,
html.dark-mode #messagestack > div.alert-success,
html.dark-mode #messagestack > div.alert-warning,
html.dark-mode #messagestack > div.alert-danger {
  background-color: transparent;
  border-bottom-color: rgba(255, 255, 255, 0.08);
  color: #d1d5db;
  box-shadow: none;
}
html.dark-mode #messagestack > div.loading,
html.dark-mode #messagestack > div.uploading {
  background-color: transparent;
}
html.dark-mode #messagestack > div .pixie-toast-title {
  color: rgba(255, 255, 255, 0.96);
}
html.dark-mode #messagestack > div .pixie-toast-subtitle {
  color: #9ca3af;
}
html.dark-mode #messagestack > div .pixie-toast-close {
  color: #6b7280;
}
html.dark-mode #messagestack > div .pixie-toast-close:hover {
  background-color: rgba(255, 255, 255, 0.08);
  color: #e5e7eb;
}
html.dark-mode #messagestack > div.pixie-toast-success .pixie-toast-icon {
  color: #22c55e;
}
html.dark-mode #messagestack > div.pixie-toast-success::before { background: #22c55e; }
html.dark-mode #messagestack > div.pixie-toast-notice .pixie-toast-icon {
  color: #60a5fa;
}
html.dark-mode #messagestack > div.pixie-toast-notice::before { background: #60a5fa; }
html.dark-mode #messagestack > div.pixie-toast-warning .pixie-toast-icon {
  color: #fbbf24;
}
html.dark-mode #messagestack > div.pixie-toast-warning::before { background: #fbbf24; }
html.dark-mode #messagestack > div.pixie-toast-error .pixie-toast-icon {
  color: #f87171;
}
html.dark-mode #messagestack > div.pixie-toast-error::before { background: #ef4444; }
html.dark-mode #messagestack > div.pixie-toast-loading .pixie-toast-icon {
  color: #d1d5db;
}
html.dark-mode #messagestack > div.pixie-toast-loading::before { background: #737677; }
html.dark-mode #messagestack > div.pixie-toast-uploading .pixie-toast-icon {
  color: #d1d5db;
}
html.dark-mode #messagestack > div.pixie-toast-uploading::before { background: #737677; }
html.dark-mode #messagestack > div a {
  color: #60a5fa;
}

/* Mobile: tighter card on narrow screens */
@media screen and (max-width: 480px) {
  #messagestack > div {
    border-radius: 0;
    padding: 0.625rem;
    gap: 0.5rem;
  }
  #messagestack > div .pixie-toast-icon {
    width: 18px;
    height: 18px;
    border-radius: 0;
  }
  #messagestack > div .pixie-toast-icon svg {
    width: 18px;
    height: 18px;
  }
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** List and treelist widgets ***/
.listing tbody td,
.listing li {
  border: none;
  cursor: default;
  font-weight: normal;
  line-height: 35px;
}
.listing tbody td,
.listing li a {
  padding: 0 0.5rem;
  white-space: nowrap;
  vertical-align: middle;
  color: #2c363a;
}
.listing tbody td {
  overflow: hidden;
  text-overflow: ellipsis;
  outline: none;
}
.listing tbody td a {
  color: #2c363a;
}
.listing li a {
  display: block;
  text-decoration: none;
  cursor: default;
  width: 100%;
}
.listing li.selected,
.listing tr.selected td {
  color: #2c363a;
  background-color: transparent;
}
.listing td.selection {
  padding: 0 0 0 0.5em;
  width: 2em;
  text-align: center;
}
.listing td.selection > input {
  vertical-align: middle;
}
.listing:not(.withselection) td.selection {
  display: none;
}
.listing td.name {
  overflow: hidden;
  text-overflow: ellipsis;
}
.listing td.action {
  padding: 0 0.5em;
  width: 2em;
  text-align: center;
}
.listing td.action:empty {
  width: 0;
}
.listing td.action a {
  display: block;
  overflow: hidden;
  text-decoration: none;
}
.listing td.action a:before {
  margin: 0;
  font-size: 1rem;
}
.listing td.action a.pushgroup:before {
  content: "\f054";
}
.listing li.droptarget > a,
.listing tr.droptarget > td {
  background-color: #ffffcc;
}
.listing li.disabled,
.listing tr.disabled td {
  color: rgba(44, 54, 58, 0.5);
}
.listing li > a.virtual,
.listing li.virtual > a {
  opacity: 0.4;
}
.listing span.secondary {
  color: #737677;
}
html:not(.touch) .listing li > a,
html:not(.touch) .listing tbody tr > td:first-child,
html:not(.touch) .listing:not(.withselection) tbody tr > td.selection + td {
  border-left: 0;
}
html:not(.touch) .listing li > a:focus,
html:not(.touch) .listing.focus tbody tr.focused > td:first-child,
html:not(.touch)
  .listing.focus:not(.withselection)
  tbody
  tr.focused
  > td.selection
  + td {
  border-left: none;
  outline: 0;
}
table.listing {
  width: 100%;
  table-layout: fixed;
  border-spacing: 0;
  border-collapse: unset;
}
ul.listing {
  margin: 0;
  padding: 0;
}
ul.listing > ul {
  padding: 0;
}
ul.listing li {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  position: relative;
  list-style: none;
}
ul.listing li ul {
  border-top: 1px solid #f1f3f4;
  padding-left: 1.5em;
}
ul.listing li ul li:last-child {
  border-bottom: none;
}
ul.listing li .custom-switch {
  position: absolute;
  padding: 0;
  top: 50%;
  right: 0.75rem;
  transform: translateY(-50%);
  height: 35px;
  vertical-align: middle;
}
ul.listing li .custom-switch .custom-control-label:before,
ul.listing li .custom-switch .custom-control-label:after {
  margin-top: 0.4rem;
}
html.touch ul.listing li .custom-switch .custom-control-label:before,
html.touch ul.listing li .custom-switch .custom-control-label:after {
  margin-top: 0.75rem;
}
html.touch ul.listing li .custom-switch {
  height: 47px;
}
ul.listing.simplelist li {
  padding: 0 0.5rem;
}
.listing-info {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 80%;
  text-align: center;
  font-weight: bold;
  color: #737677;
}
.listing-hover-menu {
  position: absolute;
  right: 5px;
  top: -1000px;
  height: 2em;
  background-color: white;
  border: 1px solid #ddd;
  padding: 0 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
  border-radius: 9999px;
  display: flex;
  align-items: center;
}
.listing-hover-menu a.button {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.85em;
  height: 1.85em;
  line-height: 1;
  margin: 0 0.15em;
  border-radius: 9999px;
  color: #2c363a;
  transition:
    background-color 120ms ease,
    color 120ms ease;
}
.listing-hover-menu a.button:hover {
  background-color: rgba(0, 0, 0, 0.05);
}
.listing-hover-menu a.button.has-heroicon::before {
  content: none;
}
.listing-hover-menu a.button svg {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
}
.listing-hover-menu a.icon-flag {
  color: #e0245e;
}
.listing-hover-menu a.icon-flag:hover {
  background-color: rgba(224, 36, 94, 0.1);
}
.listing-hover-menu a.icon-trash {
  color: #ff5552;
}
.listing-hover-menu a.icon-trash:hover {
  background-color: rgba(255, 85, 82, 0.12);
}
.listing-hover-menu span.txt {
  font-size: 90%;
  color: #737677;
  display: inline-block;
  vertical-align: middle;
  margin-right: 0.4rem;
}
html.touch .listing:not(.toolbar) li,
html.touch .listing tbody td {
  line-height: 47px;
  font-size: 1.2rem;
}
html.touch li input[type="checkbox"] {
  height: 47px;
}
html.touch td.selection {
  padding: 0;
  width: 3em;
}
@media screen and (max-width: 1200px) {
  .listing.selection-large-only li.selected {
    color: #2c363a;
    background-color: transparent;
  }
}
/* icons */
.listing.iconized li a:before {
  height: 2em;
  margin-right: 0.5rem;
}
.listing.iconized li.preferences > a:before {
  content: "\f1de";
}
.listing.iconized li.folders > a:before {
  content: "\f07b";
}
.listing.iconized li.responses > a:before {
  content: "\f075";
}
.listing.iconized li.identities > a:before {
  content: "\f2c2";
}
.listing.iconized li.password > a:before {
  content: "\f023";
}
.listing.iconized li.addressbook a:before {
  content: "\f2b9";
  font-weight: 400;
}
.listing.iconized li.contactgroup a:before {
  content: "\f0c0";
  font-weight: 900;
}
.listing.iconized li.contactsearch a:before {
  content: "\f002";
}
.listing.iconized li.filter > a:before {
  content: "\f0b0";
}
.listing.iconized li.vacation > a:before {
  content: "\f017";
  font-weight: 400;
}
.listing.iconized li.forward > a:before {
  content: "\f14d";
}
.listing.iconized li.enigma.keys > a:before {
  content: "\f084";
}
.listing.iconized li.info > a:before,
.listing.iconized li.userinfo > a:before {
  content: "\f05a";
}
.listing.iconized li.twofactorauth > a:before {
  content: "\f2f6";
}
.listing.iconized li a.help:before {
  content: "\f1cd";
}
.listing.iconized li a.about:before {
  content: "\f059";
  font-weight: 400;
}
.listing.iconized li a.license:before {
  content: "\f3ed";
}
.listing.iconized li > i:before {
  content: "\f007";
  margin-left: 0.5rem;
  line-height: normal;
}
.listing.iconized li.group > i:before {
  content: "\f0c0";
}
#rcmKSearchpane > ul > li {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  padding: 0.5em 0;
}
#rcmKSearchpane > ul > li > span.fields {
  display: flex;
  flex-flow: row wrap;
  width: auto;
  overflow: hidden;
  margin: 0 0.25em;
}
#rcmKSearchpane > ul > li > span.fields > span.field {
  flex: 0 0 100%;
  font-size: 1rem;
  line-height: normal;
  overflow: hidden;
  text-overflow: ellipsis;
}
html.ie11 .listing.iconized li a:before {
  font-size: 1.25rem;
}
.listing.iconized tr td:before {
  margin-right: 0.5rem;
}
.listing.iconized tr.contact.person td.name:before {
  content: "\f007";
}
.listing.iconized tr.contact.group td.name:before {
  content: "\f0c0";
}
.listing.iconized tr.general > td.section:before {
  content: "\f108";
}
.listing.iconized tr.mailbox > td.section:before {
  content: "\f0e0";
  font-weight: 400;
}
.listing.iconized tr.mailview > td.section:before {
  content: "\f01c";
}
.listing.iconized tr.compose > td.section:before {
  content: "\f1d8";
}
.listing.iconized tr.addressbook > td.section:before {
  content: "\f0c0";
}
.listing.iconized tr.folders > td.section:before {
  content: "\f07b";
  font-weight: 400;
}
.listing.iconized tr.server > td.section:before {
  content: "\f233";
}
.listing.iconized tr.encryption > td.section:before {
  content: "\f023";
}
.listing.iconized tr.calendar > td.section:before {
  content: "\f133";
}
.listing.iconized tr.chat > td.section:before {
  content: "\f086";
}
/* selectable list: e.g. spellcheck language selection */
.listing.iconized.selectable li a:before {
  content: "";
}
.listing.iconized.selectable li a.selected:before {
  content: "\f00c";
}
.popupmenu .listing li > a {
  border-left: 0;
}
.popupmenu .listing li > a:not(.disabled):hover {
  color: #fff;
  background-color: #056dff;
}
.popupmenu .listing li.selected {
  color: #fff;
  background-color: #056dff;
}
.popupmenu .listing td {
  overflow: hidden;
  text-overflow: ellipsis;
}
ul.treelist li div.treetoggle {
  position: absolute;
  top: 0;
  left: 0;
  width: 1.5em;
  cursor: pointer;
  background-color: transparent;
}
ul.treelist li div.treetoggle:before {
  content: "\f105";
  margin-left: 0.25em;
  font-size: 1em;
}
ul.treelist li div.treetoggle.expanded:before {
  content: "\f107";
}
ul.treelist li > a {
  overflow: hidden;
  text-overflow: ellipsis;
  padding-left: 1.5em;
}
ul.treelist li.selected {
  color: inherit;
  background-color: transparent;
}
ul.treelist li.selected > div > a,
ul.treelist li.selected > a {
  color: #2c363a;
  background-color: #e6f0ff;
}
ul.treelist li ul {
  padding: 0;
}
ul.treelist li ul li {
  padding-left: 0;
}
ul.treelist li ul li a {
  padding-left: 3em;
}
ul.treelist li ul li div.treetoggle {
  left: 1.5em;
}
ul.treelist li ul li li a {
  padding-left: 4.5em;
}
ul.treelist li ul li li div.treetoggle {
  left: 3em;
}
ul.treelist li ul li li li a {
  padding-left: 6em;
}
ul.treelist li ul li li li div.treetoggle {
  left: 4.5em;
}
ul.treelist li ul li li li li a {
  padding-left: 7.5em;
}
ul.treelist li ul li li li li div.treetoggle {
  left: 6em;
}
ul.treelist li ul li li li li li a {
  padding-left: 9em;
}
ul.treelist li ul li li li li li div.treetoggle {
  left: 7.5em;
}
ul.treelist.notree div.treetoggle {
  display: none;
}
ul.treelist.notree li > a {
  padding-left: 1.5rem;
}
/*** Header username (mail sidebar) ***/
.header-title.username::first-letter {
  text-transform: uppercase !important;
}
/*** Folder list — TOP-LEVEL (NOT inside `.folderlist { ... }`) ***/
.folderlist li > a:before,
#subscription-table.folderlist li.mailbox > a:before,
#subscription-table li.mailbox > a:before {
  content: none;
  display: none;
}
#subscription-table li.mailbox > a .heroicon-host,
.folderlist li > a .heroicon-host {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto !important;
  width: 18px !important;
  height: 18px !important;
  margin: 0 0.25rem 0 0;
  color: currentColor;
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: normal !important;
  min-width: 0 !important;
  font-weight: 400 !important;
}
#subscription-table li.mailbox > a .heroicon-host svg,
.folderlist li > a .heroicon-host svg {
  width: 18px !important;
  height: 18px !important;
  fill: currentColor !important;
  display: block;
}
/*** Folders list widget ***/
.folderlist li {
  position: relative;
  padding: 4px 8px;
  margin: 0;
}
.folderlist li.mailbox.unread > a {
  padding-right: 2.8em;
  font-weight: bold;
}
.folderlist li.mailbox .unreadcount {
  position: absolute;
  top: 50%;
  right: 0.5rem;
  transform: translateY(-50%);
  min-width: 1.5rem;
  max-width: 4rem;
  height: 1.5rem;
  padding: 0 0.55rem;
  border-radius: 6px;
  box-sizing: border-box;
  background: #056dff;
  color: #fff;
  font-weight: 600;
  font-size: 0.7rem;
  display: grid;
  place-items: center center;
  line-height: 1;
  letter-spacing: 0;
  text-indent: 0;
  font-feature-settings: "tnum" 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-right: 0.75rem;
}
.folderlist li.mailbox.recent > a {
  color: #00429e;
}
.folderlist li.mailbox.recent > a > .unreadcount {
  background: #056dff;
  color: #fff;
}
.folderlist li.mailbox.root {
  display: none !important;
}
.folderlist li > a {
  display: flex !important;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  height: 3.25rem;
  padding: 0;
  line-height: 1.25;
  min-width: 0;
  text-decoration: none;
  color: var(--pixie-folder-row-fg, hsl(var(--muted-foreground, 240 3.8% 46.1%)));
  background-color: var(--pixie-folder-row-bg, transparent);
  border: 0;
  border-radius: 0;
  transition:
    color 0.15s ease,
    background-color 0.15s ease,
    box-shadow 0.15s ease;
  font-weight: 700;
}
.folderlist li > a:before {
  font-family: "Material Symbols Outlined";
  font-weight: 400;
  font-style: normal;
  line-height: 1;
  font-variation-settings:
    "FILL" 0,
    "wght" 400,
    "GRAD" 0,
    "opsz" 24;
  -webkit-font-feature-settings: "liga";
  -webkit-font-smoothing: antialiased;
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  font-size: 18px;
  line-height: 18px;
  color: inherit;
  margin: 0 0.25rem 0 0;
  text-align: center;
}
.folderlist li > a.has-heroicon:before {
  content: none !important;
}
.folderlist li > a > .heroicon {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  color: inherit;
  margin: 0 0.25rem 0 0;
}
.folderlist li > a > span,
.folderlist li > a > .label {
  padding-left: 10px;
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 500;
}
.folderlist li > a:hover,
.folderlist li > a:focus,
.folderlist li > a:focus-visible,
.folderlist li > a:focus-within,
.folderlist li > a:active {
  color: #090A0B;
  background-color: rgba(0, 0, 0, 0.06);
  border-radius: 0.375rem;
  box-shadow: 0 0 0 1px transparent;
  padding: 0 0.75rem;
  outline: 0;
}
html.dark-mode .folderlist li > a:hover,
html.dark-mode .folderlist li > a:focus,
html.dark-mode .folderlist li > a:focus-visible,
html.dark-mode .folderlist li > a:focus-within,
html.dark-mode .folderlist li > a:active {
  color: #f4f4f5;
  background-color: #36393d;
  border-radius: 0.375rem;
  box-shadow: 0 0 0 1px #36393d;
  padding: 0 0.75rem;
  outline: 0;
}
.folderlist li > a.selected,
.folderlist li > a.selected:hover,
.folderlist li > a.selected:focus,
.folderlist li > a.selected:focus-visible,
.folderlist li > a.selected:focus-within,
.folderlist li > a.selected:active {
  color: #090A0B;
  background-color: rgba(0, 0, 0, 0.06);
  border-radius: 0.375rem;
  box-shadow: 0 0 0 1px transparent;
  padding: 0 0.75rem;
}
.folderlist li.selected > a,
.folderlist li.selected > a:hover,
.folderlist li.selected > a:focus,
.folderlist li.selected > a:focus-visible,
.folderlist li.selected > a:focus-within,
.folderlist li.selected > a:active {
  color: #090A0B;
  background-color: rgba(0, 0, 0, 0.06);
  border-radius: 0.375rem;
  box-shadow: 0 0 0 1px transparent;
  padding: 0 0.75rem;
}
.folderlist li.inbox > a:before {
  content: "inbox";
}
.folderlist li.drafts > a:before {
  content: "edit";
}
.folderlist li.sent > a:before {
  content: "send";
}
.folderlist li.junk > a:before {
  content: "report";
}
.folderlist li.trash > a:before {
  content: "delete";
}
.folderlist li.archive > a:before {
  content: "inventory_2";
}
.folderlist li.ns-shared > a:before {
  content: "share";
}
.folderlist li.ns-other > a:before {
  content: "group";
}
.folderlist .folderlist li > a:before,
.folderlist #subscription-table.folderlist li.mailbox > a:before,
.folderlist #subscription-table li.mailbox > a:before {
  content: none;
  display: none;
}
.folderlist.menu a:before {
  margin-left: 0.5em;
}
.folderlist .header .header-title.username {
  color: #737677;
}
.folderlist .header .header-title.username:before {
  content: "\f007";
  margin-right: 0.5rem;
}
.folderlist ul.folderlist > li.mailbox > a {
  border: 0 !important;
  border-left-width: 0 !important;
  padding-left: 0 !important;
  background-color: transparent !important;
}
/* Folder rows: selected/hover keep a neutral pill treatment in BOTH
 * themes — they must NEVER inherit the orange/blue UI accent.  Light
 * mode: dark text on soft gray pill. Dark mode: light text on dark gray
 * pill (Spam-row pattern). */
.folderlist li.mailbox.selected > a {
  color: #090A0B !important;
  background-color: rgba(0, 0, 0, 0.06) !important;
  border-radius: 0.375rem !important;
  box-shadow: 0 0 0 1px transparent !important;
  padding: 0 0.75rem !important;
}
html.dark-mode .folderlist li.mailbox.selected > a {
  color: #f4f4f5 !important;
  background-color: #36393d !important;
  border-radius: 0.375rem !important;
  box-shadow: 0 0 0 1px #36393d !important;
  padding: 0 0.75rem !important;
}
/*** Heroicons Solid folder navigation ***/
body.task-mail #mailboxlist li.mailbox > a.pixie-icon-control::before,
body.task-mail #mailboxlist div.treetoggle.pixie-icon-control::before,
body.task-mail #layout-list .back-sidebar-button.folders.pixie-icon-control::before,
body.task-mail #layout-sidebar .back-list-button.pixie-icon-control::before {
  content: none !important;
  display: none !important;
}
body.task-mail #mailboxlist li.mailbox > a > .pixie-icon-folder {
  width: 19px;
  height: 19px;
  flex: 0 0 auto;
  margin: 0 0.25rem 0 0;
  color: currentColor;
}
body.task-mail #mailboxlist div.treetoggle.pixie-icon-control {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 3.25rem;
  color: currentColor;
}
body.task-mail #mailboxlist div.treetoggle > .pixie-icon-compact {
  width: 16px;
  height: 16px;
  margin: 0;
}
body.task-mail #layout-list .header .back-sidebar-button.folders > .pixie-icon-folder {
  width: 19px;
  height: 19px;
  margin: 0;
}
body.task-mail #layout-list .header .back-sidebar-button.folders,
body.task-mail #layout-sidebar .header .back-list-button {
  width: 30px;
  min-width: 30px;
  height: 30px;
  align-items: center;
  justify-content: center;
}
body.task-mail #layout-sidebar .header .back-list-button > .pixie-icon-compact {
  width: 16px;
  height: 16px;
  margin: 0;
}
/*** #messagelist-header toolbar icons (Heroicons Solid) ***/
#layout-list .header ul.menu.toolbar {
  align-self: center;
  display: flex;
  align-items: center;
  gap: 0;
}
#layout-list .header ul.menu.toolbar li {
  display: inline-flex;
  align-items: center;
}
#layout-list .header a.select.pixie-icon-control,
#layout-list .header a.threads.pixie-icon-control,
#layout-list .header a.options.pixie-icon-control,
#layout-list .header a.toolbar-button.refresh.pixie-icon-control {
  overflow: hidden;
  text-indent: -9999em;
  width: 2em;
  height: 2em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0 0.15rem;
  float: none;
}
#layout-list .header a.select.pixie-icon-control:before,
#layout-list .header a.threads.pixie-icon-control:before,
#layout-list .header a.options.pixie-icon-control:before,
#layout-list .header a.toolbar-button.refresh.pixie-icon-control:before {
  content: none !important;
}
#layout-list .header a.pixie-icon-control > .pixie-icon-list {
  display: inline-block;
  width: 1.4em;
  height: 1.4em;
  flex: 0 0 auto;
  color: inherit;
  fill: currentColor;
}
#layout-list .header a.toolbar-button.refresh.pixie-icon-control {
  align-self: center;
}
/*** Sidebar groups (addressbook sources + saved searches + settings) ***/
#layout-sidebar ul.treelist.listing.iconized li,
#layout-sidebar #settings-menu.listing.iconized li {
  position: relative;
  padding: 4px 8px;
  margin: 0;
}
#layout-sidebar ul.treelist.listing.iconized li > a,
#layout-sidebar #settings-menu.listing.iconized li > a {
  display: flex !important;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  height: 3.25rem;
  padding: 0;
  line-height: 1.25;
  min-width: 0;
  text-decoration: none;
  color: hsl(var(--muted-foreground, 240 3.8% 46.1%));
  background-color: transparent;
  border: 0;
  border-radius: 0;
  font-weight: 500;
  transition:
    color 0.15s ease,
    background-color 0.15s ease,
    box-shadow 0.15s ease;
  padding-left: 0.75rem !important;
}
#layout-sidebar ul.treelist.listing.iconized li > a,
#layout-sidebar #settings-menu.listing.iconized li > a {
  border: 0 !important;
  border-left-width: 0 !important;
  background-color: transparent !important;
}
#layout-sidebar ul.treelist.listing.iconized li > a:hover,
#layout-sidebar #settings-menu.listing.iconized li > a:hover,
#layout-sidebar ul.treelist.listing.iconized li > a:focus,
#layout-sidebar #settings-menu.listing.iconized li > a:focus,
#layout-sidebar ul.treelist.listing.iconized li > a:focus-visible,
#layout-sidebar #settings-menu.listing.iconized li > a:focus-visible,
#layout-sidebar ul.treelist.listing.iconized li > a:focus-within,
#layout-sidebar #settings-menu.listing.iconized li > a:focus-within,
#layout-sidebar ul.treelist.listing.iconized li > a:active,
#layout-sidebar #settings-menu.listing.iconized li > a:active,
#layout-sidebar ul.treelist.listing.iconized li.selected > a,
#layout-sidebar #settings-menu.listing.iconized li.selected > a,
#layout-sidebar ul.treelist.listing.iconized li.selected > a:hover,
#layout-sidebar #settings-menu.listing.iconized li.selected > a:hover,
#layout-sidebar ul.treelist.listing.iconized li.selected > a:focus,
#layout-sidebar #settings-menu.listing.iconized li.selected > a:focus,
#layout-sidebar ul.treelist.listing.iconized li.selected > a:focus-visible,
#layout-sidebar #settings-menu.listing.iconized li.selected > a:focus-visible,
#layout-sidebar ul.treelist.listing.iconized li.selected > a:focus-within,
#layout-sidebar #settings-menu.listing.iconized li.selected > a:focus-within,
#layout-sidebar ul.treelist.listing.iconized li.selected > a:active,
#layout-sidebar #settings-menu.listing.iconized li.selected > a:active {
  color: hsl(var(--accent-foreground, 0 0% 98%)) !important;
  background-color: hsl(var(--accent, 240 3.7% 15.9%)) !important;
  border-radius: 6px !important;
  box-shadow: 0 0 0 1px hsl(var(--accent, 240 3.7% 15.9%)) !important;
  padding: 0 0.75rem !important;
  outline: 0;
}
#layout-sidebar ul.treelist.listing.iconized li.selected > a,
#layout-sidebar #settings-menu.listing.iconized li.selected > a {
  color: hsl(var(--accent-foreground, 0 0% 98%)) !important;
  background-color: hsl(var(--accent, 240 3.7% 15.9%)) !important;
  border-radius: 6px !important;
  box-shadow: 0 0 0 1px hsl(var(--accent, 240 3.7% 15.9%)) !important;
  padding: 0 0.75rem !important;
}
#layout-sidebar ul.treelist.listing.iconized li > a:before,
#layout-sidebar #settings-menu.listing.iconized li > a:before {
  width: 18px;
  height: 18px;
  font-size: 18px;
  line-height: 18px;
  flex: 0 0 auto;
  margin: 0 0.25rem 0 0;
  text-align: center;
}
html.dark-mode #layout-sidebar ul.treelist.listing.iconized li.selected > a,
html.dark-mode #layout-sidebar #settings-menu.listing.iconized li.selected > a,
html.dark-mode #layout-sidebar ul.treelist.listing.iconized li > a:hover,
html.dark-mode #layout-sidebar #settings-menu.listing.iconized li > a:hover,
html.dark-mode #layout-sidebar ul.treelist.listing.iconized li > a:focus,
html.dark-mode #layout-sidebar #settings-menu.listing.iconized li > a:focus {
  color: hsl(var(--accent-foreground, 0 0% 98%)) !important;
  background-color: hsl(var(--accent, 240 3.7% 15.9%)) !important;
  border-radius: 6px !important;
  box-shadow: 0 0 0 1px hsl(var(--accent, 240 3.7% 15.9%)) !important;
  padding: 0 0.75rem !important;
}
/*** Preferences sections list (3rd sidebar) ***/
#layout-list #sections-table.listing.iconized {
  border-collapse: separate;
  border-spacing: 0;
  width: 100%;
  table-layout: fixed;
}
#layout-list #sections-table.listing.iconized tbody tr {
  display: table-row;
}
#layout-list #sections-table.listing.iconized tbody td.section {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  height: calc(3.25rem + 16px);
  padding: 4px 0.75rem 4px calc(8px + 0.3rem);
  margin: 4px 8px;
  box-sizing: border-box;
  line-height: 1.25;
  font-weight: 500;
  font-size: 14px;
  color: hsl(var(--muted-foreground, 240 3.8% 46.1%));
  background-color: #ffffff;
  border: 0;
  border-radius: 6px;
  cursor: default;
  transition:
    color 0.15s ease,
    background-color 0.15s ease,
    box-shadow 0.15s ease;
}
#layout-list #sections-table.listing.iconized tbody td.section:before {
  content: none;
  display: none;
}
#layout-list #sections-table.listing.iconized .heroicon-host {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  margin: 0 0.25rem 0 0;
  color: currentColor;
}
#layout-list #sections-table.listing.iconized .heroicon-host svg {
  width: 18px;
  height: 18px;
  fill: currentColor;
  display: block;
}
#layout-list #sections-table.listing.iconized tbody tr:hover td.section,
#layout-list #sections-table.listing.iconized tbody tr.focused td.section,
#layout-list #sections-table.listing.iconized tbody tr.selected td.section,
#layout-list #sections-table.listing.iconized tbody td.section:focus,
#layout-list #sections-table.listing.iconized tbody td.section:focus-visible {
  color: #000;
  background-color: hsl(var(--accent, 240 3.7% 15.9%)) !important;
  border-radius: 6px !important;
  outline: 0;
}
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  tr:hover
  td.section,
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  tr.focused
  td.section,
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  tr.selected
  td.section,
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  td.section:focus,
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  td.section:focus-visible {
  color: hsl(var(--accent-foreground, 0 0% 98%)) !important;
  background-color: hsl(var(--accent, 240 3.7% 15.9%)) !important;
  border-radius: 6px !important;
}
/*** Messages list widget ***/
.messagelist > thead,
.messagelist .branch,
table.fixedcopy {
  display: none;
}
.messagelist tbody tr td {
  border-bottom: 1px solid #f1f3f4;
}
.messagelist tbody tr:hover td {
  background-color: #f7f7f7;
}
.messagelist tbody tr.selected td {
  background-color: #f7f7f7;
}
.messagelist td {
  border-left: 0;
  width: 2em;
  vertical-align: top;
  font-size: 1rem !important;
}
.messagelist td.subject {
  width: 100%;
  padding-right: 0;
  display: flex;
  flex-wrap: wrap;
}
.messagelist td.subject a {
  text-decoration: none;
  cursor: default;
}
.messagelist td.subject span {
  line-height: 2em;
}
.messagelist td.subject span.size,
.messagelist td.subject span.date {
  font-size: 90%;
  color: #b2b2b2;
}
.messagelist td.subject span.fromto {
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  font-size: 90%;
  color: #b2b2b2;
  padding-left: 1.5em;
  padding-right: 0.5rem;
}
.messagelist td.subject span.subject {
  overflow: hidden;
  text-overflow: ellipsis;
  width: 100%;
  user-select: none;
}
.messagelist td.threads {
  padding: 0 0 0 0.25rem;
  width: 1.5em;
}
.messagelist td.flags {
  width: 2.5em;
}
.messagelist td.flags > span {
  height: 1.7em;
  line-height: 1.7em;
  display: block;
}
.messagelist td.flags > span.flag {
  cursor: pointer;
}
.messagelist tr.flagged td,
.messagelist tr.flagged span.size,
.messagelist tr.flagged td.subject span.subject a,
.messagelist tr.flagged td.subject span.date,
.messagelist tr.flagged td.subject span.fromto {
  color: #ff5552;
}
.messagelist tr.deleted td,
.messagelist tr.deleted td.subject span.subject a,
.messagelist tr.deleted td.subject span.date,
.messagelist tr.deleted td.subject span.fromto {
  color: rgba(44, 54, 58, 0.5);
}
.messagelist td.subject span.subject {
  font-weight: 600;
  color: #b2b2b2;
}
.messagelist tr.unread td.subject span.subject {
  font-weight: 600;
  color: #090A0B;
}
.messagelist tr.unread td.subject span.msgicon.status.unread:before {
  color: #056dff;
}
.messagelist tr.unroot td.subject a {
  text-decoration: underline;
}
.messagelist tr.thread td.threads div:before {
  content: "\f105";
  cursor: pointer;
  width: 1em;
}
.messagelist tr.thread.expanded td.threads div:before {
  content: "\f107";
}
.messagelist td.subject span.msgicon.status:before {
  content: "\f111";
  cursor: pointer;
  font-size: 0.4rem;
  width: 1.1rem;
  height: 2rem;
}
.messagelist td.subject span.msgicon.status.unread:before {
  content: "\f111";
  font-size: 0.55rem;
}
.messagelist td.subject span.msgicon.status.unreadchildren:before {
  content: "\f111";
  font-weight: 400;
  font-size: 0.5rem;
}
.messagelist td.subject span.msgicon.status.replied:before {
  content: "\f3e5";
  font-weight: 900;
  font-size: 1rem;
}
.messagelist td.subject span.msgicon.status.forwarded:before {
  content: "\f064";
  font-weight: 900;
  font-size: 1rem;
}
.messagelist td.subject span.msgicon.status.replied.forwarded:before {
  content: "\f3e5";
  font-weight: 900;
  font-size: 1rem;
}
.messagelist td.subject span.msgicon.status.replied.forwarded:after {
  content: "\f064";
  font-weight: 900;
  font-size: 1rem;
  opacity: 0.5;
  margin: 0 -0.1em 0 -1.25em;
}
.messagelist span.attachment span {
  color: rgba(115, 118, 119, 0.75);
}
.messagelist span.attachment span:before {
  margin: 0;
  content: "\f0c6";
}
.messagelist span.attachment span.report:before {
  content: "\f15c";
  font-weight: 400;
}
.messagelist span.attachment span.encrypted:before {
  content: "\f023";
}
.messagelist span.attachment span.vcard:before {
  content: "\f007";
  font-weight: 400;
}
.messagelist span.flagged:before {
  content: "\f024";
}
.messagelist tr.flaggedroot:not(:hover) span.unflagged:before {
  content: "\f024";
  color: rgba(115, 118, 119, 0.75);
}
.messagelist span.size {
  display: none;
}
.messagelist.sort-size span.date {
  display: none;
}
.messagelist.sort-size span.size {
  display: inline;
}
html.layout-phone .messagelist tr,
html.touch .messagelist tr {
  position: relative;
  display: flex;
}
html.layout-phone .messagelist td.selection,
html.touch .messagelist td.selection,
html.layout-phone .messagelist td.threads,
html.touch .messagelist td.threads {
  line-height: 3.8em;
}
html.layout-phone .messagelist td.flags,
html.touch .messagelist td.flags {
  position: absolute;
  top: 0.25rem;
  right: 0;
  bottom: 0;
  background-color: transparent;
}
html.layout-phone .messagelist td.flags .flag,
html.touch .messagelist td.flags .flag {
  visibility: hidden;
}
html.layout-phone .messagelist td.subject,
html.touch .messagelist td.subject {
  padding-right: 0.5em;
}
html.layout-phone .messagelist td.subject .subject,
html.touch .messagelist td.subject .subject {
  padding-right: 1.5rem;
}
/* Contacts list */
.contactlist .contact.readonly td {
  font-style: italic;
}
.contactlist td.contact:before {
  content: "\f007";
}
.contactlist td.contactgroup:before {
  content: "\f0c0";
}
.contactlist span.email {
  display: inline;
  color: #737677;
  font-style: italic;
  margin-left: 0.5em;
}
.contactlist li a:before {
  margin-right: 0.5rem;
}
.contactlist li a.addressbook::before {
  content: "\f2b9";
  font-weight: 400;
}
.contactlist li a.contactgroup::before {
  content: "\f0c0";
  font-weight: 900;
}
/* Attachments list */
.attachmentslist {
  padding: 0;
  margin: 0;
  background-color: #fcfcfc;
  border: 1px solid #f4f4f4;
}
.attachmentslist:empty {
  padding: 0;
  border: 0;
}
.attachmentslist li {
  list-style: none;
  display: inline-flex;
  white-space: nowrap;
  line-height: 2rem;
  padding: 0 0.25em;
  max-width: 100%;
}
.attachmentslist li:before {
  content: "\f15b";
  font-weight: 400;
  height: 2rem;
  margin: 0;
}
.attachmentslist li.txt:before,
.attachmentslist li.text:before {
  content: "\f15c";
  font-weight: 400;
}
.attachmentslist li.pdf:before {
  content: "\f1c1";
  font-weight: 400;
}
.attachmentslist li.odt:before,
.attachmentslist li.doc:before,
.attachmentslist li.docx:before,
.attachmentslist li.msword:before {
  content: "\f1c2";
  font-weight: 400;
}
.attachmentslist li.ods:before,
.attachmentslist li.xls:before,
.attachmentslist li.xlsx:before,
.attachmentslist li.msexcel:before {
  content: "\f1c3";
  font-weight: 400;
}
.attachmentslist li.rar:before,
.attachmentslist li.zip:before,
.attachmentslist li.gz:before {
  content: "\f1c6";
  font-weight: 400;
}
.attachmentslist li.image:before,
.attachmentslist li.jpg:before,
.attachmentslist li.jpeg:before,
.attachmentslist li.png:before {
  content: "\f1c5";
  font-weight: 400;
}
.attachmentslist li.mp3:before,
.attachmentslist li.audio:before {
  content: "\f1c7";
  font-weight: 400;
}
.attachmentslist li.m4p:before,
.attachmentslist li.video:before {
  content: "\f1c8";
  font-weight: 400;
}
.attachmentslist li.vcard:before {
  content: "\f2bb";
  font-weight: 400;
}
.attachmentslist li.html:before {
  content: "\f1c9";
  font-weight: 400;
}
.attachmentslist li.odp:before,
.attachmentslist li.otp:before,
.attachmentslist li.ppt:before,
.attachmentslist li.pptx:before,
.attachmentslist li.ppsx:before,
.attachmentslist li.vnd.mspowerpoint:before {
  content: "\f1c4";
  font-weight: 400;
}
.attachmentslist li a {
  text-decoration: none;
  line-height: 2rem;
  height: 2rem;
}
.attachmentslist li a.cancelupload:before,
.attachmentslist li a.delete:before {
  content: "\f2ed";
  line-height: 2rem;
  height: 2rem;
  margin: 0;
}
.attachmentslist li a.dropdown:before {
  margin: 0;
}
.attachmentslist li.uploading:before {
  -webkit-animation: spinner-border 1.5s infinite linear;
  animation: spinner-border 1.5s infinite linear;
  content: "\f1ce";
  font-weight: 900;
}
.attachmentslist li a.filename {
  display: flex;
  overflow: hidden;
  padding: 0 0.2em;
}
.attachmentslist li .attachment-name {
  overflow: hidden;
  text-overflow: ellipsis;
  color: #2c363a;
}
.attachmentslist li .attachment-size {
  color: #737677;
  padding-left: 0.25em;
}
.keylist {
  padding: 0;
  list-style: none;
}
.keylist li {
  line-height: 2;
}
.keylist li:before {
  content: "\f084";
  line-height: 1.5;
}
#identities-table td.mail {
  font-family: "Inter";
  font-weight: 600;
}
#identities-table td.mail:before {
  content: "\f2c2";
}
#responses-table td.name:before {
  content: "\f075";
}
#filterslist td.name:before {
  content: "\f0b0";
}
#filtersetslist td.name:before {
  content: "\f15c";
}
#subscription-table li.mailbox a {
  padding-right: 2.5rem;
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** Common form elements ***/
#uploadform {
  display: none;
}
form.smart-upload,
input.smart-upload {
  visibility: hidden;
  width: 1px;
  height: 1px;
  opacity: 0;
}
.propform:not(.popupmenu) {
  width: 100%;
}
.propform .form-check td:not(.title) > label {
  display: block;
  margin: 0;
  line-height: 2rem;
}
.propform .form-check td:not(.title) > label label {
  margin-right: 0.5rem;
}
.propform td.datetime {
  display: flex;
}
.propform td.datetime input:first-child {
  margin-right: 0.5rem;
}
.propform td.datetime input:last-child {
  width: 75%;
}
.propform td.rowbuttons {
  width: 1%;
  white-space: nowrap;
  vertical-align: top;
}
.propform td.rowbuttons span {
  display: none;
}
.propform td.rowbuttons a {
  padding: 0;
  line-height: 2.3rem;
  height: 2.3rem;
  font-size: 1rem;
}
.propform td.rowbuttons a:before {
  content: "\f067";
  vertical-align: unset;
}
@media screen and (min-width: 577px) {
  .propform td.rowbuttons a:before {
    margin: 0 !important;
  }
}
.propform td.rowbuttons a.delete:before {
  content: "\f2ed";
}
.propform td.rowbuttons a.advanced:before {
  content: "\f013";
}
.propform td.rowbuttons a:not(:last-child) {
  margin-right: 0.25rem;
}
.propform td.rowactions {
  width: 1%;
  vertical-align: top;
}
.propform td.rowactions .form-control {
  width: auto;
}
.propform td.rowtargets {
  vertical-align: top;
}
.propform td.rowtargets .composite input,
.propform td.rowtargets .composite textarea,
.propform td.rowtargets .composite select,
.propform td.rowtargets .composite .multi-input,
.propform td.rowtargets .composite .input-group {
  margin-bottom: 0.5rem;
}
.propform td.rowtargets .composite .input-group input,
.propform td.rowtargets .composite .input-group textarea,
.propform td.rowtargets .composite .input-group select,
.propform td.rowtargets .composite .input-group .multi-input {
  margin-bottom: 0;
}
.propform td.rowtargets .composite br {
  display: block;
}
.propform td.rowtargets .input-group {
  margin-bottom: 0.25rem;
}
.propform td.rowtargets .input-group *:first-child.input-group-prepend {
  text-align: left;
  min-width: 7.5em;
}
.propform td.rowtargets .input-group *:first-child.input-group-prepend > * {
  width: 100%;
}
.propform td.rowtargets > .advanced {
  margin-top: 0.25rem;
}
.propform td.title {
  padding-top: 0;
  padding-bottom: 0;
}
.propform td > .flexbox {
  display: flex;
}
.propform td > .flexbox > .multi-input {
  width: 100%;
  margin-left: 0.25rem;
}
.propform.grouped.readonly legend {
  margin: 0;
}
.propform.grouped.readonly .row.input-group {
  margin-bottom: 0 !important;
}
.propform.grouped.readonly label {
  min-width: 7rem;
  background-color: transparent;
  border: 0;
  border-radius: 0;
}
.propform.grouped .row.input-group {
  margin-bottom: 0.5rem;
  flex-wrap: nowrap;
}
.propform.grouped .row.input-group > *:first-child {
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 8rem;
}
.propform.grouped .row.input-group > *:first-child:not(select) {
  padding: 0;
}
@media screen and (max-width: 480px) {
  .propform.grouped .row.input-group > *:first-child {
    min-width: 6rem;
    width: 6rem;
    flex-grow: unset;
  }
}
.propform.grouped .row.input-group > *:first-child label {
  width: 100%;
}
.propform.grouped .row.input-group > *:nth-child(2) {
  flex-grow: 30;
}
.propform.grouped .row.input-group:last-child {
  margin-bottom: 1rem;
}
.propform.grouped .row.input-group select {
  text-align: left;
}
.propform.grouped .row.input-group.composite select {
  height: auto;
}
.propform.grouped .row.input-group .content {
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  border-radius: 0;
  border-left-color: transparent;
}
.propform.grouped .row.input-group .content input {
  border-radius: 0;
  border-color: transparent;
}
.propform.grouped .row.input-group .content .ff_street {
  width: 100%;
}
.propform.grouped .row.input-group .content .ff_locality {
  width: 75%;
}
.propform.grouped .row.input-group .content .ff_zipcode {
  width: 25%;
}
.propform.grouped .row.input-group .content .ff_country,
.propform.grouped .row.input-group .content .ff_region {
  width: 50%;
}
.propform.grouped .form-control-plaintext {
  flex-grow: 1;
  border: 0;
}
.propform .addfield {
  margin: 0;
}
.propform .addfield select {
  width: fit-content;
  margin-top: 0.5rem;
}
.propform .form-text {
  font-size: 90%;
  color: #737677;
}
.propform.row.form-group {
  margin-left: 0;
  margin-right: 0;
}
.propform.row.form-group label,
.propform.row.form-group div {
  padding-left: 0;
  padding-right: 0;
}
.propform select + select,
.propform select + .input-group {
  padding-top: 0.5rem;
}
.propform.text-only {
  margin-bottom: 0.25rem;
}
.propform.text-only tr {
  margin: 0;
}
.propform.text-only label {
  padding-bottom: 0 !important;
}
@media screen and (max-width: 576px) {
  .propform.text-only tr {
    display: table-row;
  }
  .propform.text-only td {
    width: auto;
  }
  .propform.text-only td:first-child {
    width: 33%;
  }
  .propform.text-only :not(tr).form-group.row .col-form-label {
    width: 33%;
  }
  .propform.text-only :not(tr).form-group.row > :last-child {
    width: 67%;
  }
}
@media screen and (max-width: 576px) {
  .propform table.compact-table .rowactions > select,
  .propform table.compact-table .flexbox > select {
    width: 100%;
  }
  .propform table.compact-table tr {
    display: flex;
    flex-direction: column;
  }
  .propform table.compact-table tr td {
    width: 100%;
    padding: 0.25rem 0 0 0;
  }
  .propform table.compact-table tr td.rowbuttons {
    text-align: right;
    padding-top: 0;
  }
  .propform table.compact-table tr td.rowbuttons a {
    margin-left: 0.5rem;
  }
  .propform table.compact-table tr td.rowbuttons a > span {
    display: inline;
  }
}
.propform fieldset:not(.tab-pane):nth-of-type(n + 2),
.formcontent fieldset:not(.tab-pane):nth-of-type(n + 2) {
  margin-top: 1em;
}
.propform legend,
.formcontent legend {
  font-weight: bold;
  font-size: 1.2em;
}
.propform label,
.formcontent label {
  -webkit-hyphens: auto;
  -ms-hyphens: auto;
  hyphens: auto;
  overflow: hidden;
  margin-bottom: 0;
}
fieldset.advanced > legend {
  width: auto;
  cursor: pointer;
}
fieldset.advanced > legend:after {
  float: right;
  margin: 0 0 0 0.25rem;
  line-height: inherit;
  font-size: inherit;
  content: "\f106";
}
fieldset.advanced > legend.closed:after {
  content: "\f107";
}
@media screen and (max-width: 576px) {
  .formcontent .text-only .form-group:not(tr) {
    margin-bottom: 0.25rem;
  }
  .formcontent .text-only .form-group:not(tr) .col-form-label {
    width: 33%;
  }
  .formcontent .text-only .form-group:not(tr) .col-form-label + span {
    width: 67%;
  }
  html.iframe .formcontent > .propform {
    padding: 0.25rem;
  }
}
html.ms .propform .row:not(.form-check) > td {
  display: flex;
  flex-wrap: wrap;
}
@media screen and (min-width: 576px) {
  html.ms .propform .row.form-check > td {
    display: flex;
  }
}
.formcontainer {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  overflow-y: hidden !important;
}
.formcontainer .formcontent {
  overflow-x: hidden;
  overflow-y: auto;
}
.formcontainer .formbuttons {
  padding: 0.5rem 1rem;
}
.formcontainer .formbuttons button {
  margin-right: 0.5rem;
}
html.iframe.ipad .formcontainer .formbuttons,
html.iframe.webkit.tablet .formcontainer .formbuttons {
  min-height: 4rem;
}
html.layout-small .formcontainer,
html.layout-phone .formcontainer {
  display: initial;
  overflow-y: auto !important;
}
html.layout-small .formcontainer .formcontent,
html.layout-phone .formcontainer .formcontent {
  overflow: initial !important;
}
html.layout-small .formcontainer .formbuttons,
html.layout-phone .formcontainer .formbuttons {
  display: none;
}
.formcontent:not(.popupmenu) {
  padding: 1rem;
}
.formcontent .row {
  margin-right: 0;
  margin-left: 0;
}
.formcontent .row .col,
.formcontent .row .col-2,
.formcontent .row .col-4,
.formcontent .row .col-6,
.formcontent .row .col-8,
.formcontent .row .col-10,
.formcontent .row .col-12,
.formcontent .row .col-sm,
.formcontent .row .col-sm-2,
.formcontent .row .col-sm-4,
.formcontent .row .col-sm-6,
.formcontent .row .col-sm-8,
.formcontent .row .col-sm-10,
.formcontent .row .col-sm-12 {
  padding: 0;
}
.formcontent .row .form-control-plaintext,
.formcontent .row label.col-form-label {
  padding: 5px 5px 5px 0;
}
.formcontent .row .form-control-plaintext {
  padding-bottom: 0;
  border: 0;
}
@media screen and (max-width: 576px) {
  .formcontent .row.form-group > td label {
    padding-bottom: 0;
  }
}
.formcontent .row.form-check {
  padding: 0;
  display: flex;
  flex-wrap: nowrap;
}
@media screen and (max-width: 576px) {
  .formcontent .row.form-check .col-6 {
    max-width: 100%;
    flex: auto;
  }
  .formcontent .row.form-check > *:last-child {
    width: 1%;
    min-width: 2.6rem;
  }
  .formcontent .row.form-check.with-link > *:last-child {
    min-width: 8rem;
  }
}
.formcontent .row.form-check .form-check-input {
  margin: 0.5rem 0;
}
.formcontent .row.form-check .custom-switch + a {
  line-height: 2;
  vertical-align: bottom;
}
.formcontent .row.form-check td > label {
  padding-bottom: 0;
}
.formcontent .nav-tabs {
  margin-bottom: 1rem;
}
.formcontent .nav-tabs:empty {
  display: none;
}
.formcontent .hint {
  font-style: italic;
  color: #737677;
}
.formcontent.raweditor {
  height: 100%;
}
.formcontent.raweditor form {
  height: 100%;
}
.formcontent.raweditor textarea {
  font-family: monospace;
  height: 100%;
}
.formcontent.raweditor .CodeMirror {
  border: 1px solid #ced4da;
  border-radius: 0.3rem;
  height: 100%;
  color: #2c363a;
}
.formcontent.raweditor .CodeMirror-focused {
  border-color: #056dff;
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.25);
}
.formcontent.raweditor .CodeMirror-linebackground.line-error {
  background-color: #ff5552;
  opacity: 0.4;
}
.formcontent.raweditor .errorGutter {
  width: 0.8em;
}
@media screen and (max-width: 320px) {
  .formcontent .col-form-label {
    flex: auto;
    max-width: 100%;
  }
  .formcontent .col-6,
  .formcontent .col-8,
  .formcontent .col-10 {
    flex: auto;
    max-width: 100%;
  }
}
/* Some common icons for "iconized inputs" */
.input-group .icon {
  text-decoration: none;
  padding: 5px 0.5rem;
}
.input-group .icon.input-group-text {
  min-width: 2.4rem;
}
.input-group .icon:before {
  margin: 0 !important;
  line-height: 1;
  font-size: 1.1rem;
}
.input-group .icon.user:before {
  content: "\f007";
}
.input-group .icon.pass:before {
  content: "\f023";
}
.input-group .icon.host:before {
  content: "\f015";
}
.input-group .icon.language:before {
  content: "\f0ac";
}
.input-group .icon.cancel:before {
  content: "\f00d";
}
.input-group .icon.delete:before {
  content: "\f2ed";
}
.input-group .icon.edit:before {
  content: "\f303";
}
.input-group .icon.add:before {
  content: "\f067";
}
.input-group .icon.add.recipient:before {
  content: "\f0c0";
}
.input-group .icon.search:before {
  content: "\f002";
}
.input-group .icon.filter:before {
  content: "\f0b0";
}
.input-group .icon.key:before {
  content: "\f084";
}
.input-group .icon .inner {
  display: none;
}
.input-group a:focus {
  background-color: rgba(5, 109, 255, 0.25);
  outline: 0;
}
.proplist {
  margin-bottom: 0;
  padding: 0;
}
.proplist li {
  list-style-type: none;
  line-height: 2rem;
  margin-bottom: 0.25rem;
  display: flex;
  align-items: center;
}
.proplist li:last-child {
  margin-bottom: 0;
}
.proplist li input[type="radio"] {
  margin-right: 0.5em;
}
.proplist li input[type="radio"]:disabled + label {
  opacity: 0.5;
}
.proplist li label:not(.input-group-text) {
  margin: 0;
  line-height: 2rem;
}
.proplist li select {
  width: auto;
  display: inline;
}
.proplist li.with-sublist {
  flex-wrap: wrap;
  position: relative;
}
.proplist li.with-sublist > :first-child {
  width: 100%;
  margin-right: 2em;
}
.proplist li.with-sublist > .proplist {
  margin-left: 2.5rem;
}
.proplist li.with-sublist > a.dropdown {
  position: absolute;
  right: 0;
  top: 0;
  height: 2em;
  color: #2c363a;
}
.checklist > div {
  line-height: 2rem;
  display: block;
}
.checklist .custom-control-label:before,
.checklist .custom-control-label:after {
  margin: calc(2px * -1) 0 0 0;
}
.checklist > div + br {
  display: none;
}
/*** Forms in popups ***/
.popup form.propform {
  padding: 0.25rem;
  overflow-x: hidden;
}
.popupmenu.form.nolist {
  padding: 0 0.5rem;
}
.popupmenu.form ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
}
.popupmenu.form li:not(.separator) {
  padding: 0 1rem;
}
.popupmenu.form li:not(.separator) label {
  margin: 0;
  line-height: 35px;
}
.popupmenu.form li:not(.separator) label input {
  margin-right: 0.5rem;
}
.popupmenu.form input {
  vertical-align: middle;
}
.popupmenu.form select {
  margin: 0.5rem 0;
}
.popupmenu.form .buttons {
  text-align: center;
  padding: 0.5rem;
}
/*** Smart list (multiple input) field ***/
.multi-input > .content {
  max-height: 11.65em;
  overflow: hidden;
  overflow-y: auto;
  border-radius: 0.25rem;
  border: 1px solid #ced4da;
}
.multi-input > .content.focused {
  border-color: #056dff;
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.25);
}
.multi-input a.icon.reset:before {
  content: "\f2ed";
}
.multi-input input.form-control {
  padding-left: 0.75rem;
  height: auto;
}
.multi-input input,
.multi-input input:focus,
.multi-input .input-group-text {
  border-radius: 0;
  border: 0;
  border-bottom: 1px solid #ced4da;
  box-shadow: none;
}
.multi-input .input-group-text {
  border-left: 1px solid #ced4da;
}
.multi-input .input-group-append {
  margin-left: 0;
}
.multi-input .input-group {
  margin: 0 !important;
  flex-wrap: nowrap;
}
.multi-input .input-group:last-child * {
  border-bottom: 0;
}
.multi-input + .btn {
  margin-top: 0.5rem;
}
.multi-input.is-invalid > .content {
  border: 1px solid #ff5552;
}
.multi-input.is-invalid > .content.focused {
  border-color: #ff5552;
  box-shadow: 0 0 0 0.2rem rgba(255, 85, 82, 0.25);
}
.multi-input.is-invalid > .invalid-feedback {
  display: inline-block;
  line-height: 1.5;
}
/*** Files upload widget with list of files, upload form and drop area ***/
.file-upload {
  padding: 2.25rem 1rem;
  margin: 0 1rem 0.5rem 1rem;
  border-radius: 0.75rem;
  border: 0.125rem dashed #d4dbde;
  background-color: transparent;
  transition:
    border-color 160ms ease,
    background-color 160ms ease;
}
fieldset .file-upload {
  margin: 0;
}
.file-upload .upload-form {
  text-align: center;
  padding: 0.25rem 0.5rem 0.75rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
}
.file-upload .upload-form .upload-instructions {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: #2c363a;
  font-size: 0.9rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.005em;
}
.file-upload .upload-form .upload-instructions .upload-text {
  color: #2c363a;
  text-decoration: none;
  text-underline-offset: 3px;
  transition:
    text-decoration-color 160ms ease,
    color 160ms ease;
  cursor: pointer;
}
.file-upload .upload-form .upload-instructions .upload-text:hover,
.file-upload .upload-form .upload-instructions .upload-text:focus {
  color: #2c363a;
  text-decoration: underline;
  text-decoration-color: currentColor;
}
.file-upload .hint {
  margin: 0;
  color: #737677;
  text-align: center;
  font-size: 0.775rem;
}
.file-upload .attachmentslist {
  border: 0;
  background: transparent;
  padding: 0.5rem 0 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.file-upload .attachmentslist:empty {
  display: none;
}
.file-upload .attachmentslist li {
  position: relative;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.625rem 0.75rem;
  margin: 0;
  line-height: 1.3;
  max-width: 100%;
  background-color: #f6f7f8;
  border: 1px solid #ebedef;
  border-radius: 0.625rem;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.02);
  transition:
    border-color 160ms ease,
    box-shadow 160ms ease,
    background-color 160ms ease;
}
.file-upload .attachmentslist li:hover {
  border-color: #dde0e4;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
}
.file-upload .attachmentslist li:before {
  content: "\f15b";
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  margin: 0;
  border-radius: 0.5rem;
  background-color: #eceef0;
  color: #4a5560;
  font-size: 1rem;
  line-height: 1;
  flex-shrink: 0;
}
.file-upload .attachmentslist li.image:before,
.file-upload .attachmentslist li.jpg:before,
.file-upload .attachmentslist li.jpeg:before,
.file-upload .attachmentslist li.png:before,
.file-upload .attachmentslist li.gif:before {
  color: #056dff;
}
.file-upload .attachmentslist li.pdf:before {
  color: #c0392b;
}
.file-upload .attachmentslist li.zip:before,
.file-upload .attachmentslist li.rar:before,
.file-upload .attachmentslist li.gz:before {
  color: #8e6f1f;
}
.file-upload .attachmentslist li a.filename {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.125rem;
  min-width: 0;
  padding: 0;
  line-height: 1.3;
  height: auto;
  text-decoration: none;
  cursor: pointer;
}
.file-upload .attachmentslist li a.filename:hover {
  text-decoration: underline;
  text-decoration-color: rgba(0, 0, 0, 0.25);
  text-underline-offset: 2px;
}
.file-upload .attachmentslist li a.filename .attachment-name {
  color: #2c363a;
  font-weight: 500;
  font-size: 0.85rem;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.file-upload .attachmentslist li a.filename .attachment-size {
  color: #737677;
  font-size: 0.725rem;
  padding-left: 0;
}
.file-upload .attachmentslist li a.delete,
.file-upload .attachmentslist li a.cancelupload {
  position: static;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 0.5rem;
  background-color: transparent;
  border: 1px solid transparent;
  color: #737677;
  text-decoration: none;
  transition:
    background-color 160ms ease,
    color 160ms ease,
    border-color 160ms ease;
  flex-shrink: 0;
  margin: 0;
  line-height: 1;
  cursor: pointer;
}
.file-upload .attachmentslist li a.delete:before,
.file-upload .attachmentslist li a.cancelupload:before {
  content: "\f2ed";
  display: block;
  float: none;
  margin: 0;
  width: auto;
  height: auto;
  font-size: 0.95rem;
  line-height: 1;
}
.file-upload .attachmentslist li a.delete:hover,
.file-upload .attachmentslist li a.cancelupload:hover {
  background-color: rgba(0, 0, 0, 0.06);
  color: #d14545;
}
.file-upload .attachmentslist li a.dropdown {
  margin-right: 0.35em;
}
.file-upload .attachmentslist li .inner {
  display: none;
}
.file-upload .attachmentslist li.uploading {
  opacity: 0.85;
}
.file-upload .attachmentslist li.uploading:before {
  animation: spinner-border 1.5s infinite linear;
  content: "\f1ce";
  font-weight: 900;
  color: #056dff;
}
.file-upload .attachmentslist li.uploading .attachment-name {
  color: #737677;
}
.file-upload.droptarget {
  padding-bottom: 1rem !important;
}
.file-upload.droptarget.active {
  border-color: #056dff;
  background-color: rgba(5, 109, 255, 0.04);
}
.file-upload.droptarget.hover {
  border-color: #056dff;
  background-color: rgba(5, 109, 255, 0.08);
}
.attachment-size-hint {
  margin: 0.75rem 1rem 0.5rem;
  text-align: center;
}
.attachment-size-hint .hint {
  color: #737677;
  font-size: 0.775rem;
}
@media (max-width: 480px) {
  .file-upload {
    margin: 0 0.5rem 0.5rem;
    padding: 1.5rem 0.75rem;
  }
  .file-upload .attachmentslist li {
    padding: 0.5rem;
    gap: 0.55rem;
  }
  .file-upload .attachmentslist li .attachment-name {
    font-size: 0.825rem;
  }
  .file-upload .attachmentslist li .attachment-size {
    font-size: 0.7rem;
  }
}
/* Mobile attachment visibility (Phase A2) ----------------------------------------
 * Roundcube marks `<div id="layout-sidebar" class="listbox sidebar-right hidden">`
 * with `display: none` whenever the body has the `layout-phone` /
 * `layout-small` class. As a result the compose attachment panel
 * (#compose-attachments, which holds #attachment-list and the real Roundcube
 * `a.delete` buttons) becomes unreachable on mobile — the user can upload via
 * the toolbar paperclip but the list never appears and remove is impossible.
 *
 * Strategy: lift ONLY the sidebar-right into a fixed bottom strip on mobile.
 *   - hide its desktop-style `.header` ("Options and attachments" + back btn)
 *   - hide the upload-instructions + hint (already accessible via toolbar paperclip)
 *   - show #compose-attachments as a compact card with the existing
 *     #attachment-list (Roundcube `a.delete` remains fully clickable)
 *   - position above the Send/Save footer bar (which is anchored at y≈754)
 *   - never cover the editor (#compose-content) since we don't reserve flow space
 *
 * Scope: only `html.layout-phone` / `html.layout-small` compose page.
 * Desktop (`html.layout-normal`+) is untouched.
 * The Roundcube `.hidden` class is still respected when attachments list is empty
 * — the strip is invisible until the first file is uploaded, avoiding empty UI.
 */
html.layout-phone #layout-sidebar.sidebar-right.hidden,
html.layout-small #layout-sidebar.sidebar-right.hidden {
  display: flex !important;
  position: fixed !important;
  left: 0.5rem;
  right: 0.5rem;
  bottom: calc(58px + env(safe-area-inset-bottom, 0px) + 0.5rem);
  top: auto !important;
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  flex: none !important;
  height: auto !important;
  max-height: 30vh !important;
  border: 0 !important;
  background: transparent !important;
  z-index: 50;
  border-radius: 0.625rem;
}
html.layout-phone #layout-sidebar.sidebar-right.hidden > .header,
html.layout-small #layout-sidebar.sidebar-right.hidden > .header {
  display: none !important;
}
html.layout-phone #layout-sidebar.sidebar-right.hidden .attachment-size-hint,
html.layout-small #layout-sidebar.sidebar-right.hidden .attachment-size-hint {
  display: none !important;
}
/* When there are no attachments yet, keep the panel hidden — the upload trigger
 * lives in the toolbar paperclip so there's no value in showing an empty state. */
html.layout-phone #layout-sidebar.sidebar-right.hidden #compose-attachments:has(#attachment-list:not(:empty)),
html.layout-small #layout-sidebar.sidebar-right.hidden #compose-attachments:has(#attachment-list:not(:empty)) {
  display: block !important;
  background-color: var(--pixie-bg, #fdfdfd);
  border: 1px solid var(--pixie-border-color, #e4e4e7);
  border-radius: 0.625rem;
  padding: 0.5rem;
  margin: 0;
  max-height: 30vh;
  overflow-y: auto;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
html.layout-phone #layout-sidebar.sidebar-right.hidden #attachment-list,
html.layout-small #layout-sidebar.sidebar-right.hidden #attachment-list {
  display: flex !important;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0;
  margin: 0;
  border: 0;
  background: transparent;
}
html.layout-phone #layout-sidebar.sidebar-right.hidden .upload-form,
html.layout-small #layout-sidebar.sidebar-right.hidden .upload-form {
  display: none !important;
}
html.layout-phone #layout-sidebar.sidebar-right.hidden #compose-options,
html.layout-small #layout-sidebar.sidebar-right.hidden #compose-options {
  display: none !important;
}
html.layout-phone #layout-sidebar.sidebar-right.hidden #compose-attachments,
html.layout-small #layout-sidebar.sidebar-right.hidden #compose-attachments {
  display: none !important;
}
html.layout-phone #layout-sidebar.sidebar-right.hidden:has(#attachment-list:not(:empty)),
html.layout-small #layout-sidebar.sidebar-right.hidden:has(#attachment-list:not(:empty)) {
  display: flex !important;
  padding: 0.5rem;
  background-color: var(--pixie-bg, #fdfdfd);
  border: 1px solid var(--pixie-border-color, #e4e4e7);
  border-radius: 0.625rem;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  overflow: hidden;
}
html.layout-phone #layout-sidebar.sidebar-right.hidden:has(#attachment-list:not(:empty)) #compose-attachments,
html.layout-small #layout-sidebar.sidebar-right.hidden:has(#attachment-list:not(:empty)) #compose-attachments {
  display: block !important;
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  margin: 0;
  max-height: none;
  box-shadow: none;
}
html.dark-mode #layout-sidebar.sidebar-right.hidden:has(#attachment-list:not(:empty)) {
  background-color: #090A0B !important;
  border-color: #2a2e30 !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35) !important;
}
html.dark-mode #layout-sidebar.sidebar-right.hidden #compose-attachments:has(#attachment-list:not(:empty)) {
  background-color: #090A0B !important;
  border-color: #2a2e30 !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
}
/*** Smart recipient input field ***/
.recipient-input {
  display: flex;
  flex-wrap: wrap;
  padding: 0 0.75rem 4px 0.75rem;
  list-style-type: none;
  cursor: text;
  height: auto;
}
.recipient-input.focus {
  border-color: color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
  box-shadow: 0 0 0 0.2rem color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
}
.recipient-input li {
  max-width: 100%;
}
.recipient-input li:not(.recipient) {
  user-select: text;
}
.recipient-input li.input {
  flex: 1;
  min-width: 100px;
}
.recipient-input input {
  width: 100%;
  background: transparent !important;
  border: 0 !important;
  margin-top: 4px;
  outline: 0;
  line-height: 1.5;
}
.recipient-input input::-ms-clear {
  display: none;
}
.recipient-input li.recipient,
body > li.recipient.ui-sortable-helper {
  display: flex;
  position: relative;
  max-width: calc(50% - 3px);
  border: 1px solid oklch(var(--border, 0.922 0 0) / 0.4);
  background-color: oklch(var(--border, 0.922 0 0) / 0.08);
  border-radius: 6px;
  padding: 0 0.25rem;
  margin-top: 4px;
  margin-right: 0.2em;
  white-space: nowrap;
  cursor: default;
}
@media screen and (max-width: 450px) {
  .recipient-input li.recipient,
  body > li.recipient.ui-sortable-helper {
    width: 100%;
    max-width: 100%;
  }
}
.recipient-input li.recipient .name,
body > li.recipient.ui-sortable-helper .name {
  overflow: hidden;
  text-overflow: ellipsis;
  flex-grow: 1;
  line-height: 1.1;
  padding: 3px;
  vertical-align: middle;
}
.recipient-input li.recipient .email,
body > li.recipient.ui-sortable-helper .email {
  text-indent: -5000rem;
  display: inline-block;
  width: 0;
}
.recipient-input li.recipient .quotes,
body > li.recipient.ui-sortable-helper .quotes {
  position: absolute;
  width: 0;
  opacity: 0;
}
.recipient-input li.recipient a.button.icon,
body > li.recipient.ui-sortable-helper a.button.icon {
  font-size: 0.75em;
  cursor: pointer;
  padding: 0;
  color: #2c363a;
}
.recipient-input li.recipient a.button.icon:before,
body > li.recipient.ui-sortable-helper a.button.icon:before {
  display: inline-block;
  width: 1em;
  line-height: 1.6;
}
/* Phase R1.1: Enlarge the recipient chip remove hitbox.
 * Roundcube's defaults render the X as a 13×21px target — too
 * small for a reliable click, and a quarter of the 44×44 touch
 * target a finger expects on mobile. We inflate the clickable
 * area with explicit min-size and flex-centering so the visible
 * glyph stays in place while the hitbox grows. The X glyph itself
 * is unchanged (10.5px wide) — only the surrounding box expands. */
.recipient-input li.recipient a.button.icon.remove,
body > li.recipient.ui-sortable-helper a.button.icon.remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  min-height: 22px;
  border-radius: 4px;
  transition: background-color 120ms ease;
  position: relative;
}
.recipient-input li.recipient a.button.icon.remove:hover,
.recipient-input li.recipient a.button.icon.remove:focus-visible {
  background-color: rgba(0, 0, 0, 0.08);
  outline: none;
}
html.dark-mode .recipient-input li.recipient a.button.icon.remove:hover,
html.dark-mode .recipient-input li.recipient a.button.icon.remove:focus-visible {
  background-color: rgba(255, 255, 255, 0.08);
}
@media screen and (max-width: 480px) {
  .recipient-input li.recipient a.button.icon.remove,
  body > li.recipient.ui-sortable-helper a.button.icon.remove {
    min-width: 28px;
    min-height: 28px;
  }
}
}
.recipient-input li.recipient.ui-sortable-helper,
body > li.recipient.ui-sortable-helper.ui-sortable-helper {
  padding: 0 0 0 0.25rem !important;
}
/*** Tagedit widget (from jqueryui plugin) ***/
.tagedit-list {
  display: flex;
  flex-wrap: wrap;
  padding: 0 0.75rem 4px 0.75rem;
  margin: 0;
  list-style-type: none;
  min-height: 2.3rem;
}
.tagedit-list + .placeholder {
  display: none;
}
.tagedit-list[tabindex="-1"] {
  border-color: #056dff;
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.25);
}
.tagedit-list li.tagedit-listelement-new {
  margin-top: 4px;
}
.tagedit-list li.tagedit-listelement-new input {
  width: 15px;
  background: transparent !important;
  border: 0;
  outline: 0;
  margin: 0;
  padding: 0;
  line-height: 1.5;
}
.tagedit-list li.tagedit-listelement-new input.tagedit-input-disabled {
  visibility: hidden;
}
.tagedit-list li.tagedit-listelement-old {
  max-width: 50%;
  border: 1px solid #ced4da;
  background-color: #f1f3f4;
  border-radius: 0.25em;
  margin-top: 4px;
  margin-right: 0.2em;
  white-space: nowrap;
}
.tagedit-list li.tagedit-listelement-old a {
  font-size: 0.8em;
  cursor: pointer;
  display: inline-block;
  width: 1.1em;
  overflow: hidden;
  vertical-align: middle;
  margin-right: 0.2rem;
  color: inherit;
  text-decoration: none;
}
.tagedit-list li.tagedit-listelement-old a:before {
  content: "\f00d";
  width: 1em;
  line-height: 1.2;
}
.tagedit-list li.tagedit-listelement-old span {
  overflow: hidden;
  text-overflow: ellipsis;
  flex-grow: 1;
  display: inline-block;
  line-height: 1.4;
  padding: 0 0.25rem;
  vertical-align: middle;
}
/*** Skin selection widget ***/
.skinselection {
  white-space: nowrap;
  display: table-row;
}
.skinselection > span {
  display: table-cell;
  vertical-align: middle;
  padding: 0.1em 0.5em;
  white-space: normal;
}
.skinselection > span:last-child {
  padding-right: 0;
}
.skinselection .skinitem input {
  width: auto;
}
.skinselection .skinname {
  font-weight: bold;
}
.skinselection .skinlicense,
.skinselection .skinlicense a {
  font-style: italic;
  text-decoration: none;
}
.skinselection .skinlicense a:hover {
  text-decoration: underline;
}
.skinselection .skinlicense,
.skinselection .skinauthor {
  font-size: 90%;
}
.skinselection .skinthumbnail {
  width: 64px;
  height: 64px;
  border: 1px solid #ced4da;
  background: #fff;
  border-radius: 4px;
}
/*** Percent input with jQuery-UI slider ***/
.input-percent-slider {
  display: flex;
  align-items: center;
}
.input-percent-slider input {
  max-width: 4em;
}
.input-percent-slider span.label {
  line-height: 2.4;
  padding: 0 0.5rem 0 0.25rem;
}
.input-percent-slider div.ui-slider {
  flex: 1;
  margin: 0 0.5em;
}
/*** Image upload widget ***/
.image-upload {
  position: relative;
  overflow: hidden;
  cursor: pointer;
  background-color: #f4f4f4;
}
.image-upload a.button {
  display: none;
  position: absolute;
  left: 0;
  top: 0;
  background-color: rgba(255, 255, 255, 0.85);
  border-radius: 5px;
  width: 2.5em;
  padding: 0.5em;
  margin: 0.5em;
  line-height: 1;
}
.image-upload.changed a.button {
  display: inline;
}
.input-group-combo select:first-of-type.alone {
  border-radius: 0.25rem !important;
}
.input-group-combo select:first-of-type:not(.alone) {
  flex: unset;
  width: auto;
}
.input-group-combo .input-group {
  padding: 0 !important;
  flex: 2;
}
.input-group-combo select + select,
.input-group-combo .input-group :first-child {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
/*** General browser hacks ***/
@-moz-document url-prefix() {
  select:-moz-focusring {
    color: transparent !important;
    text-shadow: 0 0 0 #2c363a !important;
  }
}
/*** Bootstrap style overrides and improvements ***/
.form-control {
  color: #2c363a;
}
/* Compose subject field — match CKEditor toolbar border */
html:not(.dark-mode) #compose-subject {
  border: 1px solid oklch(var(--border, 0.922 0 0) / 0.4) !important;
  border-radius: 6px;
  min-height: 34px;
}
/* Compose recipient combobox — match the same light-mode border token */
html:not(.dark-mode) .form-control.recipient-input {
  border: 1px solid oklch(var(--border, 0.922 0 0) / 0.4) !important;
  border-radius: 6px;
  min-height: 34px;
}
.form-control.custom-select {
  padding-right: 1.75rem;
  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e")
    no-repeat right 0.75rem center / 8px 10px;
}
.form-control:focus {
  color: #2c363a;
  border-color: color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
  box-shadow: 0 0 0 0.2rem color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
}
.form-control.is-invalid {
  border-color: #ff5552;
  box-shadow: none;
}
.form-control.is-invalid:focus {
  border-color: #ff5552;
  box-shadow: 0 0 0 0.2rem rgba(255, 85, 82, 0.25);
}
.form-control::placeholder {
  color: #bbb;
}
.form-control::-ms-input-placeholder,
.form-control::-webkit-input-placeholder {
  color: #bbb;
}
.invalid-feedback {
  color: #ff5552;
  font-size: 90%;
}
.form-group {
  margin-bottom: 0.5rem;
}
.input-group-append.input-group-prepend {
  display: inline;
}
.input-group-text {
  color: #2c363a;
  background-color: #f1f3f4;
}
.input-group-text input:focus {
  z-index: 1;
  border-color: color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
  box-shadow: 0 0 0 0.2rem color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
}
.custom-switch {
  padding-left: 0;
  display: inline-block;
}
.custom-switch .custom-control-input {
  left: 0;
  opacity: 0 !important;
}
.custom-switch .custom-control-input:focus ~ .custom-control-label:before {
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.25);
}
.custom-switch
  .custom-control-input:focus:not(:checked)
  ~ .custom-control-label::before {
  border-color: #056dff;
}
.custom-switch .custom-control-input:checked ~ .custom-control-label::before {
  border-color: #056dff;
  background-color: #056dff;
}
.custom-switch
  .custom-control-input:checked:disabled
  ~ .custom-control-label::before {
  border-color: #529aff;
  background-color: #529aff;
}
.custom-switch .custom-control-label {
  padding-left: 2.5rem;
  min-height: 2rem;
  line-height: 2;
  display: inline-block;
}
html.touch .custom-switch .custom-control-label {
  padding-left: 3rem;
}
.custom-switch .custom-control-label:before,
.custom-switch .custom-control-label:after {
  border-radius: 0.6rem;
  margin: 2px 0;
}
html.touch .custom-switch .custom-control-label:before,
html.touch .custom-switch .custom-control-label:after {
  border-radius: 0.8rem;
  margin: 0;
}
.custom-switch .custom-control-label:before {
  left: 2px;
  top: 4px;
  width: 26px;
  height: 16px;
}
html.touch .custom-switch .custom-control-label:before {
  top: 2px;
  width: 35px;
  height: 22px;
}
.custom-switch .custom-control-label:after {
  left: 4px;
  top: 6px;
  width: 12px;
  height: 12px;
}
html.touch .custom-switch .custom-control-label:after {
  top: 4px;
  height: 18px;
  width: 18px;
}
.custom-switch .custom-control-input:checked ~ .custom-control-label::after {
  transform: translateX(10px);
}
html.touch
  .custom-switch
  .custom-control-input:checked
  ~ .custom-control-label::after {
  transform: translateX(13px);
}
.custom-switch
  .custom-control-input:not(:disabled)
  ~ .custom-control-label:after,
.custom-switch
  .custom-control-input:not(:disabled)
  ~ .custom-control-label:before {
  cursor: pointer;
}
.custom-file {
  display: block;
}
.custom-file .custom-file-label {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-right: 100px;
}
.custom-file + .hint {
  margin-top: 3px;
}
.custom-file-input:focus ~ .custom-file-label {
  border-color: #056dff;
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.25);
}
/**
 * Roundcube Webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
/*** Text Editor widget (and TinyMCE editor) ***/
div.tox {
  font-size: 1rem;
}
div.tox,
div.tox :not(.svg) {
  font-family: "Inter", Roboto, sans-serif;
}
div.tox.tox-tinymce {
  border-radius: 0.25rem;
  border: 1px solid var(--pixie-border-color, #e4e4e7);
}
/* Phase C1.1: CKEditor 5 (the actual editor used by Roundcube). Light
 * mode only — dark mode keeps the existing #d8dee5 borders.
 * Selector needs the `html` prefix to beat the
 * `html:not(.dark-mode) .ck.ck-toolbar { ... !important }` rule loaded
 * by /dist/app.min.css (specificity 0,3,0 vs ours 0,2,0). */
html:not(.dark-mode) .ck.ck-editor .ck-toolbar,
html:not(.dark-mode) .ck.ck-editor .ck-content,
html:not(.dark-mode) .ck.ck-editor .ck-editor__editable {
  border: 1px solid oklch(var(--border, 0.922 0 0) / 0.4) !important;
}
html.dark-mode .ck.ck-editor .ck-toolbar,
html.dark-mode .ck.ck-editor .ck-content,
html.dark-mode .ck.ck-editor .ck-editor__editable {
  border: 1px solid color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
}
/* Sticky panel (top bar that floats over the editor on scroll) */
html:not(.dark-mode)
  .ck.ck-editor__top
  .ck-sticky-panel
  .ck-sticky-panel__content {
  border: 1px solid oklch(var(--border, 0.922 0 0) / 0.4) !important;
}
html.dark-mode .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content {
  border: 1px solid color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
}
div.tox.focused {
  border-color: #056dff !important;
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.25) !important;
}
div.tox .tox-toolbar-overlord {
  z-index: 1;
}
div.tox .tox-toolbar-overlord > div {
  background: url("data:image/svg+xml;charset=utf8,%3Csvg height='33px' viewBox='0 0 40 33px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='32px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E");
  background-color: var(--pixie-border-color, #e4e4e7);
}
div.tox .tox-toolbar__primary {
  border-top: 0;
}
div.tox .tox-toolbar {
  background-color: #f1f3f4;
}
div.tox .tox-edit-area {
  border: 0;
}
div.tox .tox-dialog {
  border-radius: 0;
  border-color: #d4dbde;
  box-shadow: none;
  align-self: unset !important;
}
div.tox .tox-dialog .tox-form__group {
  margin-top: 0;
  margin-bottom: 0.75rem;
}
div.tox .tox-dialog .tox-dialog__body-nav-item--active {
  color: #00acff;
  border-color: transparent;
}
div.tox .tox-dialog .tox-dialog__body-nav-item--active:hover {
  color: #008acc;
}
div.tox .tox-dialog__body-content {
  overflow: unset;
}
div.tox .tox-dialog__content-js {
  overflow: auto;
}
div.tox .tox-dialog-wrap__backdrop {
  background-color: rgba(44, 54, 58, 0.5);
}
div.tox .tox-dialog__header {
  height: 57px;
  border-bottom: 1px solid #ddd;
  justify-content: flex-end;
  padding: 0;
}
div.tox .tox-dialog__header .tox-button {
  color: #2c363a;
  right: 0;
  height: 57.3px;
  width: 2.25em;
  margin-right: 0.4rem;
}
div.tox .tox-dialog__header .tox-button:hover {
  background: transparent;
  border-color: transparent;
}
div.tox .tox-dialog__header .tox-button .tox-icon {
  display: none;
}
div.tox .tox-dialog__header .tox-button:before {
  content: "\f00d";
  line-height: 1.5rem;
  margin: 0 !important;
}
div.tox .tox-dialog__footer {
  height: 57px !important;
  border: 0;
  margin: 0;
  padding: 0 1rem;
}
@media screen and (max-width: 480px) {
  div.tox .tox-dialog__footer {
    border-top: 1px solid #ddd;
  }
}
div.tox .tox-dialog__footer > div {
  white-space: nowrap;
  max-height: 57px;
}
div.tox .tox-dialog__footer > div button:first-child {
  margin: 0;
}
div.tox .tox-dialog__footer .tox-button {
  color: #fff;
  background: #056dff;
  border-color: #056dff;
  font-weight: normal;
  padding: 0.5rem 0.75rem;
}
div.tox .tox-dialog__footer .tox-button:focus {
  background: #0062eb;
  border-color: #005de0;
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.5);
}
div.tox .tox-dialog__footer .tox-button:hover {
  background: #0062eb;
  border-color: #005de0;
}
div.tox .tox-dialog__footer .tox-button.disabled,
div.tox .tox-dialog__footer .tox-button:disabled {
  background: #056dff;
  border-color: #056dff;
}
div.tox .tox-dialog__footer .tox-button:not(:disabled):not(.disabled):active,
div.tox .tox-dialog__footer .tox-button:not(:disabled):not(.disabled).active {
  background: #0057d1;
  border-color: #0053c7;
}
div.tox
  .tox-dialog__footer
  .tox-button:not(:disabled):not(.disabled):active:focus,
div.tox
  .tox-dialog__footer
  .tox-button:not(:disabled):not(.disabled).active:focus {
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.53);
}
div.tox .tox-dialog__footer .tox-button:before {
  width: 1em;
  content: "\f00c";
  line-height: 1;
}
div.tox .tox-dialog__footer .tox-button:focus:not(:disabled) {
  background: #056dff;
  border-color: #056dff;
}
div.tox .tox-dialog__footer .tox-button.tox-button--secondary {
  background: #8b9fa7;
  border-color: #8b9fa7;
  color: #fff;
}
div.tox .tox-dialog__footer .tox-button.tox-button--secondary:focus {
  background: #7c939c;
  border-color: #778e98;
  box-shadow: 0 0 0 0.2rem rgba(139, 159, 167, 0.5);
}
div.tox .tox-dialog__footer .tox-button.tox-button--secondary:hover {
  background: #7c939c;
  border-color: #778e98;
}
div.tox .tox-dialog__footer .tox-button.tox-button--secondary.disabled,
div.tox .tox-dialog__footer .tox-button.tox-button--secondary:disabled {
  background: #8b9fa7;
  border-color: #8b9fa7;
}
div.tox
  .tox-dialog__footer
  .tox-button.tox-button--secondary:not(:disabled):not(.disabled):active,
div.tox
  .tox-dialog__footer
  .tox-button.tox-button--secondary:not(:disabled):not(.disabled).active {
  background: #6e8791;
  border-color: #6a828b;
}
div.tox
  .tox-dialog__footer
  .tox-button.tox-button--secondary:not(:disabled):not(.disabled):active:focus,
div.tox
  .tox-dialog__footer
  .tox-button.tox-button--secondary:not(:disabled):not(.disabled).active:focus {
  box-shadow: 0 0 0 0.2rem rgba(139, 159, 167, 0.53);
}
div.tox .tox-dialog__footer .tox-button.tox-button--secondary:before {
  content: "\f00d";
}
div.tox
  .tox-dialog__footer
  .tox-button.tox-button--secondary:focus:not(:disabled) {
  background: #8b9fa7;
  border-color: #8b9fa7;
}
div.tox .tox-search-dialog .tox-form__group:not(:first-child) {
  flex: initial !important;
}
div.tox .tox-search-dialog .tox-dialog__footer-start button {
  padding: 0.25rem;
}
div.tox .tox-search-dialog .tox-dialog__footer-end button:before {
  content: "\f303" !important;
}
div.tox
  .tox-search-dialog
  .tox-dialog__footer-end
  button:nth-of-type(1):before {
  content: "\f002" !important;
}
div.tox .tox-dialog__title {
  line-height: calc(58px - 1px);
  font-size: 1.25rem;
  font-weight: bold;
  padding: 0 0 0 1rem;
  width: 100%;
  color: #2c363a;
}
div.tox .tox-tbtn {
  height: 28px;
}
div.tox .tox-tbtn:not(.tox-tbtn--select, .tox-split-button__chevron) {
  width: 32px;
}
div.tox .tox-button {
  line-height: 1.5;
}
div.tox .tox-label {
  color: #2c363a;
  padding-bottom: 0.25rem;
}
div.tox .tox-color-input > input,
div.tox .tox-listboxfield .tox-listbox--select,
div.tox .tox-textarea,
div.tox .tox-textfield {
  font-family: "Inter", Roboto, sans-serif !important;
  font-size: 14px;
  line-height: 1.5;
  color: #2c363a;
  border-radius: 0.25rem;
  min-height: 0;
  padding: 0.375rem 0.75rem;
}
div.tox .tox-color-input > input:focus,
div.tox .tox-listboxfield .tox-listbox--select:focus,
div.tox .tox-textarea:focus,
div.tox .tox-textfield:focus {
  border-color: #056dff;
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.25);
}
div.tox .tox-listbox__select-label {
  margin: 0;
}
div.tox .tox-color-input span {
  top: 5px;
}
div.tox .custom-switch {
  position: relative;
  font-size: 1rem;
  margin-top: 0.15rem;
}
div.tox .custom-switch .tox-checkbox__icons {
  display: none;
}
div.tox .custom-switch .tox-checkbox__label {
  margin: 0;
}
div.tox .image-selector {
  font-size: 1rem;
}
div.tox .image-selector button {
  color: #fff;
  background: #8b9fa7;
  border-color: #8b9fa7;
  padding: 0.5rem 0.75rem;
  line-height: 1.5;
}
div.tox .image-selector button:focus {
  background: #7c939c;
  border-color: #778e98;
  box-shadow: 0 0 0 0.2rem rgba(139, 159, 167, 0.5);
}
div.tox .image-selector button:hover {
  background: #7c939c;
  border-color: #778e98;
}
div.tox .image-selector button.disabled,
div.tox .image-selector button:disabled {
  background: #8b9fa7;
  border-color: #8b9fa7;
}
div.tox .image-selector button:not(:disabled):not(.disabled):active,
div.tox .image-selector button:not(:disabled):not(.disabled).active {
  background: #6e8791;
  border-color: #6a828b;
}
div.tox .image-selector button:not(:disabled):not(.disabled):active:focus,
div.tox .image-selector button:not(:disabled):not(.disabled).active:focus {
  box-shadow: 0 0 0 0.2rem rgba(139, 159, 167, 0.53);
}
div.tox .tox-form__controls-h-stack div:not(:last-child) {
  flex: 1;
}
div.tox .tox-collection__item-label {
  white-space: nowrap;
}
@media screen and (max-width: 480px) {
  div.tox .tox-dialog {
    margin: 0 !important;
    width: 100% !important;
    height: 100%;
    left: 0 !important;
    top: 0 !important;
    border-width: 0 !important;
  }
  div.tox .tox-dialog__header {
    background-color: #fdfdfd;
  }
  div.tox .tox-dialog__header .tox-button {
    display: none;
  }
  div.tox .tox-dialog__title {
    font-size: 1rem;
    text-align: center;
    padding: 0 1rem;
  }
  div.tox .tox-dialog__footer {
    background-color: #fdfdfd;
  }
  div.tox .tox-dialog__footer .tox-button {
    color: #2c363a !important;
    background: transparent !important;
    padding: 0.45rem;
    margin: 0 !important;
    border: 0;
    font-size: 90%;
  }
  div.tox .tox-dialog__footer .tox-button:before {
    display: block;
    float: none;
    width: 100%;
    margin: 0;
    line-height: 1.75;
    height: 1.75rem;
  }
  div.tox .tox-dialog__footer .tox-button:active,
  div.tox .tox-dialog__footer .tox-button:focus,
  div.tox .tox-dialog__footer .tox-button:hover {
    background: transparent;
    border: 0;
    box-shadow: none;
    color: #2c363a;
  }
  div.tox .tox-dialog__footer > div {
    justify-content: space-evenly;
    display: flex;
    width: 100%;
  }
  div.tox .tox-dialog__footer > div:empty {
    display: none;
  }
}
/*** Media file selector for TinyMCE ***/
.image-selector {
  padding: 1rem 0.5rem 10rem 0.5rem !important;
}
.image-selector.droptarget {
  border: 0.2rem dashed #d4dbde;
}
.image-selector.droptarget:after {
  margin-top: 2rem;
}
.image-selector form {
  position: absolute;
  top: 0;
}
.image-selector .attachmentslist {
  margin: 0;
  overflow-x: hidden;
  overflow-y: auto;
  height: 19.1em;
  padding: 0 !important;
}
.image-selector .attachmentslist li {
  padding: 0.25rem;
  cursor: pointer;
}
.image-selector .attachmentslist li:before {
  display: none;
}
.image-selector .attachmentslist li:hover,
.image-selector .attachmentslist li:focus {
  background: #e6f0ff;
}
.image-selector .attachmentslist li span.name {
  flex: 1;
  margin: auto;
  padding-left: 1rem;
  overflow: hidden;
  text-overflow: ellipsis;
}
.image-selector .attachmentslist li span.img {
  height: 80px;
  width: 80px;
  display: flex;
  border: 1px solid #f1f3f4;
  background: white;
  border-radius: 0.75rem;
  overflow: hidden;
}
.image-selector .attachmentslist li img {
  margin: auto;
}
html.layout-phone .image-selector .attachmentslist {
  height: auto;
}
/*** HTML editor widget ***/
.html-editor {
  position: relative;
  margin-bottom: 0.2rem;
}
.html-editor .editor-toolbar {
  position: absolute;
  left: 1px;
  top: 1px;
  right: 1px;
  border-radius: 0.25rem 0.25rem 0 0;
  border-bottom: 1px solid #ced4da;
  background-color: #f1f3f4;
}
.html-editor .editor-toolbar .mce-i-html {
  display: block;
  margin: 2px 2px 2px 4px;
  width: 34px;
  height: 28px;
  border-radius: 0.25rem;
  color: #222f3e;
}
.html-editor .editor-toolbar .mce-i-html:focus,
.html-editor .editor-toolbar .mce-i-html:hover {
  text-decoration: none;
  border-color: #e2e4e7;
  background-color: #dee0e2;
}
.html-editor .editor-toolbar .mce-i-html:before {
  content: "\f03e";
  margin: 0;
  width: 34px;
  line-height: 28px;
}
.html-editor .editor-toolbar .mce-i-html[disabled] {
  opacity: 0.7;
  cursor: not-allowed;
}
.html-editor.mailvelope .editor-toolbar,
.html-editor .tox-tinymce + .editor-toolbar {
  display: none;
}
.html-editor > .googie_edit_layer,
.html-editor > textarea {
  font-family: monospace;
  font-size: 13px;
  width: 100% !important;
  padding-top: 40px;
}
.html-editor > iframe {
  border-radius: 0.3rem;
  border: 1px solid #ced4da;
  min-height: 30em;
}
/*** GoogieSpell widget ***/
.googie_window {
  width: 16rem;
  height: auto;
}
.googie_edit_layer {
  font-family: monospace;
  padding: 0.5rem 0.75rem;
  border: 1px solid #ced4da;
  border-radius: 0.3rem;
  line-height: 1.5;
}
.googie_link {
  color: #ff5552;
  text-decoration: underline;
  cursor: pointer;
}
.googie_list li {
  min-width: 8rem;
  width: auto;
}
.googie_list li.googie_list_onhover {
  color: #fff;
  background-color: #056dff;
}
.googie_list li .googie_list_revert:before {
  content: "\f0e2";
}
.googie_list li .googie_add_to_dict:before {
  content: "\f0fe";
}
.googie_list input {
  display: inline-block;
  margin: 0.25rem 0.5rem;
}
/*** Login form ***/
.task-login #layout-content {
  width: 100%;
  display: block;
}
#login-form {
  margin: 0 auto;
  width: 100%;
  max-width: 480px;
  position: relative;
}
#login-form table,
#login-form tbody {
  display: block;
}
#login-form .row {
  margin-right: 0;
  margin-left: 0;
}
#rcmloginsubmit:before {
  display: none !important;
}
#login-footer {
  flex: 1;
  color: #737677;
}
#login-addon {
  position: absolute;
  bottom: 0;
  max-height: 30%;
  margin: 1rem !important;
  width: auto !important;
  overflow: auto;
}
@media screen and (min-width: 769px) {
  #login-addon {
    max-width: 768px;
    margin: auto !important;
    bottom: 1rem;
    left: 0;
    right: 0;
  }
}
body.task-error-login #layout #layout-menu,
body.task-error-login #layout #layout-content > .header {
  display: none;
}
/*** Addressbook UI ***/
#contactpic {
  width: 112px;
  height: 135px;
  border-radius: 0.5rem;
  overflow: hidden;
  display: table-cell;
  vertical-align: middle;
  text-align: center;
  background-color: #f4f4f4;
}
#contactpic img {
  max-width: 112px;
  max-height: 135px;
}
#contacthead .names {
  margin-bottom: 0.5rem;
}
#contacthead .names span.namefield {
  font-size: 1.5rem;
  font-weight: bold;
  line-height: 1.2;
}
#contacthead.readonly .source.row {
  color: #737677;
  font-size: 90%;
  margin-bottom: 0.25rem;
}
/*** Mail UI ***/
#message-header {
  margin-bottom: 1.25rem;
}
#message-header > .subject {
  font-size: 1.375rem;
  font-weight: 650;
  line-height: 1.25;
  color: #111827;
}
html.dark-mode #message-header > .subject {
  color: rgba(255, 255, 255, 0.94);
}
body.status-flagged #message-header > .subject:before {
  display: inline;
  float: none;
  content: "\f024";
  font-size: 1em;
  color: #ff5552;
}
#message-header > .subject a.extwin {
  text-decoration: none;
}
#message-header > .subject a.extwin:before {
  float: none;
  display: inline-block;
  font-size: 75%;
  line-height: 1.5;
  margin: 0;
  content: "\f360";
}
#message-header > .subject span.inner {
  display: none;
}
#message-header > .header {
  display: flex;
}
#message-header > .header img.contactphoto {
  margin: 0 1rem 0 0;
  border-radius: 50%;
  width: 4rem;
  height: 4rem;
  object-fit: cover;
  background: #f4f4f4;
}
#message-header .header-content {
  min-height: 4rem;
  flex: 1;
}
#message-header .header-content.details-view .header-summary {
  display: none;
}
#message-header .header-content.details-view .header-headers {
  display: initial;
}
#message-header .header-summary {
  margin-top: 0.5rem;
  color: #4b5563;
}
#message-header .header-summary > span {
  display: inline-block;
}
html.dark-mode #message-header .header-summary {
  color: rgba(255, 255, 255, 0.72);
}
#message-header .header-headers {
  display: none;
}
#message-header .header-headers .header-title {
  white-space: nowrap;
  color: #737677;
  font-weight: bold;
  padding-right: 1rem;
  vertical-align: top;
}
#message-header .header-links {
  margin-top: 0.5rem;
  color: #6b7280;
}
#message-header .header-links a {
  font-size: 90%;
  margin-right: 0.5rem;
  text-decoration: none;
  white-space: nowrap;
  display: inline-block;
  color: #6b7280;
}
html.dark-mode #message-header .header-links,
html.dark-mode #message-header .header-links a {
  color: rgba(255, 255, 255, 0.56);
}
#message-header .header-links a:before {
  height: 1.5rem;
  line-height: 1.3;
}
#message-header .header-links a.headers-details:before {
  content: "\f0e0";
}
#message-header .header-links a.headers-summary:before {
  content: "\f0e0";
  font-weight: 400;
}
#message-header .header-links a.headers-all:before {
  content: "\f05a";
}
#message-header .header-links a.html:before {
  content: "\f03e";
}
#message-header .header-links a.plain:before {
  content: "\f039";
}
#message-header .header-links a.zipdownload:before {
  content: "\f019";
}
.message-partheaders {
  padding: 0.25rem 0.5rem;
  margin: 0.5rem 0 -0.5rem 0;
  border-top: 1px solid #f4f4f4;
  background-color: #fcfcfc;
}
.message-partheaders table.headers-table {
  font-size: 90%;
  color: #737677;
}
.message-partheaders table.headers-table .header-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 8em;
  font-weight: bold;
  padding-right: 1rem;
  vertical-align: top;
}
.message-partheaders table.headers-table .subject {
  font-weight: bold;
}
.message-partheaders table.headers-table + .message-part,
.message-partheaders table.headers-table + .message-htmlpart {
  border-top: 0;
  margin: 0;
}
#message-content .attachmentslist:not(:empty) {
  margin-top: 1rem;
  margin-bottom: 1rem;
  padding: 0.75rem 1rem;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 10px;
  background: rgba(0, 0, 0, 0.025);
}
html.dark-mode #message-content .attachmentslist:not(:empty) {
  border-color: rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.055);
}
/* ------------------------------------------------------------------
 * Phase READ1 — Mail read page polish (A2-A2.1 follow-up)
 *
 * The read view (scoped INSIDE the #messagecontframe iframe) already has
 * solid subject / contact-photo / header-summary styles. Targets below
 * clean up loose ends: bare attachment-list rows, left/right column
 * layout, headers-table line spacing, message body max-width.
 *
 * All rules scope tightly (no app-shell, no mail list, no compose).
 * ------------------------------------------------------------------ */
#message-content {
  display: flex;
  flex-direction: column;
  gap: 0;
}
#message-content .leftcol {
  flex: 1 1 100%;
  min-width: 0;
}
#message-content .rightcol {
  flex: 1 1 100%;
  min-width: 0;
}
@media screen and (min-width: 769px) {
  #message-content {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 1.5rem;
  }
  #message-content .leftcol {
    flex: 0 0 240px;
    max-width: 260px;
  }
  #message-content .rightcol {
    flex: 1 1 auto;
    min-width: 0;
  }
}
/* Attachment row cards (read view) ---------------------------------------
 * The compose-side `.file-upload .attachmentslist li` styles already use
 * flex row cards. Mirror that pattern for the read view so both surfaces
 * share the same modern card visual. */
#message-content .attachmentslist li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.625rem 0.75rem;
  margin: 0.375rem 0 0;
  background-color: #f6f7f8;
  border: 1px solid #ebedef;
  border-radius: 0.5rem;
  transition:
    background-color 120ms ease,
    border-color 120ms ease;
}
#message-content .attachmentslist li:first-child {
  margin-top: 0;
}
#message-content .attachmentslist li:hover {
  background-color: rgba(5, 109, 255, 0.04);
  border-color: rgba(5, 109, 255, 0.18);
}
html.dark-mode #message-content .attachmentslist li {
  background-color: rgba(255, 255, 255, 0.045);
  border-color: rgba(255, 255, 255, 0.08);
}
html.dark-mode #message-content .attachmentslist li:hover {
  background-color: rgba(5, 109, 255, 0.10);
  border-color: rgba(5, 109, 255, 0.30);
}
#message-content .attachmentslist li a.filename {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  color: inherit;
  text-decoration: none;
}
#message-content .attachmentslist li a.filename:hover,
#message-content .attachmentslist li a.filename:focus-visible {
  text-decoration: underline;
}
#message-content .attachmentslist li .attachment-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
  flex: 0 1 auto;
}
#message-content .attachmentslist li .attachment-size {
  flex: 0 0 auto;
  color: #737677;
  font-size: 0.85em;
}
#message-content .attachmentslist li a.dropdown {
  flex: 0 0 auto;
  padding: 0 0.5rem;
  height: 28px;
  border-radius: 0.375rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #4b5563;
  transition: background-color 120ms ease;
}
#message-content .attachmentslist li a.dropdown:hover,
#message-content .attachmentslist li a.dropdown:focus-visible {
  background-color: rgba(0, 0, 0, 0.06);
  outline: none;
}
html.dark-mode #message-content .attachmentslist li a.dropdown {
  color: rgba(255, 255, 255, 0.72);
}
html.dark-mode #message-content .attachmentslist li a.dropdown:hover,
html.dark-mode #message-content .attachmentslist li a.dropdown:focus-visible {
  background-color: rgba(255, 255, 255, 0.08);
}
/* Headers-table (Details view) — tighter line spacing & muted labels ----- */
.message-partheaders table.headers-table {
  font-size: 0.875rem;
  line-height: 1.45;
}
.message-partheaders table.headers-table td {
  padding: 0.375rem 0.5rem;
  vertical-align: top;
}
.message-partheaders table.headers-table .header-title {
  max-width: 7em;
  color: #737677;
  font-weight: 600;
}
html.dark-mode .message-partheaders table.headers-table .header-title {
  color: rgba(255, 255, 255, 0.56);
}
/* Message body readability cap ----------------------------------------- */
#messagebody {
  font-family:
    "Inter",
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    Roboto,
    "Helvetica Neue",
    Arial,
    sans-serif;
}
.message-part,
.message-htmlpart {
  font-size: 0.9375rem;
}
.message-part p:last-child,
.message-htmlpart p:last-child {
  margin-bottom: 0;
}

/* ------------------------------------------------------------------
 * Phase READ2 — Mail read view visible polish
 *
 * Targets ONLY the opened-email read view:
 *   - the parent doc action toolbar (#layout-content .header[role="toolbar"])
 *   - the iframe read view (#messagecontframe) inner DOM:
 *     #message-header, .message-partheaders, #message-content,
 *     .message-part, .message-htmlpart, #messagebody, .attachmentslist
 *
 * Hard scope: no compose, no mail list, no folder sidebar, no settings,
 * no contacts, no CKEditor, no recipient fields, no heroicons.js, no ui.js.
 * No Roundcube core changes.
 * ------------------------------------------------------------------ */

/* === 1. Action toolbar (parent doc) =====================================
 * The read-view action bar lives in #layout-content > .header[role="toolbar"]
 * (NOT inside the iframe). Desktop keeps six primary actions only; the
 * .toolbar-menu-button remains the compact mobile trigger. Roundcube uses
 * .active to mean "enabled", so only aria-expanded represents an open menu. */
#layout-content > .header[role="toolbar"] {
  background-color: transparent !important;
  border-bottom: 1px solid var(--pixie-border-color, #ebedef);
  padding: 0 0.75rem;
  gap: 0.5rem;
  display: flex;
  align-items: center;
  height: 56px;
  position: relative;
}
html.dark-mode #layout-content > .header[role="toolbar"] {
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

#layout-content > .header[role="toolbar"] > ul#toolbar-menu {
  display: inline-flex !important;
  align-items: center !important;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 100%;
  gap: 7px;
}
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0;
}

#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a:first-child,
#layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 40px !important;
  min-width: 40px !important;
  height: 40px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 8px !important;
  position: relative;
  transition:
    background-color 120ms ease,
    color 120ms ease;
  color: #4b5563 !important;
  background-color: transparent !important;
  box-shadow: none !important;
  font-size: 17px !important;
  line-height: 1 !important;
}
html.dark-mode #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a,
html.dark-mode #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a:first-child,
html.dark-mode #layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button {
  color: rgba(255, 255, 255, 0.78) !important;
}

/* Force the FA ::before glyph to render at a consistent size. */
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a::before,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a:first-child::before {
  font-size: 17px !important;
  line-height: 1 !important;
  margin: 0 !important;
  padding: 0 !important;
  width: auto !important;
  height: auto !important;
  float: none !important;
  display: inline-block !important;
}
#layout-content > .header[role="toolbar"] .pixie-icon-toolbar {
  width: 22px;
  height: 22px;
  margin: 0;
}
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a.pixie-icon-control::before,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a.pixie-icon-control:first-child::before {
  content: none !important;
  display: none !important;
}

/* Hide the inner text label visually but keep it for screen readers. */
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a > .inner,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a:first-child > .inner {
  position: absolute !important;
  width: 1px !important; height: 1px !important;
  padding: 0 !important; margin: -1px !important;
  overflow: hidden !important; clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important; border: 0 !important;
}

/* .active means enabled in Roundcube, not selected/open. */
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a.active,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a:first-child.active,
#layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button.active {
  color: #4b5563 !important;
  background-color: transparent !important;
}

/* Hover stays neutral; keyboard focus and a genuinely open popup use blue. */
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a:hover,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a:first-child:hover,
#layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button:hover {
  background-color: rgba(0, 0, 0, 0.06) !important;
  color: #111827 !important;
}
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a:focus-visible,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a:first-child:focus-visible,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a[aria-expanded="true"],
#layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button:focus-visible,
#layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button[aria-expanded="true"] {
  background-color: rgba(5, 109, 255, 0.10) !important;
  color: #056dff !important;
  outline: none !important;
}
html.dark-mode #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a:hover,
html.dark-mode #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a:first-child:hover,
html.dark-mode #layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button:hover {
  background-color: rgba(255, 255, 255, 0.08) !important;
  color: #ffffff !important;
}

#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > a.disabled,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li > .dropbutton > a:first-child.disabled,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu > li.disabled {
  opacity: 0.35;
  pointer-events: none;
}

/* The split-button arrows are secondary variants, not separate actions. */
#layout-content > .header[role="toolbar"] a.toolbar-list-button,
#layout-content > .header[role="toolbar"] > ul#toolbar-menu a.dropdown {
  display: none !important;
}

/* Hide the whole action strip when every message action is disabled. */
#layout-content > .header[role="toolbar"]:not(:has(
  > ul#toolbar-menu a.reply:not(.disabled),
  > ul#toolbar-menu a.reply-all:not(.disabled),
  > ul#toolbar-menu a.forward:not(.disabled),
  > ul#toolbar-menu a.archive:not(.disabled),
  > ul#toolbar-menu a.delete:not(.disabled)
)) {
  display: none !important;
}

/* Non-phone layouts: six primary actions, ordered independently of
 * template order. Roundcube's layout class is authoritative here; a narrow
 * desktop window must not acquire the phone-only action trigger. */
html:not(.layout-phone) body #layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button.header-heroicon {
  display: none !important;
}
html:not(.layout-phone) #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li {
  display: none;
}
html:not(.layout-phone) #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li:has(> a.reply) {
  display: inline-flex;
  order: 1;
}
html:not(.layout-phone) #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li:has(> .dropbutton > a.reply-all) {
  display: inline-flex;
  order: 2;
}
html:not(.layout-phone) #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li:has(> .dropbutton > a.forward) {
  display: inline-flex;
  order: 3;
}
html:not(.layout-phone) #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li:has(> a.archive) {
  display: inline-flex;
  order: 4;
}
html:not(.layout-phone) #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li:has(> a.delete) {
  display: inline-flex;
  order: 5;
}
html:not(.layout-phone) #layout-content > .header[role="toolbar"] > ul#toolbar-menu > li:has(> a.more) {
  display: inline-flex;
  order: 6;
}

/* Mobile: the inline actions collapse into Roundcube's existing menu. */
html.layout-phone #layout-content > .header[role="toolbar"] {
  padding: 0 0.5rem;
  height: 52px;
}
html.layout-phone #layout-content > .header[role="toolbar"] > ul#toolbar-menu {
  display: none !important;
}
html.layout-phone #layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button {
  width: 40px !important;
  min-width: 40px !important;
  height: 40px !important;
  font-size: 16px !important;
}

/* List-selection controls are not message actions. Keep them out of the
 * opened-message popover while preserving the same controls in list view. */
html.layout-phone body:has(#messagelist tr.selected) .popover #toolbar-menu > li:has(> a.compose),
html.layout-phone body:has(#messagelist tr.selected) .popover #toolbar-menu > li:has(> a.select),
html.layout-phone body:has(#messagelist tr.selected) .popover #toolbar-menu > li:has(> a.threads),
html.layout-phone body:has(#messagelist tr.selected) .popover #toolbar-menu > li:has(> a.options),
html.layout-phone body:has(#messagelist tr.selected) .popover #toolbar-menu > li.spacer {
  display: none !important;
}
html.layout-phone body:has(#messagelist tr.selected) .popover #toolbar-menu > .list-options-flat {
  display: none !important;
}

/* === 2. Read-view iframe base ========================================== */
/* The preview iframe (`#messagecontframe`) is rendered with a generic
 * `watermark.html` src and then replaces its content with the real
 * message HTML when a row is selected. Tighten the iframe container
 * itself so the rendered message has clean side gutters. */
#iframe-wrapper {
  padding: 0 !important;
  background-color: var(--pixie-bg, #fdfdfd);
}
html.dark-mode #iframe-wrapper {
  background-color: #090A0B;
}

/* === 3. Message header (inside the iframe) ============================== */
/* Subject — strong hierarchy, no extra "Open in new window" text bleeding
 * into the visible reading area. */
#message-header > .subject {
  font-size: 1.5rem;
  font-weight: 650;
  line-height: 1.3;
  color: #111827;
  letter-spacing: -0.015em;
  margin-bottom: 1rem;
  padding: 0;
  border: 0;
}
#message-header > .subject .voice {
  position: absolute !important;
  width: 1px !important; height: 1px !important;
  overflow: hidden !important; clip: rect(0,0,0,0) !important;
  white-space: nowrap !important; border: 0 !important;
  padding: 0 !important; margin: -1px !important;
}
#message-header > .subject a.extwin {
  display: none !important;
}
html.dark-mode #message-header > .subject {
  color: rgba(255, 255, 255, 0.96);
}

/* Avatar — replace the default round-table SVG contactpic with an
 * initial-letter avatar. We hide the actual <img> SVG and inject a
 * gradient + monogram via ::before so the avatar stays purely CSS. */
#message-header > .header {
  align-items: center;
  padding: 0.75rem 0;
  border-top: 1px solid var(--pixie-border-color, #ebedef);
  border-bottom: 1px solid var(--pixie-border-color, #ebedef);
  margin-bottom: 1.25rem;
  display: flex;
  position: relative;
}
html.dark-mode #message-header > .header {
  border-color: rgba(255, 255, 255, 0.08);
}
#message-header > .header img.contactphoto {
  width: 44px !important;
  height: 44px !important;
  min-width: 44px;
  margin: 0 0.875rem 0 0 !important;
  border-radius: 50%;
  background: linear-gradient(135deg, #056dff 0%, #2d8bff 100%) !important;
  object-fit: cover;
  position: relative;
  display: block;
  /* Roundcube still renders the placeholder SVG inside. Hide the SVG
   * image entirely so only the gradient + ::before initial-letter shows. */
  color: transparent;
  overflow: hidden;
}
#message-header > .header img.contactphoto[src*="contactpic.svg"] {
  /* Replace the default silhouette SVG with a coloured gradient disc. */
  background-image: linear-gradient(135deg, #6366f1 0%, #06b6d4 100%) !important;
  box-shadow: 0 2px 8px rgba(99, 102, 241, 0.25);
}
/* Initial-letter badge — derive the first character of the sender from
 * the `.adr` text and render it centered inside the avatar circle. */
#message-header > .header img.contactphoto[src*="contactpic.svg"]::after {
  content: "";
}
#message-header > .header {
  position: relative;
}
#message-header > .header .header-content {
  min-height: 44px;
  flex: 1;
}
#message-header .header-summary {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  flex-wrap: wrap;
  color: #1f2937;
  font-size: 0.9375rem;
}
html.dark-mode #message-header .header-summary {
  color: rgba(255, 255, 255, 0.88);
}
#message-header .header-summary > span {
  display: inline-flex;
  align-items: baseline;
  gap: 0.375rem;
}
#message-header .header-summary .adr {
  font-weight: 600;
  color: inherit;
}
#message-header .header-summary .adr a {
  color: inherit;
  text-decoration: none;
}
#message-header .header-summary .adr a:hover {
  text-decoration: underline;
}
#message-header .header-summary .text-nowrap {
  color: #737677;
  font-size: 0.8125rem;
  font-weight: 500;
}
html.dark-mode #message-header .header-summary .text-nowrap {
  color: rgba(255, 255, 255, 0.56);
}
/* Hide the leading "From" voice label so only the contact name shows. */
#message-header .header-summary > span:first-child::before {
  content: "";
}
/* Header links (Details / Headers / Plain text) — pill-shaped actions. */
#message-header .header-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
  margin-top: 0.625rem;
}
#message-header .header-links a,
#message-header .header-links button {
  font-size: 0.8125rem;
  font-weight: 500;
  color: #4b5563;
  padding: 0.25rem 0.625rem;
  border-radius: 0.5rem;
  background-color: rgba(0, 0, 0, 0.04);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  margin: 0;
  transition:
    background-color 120ms ease,
    color 120ms ease;
}
#message-header .header-links a:hover,
#message-header .header-links a:focus-visible,
#message-header .header-links button:hover,
#message-header .header-links button:focus-visible {
  background-color: rgba(0, 0, 0, 0.08);
  color: #111827;
  outline: none;
}
html.dark-mode #message-header .header-links a,
html.dark-mode #message-header .header-links button {
  background-color: rgba(255, 255, 255, 0.06);
  color: rgba(255, 255, 255, 0.72);
}
html.dark-mode #message-header .header-links a:hover,
html.dark-mode #message-header .header-links button:hover {
  background-color: rgba(255, 255, 255, 0.12);
  color: #ffffff;
}
/* Hide the ::before icons on those header links — keep it text-only. */
#message-header .header-links a::before,
#message-header .header-links button::before {
  display: none !important;
}
#message-header .header-links .inner {
  display: inline !important;
}

/* === 4. Headers table (Details view) =================================== */
.message-partheaders {
  padding: 0.5rem 0.75rem !important;
  margin: 0.5rem 0 !important;
  border: 1px solid var(--pixie-border-color, #ebedef);
  border-radius: 0.625rem;
  background-color: rgba(0, 0, 0, 0.025);
}
html.dark-mode .message-partheaders {
  border-color: rgba(255, 255, 255, 0.08);
  background-color: rgba(255, 255, 255, 0.04);
}
.message-partheaders table.headers-table {
  font-size: 0.8125rem !important;
  line-height: 1.5 !important;
  width: 100%;
}
.message-partheaders table.headers-table td {
  padding: 0.375rem 0.5rem !important;
  vertical-align: top;
}
.message-partheaders table.headers-table .header-title {
  max-width: 7em !important;
  color: #737677 !important;
  font-weight: 600 !important;
  padding-right: 0.75rem !important;
}
html.dark-mode .message-partheaders table.headers-table .header-title {
  color: rgba(255, 255, 255, 0.56) !important;
}
.message-partheaders table.headers-table .subject {
  font-weight: 600;
}

/* === 5. Message body (inside the iframe) ================================ */
#messagebody {
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: #1f2937;
  background-color: transparent;
  padding: 0;
  word-wrap: break-word;
  overflow-wrap: anywhere;
}
html.dark-mode #messagebody {
  color: rgba(255, 255, 255, 0.92);
}
/* Plain text parts: monospace + soft grey padding for a quote-like look */
.message-part {
  padding: 1rem 1.25rem !important;
  font-size: 0.9375rem !important;
  line-height: 1.65 !important;
  border-radius: 0.625rem;
  background-color: rgba(0, 0, 0, 0.02);
  border: 1px solid var(--pixie-border-color, #ebedef);
  margin: 0.5rem 0;
  overflow-x: auto;
  max-width: 100%;
  word-break: break-word;
}
html.dark-mode .message-part {
  background-color: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.08);
}
/* HTML parts: clean white surface with subtle border, room for
 * external inline styles to render without breaking the reader. */
.message-htmlpart {
  padding: 1.25rem 1.5rem !important;
  font-size: 0.9375rem !important;
  line-height: 1.6 !important;
  background: #ffffff !important;
  background-color: #ffffff !important;
  border: 1px solid var(--pixie-border-color, #ebedef);
  border-radius: 0.625rem;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
  margin: 0.5rem 0;
  overflow-x: auto;
  max-width: 100%;
  word-break: break-word;
}
html.dark-mode .message-htmlpart {
  background-color: #090A0B;
  border-color: rgba(255, 255, 255, 0.06);
  box-shadow: none;
}
.message-part p,
.message-htmlpart p {
  margin: 0 0 0.75rem;
}
.message-part p:last-child,
.message-htmlpart p:last-child {
  margin-bottom: 0 !important;
}
.message-part strong,
.message-htmlpart strong {
  font-weight: 600;
}
.message-part a,
.message-htmlpart a {
  color: #056dff;
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-color: rgba(5, 109, 255, 0.45);
  transition: text-decoration-color 120ms ease;
  word-break: break-word;
}
.message-part a:hover,
.message-htmlpart a:hover {
  text-decoration-color: #056dff;
}
html.dark-mode .message-part a,
html.dark-mode .message-htmlpart a {
  color: #4d97ff;
  text-decoration-color: rgba(77, 151, 255, 0.45);
}
/* Headings inside messages */
.message-part h1, .message-part h2, .message-part h3, .message-part h4,
.message-htmlpart h1, .message-htmlpart h2, .message-htmlpart h3, .message-htmlpart h4 {
  font-weight: 650;
  color: inherit;
  letter-spacing: -0.01em;
  margin: 1.25rem 0 0.5rem;
}
.message-part h1, .message-htmlpart h1 { font-size: 1.5rem; }
.message-part h2, .message-htmlpart h2 { font-size: 1.25rem; }
.message-part h3, .message-htmlpart h3 { font-size: 1.0625rem; }
/* Lists */
.message-part ul, .message-part ol,
.message-htmlpart ul, .message-htmlpart ol {
  margin: 0 0 0.75rem;
  padding-left: 1.25rem;
}
.message-part li, .message-htmlpart li { margin-bottom: 0.25rem; }
/* Horizontal rule */
.message-part hr, .message-htmlpart hr {
  border: 0;
  border-top: 1px solid var(--pixie-border-color, #ebedef);
  margin: 1rem 0;
}
html.dark-mode .message-part hr,
html.dark-mode .message-htmlpart hr {
  border-top-color: rgba(255, 255, 255, 0.08);
}
/* Quote blocks — coloured left border, soft tint background. */
.message-part blockquote,
.message-htmlpart blockquote {
  margin: 0.75rem 0;
  padding: 0.5rem 0.875rem;
  border-left: 3px solid #056dff;
  border-right: 0;
  background-color: rgba(5, 109, 255, 0.05);
  color: inherit;
  border-radius: 0 0.375rem 0.375rem 0;
  font-size: 0.9375rem;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
  display: block;
}
html.dark-mode .message-part blockquote,
html.dark-mode .message-htmlpart blockquote {
  border-left-color: #4d97ff;
  background-color: rgba(77, 151, 255, 0.08);
}
.message-part blockquote blockquote,
.message-htmlpart blockquote blockquote {
  border-left-color: #6366f1;
  background-color: rgba(99, 102, 241, 0.05);
}
.message-part blockquote blockquote blockquote,
.message-htmlpart blockquote blockquote blockquote {
  border-left-color: #737677;
  background-color: rgba(0, 0, 0, 0.03);
}
.message-part blockquote span.blockquote-link,
.message-htmlpart blockquote span.blockquote-link {
  position: absolute;
  cursor: pointer;
  right: 0.75rem;
  min-width: auto;
  padding: 0.25rem 0.5rem;
  font-size: 0.75rem;
  text-align: center;
  color: #4b5563;
  background-color: rgba(0, 0, 0, 0.05);
  border: 0;
  border-radius: 0.375rem;
  line-height: 1;
}
html.dark-mode .message-part blockquote span.blockquote-link,
html.dark-mode .message-htmlpart blockquote span.blockquote-link {
  color: rgba(255, 255, 255, 0.72);
  background-color: rgba(255, 255, 255, 0.08);
}
.message-part blockquote span.blockquote-link::after,
.message-htmlpart blockquote span.blockquote-link::after {
  content: "\25BE";
  display: inline-block;
  margin: 0 0 0 0.25rem;
  font-size: 0.75em;
  font-family: inherit;
}
.message-part blockquote span.blockquote-link.collapsed::after,
.message-htmlpart blockquote span.blockquote-link.collapsed::after {
  content: "\25B4";
}
.message-part span.sig {
  color: #737677;
  font-size: 0.875rem;
  display: block;
  margin-top: 1.25rem;
}
html.dark-mode .message-part span.sig {
  color: rgba(255, 255, 255, 0.56);
}
/* Inline images */
.message-part img,
.message-htmlpart img {
  max-width: 100% !important;
  height: auto !important;
  border-radius: 0.375rem;
}
/* Force tables to never overflow the reader width. */
.message-part table,
.message-htmlpart table {
  max-width: 100% !important;
  width: auto !important;
  table-layout: fixed;
  word-wrap: break-word;
  overflow-wrap: anywhere;
}
.message-part table img,
.message-htmlpart table img {
  max-width: 100% !important;
  height: auto !important;
}
.message-part pre,
.message-htmlpart pre,
.message-part div.pre,
.message-htmlpart div.pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 0.8125rem;
  line-height: 1.5;
  background-color: rgba(0, 0, 0, 0.04);
  border: 1px solid var(--pixie-border-color, #ebedef);
  border-radius: 0.5rem;
  padding: 0.75rem 1rem;
  overflow-x: auto;
  max-width: 100%;
}
html.dark-mode .message-part pre,
html.dark-mode .message-htmlpart pre,
html.dark-mode .message-part div.pre,
html.dark-mode .message-htmlpart div.pre {
  background-color: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.08);
}
/* Roundcube signature block */
.message-part blockquote + br,
.message-htmlpart blockquote + br {
  display: block;
  margin-top: 0.5em;
}

/* === 6. Attachments (read view) ======================================== */
#message-content .leftcol {
  display: none;
  margin: 0;
}
#message-content .leftcol:has(> #attachment-list > li) {
  display: block;
  margin-bottom: 1rem;
}
/* A small "Attachments" heading appears when the layout's
 * role-region aria-labelledby element is present. We make it visible. */
#message-content .leftcol:has(> #attachment-list > li)::before {
  content: "Attachments";
  display: block;
  font-size: 0.6875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #737677;
  margin-bottom: 0.5rem;
  padding: 0 0.25rem;
}
html.dark-mode #message-content .leftcol:has(> #attachment-list > li)::before {
  color: rgba(255, 255, 255, 0.56);
}
#message-content .leftcol h2#aria-label-messageattachments {
  /* Hide the original voice heading since we render a CSS one */
  position: absolute !important;
  width: 1px !important; height: 1px !important;
  overflow: hidden !important; clip: rect(0,0,0,0) !important;
  white-space: nowrap !important; border: 0 !important;
  padding: 0 !important; margin: -1px !important;
}
#message-content .attachmentslist:not(:empty) {
  margin: 0 0 1rem;
  padding: 0;
  border: 0;
  background: transparent;
  border-radius: 0.625rem;
}
html.dark-mode #message-content .attachmentslist:not(:empty) {
  border: 0;
  background: transparent;
}
#message-content .attachmentslist li {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.625rem 0.875rem;
  margin: 0 0 0.375rem 0;
  background-color: #f6f7f8;
  border: 1px solid #ebedef;
  border-radius: 0.625rem;
  transition:
    background-color 120ms ease,
    border-color 120ms ease,
    transform 80ms ease;
}
#message-content .attachmentslist li:hover {
  background-color: #ffffff;
  border-color: rgba(5, 109, 255, 0.35);
}
html.dark-mode #message-content .attachmentslist li {
  background-color: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.08);
}
html.dark-mode #message-content .attachmentslist li:hover {
  background-color: rgba(255, 255, 255, 0.07);
  border-color: rgba(77, 151, 255, 0.40);
}
#message-content .attachmentslist li a.filename {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 0.625rem;
  color: inherit;
  text-decoration: none;
}
#message-content .attachmentslist li a.filename:hover .attachment-name,
#message-content .attachmentslist li a.filename:focus-visible .attachment-name {
  text-decoration: underline;
}
#message-content .attachmentslist li .attachment-name {
  font-weight: 600;
  color: #111827;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
  flex: 0 1 auto;
  font-size: 0.875rem;
}
html.dark-mode #message-content .attachmentslist li .attachment-name {
  color: rgba(255, 255, 255, 0.94);
}
#message-content .attachmentslist li .attachment-size {
  flex: 0 0 auto;
  color: #737677;
  font-size: 0.75rem;
  font-weight: 500;
}
#message-content .attachmentslist li a.dropdown {
  flex: 0 0 auto;
  padding: 0 0.5rem;
  height: 28px;
  border-radius: 0.375rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #4b5563;
  background-color: transparent;
  transition: background-color 120ms ease;
}
#message-content .attachmentslist li a.dropdown:hover,
#message-content .attachmentslist li a.dropdown:focus-visible {
  background-color: rgba(0, 0, 0, 0.06);
  outline: none;
  color: #111827;
}
html.dark-mode #message-content .attachmentslist li a.dropdown {
  color: rgba(255, 255, 255, 0.72);
}
html.dark-mode #message-content .attachmentslist li a.dropdown:hover {
  background-color: rgba(255, 255, 255, 0.10);
  color: #ffffff;
}

/* Mobile: attachments become full-width stack */
@media screen and (max-width: 480px) {
  #message-content .attachmentslist li {
    padding: 0.625rem 0.75rem;
    gap: 0.5rem;
    margin: 0 0 0.25rem 0;
  }
  #message-content .attachmentslist li .attachment-name {
    font-size: 0.8125rem;
  }
  #message-content .attachmentslist li .attachment-size {
    font-size: 0.6875rem;
  }
}

/* Compose-message action row inside the read view (appears via
 * <roundcube:container name="messageoptionlinks" />). No-op when absent. */
#messagebody.mailvelope iframe {
  min-height: 75vh;
}
.message-part,
.message-htmlpart {
  padding: 1rem 1.25rem;
  line-height: 1.55;
  color: #111827;
  background: transparent;
  position: relative;
}
html.dark-mode .message-part,
html.dark-mode .message-htmlpart {
  color: rgba(255, 255, 255, 0.9);
  background: transparent;
}
.message-part:not(:first-child),
.message-htmlpart:not(:first-child) {
  border-top: 1px solid #f4f4f4;
  margin-top: 0.5rem;
}
.message-part:last-child,
.message-htmlpart:last-child {
  margin-bottom: 0.5rem;
}
.message-part div.rcmBody,
.message-htmlpart div.rcmBody {
  margin: 0 auto !important;
  overflow: auto hidden;
}
.message-part blockquote,
.message-htmlpart blockquote {
  overflow: hidden;
  text-overflow: ellipsis;
  color: #002d6b;
  border-left: 2px solid #002d6b;
  border-right: 2px solid #002d6b;
  background-color: rgba(241, 243, 244, 0.5);
  margin: 2px 0;
  padding: 0 0.4em;
}
.message-part blockquote blockquote,
.message-htmlpart blockquote blockquote {
  color: #205a24;
  border-left: 2px solid #205a24;
  border-right: 2px solid #205a24;
}
.message-part blockquote blockquote blockquote,
.message-htmlpart blockquote blockquote blockquote {
  color: #eb0400;
  border-left: 2px solid #eb0400;
  border-right: 2px solid #eb0400;
}
.message-part blockquote span.blockquote-link,
.message-htmlpart blockquote span.blockquote-link {
  top: 0;
  cursor: pointer;
  right: 0.5rem;
  min-width: 4rem;
  padding: 0.2rem 0.25rem 0.2rem 0.5rem;
  font-size: 90%;
  text-align: center;
  color: #737677;
  background: #f1f3f4;
  border: 1px solid #d4dbde;
  border-radius: 0.3rem;
  line-height: 1;
  font-family: "Inter", Roboto, sans-serif;
}
.message-part blockquote span.blockquote-link:after,
.message-htmlpart blockquote span.blockquote-link:after {
  content: "\f107";
  display: inline-block;
  float: none;
  margin: 0;
  font-size: 90%;
}
.message-part blockquote span.blockquote-link.collapsed:after,
.message-htmlpart blockquote span.blockquote-link.collapsed:after {
  content: "\f106";
}
.message-part blockquote.blockquote-header,
.message-htmlpart blockquote.blockquote-header {
  text-overflow: ellipsis !important;
  padding-right: 5rem !important;
}
.message-part span.sig {
  color: #737677;
}
.message-part div.pre {
  font-family: monospace;
  font-size: 13px;
}
.message-part blockquote {
  display: inline-block;
  min-width: 100%;
}
.message-part blockquote + br {
  display: block;
  margin-top: 1em;
}
.message-htmlpart *,
.message-htmlpart ::after,
.message-htmlpart ::before {
  box-sizing: initial;
}
#compose-attachments {
  margin: 1rem 1rem 0 1rem;
}
.suspicious-address-warning:before {
  font-size: 1.25em;
  display: block;
  float: left;
  margin: 0 0.25rem 0 0;
  width: 1.18em;
  height: 1em;
  font-family: "Icons";
  font-style: normal;
  font-weight: 900;
  text-decoration: inherit;
  text-align: center;
  speak: none;
  font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  float: none;
  display: inline-block;
  content: "\f071";
  color: #ffd452;
}
#composestatusbar {
  opacity: 0.3;
  right: 2.5rem;
}
@media screen and (min-width: 769px) {
  #composestatusbar {
    display: none;
  }
}
#composestatusbar a.button {
  display: inline-block;
}
#composestatusbar a.button:before {
  line-height: 58px;
  font-size: 1.25rem !important;
}
/*** Settings UI ***/
.settings-default-icon tr > td.section::before,
.settings-default-icon li > a:before {
  content: "\f013";
}
/**
 * Roundcube webmail styles for the Elastic skin
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The contents are subject to the Creative Commons Attribution-ShareAlike
 * License. It is allowed to copy, distribute, transmit and to adapt the work
 * by keeping credits to the original authors in the README.md file.
 * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
 */
html.dark-mode {
  scrollbar-color: #003784 #4d6066;
  --pixie-panel: #090a0b;
  --pixie-bg: #090A0B;
  --pixie-text: #c5d1d3;
  --pixie-muted: #737677;
  --pixie-accent: #056dff;
  --pixie-accent-soft: rgba(5, 109, 255, 0.2);
  --pixie-border: color-mix(in lab, lab(14.16 0 0) 40%, transparent);
  --pixie-list-selected-bg: #36393d;
  --pixie-border-color: color-mix(in lab, lab(14.16 0 0) 40%, transparent);
}
html.dark-mode *,
html.dark-mode *::before,
html.dark-mode *::after {
  border-color: var(--pixie-border-color) !important;
}
html.dark-mode:not(.touch) ::-webkit-scrollbar-track {
  background-color: #4d6066;
}
html.dark-mode:not(.touch) ::-webkit-scrollbar-thumb {
  background-color: #003784;
}
html.dark-mode body {
  color: #c5d1d3;
  background-color: #090A0B;
}
html.dark-mode #logo {
  opacity: 1;
}
html.dark-mode #layout-list,
html.dark-mode #layout-content,
html.dark-mode #layout-sidebar,
html.dark-mode #layout > div > .header,
html.dark-mode #layout > div > .footer,
html.dark-mode .popup .listbox .footer,
html.dark-mode .menu.pagenav.pagenav-list,
html.dark-mode .menu.pagenav.pagenav-list + .navlist,
html.dark-mode .menu.pagenav.pagenav-list.expanded + .navlist {
  background-color: transparent;
  border-color: #4d6066;
}
html.dark-mode #layout-sidebar {
  background-color: #090a0b;
  transition-property:
    color, background-color, border-color, outline-color, text-decoration-color,
    fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(
    --tw-ease,
    var(--default-transition-timing-function)
  );
  transition-duration: var(--tw-duration, var(--default-transition-duration));
}
html.dark-mode #layout-list {
  background-color: #090a0b;
  transition-property:
    color, background-color, border-color, outline-color, text-decoration-color,
    fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(
    --tw-ease,
    var(--default-transition-timing-function)
  );
  transition-duration: var(--tw-duration, var(--default-transition-duration));
}
html.dark-mode #layout-content {
  background-color: #090a0b;
  border-left: 1px solid #4d6066;
  transition-property:
    color, background-color, border-color, outline-color, text-decoration-color,
    fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(
    --tw-ease,
    var(--default-transition-timing-function)
  );
  transition-duration: var(--tw-duration, var(--default-transition-duration));
}
html.dark-mode #layout-list #sections-table.listing.iconized tbody td.section {
  background-color: #090a0b;
  color: #a1a1aa;
}
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  tr:hover
  td.section,
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  tr.focused
  td.section,
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  tr.selected
  td.section,
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  td.section:focus,
html.dark-mode
  #layout-list
  #sections-table.listing.iconized
  tbody
  td.section:focus-visible {
  background-color: #27272a !important;
  color: #fafafa !important;
}
html.dark-mode #layout-sidebar > .header,
html.dark-mode #layout-list > .header {
  background-color: #090a0b;
  border-bottom-color: color-mix(in lab, lab(14.16 0 0) 40%, transparent);
}
html.dark-mode #layout > div > .footer {
  font-weight: normal;
}
html.dark-mode #layout > div > .header,
html.dark-mode #layout > div > .footer {
  color: unset;
}
html.dark-mode #layout > div > .header a.button,
html.dark-mode #layout > div > .footer a.button {
  color: #c5d1d3;
}
html.dark-mode #layout-menu {
  background: #090a0b;
  border-right: 1px solid;
  border-right-color: color-mix(in lab, lab(14.16 0 0) 40%, transparent);
}
html.dark-mode #layout-menu .popover-header,
html.dark-mode #layout-menu .special-buttons {
  background: transparent !important;
}
@media screen and (max-width: 480px) {
  html.dark-mode #layout-menu {
    border-left: 0;
  }
  html.dark-mode #layout-menu .popover-header {
    border-bottom: 1px solid #4d6066;
  }
}
html.dark-mode #layout-menu .special-buttons a:not(:focus) {
  background: transparent;
}
html.dark-mode.layout-phone #layout-menu {
  background: #090A0B;
}
html.dark-mode .searchbar {
  background-color: #090a0b;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
  border: 1px solid color-mix(in lab, lab(14.16 0 0) 40%, transparent);
  transition-property:
    color, background-color, border-color, outline-color, text-decoration-color,
    fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(
    --tw-ease,
    var(--default-transition-timing-function)
  );
  transition-duration: var(--tw-duration, var(--default-transition-duration));
}
html.dark-mode .searchbar form:before,
html.dark-mode .searchbar a,
html.dark-mode .searchbar input {
  color: unset;
}
html.dark-mode .searchbar a.selected {
  color: #41b849;
}
html.dark-mode #messagestack div {
  color: #c5d1d3;
}
html.dark-mode #messagestack div i.icon:before {
  color: #c5d1d3;
}
html.dark-mode .ui.alert.boxinformation,
html.dark-mode #messagestack .alert-info {
  background-color: #034199;
}
html.dark-mode .ui.alert.boxerror,
html.dark-mode #messagestack .alert-danger {
  background-color: #993331;
}
html.dark-mode .ui.alert.boxwarning,
html.dark-mode #messagestack .alert-warning {
  background-color: #997f31;
}
html.dark-mode .ui.alert.boxconfirmation,
html.dark-mode #messagestack .alert-success {
  background-color: #276e2c;
}
html.dark-mode #messagestack .loading {
  background-color: #374449;
}
html.dark-mode .ui.alert.boxinformation,
html.dark-mode .ui.alert.boxerror,
html.dark-mode .ui.alert.boxwarning,
html.dark-mode .ui.alert.boxconfirmation {
  color: #c5d1d3;
}
html.dark-mode .ui.alert.boxinformation i.icon:before,
html.dark-mode .ui.alert.boxerror i.icon:before,
html.dark-mode .ui.alert.boxwarning i.icon:before,
html.dark-mode .ui.alert.boxconfirmation i.icon:before {
  color: #c5d1d3;
}
html.dark-mode .ui.alert a:not(.btn) {
  color: #c5d1d3;
  text-decoration: underline;
}
html.dark-mode .iframe-loader {
  background-color: rgba(33, 41, 44, 0.9);
}
html.dark-mode .iframe-loader .spinner-border {
  color: #7d989c;
  border-color: currentColor #425457 currentColor currentColor;
}
html.dark-mode #taskmenu a,
html.dark-mode .menu.toolbar a {
  color: #c5d1d3;
}
html.dark-mode #taskmenu a.selected,
html.dark-mode .menu.toolbar a.selected {
  background-color: #36393d;
}
html.dark-mode pre,
html.dark-mode .menu.pagenav .pagenav-text,
html.dark-mode .menu.pagenav a {
  color: unset;
}
html.dark-mode .popover .menu li a[aria-haspopup]::after,
html.dark-mode .popover .menu li a[aria-haspopup]:hover::after {
  color: #a1a1aa;
}
html.dark-mode .popover .menu li a[aria-haspopup][aria-expanded="true"]::after,
html.dark-mode .popover .menu li a[aria-haspopup].pixie-submenu-open::after {
  color: #4d97ff;
}
@media screen and (max-width: 480px) {
  html.dark-mode #taskmenu a {
    border-color: #2c373a !important;
  }
  html.dark-mode #taskmenu a.selected {
    background: transparent;
  }
}
@media screen and (min-width: 481px) and (max-width: 1024px) {
  html.dark-mode #taskmenu a {
    width: 41px;
  }
}
@media screen and (min-width: 1025px) {
  html.dark-mode #taskmenu a {
    width: 77px;
  }
}
html.dark-mode.layout-small .popover,
html.dark-mode.layout-phone .popover {
  border-left: 1px solid #4d6066;
}
html.dark-mode.layout-small .popover .menu .dropbutton a.dropdown,
html.dark-mode.layout-phone .popover .menu .dropbutton a.dropdown {
  background: transparent;
}
html.dark-mode.layout-small .popover:not(.select-menu) .listing li:last-child,
html.dark-mode.layout-phone .popover:not(.select-menu) .listing li:last-child {
  border-color: #2c373a;
}
html.dark-mode.layout-small .popover-header,
html.dark-mode.layout-phone .popover-header {
  background: #090A0B;
  border-bottom: 1px solid #4d6066;
  color: unset;
}
html.dark-mode.layout-small .popover-overlay,
html.dark-mode.layout-phone .popover-overlay {
  background: rgba(0, 0, 0, 0.7);
}
html.dark-mode #taskmenu a:hover,
html.dark-mode .popupmenu .listing li > a:not(.disabled):hover,
html.dark-mode .menu.toolbar .dropbutton:not(.disabled):hover {
  background-color: transparent;
}
html.dark-mode .header a.button.icon:not(.disabled):not(.sidebar-menu):focus,
html.dark-mode .header a.button.icon:not(.disabled):not(.sidebar-menu):hover,
html.dark-mode .menu a:not(.disabled):focus,
html.dark-mode .menu a:not(.disabled):hover {
  background-color: transparent;
}
html.dark-mode #taskmenu a:hover,
html.dark-mode #taskmenu a:focus,
html.dark-mode #taskmenu a.selected {
  background-color: transparent !important;
}
html.dark-mode .menu.toolbar a.selected {
  color: #41b849;
  background: transparent;
}
html.dark-mode .menu.toolbar .dropbutton a.dropdown:hover {
  background-color: #42464b;
}
html.dark-mode .proplist li.with-sublist > a.dropdown,
html.dark-mode .listing tbody td,
html.dark-mode .listing tbody td a {
  color: #c5d1d3;
}
html.dark-mode .listing li ul,
html.dark-mode .listing tbody td,
html.dark-mode .listing li {
  border-color: #2c373a;
}
html.dark-mode .listing li.selected,
html.dark-mode .listing li.selected > a,
html.dark-mode .listing li.selected > div > a,
html.dark-mode .listing tr.selected td {
  color: hsl(var(--accent-foreground, 0 0% 98%));
}
html.dark-mode .listing li.selected ul {
  background-color: #090A0B;
}
html.dark-mode .listing li.selected ul div.treetoggle {
  color: #c5d1d3;
}
html.dark-mode .listing li.disabled,
html.dark-mode .listing tr.disabled td {
  color: #4d4f50;
}
html.dark-mode .listing li.droptarget > a,
html.dark-mode .listing tr.droptarget > td {
  background-color: #4d4d00;
}
html.dark-mode .messagelist {
  color: #c5d1d3;
}
html.dark-mode .messagelist tbody tr td {
  border-bottom: 1px solid #2c373a;
}
html.dark-mode .messagelist tbody tr:hover td {
  background-color: hsl(var(--accent, 240 3.7% 15.9%));
}
html.dark-mode .messagelist tbody tr.selected td {
  background-color: hsl(var(--accent, 240 3.7% 15.9%)) !important;
}
html.dark-mode .messagelist tr.unread td.subject span.subject {
  color: #fafafa;
}
html.dark-mode
  .messagelist
  tr.unread
  td.subject
  span.msgicon.status.unread:before {
  color: #ff5722;
}
html.dark-mode .messagelist td.subject span.subject {
  font-weight: 600;
  color: #a1a1a1;
}
html.dark-mode .messagelist tr:not(.flagged):not(.deleted) td.subject span.size,
html.dark-mode .messagelist tr:not(.flagged):not(.deleted) td.subject span.date,
html.dark-mode
  .messagelist
  tr:not(.flagged):not(.deleted)
  td.subject
  span.fromto {
  color: #737677;
}
html.dark-mode
  .messagelist
  tr:not(.flagged):not(.deleted)
  td.subject
  span.msgicon.status {
  color: #c5d1d3;
}
html.dark-mode .messagelist tr:not(.flagged):not(.deleted) span.flag {
  color: #c5d1d3;
}
html.dark-mode
  .messagelist
  tr:not(.flagged):not(.deleted).selected
  td.subject
  a,
html.dark-mode
  .messagelist
  tr:not(.flagged):not(.deleted).selected
  td.subject
  span.msgicon.status {
  color: #056dff;
}
html.dark-mode .messagelist tr.flagged:not(.deleted) td,
html.dark-mode .messagelist tr.flagged:not(.deleted) span.attachment span {
  color: #ff5552;
}
html.dark-mode .messagelist tr.deleted td span.flag,
html.dark-mode .messagelist tr.deleted td span.attachment span,
html.dark-mode .messagelist tr.deleted td.subject span.msgicon.status,
html.dark-mode
  .messagelist
  tr.deleted
  td.subject
  span.msgicon.status.unread:before,
html.dark-mode .messagelist tr.deleted td.subject span.subject a,
html.dark-mode .messagelist tr.deleted td.subject span.date,
html.dark-mode .messagelist tr.deleted td.subject span.fromto {
  color: #4d4f50;
}
html.dark-mode .messagelist span.attachment span {
  color: #737677;
}
html.dark-mode .folderlist li.mailbox .unreadcount {
  min-width: 1.5rem;
  max-width: 4rem;
  height: 1.5rem;
  padding: 0 0.55rem;
  line-height: 1;
  border-radius: 6px;
  box-sizing: border-box;
  background-color: #ff5722;
  color: #ffffff;
  font-weight: 600;
  font-size: 0.7rem;
  display: grid;
  place-items: center center;
  letter-spacing: 0;
  text-indent: 0;
  font-feature-settings: "tnum" 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-right: 0.75rem;
}
html.dark-mode .attachmentslist {
  background-color: #36393d;
  border: 0;
}
html.dark-mode .attachmentslist a {
  color: #c5d1d3;
}
html.dark-mode .attachmentslist li .attachment-name {
  color: #c5d1d3;
}
html.dark-mode .attachmentslist li .attachment-size {
  color: #737677;
}
html.dark-mode .btn {
  color: #c5d1d3;
}
html.dark-mode .btn:focus,
html.dark-mode .btn:hover {
  color: #e2e8e9;
}
html.dark-mode .btn:disabled {
  opacity: 0.5 !important;
}
html.dark-mode .btn.active,
html.dark-mode .btn:active {
  background-color: #ff5722 !important;
  border-color: #ff5722 !important;
  color: #ffffff !important;
  box-shadow: none !important;
}
html.dark-mode .btn-primary {
  background-color: #ff5722;
  border-color: #ff5722;
  color: #ffffff;
}
html.dark-mode .btn-primary:hover:not(:disabled),
html.dark-mode .btn-primary:focus {
  background-color: #ff4003;
  border-color: #ff4003;
  color: #ffffff;
}
html.dark-mode .btn-primary.active,
html.dark-mode .btn-primary:active {
  background-color: #ff4003;
  border-color: #ff4003;
  color: #ffffff;
}
html.dark-mode .btn-secondary {
  background-color: #4d6066;
  color: #e2e8e9;
}
html.dark-mode .btn-secondary:hover:not(:disabled) {
  background-color: #586e75;
}
html.dark-mode .btn-danger {
  background-color: #993331;
  color: #e2e8e9;
}
html.dark-mode .btn-danger:hover:not(:disabled) {
  background-color: #ac3937;
}
html.dark-mode .floating-action-buttons a.button {
  box-shadow: none;
  background: #002d6b;
}
html.dark-mode .custom-file-label,
html.dark-mode .form-control {
  background-color: #090A0B;
  color: #c5d1d3;
  transition-property:
    color, background-color, border-color, outline-color, text-decoration-color,
    fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(
    --tw-ease,
    var(--default-transition-timing-function)
  );
  transition-duration: var(--tw-duration, var(--default-transition-duration));
}
html.dark-mode .custom-file-label:not(.is-invalid),
html.dark-mode .form-control:not(.is-invalid) {
  border-color: #7c949c;
}
html.dark-mode .custom-file-label:focus,
html.dark-mode .form-control:focus {
  background-color: #2d2e32;
}
html.dark-mode .custom-file-label:focus:not(.is-invalid),
html.dark-mode .form-control:focus:not(.is-invalid) {
  color: #e2e7e9 !important;
  border-color: color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
  box-shadow: 0 0 0 0.2rem color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
}
html.dark-mode .custom-file-label::after {
  color: #c5d1d3;
  background-color: #36393d;
}
html.dark-mode .custom-select {
  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23c5d1d3' viewBox='0 0 4 5'%3e%3cpath d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e")
    no-repeat right 0.75rem center / 8px 10px;
}
html.dark-mode .custom-switch .custom-control-label::before {
  background-color: #4d6066;
}
html.dark-mode .custom-switch .custom-control-label::after {
  background-color: #c5d1d3;
}
html.dark-mode
  .custom-switch
  .custom-control-input:disabled
  ~ .custom-control-label {
  opacity: 0.4;
}
html.dark-mode
  .custom-switch
  .custom-control-input:checked
  ~ .custom-control-label::before {
  background-color: #ff5722;
}
html.dark-mode
  .custom-switch
  .custom-control-input:checked
  ~ .custom-control-label::after {
  background-color: #ffffff;
}
html.dark-mode input:disabled,
html.dark-mode select:disabled {
  opacity: 0.5;
}
html.dark-mode .multi-input:not(.is-invalid) > .content {
  border-color: #7c949c;
}
html.dark-mode .multi-input:not(.is-invalid) > .content.focused {
  border-color: #056dff;
}
html.dark-mode .input-group-text {
  color: #c5d1d3;
  background-color: #36393d;
  border-color: #7c949c;
}
html.dark-mode .input-group a:focus {
  border-color: #056dff;
  box-shadow: 0 0 0 0.2rem rgba(5, 109, 255, 0.25);
  z-index: 1;
}
html.dark-mode
  .searchoptions
  .input-group
  .input-group-prepend
  .input-group-text {
  background: transparent;
  border: 0;
  color: #737677;
}
html.dark-mode .searchoptions .input-group select.form-control {
  background-color: #090A0B;
  border-color: #7c949c;
  color: #c5d1d3;
  border-radius: 8px;
}
html.dark-mode .searchoptions .input-group select.form-control:focus,
html.dark-mode .searchoptions .input-group select.form-control:focus-visible {
  background-color: #2d2e32;
  color: #e2e7e9;
  border-color: #056dff;
}
html.dark-mode .form-control-plaintext {
  color: unset;
}
html.dark-mode .recipient-input.focus {
  color: #e2e7e9;
  background-color: #2d2e32;
  border-color: color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
  box-shadow: 0 0 0 0.2rem color-mix(in lab, lab(14.16 0 0) 40%, transparent) !important;
}
html.dark-mode .recipient-input a.button.icon,
html.dark-mode .recipient-input input {
  color: #c5d1d3;
}
html.dark-mode .recipient-input .recipient {
  background-color: color-mix(in lab, lab(14.16 0 0) 40%, transparent);
  border-color: color-mix(in lab, lab(14.16 0 0) 60%, transparent);
  color: #e2e7e9;
}
html.dark-mode .attachment-size-hint {
  color: #737677;
}
html.dark-mode .attachment-size-hint .hint {
  color: #737677;
}
html.dark-mode .file-upload .upload-form .upload-instructions {
  color: #fff;
}
html.dark-mode .file-upload .upload-form .upload-instructions .upload-text {
  color: #fff;
  text-decoration: none;
}
html.dark-mode
  .file-upload
  .upload-form
  .upload-instructions
  .upload-text:hover,
html.dark-mode
  .file-upload
  .upload-form
  .upload-instructions
  .upload-text:focus {
  color: #fff;
  text-decoration: underline;
  text-decoration-color: currentColor;
}
html.dark-mode .file-upload {
  border-color: #737677 !important;
  background-color: transparent;
}
html.dark-mode .file-upload .upload-form .upload-instructions {
  color: #c5d1d3;
}
html.dark-mode .file-upload .upload-form .upload-instructions .upload-icon {
  color: #388bff;
}
html.dark-mode .file-upload .upload-form a.btn,
html.dark-mode .file-upload .upload-form button {
  background: #056dff;
  border-color: #056dff;
  color: #fff;
}
html.dark-mode .file-upload .hint {
  color: #737677;
}
html.dark-mode .file-upload.droptarget.active {
  border-color: #056dff;
  background-color: rgba(5, 109, 255, 0.08);
}
html.dark-mode .file-upload.droptarget.hover {
  border-color: #056dff;
  background-color: rgba(5, 109, 255, 0.15);
}
html.dark-mode .file-upload .attachmentslist {
  background: transparent;
}
html.dark-mode .file-upload .attachmentslist li {
  background-color: oklch(26.9% 0 0);
  border-color: #737677 !important;
  box-shadow: none;
}
html.dark-mode .file-upload .attachmentslist li:hover {
  border-color: #737677 !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
}
html.dark-mode .file-upload .attachmentslist li:before {
  background-color: #737677 !important;
  color: #c5d1d3;
}
html.dark-mode .file-upload .attachmentslist li.image:before,
html.dark-mode .file-upload .attachmentslist li.jpg:before,
html.dark-mode .file-upload .attachmentslist li.jpeg:before,
html.dark-mode .file-upload .attachmentslist li.png:before,
html.dark-mode .file-upload .attachmentslist li.gif:before {
  color: #388bff;
}
html.dark-mode .file-upload .attachmentslist li a.filename .attachment-name {
  color: #c5d1d3;
}
html.dark-mode .file-upload .attachmentslist li a.filename .attachment-size {
  color: #737677;
}
html.dark-mode .file-upload .attachmentslist li a.delete,
html.dark-mode .file-upload .attachmentslist li a.cancelupload {
  color: #737677;
}
html.dark-mode .file-upload .attachmentslist li a.delete:hover,
html.dark-mode .file-upload .attachmentslist li a.cancelupload:hover {
  background-color: #737677;
  color: #d96666;
}
html.dark-mode .file-upload .attachmentslist li.uploading .attachment-name {
  color: #737677;
}
html.dark-mode .image-upload {
  background-color: #36393d;
}
html.dark-mode .image-upload a.button {
  background-color: rgba(33, 41, 44, 0.25);
}
html.dark-mode .formcontent.raweditor .CodeMirror {
  color: #c5d1d3;
  background-color: #090A0B;
  border-color: #7c949c;
}
html.dark-mode .formcontent.raweditor .CodeMirror-focused {
  background-color: #2d2e32;
  border-color: #056dff;
}
html.dark-mode .CodeMirror-selected,
html.dark-mode .CodeMirror-line::selection,
html.dark-mode .CodeMirror-line > span::selection,
html.dark-mode .CodeMirror-line > span > span::selection {
  background: #36393d;
}
html.dark-mode .CodeMirror-gutters {
  background-color: #090A0B;
  border: 0;
}
html.dark-mode .CodeMirror-activeline-background {
  background: #36393d;
}
html.dark-mode .skinselection .skinthumbnail {
  border-color: #7c949c;
  background: transparent;
}
html.dark-mode .html-editor .editor-toolbar {
  background-color: #36393d;
  border-color: #7c949c;
}
html.dark-mode .html-editor .editor-toolbar .mce-i-html {
  color: unset;
}
html.dark-mode .html-editor .editor-toolbar .mce-i-html:hover,
html.dark-mode .html-editor .editor-toolbar .mce-i-html:focus {
  background-color: #5a5f66;
  border-color: transparent;
}
html.dark-mode .tox.tox-tinymce {
  border-color: #7c949c;
}
html.dark-mode .tox .tox-toolbar {
  background-color: #36393d;
  border-color: #7c949c;
}
html.dark-mode .tox .tox-toolbar-overlord > div {
  background: url("data:image/svg+xml,%3Csvg height='33px' viewBox='0 0 40 33px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='32px' width='100' height='1' fill='%237c949c'/%3E%3C/svg%3E")
    #36393d;
}
html.dark-mode .tox .tox-pop.tox-pop--top:before,
html.dark-mode .tox .tox-pop.tox-pop--top:after {
  border-bottom-color: #8b9fa7;
}
html.dark-mode .tox .tox-pop__dialog {
  box-shadow: none;
  border-color: #8b9fa7;
}
html.dark-mode .tox .tox-tbtn,
html.dark-mode .tox .tox-split-button,
html.dark-mode .tox .tox-swatches__picker-btn {
  color: #c5d1d3;
}
html.dark-mode .tox .tox-tbtn svg,
html.dark-mode .tox .tox-split-button svg,
html.dark-mode .tox .tox-swatches__picker-btn svg {
  fill: #c5d1d3 !important;
}
html.dark-mode .tox .tox-tbtn:hover,
html.dark-mode .tox .tox-split-button:hover,
html.dark-mode .tox .tox-swatches__picker-btn:hover,
html.dark-mode .tox .tox-tbtn:focus,
html.dark-mode .tox .tox-split-button:focus,
html.dark-mode .tox .tox-swatches__picker-btn:focus {
  color: #c5d1d3;
  background: #5a5f66;
  box-shadow: none;
}
html.dark-mode .tox .tox-tbtn--enabled {
  background: #5a5f66;
}
html.dark-mode .tox .tox-button--naked:focus:not(:disabled),
html.dark-mode .tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {
  color: #d4ddde;
  background-color: #5a5f66;
  border-color: transparent;
}
html.dark-mode .tox .tox-button--naked:disabled {
  background: transparent;
  border: transparent;
}
html.dark-mode .tox .tox-dialog__header .tox-button--naked:hover {
  background: transparent !important;
}
html.dark-mode .tox .tox-selectfield select {
  background: transparent;
  color: #c5d1d3;
}
html.dark-mode .tox .tox-selectfield svg {
  fill: #c5d1d3;
}
html.dark-mode .tox .tox-color-input span::before {
  background-color: #c5d1d3;
}
html.dark-mode .tox .tox-toolbar__group:not(:last-of-type) {
  border-color: #7c949c;
}
html.dark-mode .tox .tox-dialog,
html.dark-mode .tox .tox-dialog__header,
html.dark-mode .tox .tox-dialog__body,
html.dark-mode .tox .tox-dialog__footer,
html.dark-mode .tox .tox-dialog__title {
  color: #c5d1d3;
  border-color: #4d6066;
  background-color: #090A0B;
}
html.dark-mode .tox .tox-textfield,
html.dark-mode .tox .tox-color-input > input,
html.dark-mode .tox .tox-label,
html.dark-mode .tox .tox-dialog__body-nav-item,
html.dark-mode .tox .tox-button--naked,
html.dark-mode .tox .tox-dialog__header .tox-button,
html.dark-mode .tox .tox-insert-table-picker__label {
  color: #c5d1d3;
}
html.dark-mode .tox .tox-dialog__footer .tox-button {
  background-color: #002d6b;
  color: #e2e8e9;
}
html.dark-mode .tox .tox-dialog__footer .tox-button:disabled {
  opacity: 0.5;
}
@media screen and (max-width: 480px) {
  html.dark-mode .tox .tox-dialog__footer .tox-button {
    color: #c5d1d3 !important;
  }
}
html.dark-mode .tox .tox-dialog__footer .tox-button:focus:not(:disabled) {
  background-color: #002d6b;
}
html.dark-mode .tox .tox-dialog__footer .tox-button:hover:not(:disabled) {
  background-color: #003784;
}
html.dark-mode .tox .tox-dialog__footer .tox-button.tox-button--secondary {
  background-color: #4d6066;
  color: #e2e8e9;
}
html.dark-mode
  .tox
  .tox-dialog__footer
  .tox-button.tox-button--secondary:focus:not(:disabled) {
  background-color: #4d6066;
}
html.dark-mode
  .tox
  .tox-dialog__footer
  .tox-button.tox-button--secondary:hover:not(:disabled) {
  background-color: #586e75;
}
html.dark-mode .tox .tox-dialog__body-nav-item--active {
  color: #056dff;
}
html.dark-mode .tox .tox-dialog-wrap__backdrop {
  background-color: rgba(0, 0, 0, 0.7);
}
html.dark-mode .tox .tox-menu {
  background-color: #090A0B;
  border-color: #8b9fa7;
  box-shadow: none;
}
html.dark-mode .tox .tox-collection__item-caret svg {
  fill: #c5d1d3;
}
html.dark-mode .tox .tox-collection__item {
  color: #c5d1d3;
}
html.dark-mode .tox .tox-collection__item:not(:last-child) {
  border-bottom: 1px solid #2c373a;
}
html.dark-mode .tox .tox-collection--grid .tox-collection__item {
  border: 0;
}
html.dark-mode .tox .tox-collection__item--active,
html.dark-mode
  .tox
  .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
  color: #c5d1d3;
  background-color: #36393d;
}
html.dark-mode .tox .tox-collection__item--enabled {
  color: #056dff;
  background-color: #36393d;
}
html.dark-mode .message-part {
  border-color: #4d6066;
}
html.dark-mode .message-part blockquote {
  background-color: #090A0B;
  border-color: #388bff;
  color: #388bff;
}
html.dark-mode .message-part blockquote span.blockquote-link {
  color: currentColor;
  background: #090A0B;
  border-color: currentColor;
}
html.dark-mode .message-part blockquote blockquote {
  color: #64c86b;
  border-color: #64c86b;
}
html.dark-mode .message-part blockquote blockquote blockquote {
  color: #ff8785;
  border-color: #ff8785;
}
html.dark-mode .message-part span.sig {
  color: #737677;
}
html.dark-mode .message-htmlpart {
  background-color: transparent;
  color: rgba(255, 255, 255, 0.9);
  padding: 1rem 1.25rem;
  margin-top: 0.5rem;
}
html.dark-mode #message-header .header-headers .header-title {
  color: #c5d1d3;
  font-weight: normal;
}
html.dark-mode .message-partheaders {
  background-color: #36393d;
  border: 0;
}
html.dark-mode .message-partheaders table.headers-table {
  color: #c5d1d3;
}
html.dark-mode .message-partheaders table.headers-table * {
  font-weight: normal;
}
html.dark-mode p.image-attachment {
  border-color: #4d6066;
  background-color: #36393d;
}
html.dark-mode p.image-attachment span {
  color: #737677;
}
html.dark-mode fieldset.image-attachment legend {
  color: #737677;
  border-color: #4d6066;
}
html.dark-mode #messagepartframe {
  background: #fff;
}
html.dark-mode .ui-widget {
  border-color: #4d6066;
}
html.dark-mode .ui-widget-overlay {
  background-color: rgba(0, 0, 0, 0.7);
}
html.dark-mode .ui-widget-header,
html.dark-mode .ui-widget-content {
  background-color: #090A0B;
}
html.dark-mode .ui-dialog .ui-dialog-titlebar {
  border-color: #4d6066;
}
html.dark-mode .ui-dialog .ui-dialog-title,
html.dark-mode .ui-dialog .ui-dialog-titlebar-close {
  color: #c5d1d3;
  background: transparent;
}
html.dark-mode .ui-dialog .ui-dialog-buttonpane {
  border-color: #4d6066;
}
html.dark-mode
  .ui-dialog
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  a.btn-link {
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  a.btn-link:focus {
  background: transparent;
}
@media screen and (max-width: 480px) {
  html.dark-mode
    .ui-dialog
    .ui-dialog-buttonpane
    .ui-dialog-buttonset
    button.btn-primary:not(.btn-danger),
  html.dark-mode
    .ui-dialog
    .ui-dialog-buttonpane
    .ui-dialog-buttonset
    button.btn-secondary {
    color: #c5d1d3;
  }
}
html.dark-mode .ui-datepicker .ui-datepicker-header {
  border-color: #4d6066;
}
html.dark-mode .ui-datepicker th {
  color: #737677;
  font-size: 80%;
  font-weight: normal;
}
html.dark-mode .ui-datepicker .ui-datepicker-prev,
html.dark-mode .ui-datepicker .ui-datepicker-next,
html.dark-mode .ui-datepicker .ui-state-default,
html.dark-mode .ui-datepicker.ui-widget-content .ui-state-default {
  color: #c5d1d3;
}
html.dark-mode .ui-datepicker .ui-state-highlight,
html.dark-mode .ui-datepicker.ui-widget-content .ui-state-highlight {
  color: #056dff;
  background-color: #36393d;
}
html.dark-mode .ui-datepicker .ui-datepicker-days-cell-over a {
  background-color: #4e5258;
}
html.dark-mode .ui-menu {
  background-color: #090A0B;
  border-color: #8b9fa7;
  box-shadow: none;
}
html.dark-mode .ui-menu .ui-menu-item {
  border-bottom: 1px solid #2c373a;
}
html.dark-mode .ui-menu .ui-state-active {
  background-color: #36393d !important;
}
html.dark-mode .minicolors-panel {
  box-shadow: none;
  border-color: #4d6066;
  background: #090A0B;
}
html.dark-mode ::placeholder,
html.dark-mode ::-webkit-input-placeholder,
html.dark-mode .listing-info,
html.dark-mode .listing span.secondary,
html.dark-mode .file-upload .hint,
html.dark-mode .contactlist span.email,
html.dark-mode #login-footer,
html.dark-mode #contacthead.readonly .source.row,
html.dark-mode .formcontent .hint {
  font-weight: normal;
  color: #737677;
}
html.dark-mode .popover {
  background-color: #090A0B;
  border-color: #8b9fa7;
  box-shadow: none;
}
html.dark-mode .popover .menu li.separator {
  background-color: transparent;
  color: #737677;
}
html.dark-mode .popover .menu ul + li.separator {
  border-top: 1px solid #2c373a;
}
html.dark-mode .popover-body {
  color: #c5d1d3;
}
html.dark-mode .bs-popover-auto[x-placement^="right"] > .arrow::after,
html.dark-mode .bs-popover-right > .arrow::after {
  border-right-color: #8b9fa7;
}
html.dark-mode .bs-popover-auto[x-placement^="left"] > .arrow::after,
html.dark-mode .bs-popover-left > .arrow::after {
  border-left-color: #8b9fa7;
}
html.dark-mode .bs-popover-auto[x-placement^="top"] > .arrow::after,
html.dark-mode .bs-popover-top > .arrow::after {
  border-top-color: #8b9fa7;
}
html.dark-mode .bs-popover-auto[x-placement^="bottom"] > .arrow::after,
html.dark-mode .bs-popover-bottom > .arrow::after {
  border-bottom-color: #8b9fa7;
}
html.dark-mode .listing-hover-menu {
  background-color: #090A0B;
  border-color: #4d6066;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}
html.dark-mode .listing-hover-menu a.button {
  color: #c5d1d3;
}
html.dark-mode .listing-hover-menu a.button:hover {
  background-color: rgba(255, 255, 255, 0.06);
}
html.dark-mode .listing-hover-menu a.icon-flag {
  color: #f43f5e;
}
html.dark-mode .listing-hover-menu a.icon-flag:hover {
  background-color: rgba(244, 63, 94, 0.14);
}
html.dark-mode .listing-hover-menu a.icon-trash {
  color: #fb7185;
}
html.dark-mode .listing-hover-menu a.icon-trash:hover {
  background-color: rgba(251, 113, 133, 0.14);
}
html.dark-mode .listing-hover-menu span.txt {
  color: #737677;
}
html.dark-mode .nav-tabs {
  border-color: #4d6066;
}
html.dark-mode .nav-tabs .nav-link {
  color: #c5d1d3;
  border-color: transparent;
  border-bottom-color: #4d6066;
}
html.dark-mode .nav-tabs .nav-link:hover {
  background: #090A0B;
  border-color: #4d6066;
  color: #c5d1d3;
}
html.dark-mode .nav-tabs .nav-link.active {
  background: #090A0B;
  border-color: #4d6066;
  border-bottom-color: transparent;
  color: #fff;
}
html.dark-mode .table {
  color: #c5d1d3;
}
html.dark-mode .table td,
html.dark-mode .table th,
html.dark-mode .table thead th {
  border-color: #4d6066;
}
html.dark-mode .table-widget {
  border-color: #4d6066;
}
html.dark-mode .table-widget > .footer {
  border-color: #4d6066;
}
html.dark-mode .table-widget table.options-table tr:last-child td {
  border-color: #4d6066;
}
html.dark-mode .table-widget table.options-table tr.selected td {
  background-color: #36393d;
  color: #c5d1d3;
}
html.dark-mode #rcmdraglayer {
  background-color: #090A0B;
  border: 1px solid #8b9fa7;
  box-shadow: none;
  color: #c5d1d3;
}
html.dark-mode .quota-widget {
  color: unset;
}
html.dark-mode .quota-widget .bar {
  border-color: #4d6066;
  background-color: #4d6066;
}
html.dark-mode .quota-info .root {
  color: #737677;
  background-color: transparent;
}
html.dark-mode img.contactphoto,
html.dark-mode #contactpic {
  background-color: #36393d !important;
}
html.dark-mode .pgpkeyimport div.key.revoked,
html.dark-mode .pgpkeyimport div.key.disabled {
  color: #4d4f50;
}
html.dark-mode .pgpkeyimport li.uid::before {
  opacity: 1;
}
html.dark-mode .ui-dialog:has(> .ui-dialog-content #listoptions-menu) {
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.6);
  background: #090A0B;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-titlebar {
  background: transparent;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-titlebar::before {
  background: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23FF5722'><path fill-rule='evenodd' d='M7.84 1.804A1 1 0 0 1 8.82 1h2.36a1 1 0 0 1 .98.804l.331 1.652a6.993 6.993 0 0 1 1.929 1.115l1.598-.54a1 1 0 0 1 1.186.447l1.18 2.044a1 1 0 0 1-.205 1.251l-1.267 1.113a7.047 7.047 0 0 1 0 2.228l1.267 1.113a1 1 0 0 1 .206 1.25l-1.18 2.045a1 1 0 0 1-1.187.447l-1.598-.54a6.993 6.993 0 0 1-1.929 1.115l-.33 1.652a1 1 0 0 1-.98.804H8.82a1 1 0 0 1-.98-.804l-.331-1.652a6.993 6.993 0 0 1-1.929-1.115l-1.598.54a1 1 0 0 1-1.186-.447l-1.18-2.044a1 1 0 0 1 .205-1.251l1.267-1.114a7.05 7.05 0 0 1 0-2.227L1.821 7.773a1 1 0 0 1-.206-1.25l1.18-2.045a1 1 0 0 1 1.187-.447l1.598.54A6.992 6.992 0 0 1 7.51 3.456l.33-1.652ZM10 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/></svg>");
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-title {
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content {
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content
  .col-form-label {
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content
  select.form-control {
  color: #c5d1d3;
  background-color: #1f2629;
  border-color: #4d6066;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content
  select.form-control:focus,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-content
  select.form-control:focus-visible {
  color: hsl(var(--accent-foreground, 0 0% 98%)) !important;
  background-color: hsl(240, 3.7%, 15.9%) !important;
  border-color: hsl(240, 3.7%, 15.9%) !important;
  box-shadow: 0 0 0 1px hsl(240, 3.7%, 15.9%) !important;
  border-radius: 0.5rem;
  outline: 0 !important;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu {
  background-color: #090A0B;
  border-color: #4d6066;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-header {
  background: transparent;
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a {
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a:hover {
  color: hsl(var(--accent-foreground, 0 0% 98%));
  background-color: hsl(240, 3.7%, 15.9%);
  box-shadow: 0 0 0 1px hsl(240, 3.7%, 15.9%);
  border-radius: 0.375rem;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a:focus,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a:focus-visible,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a:active {
  color: hsl(var(--accent-foreground, 0 0% 98%));
  background-color: hsl(240, 3.7%, 15.9%);
  box-shadow: 0 0 0 1px hsl(240, 3.7%, 15.9%);
  border-radius: 0.375rem;
  outline: 0;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected:hover,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected:focus,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected:focus-visible,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized
  li
  a.selected:active {
  color: hsl(var(--accent-foreground, 0 0% 98%));
  background-color: hsl(240, 3.7%, 15.9%);
  box-shadow: 0 0 0 1px hsl(240, 3.7%, 15.9%);
  border-radius: 0.375rem;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane {
  border-top-color: #4d6066;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.cancel {
  background: #dc2626;
  color: #fff;
  border-color: #dc2626;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.cancel:hover {
  background: #ef4444;
  border-color: #ef4444;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.mainaction {
  background: #ff5722;
  border-color: #ff5722;
  color: #fff;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #listoptions-menu)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.mainaction:hover {
  background: #ff4003;
  border-color: #ff4003;
}
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li {
  margin: 2px 4px;
}
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li
  a,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li
  a,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li
  a {
  padding: 0.3rem 0.625rem;
}
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li
  a:before,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li
  a:before,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li
  a:before {
  content: none !important;
  width: 0;
  margin: 0;
}
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li
  a,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li
  a,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li
  a {
  color: #a1a1aa;
}
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li
  a:hover,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li
  a:hover,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li
  a:hover {
  color: #fafafa;
  background-color: hsl(240, 3.7%, 15.9%);
  box-shadow: 0 0 0 1px hsl(240, 3.7%, 15.9%);
  border-radius: 6px;
  outline: 0;
}
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectsearch"]
  li
  a.selected,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selects_"]
  li
  a.selected,
html.dark-mode
  .popover.select-menu
  .popover-body
  .listing.selectable.iconized[data-ident^="selectfolderlist-"]
  li
  a.selected {
  color: #fafafa;
  background-color: hsl(240, 3.7%, 15.9%);
  box-shadow: 0 0 0 1px hsl(240, 3.7%, 15.9%);
  border-radius: 6px;
}
html.dark-mode .ui-dialog:has(> .ui-dialog-content #recipient-dialog) {
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.6);
  background: #090A0B;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-titlebar {
  background: transparent;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-titlebar::before {
  background: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23ffffff'><path d='M7 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM14.5 9a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM1.615 16.428a1.224 1.224 0 0 1-.569-1.175 6.002 6.002 0 0 1 11.908 0c.058.467-.172.92-.57 1.174A9.953 9.953 0 0 1 7 18a9.953 9.953 0 0 1-5.385-1.572ZM14.5 16h-.106c.07-.297.088-.611.048-.933a7.47 7.47 0 0 0-1.588-3.755A4.502 4.502 0 0 1 17.5 16a2.5 2.5 0 0 1-2.5 2.5h-.5Z'/></svg>");
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-title {
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content {
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar {
  border-color: #4d6066;
  background: #1f2629;
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar
  form:before,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar
  a,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar
  input {
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .searchbar
  input {
  background: transparent;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .scroller {
  border-color: #4d6066;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li
  > a,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  tr
  td {
  color: #fff;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li
  > a:hover,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  tr
  td:hover,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li
  > a:focus,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  tr
  td:focus {
  background-color: rgba(255, 255, 255, 0.08);
  color: #fff;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .treelist
  li
  > a:before,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .contactlist
  tr
  td:before {
  color: #fff;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav {
  border-color: #4d6066;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  a {
  color: #737677;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  a:hover,
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-content
  #recipient-dialog
  .pagenav
  a:focus {
  background-color: rgba(255, 255, 255, 0.06);
  color: #c5d1d3;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane {
  border-top-color: #4d6066;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.cancel {
  background: #dc2626;
  color: #fff;
  border-color: #dc2626;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.cancel:hover {
  background: #ef4444;
  border-color: #ef4444;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.mainaction {
  background: #ff5722;
  border-color: #ff5722;
  color: #fff;
}
html.dark-mode
  .ui-dialog:has(> .ui-dialog-content #recipient-dialog)
  .ui-dialog-buttonpane
  .ui-dialog-buttonset
  button.mainaction:hover {
  background: #ff4003;
  border-color: #ff4003;
}

/* ------------------------------------------------------------------
 * Phone-only control ownership
 *
 * Roundcube's layout class, not viewport width or touch capability, is
 * authoritative. Hide these controls before layout JS and on every
 * non-phone task so they never flash, overlap, or reserve desktop width.
 * ------------------------------------------------------------------ */
html:not(.layout-phone) a.task-menu-button,
html:not(.layout-phone) a.back-sidebar-button.folders,
html:not(.layout-phone) a.back-list-button,
html:not(.layout-phone) a.toolbar-menu-button,
html:not(.layout-phone) #layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button,
html:not(.layout-phone) #layout-menu .popover-header a.cancel,
html:not(.layout-phone) .popover:not(.select-menu) .popover-header > a.back,
html:not(.layout-phone) .popover:not(.select-menu) .popover-header > a.cancel {
  display: none !important;
  width: 0 !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

html.layout-phone a.task-menu-button,
html.layout-phone a.back-sidebar-button.folders,
html.layout-phone a.back-list-button,
html.layout-phone a.toolbar-menu-button,
html.layout-phone #layout-content > .header[role="toolbar"] > a.button.icon.toolbar-menu-button,
html.layout-phone #layout-menu .popover-header a.cancel {
  display: inline-flex !important;
}

html.layout-phone .popover:not(.select-menu) .popover-header > a.back,
html.layout-phone .popover:not(.select-menu) .popover-header > a.cancel {
  display: inline-flex !important;
}

/* The selected task class is server-rendered. Give it its final color before
 * the blocking icon owner adds enhancement classes, so first paint and the
 * enhanced state are identical on every task. */
#taskmenu a.selected {
  color: var(--pixie-ui-accent) !important;
  transition: none !important;
}

/* ------------------------------------------------------------------
 * Phase ICON2.3 — normalized phone menus
 * ------------------------------------------------------------------
 * Every phone action menu opens as a side drawer anchored to its
 * originating side:
 *
 *   - Left-side triggers: app drawer (#layout-menu), folder drawer,
 *     folder actions (left sidebar).
 *   - Right-side triggers: opened-message action drawer, More, Mark,
 *     Move, Copy, Reply-all, Forward, Select, Threads, Options.
 *
 * Each menu uses the same shell (272px wide, 100dvh tall, no rounded
 * floating-modal appearance). Nested menus inherit the parent side
 * because the body holds the menu ID for the entire drawer stack.
 *
 * DO NOT use left: 50% / translateX(-50%) / top inset / centered modal
 * positioning.
 */

/* Base shell: 272px wide, 100dvh tall, no rounded floating-modal. Sides
 * are then decided by the per-menu rules below. */
html.layout-phone .popover:not(.select-menu):not(#layout-menu) {
  position: fixed !important;
  width: 272px !important;
  max-width: min(272px, 86vw) !important;
  min-width: 272px !important;
  height: 100dvh !important;
  max-height: 100dvh !important;
  margin: 0 !important;
  transform: none !important;
  box-sizing: border-box;
  overflow: hidden;
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--pixie-menu-surface) !important;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.24) !important;
}

/* Bootstrap's popover manager sets a default `placement: bottom` and
 * computes absolute offsets relative to the trigger. We want a flat
 * drawer that ignores those offsets. The right-side and left-side rules
 * below set the exact inset for each group. */
html.layout-phone .popover:not(.select-menu):not(#layout-menu).bs-popover-bottom,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).bs-popover-top,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).bs-popover-left,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).bs-popover-right,
html.layout-phone .popover:not(.select-menu):not(#layout-menu).radix-popper {
  top: 0 !important;
  bottom: 0 !important;
  margin: 0 !important;
  transform: none !important;
  width: 272px !important;
  max-width: min(272px, 86vw) !important;
  height: 100dvh !important;
  max-height: 100dvh !important;
}

/* LEFT-side drawers — anchored to x=0 with a right-side border. */
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#mailboxoptions-menu) {
  inset: 0 auto 0 0 !important;
  left: 0 !important;
  right: auto !important;
  border-left: 0 !important;
  border-right: 1px solid var(--pixie-menu-border) !important;
}

/* RIGHT-side drawers — anchored to x=100vw-272 with a left-side border.
 * Each :has() selector is the menu ID Bootstrap moved into this popover. */
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#toolbar-menu),
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#message-menu),
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#markmessage-menu),
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#replyall-menu),
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#forward-menu),
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#folder-selector),
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#listselect-menu),
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#threadselect-menu),
html.layout-phone .popover:not(.select-menu):not(#layout-menu):has(#listoptions-menu) {
  inset: 0 0 0 auto !important;
  left: auto !important;
  right: 0 !important;
  border-right: 0 !important;
  border-left: 1px solid var(--pixie-menu-border) !important;
}

/* Page behind the drawer is dimmed and locked from scrolling, matching the
 * app-drawer overlay. Bootstrap already inserts `.popover-overlay`; we just
 * need to keep it from scrolling the page content. */
html.layout-phone body.popover-open {
  overflow: hidden !important;
}

html.layout-phone .popover:not(.select-menu) .popover-header {
  height: 54px;
  min-height: 54px;
  box-sizing: border-box;
  padding: 0 10px;
  border-bottom: 1px solid var(--pixie-menu-border);
  border-radius: 0;
  color: var(--pixie-menu-foreground);
  font-family: Inter, Roboto, sans-serif;
  font-size: 16px;
  font-weight: 600;
  line-height: 54px;
}

html.layout-phone .popover:not(.select-menu) .popover-body {
  min-width: 0;
  box-sizing: border-box;
  padding: 6px 0 !important;
  overflow-x: hidden;
}

/* Nested phone popovers stack on top of the parent popover. The child
 * popover becomes the interactive layer; the parent remains in the DOM
 * but is fully covered and inert. This prevents accidental clicks on
 * parent rows while the child drawer is open. */
html.layout-phone .popover:not(.select-menu):not(#layout-menu).show {
  z-index: 1300 !important;
}
html.layout-phone .popover:not(.select-menu):not(#layout-menu).show ~ .popover:not(.select-menu).show {
  z-index: 1301 !important;
}
html.layout-phone .popover:not(.select-menu):not(#layout-menu).show ~ .popover:not(.select-menu).show ~ .popover:not(.select-menu).show {
  z-index: 1302 !important;
}

html.layout-phone .popover:not(.select-menu) .popupmenu,
html.layout-phone .popover:not(.select-menu) ul.menu,
html.layout-phone .popover:not(.select-menu) ul.menu > li {
  width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* Direct action rows reserve all three columns even when no chevron exists. */
html.layout-phone .popover:not(.select-menu) ul.menu > li > a {
  display: grid !important;
  grid-template-columns: 20px minmax(0, 1fr) 16px;
  align-items: center;
  width: 100% !important;
  min-width: 0 !important;
  min-height: 46px !important;
  height: 46px !important;
  box-sizing: border-box;
  padding: 0 14px !important;
  column-gap: 12px !important;
  color: var(--pixie-menu-foreground);
  background: transparent !important;
  border: 0 !important;
  border-radius: 6px !important;
  box-shadow: none !important;
  outline: 0;
  font-family: Inter, Roboto, sans-serif;
  font-size: 14px !important;
  font-weight: 500;
  line-height: 1.25 !important;
  text-align: left;
}

html.layout-phone .popover:not(.select-menu) ul#toolbar-menu > li > a,
html.layout-phone .popover:not(.select-menu) ul#toolbar-menu.radix-nav > li > a,
html.layout-phone .popover:not(.select-menu) ul.menu.toolbar > li > a {
  padding: 0 14px !important;
  gap: 12px !important;
}

html.layout-phone .popover:not(.select-menu) #folder-selector ul.menu > li > a {
  padding: 0 14px !important;
  gap: 12px !important;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > a.pixie-icon-control {
  padding: 0 14px !important;
  gap: 12px !important;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > a::before {
  grid-column: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px !important;
  height: 20px !important;
  margin: 0 !important;
  padding: 0 !important;
  font-size: 20px;
  line-height: 20px;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > a > .inner,
html.layout-phone .popover:not(.select-menu) ul.menu > li > a > span:not(.heroicon-host) {
  grid-column: 2;
  min-width: 0;
  margin: 0 !important;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > a::after,
html.layout-phone .popover:not(.select-menu) ul.menu > li > a > .pixie-icon-chevron {
  grid-column: 3;
  justify-self: end;
  width: 16px !important;
  height: 16px !important;
  margin: 0 !important;
  padding: 0 !important;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > a::after {
  font-size: 16px;
  line-height: 16px;
}

html.layout-phone .popover:not(.select-menu) .list-options-flat a:has(> .pixie-icon-chevron)::after {
  content: none !important;
  display: none !important;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > a > .pixie-icon-menu,
html.layout-phone .popover:not(.select-menu) ul.menu > li > a > .heroicon-host,
html.layout-phone .popover:not(.select-menu) ul.menu > li > a > .heroicon-host > svg {
  grid-column: 1;
  width: 20px !important;
  height: 20px !important;
  margin: 0 !important;
}

/* Split command/submenu rows keep separate click behavior but share one visual
 * row. The wrapper owns hover/active/focus; both child anchors stay clear. */
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 16px;
  align-items: center;
  width: 100% !important;
  min-width: 0 !important;
  min-height: 46px;
  height: 46px;
  box-sizing: border-box;
  padding: 0 14px;
  column-gap: 12px;
  background: transparent !important;
  border: 0 !important;
  border-radius: 6px;
  box-shadow: none !important;
  outline: 0;
}

html.layout-phone .popover:not(.select-menu) ul#toolbar-menu > li > .dropbutton,
html.layout-phone .popover:not(.select-menu) ul#toolbar-menu.radix-nav > li > .dropbutton {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 16px !important;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a:first-child {
  display: grid !important;
  grid-template-columns: 20px minmax(0, 1fr);
  align-items: center;
  width: 100% !important;
  min-width: 0 !important;
  height: 46px !important;
  padding: 0 !important;
  column-gap: 12px !important;
  color: inherit !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  outline: 0 !important;
  font-size: 14px !important;
  font-weight: 500;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a.dropdown {
  display: inline-flex !important;
  align-items: center;
  justify-content: center !important;
  width: 16px !important;
  min-width: 16px !important;
  height: 46px !important;
  padding: 0 !important;
  color: inherit !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  outline: 0 !important;
}

html.layout-phone .popover:not(.select-menu) ul#toolbar-menu .dropbutton > a.dropdown {
  width: 16px !important;
  min-width: 16px !important;
  padding: 0 !important;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a.dropdown::before,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a.dropdown::after {
  margin: 0 !important;
}

/* One visual interaction target: children never paint a second pill. */
html.layout-phone .popover:not(.select-menu) ul.menu > li > a:not(.disabled):hover,
html.layout-phone .popover:not(.select-menu) ul.menu > li > a[aria-expanded="true"],
html.layout-phone .popover:not(.select-menu) ul.menu > li > a.pixie-submenu-open,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton:hover,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton:has(> a[aria-expanded="true"]) {
  color: hsl(var(--accent-foreground)) !important;
  background: hsl(var(--accent)) !important;
  border: 0 !important;
  box-shadow: none !important;
  outline: 0;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > a:focus-visible,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton:has(> a:focus-visible) {
  color: hsl(var(--accent-foreground)) !important;
  background: hsl(var(--accent)) !important;
  border: 0 !important;
  box-shadow: inset 0 0 0 2px hsl(var(--ring)) !important;
  outline: 0 !important;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > a > svg,
html.layout-phone .popover:not(.select-menu) ul.menu > li > a > span,
html.layout-phone .popover:not(.select-menu) ul.menu > li > a > .pixie-icon-chevron,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a:hover,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a:focus,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a:active {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

html.layout-phone .popover:not(.select-menu) .pixie-icon-chevron,
html.layout-phone .popover:not(.select-menu) .dropbutton > a.dropdown::before {
  pointer-events: none;
}

/* Single unified submenu chevron across every phone drawer: Heroicons
 * solid chevron-right, 16×16, identical SVG and SVG attrs. Suppress the
 * legacy FontAwesome ::after glyph on every anchor that carries a
 * Heroicons chevron child so only one chevron is ever visible. */
html.layout-phone .popover:not(.select-menu) .pixie-icon-chevron {
  width: 16px !important;
  height: 16px !important;
  margin: 0 !important;
  padding: 0 !important;
  justify-self: end;
  align-self: center;
  display: inline-block;
  vertical-align: middle;
  flex-shrink: 0;
}

html.layout-phone .popover:not(.select-menu) ul.menu > li > a::after,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a::after,
html.layout-phone .popover:not(.select-menu) ul.menu > li > .dropbutton > a::before {
  content: none !important;
  display: none !important;
}

/* Mobile app drawer uses the established neutral folder-row treatment rather
 * than the theme accent. Logout keeps its destructive red foreground. */
html.layout-phone #taskmenu a {
  display: grid !important;
  grid-template-columns: 20px minmax(0, 1fr) 16px;
  align-items: center;
  width: 100% !important;
  min-width: 0 !important;
  min-height: 46px;
  height: 46px;
  box-sizing: border-box;
  padding: 0 14px !important;
  column-gap: 12px;
  border: 0 !important;
  border-radius: 6px;
  box-shadow: none !important;
  outline: 0;
}

html.layout-phone #taskmenu a > .pixie-icon-rail {
  grid-column: 1;
  width: 20px !important;
  height: 20px !important;
  margin: 0 !important;
}

html.layout-phone #taskmenu a::after {
  grid-column: 2;
  margin: 0;
}

html.layout-phone #taskmenu a.pixie-icon-control:hover,
html.layout-phone #taskmenu a.pixie-icon-control:focus,
html.layout-phone #taskmenu a.pixie-icon-control.selected,
html.layout-phone #taskmenu a.pixie-icon-control.selected:hover,
html.layout-phone #taskmenu a.pixie-icon-control.selected:focus {
  color: var(--pixie-folder-row-active-fg) !important;
  background: var(--pixie-folder-row-active-bg) !important;
  border: 0 !important;
  box-shadow: none !important;
  outline: 0;
}

html.layout-phone #taskmenu a.pixie-icon-control:focus-visible {
  color: var(--pixie-folder-row-active-fg) !important;
  background: var(--pixie-folder-row-active-bg) !important;
  box-shadow: inset 0 0 0 2px hsl(var(--ring)) !important;
  outline: 0 !important;
}

html.layout-phone #taskmenu a.logout.pixie-icon-control,
html.layout-phone #taskmenu a.logout.pixie-icon-control:hover,
html.layout-phone #taskmenu a.logout.pixie-icon-control:focus,
html.layout-phone #taskmenu a.logout.pixie-icon-control:focus-visible {
  color: #ff5552 !important;
}

/* ------------------------------------------------------------------
 * COMPOSE-M1 — stable phone header and single-owner action drawer
 * ------------------------------------------------------------------ */

/* Roundcube converts #messagetoolbar into a direct-child #toolbar-menu before
 * moving that same node into the overflow popover. Hide only its inline header
 * location: once it is under .popover-body this selector no longer matches. */
html.layout-phone body.action-compose #layout-content > .header > #messagetoolbar,
html.layout-phone body.action-compose #layout-content > .header > #toolbar-menu {
  display: none !important;
}

/* Ignore Roundcube's runtime title margins and reserve fixed, symmetric chrome
 * slots. The title therefore has identical geometry before, during, and after
 * opening the right drawer. */
html.layout-phone body.action-compose #layout-content > .header {
  display: grid !important;
  grid-template-columns: 40px minmax(0, 1fr) 40px;
  align-items: center;
  gap: 0;
  padding: 0 4px !important;
}

html.layout-phone body.action-compose #layout-content > .header > .task-menu-button {
  grid-column: 1;
  justify-self: center;
  width: 40px !important;
  margin: 0 !important;
}

html.layout-phone body.action-compose #layout-content > .header > .header-title {
  grid-column: 2;
  width: auto !important;
  min-width: 0;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden;
  color: inherit;
  text-align: center;
  text-overflow: clip;
  white-space: nowrap;
}

html.layout-phone body.action-compose #layout-content > .header > .toolbar-menu-button {
  grid-column: 3;
  justify-self: center;
  width: 40px !important;
  margin: 0 !important;
}

html.layout-phone body.action-compose #layout-content > .header > #composestatusbar {
  position: absolute !important;
}

/* The historical Heroicons injector owns compose drawer SVGs. Remove every
 * FontAwesome/legacy pseudo layer so each action has one primary SVG only. */
html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  .radix-nav__item::before,
html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  .radix-nav__item::after {
  content: none !important;
  display: none !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > a {
  grid-template-columns: 20px minmax(0, 1fr) 16px !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  .radix-nav__icon {
  grid-column: 1;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  .radix-nav__label {
  grid-column: 2;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  .compose-submenu-chevron {
  grid-column: 3 !important;
  justify-self: end;
  align-self: center;
  display: inline-flex !important;
  width: 16px !important;
  height: 16px !important;
  min-width: 16px !important;
  min-height: 16px !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  pointer-events: none;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  .compose-submenu-chevron,
html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  .compose-submenu-chevron
  > svg {
  width: 16px !important;
  height: 16px !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  .compose-submenu-chevron
  > svg {
  display: block;
}

/* Phone split controls become one visual and interactive row. The submenu
 * trigger overlays the full 46px wrapper and owns the tap; the primary command
 * contributes only its icon/label and cannot paint or hover independently. */
html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > .radix-dropdown__group {
  position: relative;
  display: grid !important;
  grid-template-columns: 20px minmax(0, 1fr) 16px !important;
  align-items: center !important;
  width: 100% !important;
  min-width: 0 !important;
  height: 46px !important;
  min-height: 46px !important;
  padding: 0 14px !important;
  column-gap: 12px !important;
  overflow: visible !important;
  border: 0 !important;
  border-radius: 6px !important;
  background: transparent !important;
  box-shadow: none !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > .radix-dropdown__group
  > .radix-nav__item:first-child {
  grid-column: 1 / -1;
  display: grid !important;
  grid-template-columns: 20px minmax(0, 1fr) 16px !important;
  width: 100% !important;
  min-width: 0 !important;
  height: 46px !important;
  padding: 0 !important;
  column-gap: 12px !important;
  pointer-events: none;
  opacity: 1;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > .radix-dropdown__group
  > .compose-submenu-trigger {
  position: absolute !important;
  z-index: 2;
  inset: 0 !important;
  display: grid !important;
  grid-template-columns: 20px minmax(0, 1fr) 16px !important;
  column-gap: 12px !important;
  width: 100% !important;
  min-width: 0 !important;
  height: 46px !important;
  padding: 0 14px !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > .radix-dropdown__group
  > .compose-submenu-trigger
  > .compose-submenu-chevron {
  width: 16px !important;
  min-width: 16px !important;
  height: 16px !important;
  min-height: 16px !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > .radix-dropdown__group
  > .compose-submenu-trigger
  > :not(.compose-submenu-chevron) {
  display: none !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > .radix-dropdown__group:hover,
html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > .radix-dropdown__group:has(> .compose-submenu-trigger[aria-expanded="true"]) {
  color: hsl(var(--accent-foreground)) !important;
  background: hsl(var(--accent)) !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > .radix-dropdown__group:has(> .compose-submenu-trigger:focus-visible) {
  color: hsl(var(--accent-foreground)) !important;
  background: hsl(var(--accent)) !important;
  box-shadow: inset 0 0 0 2px hsl(var(--ring)) !important;
}

html.layout-phone body.action-compose
  .popover
  #toolbar-menu[data-pixie-icon-owner="heroicons-compose"]
  > li
  > .radix-dropdown__group:has(> .disabled) {
  opacity: 0.5;
}

/* ------------------------------------------------------------------
 * COMPOSE-M2 — phone compose fields and footer alignment
 *
 * On phone the Bootstrap `.col-2 / .col-10` split leaves From / To /
 * Subject labels at inconsistent widths and the input-group buttons
 * render as non-square pills. Normalize every compose-header row into
 * one fixed grid:
 *
 *   `48px | minmax(0, 1fr) | auto`
 *
 * so labels align on the same vertical line, fields fill remaining
 * width without overflow, and action buttons are square 36×36 targets.
 * Desktop is untouched — every rule is scoped to `html.layout-phone`.
 * ------------------------------------------------------------------ */

/* Row container — drop Bootstrap's column math and use a real grid. */
html.layout-phone body.action-compose .compose-headers .form-group.row {
  display: grid !important;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  align-items: center;
  column-gap: 8px;
  width: 100%;
  margin-bottom: 6px;
}

/* Preserve Roundcube's optional-recipient lifecycle. CC/BCC/Reply-To/
 * Followup-To start hidden and are exposed by the normal plus menu; the
 * mobile grid must not force them visible before that command runs. */
html.layout-phone body.action-compose .compose-headers .form-group.row.hidden {
  display: none !important;
}

/* Label column — first cell in the row template. */
html.layout-phone body.action-compose .compose-headers .form-group.row > label.col-form-label {
  grid-column: 1;
  width: auto !important;
  max-width: none;
  padding: 0 !important;
  margin: 0;
  text-align: left;
  line-height: 1.25;
  font-size: 13px;
  font-weight: 500;
}

/* Field column — holds `.input-group` (From selector, To recipient
 * input, Subject text). On Subject there is no action button, so this
 * cell spans the remaining two columns. */
html.layout-phone body.action-compose .compose-headers .form-group.row > .col-10 {
  grid-column: 2;
  width: auto !important;
  max-width: none;
  flex: initial;
  padding: 0 !important;
  min-width: 0;
}

html.layout-phone body.action-compose #compose_subject.form-group.row > .col-10 {
  grid-column: 2 / -1;
}

/* The input-group itself becomes a flex row: field grows, buttons stay
 * fixed. We DO NOT use CSS grid here because recipient chips can wrap
 * and the field area needs intrinsic height flexibility. Constrain its
 * height to 36px so the parent grid row doesn't balloon to 72px from
 * Bootstrap's default `.input-group { height: auto }` + flex wrapping. */
html.layout-phone body.action-compose .compose-headers .input-group {
  display: flex !important;
  align-items: center;
  width: 100%;
  min-width: 0;
  height: 36px !important;
  min-height: 36px !important;
  flex-wrap: nowrap !important;
}

/* Select (From) and inputs (To, Subject, CC, BCC...) fill the flex
 * space. Add right padding so recipient chips or the native select
 * chevron never sit under the action buttons. */
html.layout-phone body.action-compose .compose-headers .input-group > .form-control,
html.layout-phone body.action-compose .compose-headers .input-group > ._from,
html.layout-phone body.action-compose .compose-headers .input-group > #_from,
html.layout-phone body.action-compose .compose-headers .input-group > #_to,
html.layout-phone body.action-compose .compose-headers .input-group > #_cc,
html.layout-phone body.action-compose .compose-headers .input-group > #_bcc,
html.layout-phone body.action-compose .compose-headers .input-group > #_replyto,
html.layout-phone body.action-compose .compose-headers .input-group > #_followupto,
html.layout-phone body.action-compose #compose-subject {
  flex: 1 1 auto;
  min-width: 0;
  width: 100% !important;
  height: 36px;
  padding: 0 10px;
  border-radius: 6px;
  font-size: 14px;
  line-height: 1.25;
  appearance: none;
  -webkit-appearance: none;
}

/* From selector: keep its native chevron visible inside the field. */
html.layout-phone body.action-compose #_from {
  padding-right: 28px;
  background-position: right 8px center;
  background-repeat: no-repeat;
}

/* Subject: no input-group wrapper — style the bare input directly. */
html.layout-phone body.action-compose #compose-subject.form-control {
  flex: 1 1 auto;
  min-width: 0;
  width: 100% !important;
  height: 36px;
  padding: 0 10px;
  border-radius: 6px;
  font-size: 14px;
  line-height: 1.25;
}

/* Recipient input rows can legitimately grow when chips wrap. Keep the
 * action buttons fixed at the top-right while allowing the chip list to
 * define the row height, instead of clipping the follow-up input below a
 * fixed 36px field. */
html.layout-phone body.action-compose .compose-headers .form-group.row:has(ul.recipient-input) {
  align-items: start;
}

html.layout-phone body.action-compose
  .compose-headers
  .form-group.row:has(ul.recipient-input)
  > label.col-form-label {
  padding-top: 10px !important;
}

html.layout-phone body.action-compose .compose-headers .input-group:has(> ul.recipient-input) {
  align-items: flex-start;
  height: auto !important;
  min-height: 36px !important;
}

html.layout-phone body.action-compose .compose-headers .input-group > ul.recipient-input.form-control {
  flex: 1 1 auto;
  width: auto !important;
  min-width: 0;
  height: auto !important;
  min-height: 36px !important;
  padding: 0 6px 4px 10px;
  overflow: visible;
}

/* Action buttons in compose-header input-groups: collapse the
 * `.input-group-append` wrapper so each `.input-group-text.icon` is
 * a direct 36×36 flex child of the `.input-group`. */
html.layout-phone body.action-compose .compose-headers .input-group-append {
  display: contents;
}

html.layout-phone body.action-compose .compose-headers .input-group .input-group-text.icon {
  flex: 0 0 36px;
  width: 36px;
  height: 36px;
  min-width: 36px;
  padding: 0;
  margin-left: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--pixie-border-color, #e4e4e7);
  border-radius: 6px;
  background: transparent;
  color: var(--pixie-menu-foreground, #18181b);
  text-decoration: none;
  cursor: pointer;
  transition: background-color 120ms ease;
}

html.layout-phone body.action-compose .compose-headers .input-group .input-group-text.icon:hover,
html.layout-phone body.action-compose .compose-headers .input-group .input-group-text.icon:focus-visible {
  background: var(--pixie-ui-accent-soft);
  color: var(--pixie-ui-accent);
  outline: 0;
}

html.layout-phone body.action-compose
  .compose-headers
  .input-group
  .input-group-text.icon.has-heroicon::before {
  content: none !important;
  display: none !important;
}

html.layout-phone body.action-compose
  .compose-headers
  .input-group
  .input-group-text.icon.has-heroicon
  > .heroicon-host,
html.layout-phone body.action-compose
  .compose-headers
  .input-group
  .input-group-text.icon.has-heroicon
  > .heroicon-host
  > svg {
  display: block;
  width: 20px;
  height: 20px;
}

/* Dark-mode neutral treatment for compose-header action buttons. */
html.dark-mode.layout-phone body.action-compose .compose-headers .input-group .input-group-text.icon {
  border-color: var(--pixie-menu-border);
  color: var(--pixie-menu-foreground);
}

/* ------------------------------------------------------------------
 * Phone compose footer — Save / Send alignment and safe area
 *
 * The footer is `#layout-content > .footer.menu` containing
 * `.content-frame-navigation` (Prev / Next, hidden on compose) and
 * `.buttons` (cloned Save + Send). Override the generic
 * space-around phone-footer rule to center the two compose actions
 * equally, add icon-above-label vertical stacking, and reserve the
 * iOS safe-area inset so neither button is hidden under the home
 * indicator.
 * ------------------------------------------------------------------ */

html.layout-phone body.action-compose #layout-content > .footer {
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 0;
  padding: 6px 12px;
  padding-bottom: max(6px, env(safe-area-inset-bottom));
  border-top: 1px solid var(--pixie-menu-border);
  background: var(--pixie-menu-surface);
}

html.layout-phone body.action-compose #layout-content > .footer > .buttons {
  display: flex !important;
  flex: 1 1 auto;
  align-items: center;
  justify-content: space-evenly;
  gap: 8px;
}

html.layout-phone body.action-compose #layout-content > .footer .buttons > a.button,
html.layout-phone body.action-compose #layout-content > .footer .buttons > button {
  flex: 1 1 0 !important;
  width: auto !important;
  max-width: 50% !important;
  display: inline-flex !important;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  min-height: 40px;
  padding: 4px 8px !important;
  margin: 0 !important;
  border: 0;
  border-radius: 8px;
  background: transparent !important;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.2;
  text-decoration: none;
  text-align: center;
}

/* Send keeps its primary accent; Save stays neutral. */
html.layout-phone body.action-compose #layout-content > .footer .buttons > a.primary,
html.layout-phone body.action-compose #layout-content > .footer .buttons > button.primary {
  color: var(--pixie-ui-accent);
}

html.layout-phone body.action-compose #layout-content > .footer .buttons > a.save,
html.layout-phone body.action-compose #layout-content > .footer .buttons > button.save {
  color: var(--pixie-menu-foreground);
}

/* Each footer button shows one FontAwesome icon via `::before` (the
 * existing skin rule). Center it at 18px so it reads above the label. */
html.layout-phone body.action-compose #layout-content > .footer .buttons > a.button::before,
html.layout-phone body.action-compose #layout-content > .footer .buttons > button::before {
  display: block;
  float: none;
  width: auto;
  height: 18px;
  margin: 0;
  font-size: 18px;
  line-height: 1;
}

/* Hide the generic Prev / Next navigation on compose phone — only
 * Save and Send should be visible in the footer. */
html.layout-phone body.action-compose #layout-content > .footer > .prev,
html.layout-phone body.action-compose #layout-content > .footer > .next {
  display: none !important;
}

/* Vertically tight formcontent padding so the compose area stays
 * compact without colliding with the CKEditor or the footer. */
html.layout-phone body.action-compose .formcontent:not(.popupmenu) {
  padding: 8px 12px;
}

/* Prevent the CKEditor from being pushed off-screen by horizontal
 * overflow caused by the Bootstrap grid residue. */
html.layout-phone body.action-compose #compose-content,
html.layout-phone body.action-compose #compose-headers,
html.layout-phone body.action-compose .compose-headers {
  max-width: 100%;
  overflow-x: hidden;
}
