//==================================================== // Theme Variables //==================================================== // Default @sidebar: #313042; @accent: #F18260; // Luna // @sidebar: #202C46; // @accent: #39DFF8; // Zond // @sidebar: #333333; // @accent: #F6D49C; // Gemini // @sidebar: #00203C; // @accent: #F6B312; // Mercury // @sidebar: #555; // @accent: #999; // Apollo // @sidebar: #3A1E15; // @accent: #F6AA1C; @threadlist-bg: #FFFFFF; @messagelist-bg: tint(@sidebar, 95%); @active-thread-text: @sidebar; @sidebar-text: desaturate(lighten(@sidebar, 40%), 75%); @active-sidebar-text: #FFFFFF; @border-color: fade(@sidebar, 10%); @danger: #FF5F56; @minimize: #FBD852; @maximize: #8DD07D; @swipe-archive: #8DD07D; @swipe-snooze: #FBD852; @swipe-trash: @danger; @invalid: @danger; @sidebar-margin: 15px; //==================================================== // Main Sidebar //==================================================== // Make sidebar and corresponding toolbar match .column-RootSidebar, .account-sidebar, .toolbar-RootSidebar { height: 100%; background-color: @sidebar; // If NOT Retina display, subpixel-antialias fonts instead @media not screen and (-webkit-min-device-pixel-ratio: 1.3), not screen and (-o-min-device-pixel-ratio: 13/10), not screen and (min-resolution: 120dpi) { -webkit-font-smoothing: subpixel-antialiased !important; } } // Refactored this to make sure all items // in sidebar always align left with each other .account-sidebar { // make absolute elements (like compose button) // relate to the sidear, not the column position: relative; margin: @sidebar-margin; } .nylas-outline-view { margin-bottom: @sidebar-margin; } //==================================================== // Window Controls //==================================================== .toolbar-window-controls { display: flex; align-items: center; justify-content: space-between; margin: 0; min-width: 50px; width: 50px; } .toolbar-window-controls button { background-color: @sidebar-text; background-image: none !important; float: none; opacity: 0.5; margin: 0; transform: scaleY(0.5); border-radius: 2px; transition-duration: 150ms; transition-property: border-radius, opacity, transform; } .toolbar-window-controls:hover button { opacity: 1; border-radius: 50%; transform: scaleY(1); } .toolbar-window-controls .close { background-color: @danger; } .toolbar-window-controls .minimize { background-color: @minimize; } .toolbar-window-controls .maximize { background-color: @maximize; } .is-blurred { .toolbar-window-controls .close, .toolbar-window-controls .minimize, .toolbar-window-controls .maximize { background-color: fade(@sidebar-text, 50%); } } // Compose Button Overrides .sheet-toolbar .btn.btn-toolbar.item-compose { background: transparent; box-shadow: none; opacity: 0.5; padding: 0; margin: 0; height: 100%; transition: opacity 200ms; &:hover { opacity: 1; } } // Compose button icon color .sheet-toolbar .btn.btn-toolbar.item-compose img.content-mask { background-color: @sidebar-text; } //==================================================== // Sidebar Items //==================================================== // Section headers .account-sidebar .heading { font-size: 10px; text-transform: uppercase; letter-spacing: 2px; color: fade(@sidebar-text, 50%); margin-bottom: 10px; padding: 0; } // Down arrow icon .account-switcher { height: 14px; width: 16px; top: 0; right: 0; display: flex; justify-content: center; align-items: center; opacity: 0.5; transition: opacity 200ms; &:hover { opacity: 1; } } // Down arrow icon .account-switcher img { zoom: 1 !important; max-width: 10px; max-height: 6px; transform: none; background-image: none; background-color: @sidebar-text; -webkit-mask-repeat: no-repeat; -webkit-mask-image: url('data:image/svg+xml;utf8,'); } .account-sidebar .item, .account-sidebar .item.selected { color: @sidebar-text; font-size: 13px; font-weight: 400; padding-right: 0; } .account-sidebar .item.selected { background: transparent; color: @active-sidebar-text; } // Item expansion icon wrapper .disclosure-triangle { display: flex; align-items: center; padding: 0; width: 15px; } // Item expansion icon .disclosure-triangle div { border-left-color: fade(@sidebar-text, 50%); border-top-width: 3px; border-bottom-width: 3px; border-left-width: 5px; transform-origin: 2px; } //==================================================== // Sidebar Icons //==================================================== .account-sidebar .item img.content-mask, .account-sidebar .add-item-button img, { background-color: @sidebar-text; } .account-sidebar .item.selected img.content-mask { background-color: @active-sidebar-text; } .nylas-outline-view .item-container.dropping { background: transparent; } .nylas-outline-view .item-container.dropping .item { color: @accent; } .nylas-outline-view .item-container.dropping .item img.content-mask { background-color: @accent; } .nylas-outline-view .heading .add-item-button img { background: fade(@sidebar-text, 50%); } //==================================================== // Sidebar Count Badges //==================================================== .nylas-outline-view .item .item-count-box.alt-count { background: @accent; color: @sidebar; } .nylas-outline-view .item .item-count-box { color: @accent; box-shadow: inset 0 0 0 1px fade(@accent, 50%); } //==================================================== // Scrollbar Base & Sidebar Scrollbar //==================================================== .scrollbar-track { background: transparent; border-left: none; width: 10px; } // transitioning background instead of opacity // so the location tooltip isn't affected .scrollbar-track .scrollbar-handle { background: fade(@sidebar, 20%); border: none !important; cursor: -webkit-grab; transition: background 300ms; } .scrollbar-track.dragging .scrollbar-handle { background: fade(@sidebar, 50%); cursor: -webkit-grabbing; } @keyframes slideInRight { from { opacity: 0; transform: translateX(-50px); } to { opacity: 1; transform: translateX(-15px); } } .scrollbar-track .scrollbar-handle .tooltip .scroll-tooltip { transform-origin: center right; animation: slideInRight 300ms; } .flexbox-handle-horizontal div { box-shadow: none; } // Removing overlap of scrollbar and handle .column-ThreadList .flexbox-handle-horizontal.flexbox-handle-right { right: -8px; padding: 0; } // we now offset the margin on scrollbar // in sidebar since it's position: relative .account-sidebar .scrollbar-track { margin-right: -@sidebar-margin; } // and lighten the handle background .account-sidebar .scrollbar-track .scrollbar-handle { background: fade(lighten(@sidebar, 50%), 40%); } //==================================================== // Thread List //==================================================== // Make corresponding toolbar match threadlist background .column-ThreadList, .toolbar-ThreadList { height: 100%; background: @threadlist-bg; border-bottom: 1px solid @border-color; } // jackiehluo -> Hide search bar when buttons appear in list mode .toolbar-ThreadList .selection-bar .inner { background: @threadlist-bg; } .list-tabular .list-tabular-item { background-color: @threadlist-bg; border-bottom: 1px solid @border-color !important; } // Using !important so multiple selection actions .list-tabular .list-tabular-item:hover { background: tint(@sidebar, 95%) !important; } .list-container .list-item.focused, .list-container .list-item.selected, .thread-list.handler-split .list-item.selected { background: tint(@accent, 90%); color: @active-thread-text; } body.is-blurred .list-container .list-item.focused, body.is-blurred .list-container .list-item.selected, body.is-blurred .thread-list.handler-split .list-item.selected { background: tint(@sidebar, 90%); color: @active-thread-text; } .list-tabular .list-tabular-item.keyboard-cursor { border-left-color: @accent; background: tint(@accent, 90%); } body.is-blurred .list-tabular .list-tabular-item.keyboard-cursor { border-left-color: tint(@sidebar, 70%); } //==================================================== // Inputs, Search & Suggestion Menu //==================================================== textarea:focus, input[type="text"]:focus, input[type="email"]:focus, .search-bar .menu .header-container input:focus { border-color: @accent; box-shadow: 0 0 1.5px @accent; } .search-bar { margin: 7.5px; width: 100%; } .search-container .content-container { margin-top: 5px !important; } .menu .item.selected, .menu .item:active, .search-container .content-container .item.selected { background: @accent; } //==================================================== // Thread Icons //==================================================== // Remove inverted color effects .thread-list .focused .thread-icon, .draft-list .focused .thread-icon, .thread-list .focused .draft-icon, .draft-list .focused .draft-icon, .thread-list .focused .mail-important-icon, .draft-list .focused .mail-important-icon, .thread-list.handler-split .list-item.selected .thread-icon, .thread-list.handler-split .list-item.selected .draft-icon, .thread-list.handler-split .list-item.selected .mail-important-icon { -webkit-filter: none !important; } // Base settings for replacing backgrounds with -webkit-filters for easier color changes .thread-list .thread-icon { -webkit-mask-repeat: no-repeat; -webkit-mask-size: 12px; -webkit-mask-position: center; } // Change color of unread dot icon .thread-list .thread-icon.thread-icon-unread { background-image: none; background-color: @accent; -webkit-mask-image: url(../static/images/thread-list/icon-unread-@2x.png); } // replace undread icon with star icon on thread item hover .thread-list .list-item:hover .thread-icon.thread-icon-unread { background-color: tint(@sidebar); -webkit-mask-image: url(../static/images/thread-list/icon-star-@2x.png); &:hover { background-color: tint(@sidebar, 20%); } } // Replace outlined star icon with solid one .thread-list .thread-icon.thread-icon-star, .thread-list .thread-icon-star-on-hover:hover { background-color: tint(@sidebar); -webkit-mask-image: url(../static/images/thread-list/icon-star-@2x.png); } // for Read messages, use the solid star on item hover as well .thread-list .list-item:hover .thread-icon-none { background-image: none; background-color: tint(@sidebar); -webkit-mask-image: url(../static/images/thread-list/icon-star-@2x.png); } // Make the star a bit darker on direct hover .thread-list .list-item:hover .thread-icon-none:hover { background-image: none; background-color: tint(@sidebar, 20%); -webkit-mask-image: url(../static/images/thread-list/icon-star-@2x.png); } .thread-icon.thread-icon-attachment { opacity: 0.5; background-size: 12px; } // The gradient behind threadlist hover icons (Snooze, Arvhive Delete) .thread-list .list-item:hover .list-column-HoverActions .inner, .thread-list .list-item.focused:hover .list-column-HoverActions .inner, .thread-list .list-item.selected:hover .list-column-HoverActions .inner, .thread-list.handler-split .list-item.selected:hover .list-column-HoverActions .inner { background-image: -webkit-linear-gradient(left, fade(@messagelist-bg, 0%) 0%, @messagelist-bg 40%, @messagelist-bg 100%); } .thread-list .list-item.focused:hover .list-column-HoverActions .inner .action, .thread-list.handler-split .list-item.selected:hover .list-column-HoverActions .inner .action { -webkit-filter: none; } .thread-list .list-item.focused:hover .list-column-HoverActions .inner .action.action-trash { background: url("../static/images/thread-list-quick-actions/ic-quick-button-trash@2x.png") center no-repeat, linear-gradient(to top, rgba(241, 241, 241, 0.75) 0%, rgba(253, 253, 253, 0.75) 100%); } //==================================================== // Swiping //==================================================== .thread-list .swipe-backing.swipe-all, .thread-list .swipe-backing.swipe-archive, .draft-list .swipe-backing.swipe-all, .draft-list .swipe-backing.swipe-archive { background: @swipe-archive; &.confirmed { background: saturate(@swipe-archive, 10%); } } .thread-list .swipe-backing.swipe-snooze, .draft-list .swipe-backing.swipe-snooze { background: @swipe-snooze; &.confirmed { background: saturate(@swipe-snooze, 10%); } } .thread-list .swipe-backing.swipe-trash, .draft-list .swipe-backing.swipe-trash { background: @swipe-trash; &.confirmed { background: saturate(@swipe-trash, 10%); } } //==================================================== // Mail Labels //==================================================== // Make labels white on accent color when message is selected .thread-list .focused .mail-label, .draft-list .focused .mail-label, .thread-list.handler-split .list-item.selected .mail-label { background: @accent !important; color: white !important; box-shadow: none !important; -webkit-filter: none !important; } //==================================================== // Message List & Corresponding Toolbar //==================================================== #message-list { background: @messagelist-bg; } // Make toolbars match panels .column-MessageList, .toolbar-MessageList, .column-MessageListSidebar, .toolbar-MessageListSidebar { height: 100%; background: @messagelist-bg; border-left: 1px solid @border-color; } // Message List top and bottom spacing #message-list .messages-wrap .scroll-region-content-inner { padding-top: 20px; padding-bottom: 40vh; } // Reset padding #message-list .message-header, #message-list .message-item-wrap.collapsed .message-item-white-wrap, #message-list .message-item-wrap.collapsed .message-item-area { padding: 0; } // Make padding uniform #message-list .message-item-area, #message-list .footer-reply-area-wrap .footer-reply-area { padding: 20px !important; } // Adjusting position of thread participants toggle #message-list .header-toggle-control { top: 6px !important; left: -11px !important; display: flex !important; justify-content: center; align-items: center; } // Reducing size and overriding invalid -webkit-mask-repeat- property #message-list .header-toggle-control img { zoom: 0.35 !important; -webkit-mask-repeat: no-repeat !important; } .message-participants.to-participants .collapsed-participants, .message-participants .expanded-participants .participant-type { margin-top: 0; } .message-participants .from-label, .message-participants .to-label, .message-participants .cc-label, .message-participants .bcc-label { margin-right: 6px; } #message-list .message-item-wrap .message-item-white-wrap, #message-list .minified-bundle .msg-line, #message-list .minified-bundle .num-messages, #message-list .footer-reply-area-wrap, { box-shadow: inset 0 0 0 1px @border-color; border: none; } #message-list .minified-bundle + .message-item-wrap, #message-list .message-item-wrap.collapsed + .minified-bundle, #message-list .minified-bundle .num-messages, #message-list .minified-bundle .msg-lines { margin-top: 0; } // Collapsed Messages Pill Label #message-list .minified-bundle .num-messages { padding: 3px; } // remove margin for last message before reply #message-list .message-item-wrap.before-reply-area { margin-bottom: 0; } // Replacing focused state with theme accent #message-list .message-item-wrap .message-item-white-wrap.composer-outer-wrap.focused { box-shadow: 0 0 0 1px @accent; } // Darken composer action bar to contrast from background .composer-inner-wrap .composer-action-bar-wrap, .composer-full-window .composer-inner-wrap .composer-action-bar-wrap { background: darken(@messagelist-bg, 1%); box-shadow: none; border-radius: 0; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; } // make action bar at bottom of composer a bit darker than background #message-list .message-item-wrap .message-item-white-wrap.composer-outer-wrap.focused .composer-action-bar-wrap { background: darken(@messagelist-bg, 1%); } //==================================================== // Preferences //==================================================== .preferences-sidebar, .preferences-content { background: @messagelist-bg; } .preferences-wrap .preferences-content > .scroll-region-content { padding-bottom: 100px; } //==================================================== // Notifications //==================================================== .notifications-sticky .notifications-sticky-item { background-color: @accent; line-height: 50px; border: none; } .sidebar-activity { background: darken(@sidebar, 5%); color: @active-sidebar-text; box-shadow: none; } .sidebar-activity .item { border: none; } //==================================================== // Drafts & Selection List //==================================================== // Make corresponding toolbar match threadlist background .draft-list, .toolbar-DraftList { background: @messagelist-bg; } .draft-list .list-container .list-item.selected, .draft-list .list-tabular .list-tabular-item.keyboard-cursor { background: white; } .draft-list .list-tabular .list-tabular-item .checkmark .inner { background-color: white; border-color: tint(@sidebar, 75%); } .list-tabular .list-tabular-item.selected .checkmark .inner { background-color: @accent; background-image: url('data:image/svg+xml;utf8,'); background-size: 8px 6px; } // Make draft-list items slightly darker on hover // Using !important so multiple selection actions .draft-list .list-tabular .list-tabular-item:hover { background: tint(@sidebar, 90%) !important; } // Center vertically regardless of list item height .draft-list .sending-progress { align-self: center; background-color: #f5f5f5; border: none; margin-top: 0; } //==================================================== // Composer //==================================================== .tokenizing-field .token.invalid { border-bottom: 1px solid @invalid; } .tokenizing-field .token.selected, .tokenizing-field .token.dragging { background: @accent; box-shadow: none; border: none; } .tokenizing-field .token.invalid.selected, .tokenizing-field .token.invalid.dragging { background: @invalid; } //==================================================== // Toolbars Bar //==================================================== .sheet-toolbar { border: none; } .sheet-toolbar-container { background: transparent; box-shadow: none; border: none; } .sheet-toolbar .selection-bar .absolute { left: 0; right: 0; border-left: none; border-right: none; background: none; } // Match left and right alignment across all toolbars .toolbar-RootSidebar, .toolbar-MessageList, .toolbar-MessageListSidebar, .toolbar-Center, .toolbar-Preferences { height: 100%; padding-left: @sidebar-margin; padding-right: @sidebar-margin; } // Slightly darker toolbar for Prefs, Single Panel Messages, and Popout .toolbar-Preferences, .layout-mode-list .toolbar-MessageList, .sheet-toolbar-container.mode-popout { background: transparent; background-color: tint(@sidebar, 90%); border: none; } // jackiehluo -> (themes): Fixes Windows button UI issues in #1649 body.platform-win32 .sheet-toolbar-container .btn-toolbar:hover { background: none; } // Centering vertially without magic numbers .layout-mode-popout .toolbar-window-controls { margin-top: 0; } .sheet-toolbar .item-container .window-title { position: static; // compensate for width of .toolbar-window-controls transform: translateX(-25px); } .sheet-toolbar .btn-toolbar { box-shadow: 0 0 0 1px @border-color; } // Let toolbar define outer padding/margin .sheet-toolbar .btn-toolbar:only-of-type { margin-right: 0; } .btn-toolbar.mode-toggle.mode-false img.content-mask { background-color: @accent; }