/*
 * CMSoftware Custom Theme for Roundcube Elastic Skin
 * Matches the look and feel of www.cmsoftware.dev
 *
 * All brand colors use CSS custom properties so the domain_branding
 * plugin can override them per-domain.  Fallback values = CMSoftware defaults.
 *
 * Variables (set by domain_branding plugin or fallback):
 *   --cm-primary:        #4ac4f3   (cyan)
 *   --cm-secondary:      #202942   (dark navy)
 *   --cm-accent:         #32d9db   (teal)
 *   --cm-gradient-start: #118bba
 *   --cm-gradient-end:   #4ac4f3
 *   --cm-font:           'Manrope', 'Roboto', sans-serif
 *   --cm-login-bg:       #202942
 */

/* ===================== FONTS ===================== */
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;500;600;700;800&display=swap');

* {
    font-family: var(--cm-font, 'Manrope', 'Roboto', sans-serif) !important;
}

/* ===================== GLOBAL ===================== */
body {
    background: var(--cm-secondary, #202942) !important;
    color: #232323;
}

/* ===================== TASK MENU (LEFT SIDEBAR) ===================== */
#layout-menu {
    background: color-mix(in srgb, var(--cm-secondary, #202942) 85%, black) !important;
}

#layout-menu .menu a,
#layout-menu .menu a:before {
    color: #a0b4c8 !important;
}

#layout-menu .menu a:hover,
#layout-menu .menu a:hover:before,
#layout-menu .menu a.selected,
#layout-menu .menu a.selected:before {
    color: var(--cm-primary, #4ac4f3) !important;
}

#layout-menu .menu a:hover,
#layout-menu .menu a.selected {
    background: color-mix(in srgb, var(--cm-primary, #4ac4f3) 10%, transparent) !important;
}

#layout-menu .special-buttons a.button,
#layout-menu .special-buttons a.button:before {
    color: var(--cm-primary, #4ac4f3) !important;
}

/* Logout button */
#layout-menu a.button.logout,
#layout-menu a.button.logout:before {
    color: #ff5552 !important;
}

/* ===================== HEADERS / TOOLBARS ===================== */
#layout > .header,
.header,
#layout-list > .header,
#layout-content > .header,
#layout-sidebar > .header {
    background: #f8fafc !important;
    border-bottom: 1px solid #e2e8f0 !important;
}

.header .header-title,
.header a.button:before {
    color: var(--cm-secondary, #202942) !important;
}

/* ===================== CONTENT AREAS ===================== */
#layout-content {
    background: #ffffff !important;
}

#layout-list {
    background: #f8fafc !important;
}

#layout-sidebar {
    background: #f0f4f8 !important;
}

/* ===================== PRIMARY COLOR OVERRIDES ===================== */

