/** * kDots main styles * * Note that light / dark colors should go in kdots_light.less & kdots_dark.less */ /** Theme customisations **/ @import "../../node_modules/bootstrap-icons/font/bootstrap-icons.min.css"; :root, :host, html, .sl-theme-light { /* color token generator using #0053c9 https://codepen.io/claviska/full/QWveRgL */ --sl-color-primary-50: #f7fafd; --sl-color-primary-100: #e4edf9; --sl-color-primary-200: #d0dff5; --sl-color-primary-300: #bad0f0; --sl-color-primary-400: #9cbcea; --sl-color-primary-500: #75a2e2; --sl-color-primary-600: #4984d8; --sl-color-primary-700: #2169d0; --sl-color-primary-800: #0051c5; --sl-color-primary-900: #003a8d; --sl-color-primary-950: #002458; --sl-shadow-x-small: 0 1px 2px hsla(240, 3.8%, 46.1%, 0.24); --sl-shadow-small: 0 1px 2px hsla(240, 3.8%, 46.1%, 0.48); --sl-shadow-medium: 0 2px 4px hsla(240, 3.8%, 46.1%, 0.48); --sl-shadow-large: 0 2px 8px hsla(240, 3.8%, 46.1%, 0.48); --sl-shadow-x-large: 0 4px 16px hsla(240, 3.8%, 46.1%, 0.48); } html[data-darkmode="1"], .sl-theme-dark { background-color: black; color: var(--sl-color-neutral-700); --sl-color-primary-950: hsl(from var(--primary-color) h s calc(l + 18)); --sl-color-primary-900: hsl(from var(--primary-color) h s calc(l + 16)); --sl-color-primary-800: hsl(from var(--primary-color) h s calc(l + 12)); --sl-color-primary-700: hsl(from var(--primary-color) h s calc(l + 8)); --sl-color-primary-600: hsl(from var(--primary-color) h s calc(l + 4)); --sl-color-primary-500: var(--primary-color); --sl-color-primary-400: hsl(from var(--primary-color) h s calc(l - 4)); --sl-color-primary-300: hsl(from var(--primary-color) h s calc(l - 8)); --sl-color-primary-200: hsl(from var(--primary-color) h s calc(l - 12)); --sl-color-primary-100: hsl(from var(--primary-color) h s calc(l - 16)); --sl-color-primary-50: hsl(from var(--primary-color) h s calc(l - 18)); /*** HEADER ***/ /*** APPLICATION ***/ /*** End APPLICATION ***/ /*** WIDGETS ***/ /* This should mostly go away with webcomponents */ /** End WIDGETS **/ } html[data-darkmode="1"] #egw_fw_topmenu_info_items #topmenu_info_timer:before, .sl-theme-dark #egw_fw_topmenu_info_items #topmenu_info_timer:before { filter: initial; } html[data-darkmode="1"] egw-app, .sl-theme-dark egw-app { --application-header-text-color: var(--sl-color-neutral-700); } html[data-darkmode="1"] .et2_container, .sl-theme-dark .et2_container { background-color: initial; } html[data-darkmode="1"] .dialogFooterToolbar et2-button::part(base):not(:hover), .sl-theme-dark .dialogFooterToolbar et2-button::part(base):not(:hover), html[data-darkmode="1"] et2-dialog et2-button[variant='default'][slot='footer']::part(base):not(:hover), .sl-theme-dark et2-dialog et2-button[variant='default'][slot='footer']::part(base):not(:hover) { background-color: var(--sl-input-background-color); } html[data-darkmode="1"] .nextmatch_sortheader, .sl-theme-dark .nextmatch_sortheader { color: #96bcd9; } /** End theme customisations **/ /* BI icons */ .bi::before, [class^="bi-"]::before, [class*=" bi-"]::before { vertical-align: middle; } html, body { width: 100vw; height: 100vh; overflow: clip; padding: 0px; margin: 0px; /** Messages **/ /** end messages **/ } html .sl-toast-stack, body .sl-toast-stack { top: auto; bottom: 0px; } html .sl-toast-stack sl-alert et2-checkbox, body .sl-toast-stack sl-alert et2-checkbox { padding-top: var(--sl-spacing-large); } html #egw_message, body #egw_message { display: none; } .egw_menu::part(popup) { z-index: var(--sl-z-index-dropdown); } egw-framework#egw_fw_basecontainer { --icon-size: 32px; --sl-tooltip-arrow-size: 0; /* Internals */ /* Content slotted inside */ } egw-framework#egw_fw_basecontainer::part(status-split) { /* This limits the max size of the status panel */ --max: 32px; } egw-framework#egw_fw_basecontainer::part(header) { --icon-size: 32px; --tab-icon-size: var(--icon-size); --tab-icon-size-active: 40px; color: var(--primary-background-color); gap: var(--sl-spacing-medium); font-size: var(--icon-size); } egw-framework#egw_fw_basecontainer [slot="logo"] img { max-width: 220px; max-height: var(--icon-size); display: block; text-align: center; } egw-framework#egw_fw_basecontainer sl-icon-button[slot="header"], egw-framework#egw_fw_basecontainer et2-image[slot="header"] { font-size: var(--icon-size); color: inherit; } egw-framework#egw_fw_basecontainer div#egw_fw_toggler { position: initial; display: none; } egw-framework#egw_fw_basecontainer #egw_fw_topmenu_info_items { position: relative; order: 99; margin-left: auto; display: flex; } egw-framework#egw_fw_basecontainer #egw_fw_topmenu_info_items .topmenu_info_item { min-width: 1em; min-height: 1em; } egw-framework#egw_fw_basecontainer div#egw_fw_sidebar_r { position: initial; top: initial; } egw-framework#egw_fw_basecontainer div#egw_fw_sidebar_r et2-avatar, egw-framework#egw_fw_basecontainer div#egw_fw_sidebar_r et2-lavatar { --size: 26px; } egw-framework#egw_fw_basecontainer .egw_fw_ui_sidemenu_entry_header { display: flex; gap: var(--sl-spacing-medium); padding-left: 1em; } /*** HEADER ***/ #egw_fw_topmenu_info_items { display: flex; flex-direction: row-reverse; align-items: stretch; } #egw_fw_topmenu_info_items > * { border: none; background-color: transparent; } #egw_fw_topmenu_info_items et2-avatar { --size: var(--icon-size); } #egw_fw_topmenu_info_items et2-avatar::part(base) { vertical-align: initial; } #egw_fw_topmenu_info_items .topmenu_info_item { height: var(--icon-size); width: var(--icon-size); display: inline-block; padding-left: 0px; background-size: 20px; background-position: center center; background-repeat: no-repeat; cursor: pointer; } #egw_fw_topmenu_info_items .topmenu_info_item:hover { background-color: var(--sl-input-background-color-hover); } #egw_fw_topmenu_info_items et2-button-icon::part(base) { padding: 0; } #egw_fw_topmenu_info_items #topmenu_info_timer { order: 1; position: relative; display: flex; align-items: center; padding: 0px; } #egw_fw_topmenu_info_items #topmenu_info_timer #topmenu_timer { display: block; width: 100%; z-index: 2; } #egw_fw_topmenu_info_items #topmenu_info_timer:hover { cursor: pointer; } #egw_fw_topmenu_info_items #topmenu_info_timer:before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url(../../timesheet/templates/default/images/navbar.svg); background-repeat: no-repeat; background-size: 32px; background-position: center center; filter: opacity(0.3); } #egw_fw_topmenu_info_items #topmenu_info_quick_add { position: relative; } #egw_fw_topmenu_info_items #topmenu_info_quick_add span#quick_add { display: block; background-image: url(../../node_modules/bootstrap-icons/icons/plus-circle.svg); background-repeat: no-repeat; background-size: 24px; background-position: center; width: 100%; height: 100%; padding-right: 3px; } #egw_fw_topmenu_info_items #topmenu_info_quick_add span#quick_add:before { content: " "; font-size: 2em; line-height: 0.6em; background-color: white; } #egw_fw_topmenu_info_items #topmenu_info_quick_add #quick_add_selectbox { height: 0px; display: inline-block; text-align: initial; } #egw_fw_topmenu_info_items #topmenu_info_quick_add #quick_add_selectbox sl-option { white-space: nowrap; } #egw_fw_topmenu_info_items #topmenu_info_quick_add #quick_add_selectbox::part(emptyLabel) { /* do NOT show empty label, required for clearing value */ display: none; } #egw_fw_topmenu_info_items #topmenu_info_quick_add #quick_add_selectbox::part(form-control-input), #egw_fw_topmenu_info_items #topmenu_info_quick_add #timer_selectbox::part(form-control-input) { border: none !important; } #egw_fw_topmenu_info_items #topmenu_info_quick_add #quick_add_selectbox::part(form-control), #egw_fw_topmenu_info_items #topmenu_info_quick_add #timer_selectbox::part(form-control) { margin-left: -3em; } #egw_fw_topmenu_info_items #topmenu_info_quick_add #quick_add_selectbox::part(listbox), #egw_fw_topmenu_info_items #topmenu_info_quick_add #timer_selectbox::part(menu) { max-height: 60vh; } #egw_fw_topmenu_info_items #topmenu_info_quick_add #quick_add_selectbox { height: 0px; overflow: hidden; } #egw_fw_topmenu_info_items #topmenu_info_quick_add #quick_add_selectbox::part(combobox) { visibility: hidden; } #egw_fw_topmenu_info_items #topmenu_info_user_avatar sl-menu-item et2-image { width: 1em; } #egw_fw_topmenu_info_items button#topmenu_info_search { background-image: url(../../api/templates/default/images/topmenu_items/search.svg); } #topmenu_info_print_title { background-image: url(../../../api/templates/default/images/print.svg); } #topmenu_info_print_title span { width: 45px; height: 45px; display: inline-block; } /* popup copied from pixelegg */ #egwpopup { top: 46px; right: 0 !important; left: auto !important; height: calc(100% - 69px); width: 277px !important; position: absolute; background: #fff; border: 1px solid silver; border-top: none; border-bottom: none; padding: 1em; /*Button*/ } #egwpopup input#egwpopup_ok_button, #egwpopup button#desktop_perms { padding: 0 5px; } #egwpopup #egwpopup_list::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); background-color: #fafafa; } #egwpopup #egwpopup_list::-webkit-scrollbar { width: 4px; background-color: #fafafa; } #egwpopup #egwpopup_list::-webkit-scrollbar-thumb { background-color: #6a6f71; } #egwpopup #egwpopup_list { overflow-y: auto; height: calc(100% - 52px); } #egwpopup #egwpopup_list .egwpopup_time_label { width: 100%; color: #fafafa; text-align: center; font-style: italic; opacity: 0.5; font-size: 10pt; background: #255ea5; font-weight: bold; } #egwpopup #egwpopup_list span.egwpopup_delete { display: inline-block; float: right; width: 24px; height: 24px; background-image: url(../../node_modules/bootstrap-icons/icons/trash3.svg); background-repeat: no-repeat; background-position: center; background-size: 12px; cursor: pointer; } #egwpopup #egwpopup_list .egwpopup_mark { display: inline-block; float: right; width: 10px; height: 10px; border: 1px solid #b9436c; border-radius: 50%; margin: 7px; background: #b9436c; cursor: pointer; } #egwpopup #egwpopup_list .egwpopup_message { height: auto; overflow: hidden; padding: 10px; background-color: #fafafa; margin-bottom: 5px; } #egwpopup #egwpopup_list .egwpopup_message:hover { background-color: rgba(103, 159, 210, 0.2); } #egwpopup #egwpopup_list .egwpopup_message .egwpopup_message_inner_container { height: 63px; overflow: hidden; } #egwpopup #egwpopup_list .egwpopup_message .egwpopup_message_inner_container a { max-width: 60em; display: inline-block; overflow-wrap: break-word; vertical-align: text-top; } #egwpopup #egwpopup_list .egwpopup_message .egwpopup_message_top_toolbar { display: inline-block; width: 100%; } #egwpopup #egwpopup_list .egwpopup_message .egwpopup_message_top_toolbar .egwpopup_message_date { float: left; color: #767676; } #egwpopup #egwpopup_list .egwpopup_message .egwpopup_message_top_toolbar .egwpopup_message_open { display: inline-block; float: right; width: 24px; height: 24px; background-image: url(../../node_modules/bootstrap-icons/icons/search.svg); background-repeat: no-repeat; background-position: center; background-size: 12px; cursor: pointer; } #egwpopup #egwpopup_list .egwpopup_message .egwpopup_message_top_toolbar .egwpopup_collapse { display: none; } #egwpopup #egwpopup_list .egwpopup_message .egwpopup_actions_container { text-align: center; } #egwpopup #egwpopup_list .egwpopup_message .egwpopup_actions_container > button { height: 24px; width: 80px; border: none; background: #e6e6e6; background-size: 16px; background-position: 12px center; background-repeat: no-repeat; padding-left: 26px; } #egwpopup #egwpopup_list .egwpopup_message .egwpopup_message_more_info { color: #767676; padding-top: 5px; padding-bottom: 5px; } #egwpopup #egwpopup_list .egwpopup_message span.egwpopup_nav_prev, #egwpopup #egwpopup_list .egwpopup_message span.egwpopup_nav_next { display: none; } #egwpopup #egwpopup_list .egwpopup_message.egwpopup_expanded { position: fixed; top: 85px; height: calc(100% - 130px); left: 20vw; width: 60vw; box-shadow: 0 0 40px #666; overflow: auto; } #egwpopup #egwpopup_list .egwpopup_message.egwpopup_expanded:hover { background-color: #fafafa; } #egwpopup #egwpopup_list .egwpopup_message.egwpopup_expanded .egwpopup_message_inner_container { height: calc(100% - 62px); overflow: auto; } #egwpopup #egwpopup_list .egwpopup_message.egwpopup_expanded .egwpopup_collapse { float: right; width: 24px; height: 24px; background-image: url(../../node_modules/bootstrap-icons/icons/x-lg.svg); background-repeat: no-repeat; background-position: center; background-size: 12px; cursor: pointer; display: inline-block; } #egwpopup #egwpopup_list .egwpopup_message.egwpopup_expanded .egwpopup_message_more_info { display: none; } #egwpopup #egwpopup_list .egwpopup_message.egwpopup_expanded span.egwpopup_nav_prev { display: inline-block; float: right; width: 24px; height: 24px; background-image: url(../../node_modules/bootstrap-icons/icons/arrow-bar-left.svg); background-repeat: no-repeat; background-position: center; background-size: 16px; cursor: pointer; } #egwpopup #egwpopup_list .egwpopup_message.egwpopup_expanded .egwpopup_nav_disable { opacity: 0.5; pointer-events: none; } #egwpopup #egwpopup_list .egwpopup_message.egwpopup_expanded span.egwpopup_nav_next { display: inline-block; float: right; width: 24px; height: 24px; background-image: url(../../node_modules/bootstrap-icons/icons/arrow-bar-right.svg); background-repeat: no-repeat; background-position: center; background-size: 16px; cursor: pointer; } #egwpopup #egwpopup_list .egwpopup_message_seen .egwpopup_mark { cursor: auto; background: none; border-color: #666c6e; } #egwpopup #egwpopup_list .egwpopup_message_clone { border: 2px dashed silver; opacity: 0.3; height: 125px; } #egwpopup div#egwpopup_header { font-size: 16px; color: silver; text-align: center; padding: 15px; } #egwpopup div#egwpopup_header .egwpopup_seenall { float: right; width: 10px; height: 10px; border: 1px solid silver; border-radius: 50%; cursor: pointer; margin: 4px 0px 0px 0px; } #egwpopup div#egwpopup_header .egwpopup_seenall:hover { border-color: gray; background: rgba(103, 159, 210, 0.2); } #egwpopup div#egwpopup_header .egwpopup_deleteall { background-image: url(../../node_modules/bootstrap-icons/icons/trash3.svg); width: 12px; height: 12px; background-position: center; background-size: 12px; float: right; background-repeat: no-repeat; margin-right: 15px; margin-top: 4px; cursor: pointer; display: inline-block; opacity: 0.5; } #egwpopup div#egwpopup_header .egwpopup_deleteall:hover { opacity: 1; } /*** END HEADER ***/ /*** APPLICATION ***/ egw-app { /* Application template gets full height */ } egw-app::part(name) { display: flex; align-items: center; text-wrap: nowrap; } egw-app::part(content) { flex-direction: column; overflow-y: hidden; } egw-app > div[id] > div, egw-app > div[id] > et2-template { height: 100%; } /* Individual application colors, should go in each app's CSS */ body, :root { --addressbook-color: #003366; --admin-color: #333333; --bookmarks-color: #CC6633; --calendar-color: #CC0033; --filemanager-color: #ff9933; --infolog-color: #660033; --mail-color: #006699; --projectmanager-color: #669999; --resources-color: #003333; --timesheet-color: #330066; --tracker-color: #009966; --wiki-color: #797979; --ranking-color: #404040; --default-color: #797979; --kanban-color: #4663c8; } body egw-app[name="addressbook"], :root egw-app[name="addressbook"] { --application-color: var(--addressbook-color); } body egw-app[name="admin"], :root egw-app[name="admin"] { --application-color: var(--admin-color); } body egw-app[name="bookmarks"], :root egw-app[name="bookmarks"] { --application-color: var(--bookmarks-color); } body egw-app[name="calendar"], :root egw-app[name="calendar"] { --application-color: var(--calendar-color); } body egw-app[name="filemanager"], :root egw-app[name="filemanager"] { --application-color: var(--filemanager-color); } body egw-app[name="infolog"], :root egw-app[name="infolog"] { --application-color: var(--infolog-color); } body egw-app[name="mail"], :root egw-app[name="mail"] { --application-color: var(--mail-color); } body egw-app[name="projectmanager"], :root egw-app[name="projectmanager"] { --application-color: var(--projectmanager-color); } body egw-app[name="resources"], :root egw-app[name="resources"] { --application-color: var(--resources-color); } body egw-app[name="timesheet"], :root egw-app[name="timesheet"] { --application-color: var(--timesheet-color); } body egw-app[name="tracker"], :root egw-app[name="tracker"] { --application-color: var(--tracker-color); } body egw-app[name="wiki"], :root egw-app[name="wiki"] { --application-color: var(--wiki-color); } body egw-app[name="ranking"], :root egw-app[name="ranking"] { --application-color: var(--ranking-color); } /*** END APPLICATION ***/ /*** WIDGETS ***/ /* This should mostly go away with webcomponents */ /* Show something for undefined widget */ *:not(:defined) { background-size: contain; background-image: url(../../node_modules/bootstrap-icons/icons/question-circle.svg); } /* Get nextmatch sizing more nicely without messing with dynheight */ div.et2_nextmatch { display: flex; flex-direction: column; align-items: stretch; height: 100%; width: 100%; overflow: hidden; } div.et2_nextmatch > div:not(:first-child) { flex: 1 1 100%; max-height: 100%; } div.et2_nextmatch .egwGridView_outer { border-collapse: collapse; } div.et2_nextmatch .egwGridView_outer thead > tr { background-color: var(--sl-color-neutral-50); border-bottom: var(--sl-panel-border-width) solid var(--sl-color-neutral-200); } div.et2_nextmatch .egwGridView_outer thead > tr th { border-right: var(--sl-panel-border-width) solid var(--sl-color-neutral-200); } div.et2_nextmatch .egwGridView_outer thead > tr th div.innerContainer { max-height: 10em; overflow-x: hidden; overflow-y: auto; } div.et2_nextmatch .egwGridView_outer thead > tr th.optcol span.selectcols { height: 9px; padding: 4px 14px 0 2px; margin-top: 4px; background-image: url(../../api/templates/default/images/selectcols.svg); background-repeat: no-repeat; background-size: 10px 10px; display: inline-block; background-position: top; } div.et2_nextmatch .egwGridView_outer .egwGridView_scrollarea { overflow-x: hidden; overflow-y: auto; } div.et2_nextmatch .egwGridView_outer .egwGridView_scrollarea table { border-collapse: collapse; } div.et2_nextmatch .egwGridView_outer .egwGridView_scrollarea table tr { border-bottom: var(--sl-panel-border-width) solid var(--sl-color-neutral-200); } div.et2_nextmatch .egwGridView_outer .egwGridView_scrollarea table tr.selected { background-color: var(--highlight-background-color); } /*** END WIDGETS ***/