/* Links */
a {
    color: var(--cm-primary, #4ac4f3) !important;
}
a:hover {
    color: var(--cm-gradient-start, #118bba) !important;
}

/* Primary buttons */
.btn-primary,
button.btn-primary,
input.btn-primary,
a.btn-primary {
    background: linear-gradient(135deg, var(--cm-gradient-start, #118bba) 0%, var(--cm-gradient-end, #4ac4f3) 100%) !important;
    border: none !important;
    color: #fff !important;
    border-radius: 8px !important;
    box-shadow: 0 4px 15px color-mix(in srgb, var(--cm-primary, #4ac4f3) 30%, transparent) !important;
    transition: all 0.35s ease-in-out !important;
}

.btn-primary:hover,
button.btn-primary:hover,
input.btn-primary:hover,
a.btn-primary:hover {
    background: linear-gradient(135deg, var(--cm-gradient-end, #4ac4f3) 0%, var(--cm-gradient-start, #118bba) 100%) !important;
    box-shadow: 0 6px 20px color-mix(in srgb, var(--cm-primary, #4ac4f3) 45%, transparent) !important;
    transform: translateY(-1px);
}

/* Secondary buttons */
.btn-secondary,
button.btn-secondary {
    background: var(--cm-secondary, #202942) !important;
    border: none !important;
    color: #fff !important;
    border-radius: 8px !important;
}

.btn-secondary:hover,
button.btn-secondary:hover {
    background: color-mix(in srgb, var(--cm-secondary, #202942) 80%, white) !important;
}

/* ===================== FORM CONTROLS ===================== */
.form-control,
input.form-control,
textarea.form-control,
select.form-control {
    border-radius: 8px !important;
    border: 1px solid #e2e8f0 !important;
    transition: border-color 0.3s ease, box-shadow 0.3s ease !important;
}

.form-control:focus,
input.form-control:focus,
textarea.form-control:focus,
select.form-control:focus {
    border-color: var(--cm-primary, #4ac4f3) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--cm-primary, #4ac4f3) 15%, transparent) !important;
}

/* Checkboxes */
.custom-switch .custom-control-input:checked ~ .custom-control-label::before,
.custom-control-input:checked ~ .custom-control-label::before {
    background-color: var(--cm-primary, #4ac4f3) !important;
    border-color: var(--cm-primary, #4ac4f3) !important;
}

/* ===================== LIST ITEMS ===================== */
.listing tr.selected td,
.listing li.selected,
.listing li a.selected {
    background-color: color-mix(in srgb, var(--cm-primary, #4ac4f3) 10%, transparent) !important;
}

.listing tr:hover td,
.listing li:hover {
    background-color: color-mix(in srgb, var(--cm-primary, #4ac4f3) 5%, transparent) !important;
}

/* Unread badges */
.unreadcount,
span.unreadcount {
    background: linear-gradient(135deg, var(--cm-gradient-start, #118bba), var(--cm-gradient-end, #4ac4f3)) !important;
    color: #fff !important;
    border-radius: 12px !important;
}

/* Focus indicator */
.listing tr.focused td,
.listing li.focused {
    border-left-color: var(--cm-primary, #4ac4f3) !important;
}

/* ===================== MENU POPUPS ===================== */
.popupmenu .listing li a:hover,
.popupmenu .listing li.selected > a,
.menu a:hover {
    background-color: var(--cm-primary, #4ac4f3) !important;
    color: #fff !important;
}

/* ===================== LOGIN PAGE ===================== */
.task-login {
    background: linear-gradient(135deg, color-mix(in srgb, var(--cm-login-bg, #202942) 85%, black) 0%, var(--cm-login-bg, #202942) 50%, color-mix(in srgb, var(--cm-login-bg, #202942) 85%, black) 100%) !important;
    min-height: 100vh;
}

.task-login #layout {
    background: transparent !important;
}

.task-login #layout-content {
    background: transparent !important;
}

.task-login #logo {
    max-height: 120px !important;
    filter: drop-shadow(0 4px 20px color-mix(in srgb, var(--cm-primary, #4ac4f3) 30%, transparent));
}

#login-form {
    background: rgba(255, 255, 255, 0.05) !important;
    backdrop-filter: blur(10px) !important;
    -webkit-backdrop-filter: blur(10px) !important;
    border: 1px solid rgba(255, 255, 255, 0.1) !important;
    border-radius: 16px !important;
    padding: 2rem !important;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3) !important;
}

#login-form .form-control,
#login-form input.form-control {
    background: rgba(255, 255, 255, 0.08) !important;
    border: 1px solid rgba(255, 255, 255, 0.15) !important;
    color: #ffffff !important;
    border-radius: 10px !important;
    padding: 0.7rem 1rem !important;
}

#login-form .form-control::placeholder {
    color: rgba(255, 255, 255, 0.4) !important;
}

#login-form .form-control:focus {
    border-color: var(--cm-primary, #4ac4f3) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--cm-primary, #4ac4f3) 20%, transparent) !important;
    background: rgba(255, 255, 255, 0.12) !important;
}

#login-form label,
#login-form .input-group-text {
    color: rgba(255, 255, 255, 0.8) !important;
    background: transparent !important;
    border-color: rgba(255, 255, 255, 0.15) !important;
}

#login-form .input-group-prepend .input-group-text {
    background: rgba(255, 255, 255, 0.05) !important;
    border-color: rgba(255, 255, 255, 0.15) !important;
    color: var(--cm-primary, #4ac4f3) !important;
}

/* Login submit button */
#login-form .formbuttons .btn,
#rcmloginsubmit {
    background: linear-gradient(135deg, var(--cm-gradient-start, #118bba) 0%, var(--cm-gradient-end, #4ac4f3) 100%) !important;
    border: none !important;
    color: #fff !important;
    border-radius: 10px !important;
    padding: 0.7rem 2rem !important;
    font-weight: 600 !important;
    font-size: 1rem !important;
    box-shadow: 0 4px 20px color-mix(in srgb, var(--cm-primary, #4ac4f3) 35%, transparent) !important;
    transition: all 0.35s ease-in-out !important;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

#login-form .formbuttons .btn:hover,
#rcmloginsubmit:hover {
    background: linear-gradient(135deg, var(--cm-gradient-end, #4ac4f3) 0%, var(--cm-accent, #32d9db) 100%) !important;
    box-shadow: 0 6px 25px color-mix(in srgb, var(--cm-primary, #4ac4f3) 50%, transparent) !important;
    transform: translateY(-2px);
}

/* Login footer */
#login-footer {
    color: rgba(255, 255, 255, 0.5) !important;
}

#login-footer a {
    color: var(--cm-primary, #4ac4f3) !important;
}

#login-footer > div {
    background: rgba(255, 255, 255, 0.05) !important;
    border-radius: 8px !important;
}

/* ===================== SCROLLBARS ===================== */
::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}
::-webkit-scrollbar-track {
    background: #f0f4f8;
}
::-webkit-scrollbar-thumb {
    background: var(--cm-primary, #4ac4f3);
    border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
    background: var(--cm-gradient-start, #118bba);
}

/* ===================== DIALOGS / MODALS ===================== */
.ui-dialog {
    border-radius: 12px !important;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15) !important;
    overflow: hidden;
}

.ui-dialog .ui-dialog-titlebar {
    background: linear-gradient(135deg, var(--cm-secondary, #202942), color-mix(in srgb, var(--cm-secondary, #202942) 80%, white)) !important;
    color: #fff !important;
    border: none !important;
}

.ui-dialog .ui-dialog-titlebar .ui-dialog-title {
    color: #fff !important;
}

/* ===================== SEARCH BAR ===================== */
.searchbar {
    background: #f0f4f8 !important;
    border-radius: 10px !important;
}

.searchbar input {
    border-radius: 10px !important;
}

/* ===================== QUOTA BAR ===================== */
.quotabar .quotatext {
    color: #666666 !important;
}

.quotabar .quotadisplay > span {
    background: linear-gradient(90deg, var(--cm-gradient-start, #118bba), var(--cm-gradient-end, #4ac4f3)) !important;
}

/* ===================== MESSAGE NOTIFICATIONS ===================== */
#messagestack div.notice,
#messagestack div.confirmation {
    background: var(--cm-primary, #4ac4f3) !important;
    color: #fff !important;
    border-radius: 10px !important;
    box-shadow: 0 4px 15px color-mix(in srgb, var(--cm-primary, #4ac4f3) 30%, transparent) !important;
}

#messagestack div.error {
    border-radius: 10px !important;
}

#messagestack div.loading {
    border-radius: 10px !important;
}

/* ===================== COMPOSE AREA ===================== */
#composebody,
.mce-content-body {
    font-family: var(--cm-font, 'Manrope', 'Roboto', sans-serif) !important;
}

/* ===================== BORDER RADIUS OVERRIDES ===================== */
.card,
.box-inner,
.formcontent {
    border-radius: 12px !important;
}

/* ===================== SELECTION HIGHLIGHT ===================== */
::selection {
    background: color-mix(in srgb, var(--cm-primary, #4ac4f3) 30%, transparent);
    color: var(--cm-secondary, #202942);
}

/* ===================== LAYOUT BORDERS ===================== */
#layout > div {
    border-color: #e2e8f0 !important;
}

/* ===================== WATERMARK ===================== */
.watermark {
    opacity: 0.03 !important;
}

/* ===================== RESPONSIVE ===================== */
@media screen and (max-width: 768px) {
    #login-form {
        margin: 0 1rem !important;
        padding: 1.5rem !important;
    }

    .task-login #logo {
        max-height: 80px !important;
    }
}

/* ===================== DARK MODE OVERRIDES ===================== */
html.dark-mode body {
    background: color-mix(in srgb, var(--cm-secondary, #202942) 60%, black) !important;
}

html.dark-mode #layout-menu {
    background: color-mix(in srgb, var(--cm-secondary, #202942) 45%, black) !important;
}

html.dark-mode #layout-content,
html.dark-mode #layout-list,
html.dark-mode #layout-sidebar {
    background: color-mix(in srgb, var(--cm-secondary, #202942) 85%, black) !important;
}

html.dark-mode .header,
html.dark-mode #layout > .header,
html.dark-mode #layout-list > .header,
html.dark-mode #layout-content > .header,
html.dark-mode #layout-sidebar > .header {
    background: color-mix(in srgb, var(--cm-secondary, #202942) 85%, black) !important;
    border-bottom-color: color-mix(in srgb, var(--cm-secondary, #202942) 80%, white) !important;
}

html.dark-mode .form-control,
html.dark-mode input.form-control,
html.dark-mode textarea.form-control {
    background: var(--cm-secondary, #202942) !important;
    border-color: color-mix(in srgb, var(--cm-secondary, #202942) 80%, white) !important;
    color: #e2e8f0 !important;
}

html.dark-mode .form-control:focus {
    border-color: var(--cm-primary, #4ac4f3) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--cm-primary, #4ac4f3) 15%, transparent) !important;
}

html.dark-mode a {
    color: var(--cm-primary, #4ac4f3) !important;
}

html.dark-mode .listing tr.selected td,
html.dark-mode .listing li.selected {
    background-color: color-mix(in srgb, var(--cm-primary, #4ac4f3) 15%, transparent) !important;
}

html.dark-mode #layout > div {
    border-color: color-mix(in srgb, var(--cm-secondary, #202942) 80%, white) !important;
}

html.dark-mode ::-webkit-scrollbar-track {
    background: color-mix(in srgb, var(--cm-secondary, #202942) 85%, black);
}

html.dark-mode ::-webkit-scrollbar-thumb {
    background: var(--cm-primary, #4ac4f3);
}
