| | |
| | | :target { |
| | | outline: none!important; |
| | | padding: 0!important; |
| | | header > a { |
| | | margin: 0 auto; |
| | | } |
| | | .dashboard > header { |
| | | justify-content: flex-end; |
| | | } |
| | | .dashboard > header img { |
| | | width: var(--height); |
| | | } |
| | | .dashboard h1:first-of-type { |
| | | margin-top: 4rem!important; |
| | | } |
| | | main > footer { |
| | | max-width: 100%!important; |
| | | |
| | | nav.sidebar { |
| | | position: fixed; |
| | | z-index: var(--z-top); |
| | | top: var(--btn); |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | width: 100%; |
| | | margin: 4rem 0 0 0!important; |
| | | height: var(--height); |
| | | padding: 0!important; |
| | | z-index: var(--z-4); |
| | | background-color: var(--base); |
| | | box-shadow: var(--shadow); |
| | | box-shadow: rgba(var(--base-rgb), var(--op-45)) var(--shdw); |
| | | width: var(--btn); |
| | | transition: var(--trans-size); |
| | | overflow: hidden auto; |
| | | height: 100%; |
| | | padding-bottom: var(--btn); |
| | | } |
| | | main>* { |
| | | max-width: min(768px, 90vw)!important; |
| | | margin: 0 auto!important; |
| | | } |
| | | main h1 { |
| | | margin: 0!important; |
| | | font-size: var(--large); |
| | | } |
| | | nav.sidebar > ul { |
| | | --gap: 0; |
| | | } |
| | | nav.sidebar .toggle.main.main { |
| | | padding: 0; |
| | | position: fixed; |
| | | left: unset; |
| | | bottom: 0; |
| | | right: 0; |
| | | z-index: var(--z-8); |
| | | box-shadow: rgba(var(--base-rgb), var(--op-45)) var(--shdw); |
| | | width: var(--btn); |
| | | height: var(--btn); |
| | | } |
| | | nav.sidebar .toggle.main .icon { |
| | | --w: 1.2em; |
| | | } |
| | | nav.sidebar .toggle:not(.main) { |
| | | display: none; |
| | | } |
| | | nav.sidebar.open .toggle:not(.main) { |
| | | display: inline-flex; |
| | | } |
| | | nav.sidebar .icon { |
| | | --w: var(--chip_); |
| | | width: var(--btn); |
| | | min-width: var(--chip); |
| | | transition: var(--trans-size), transform var(--trans-base); |
| | | } |
| | | nav.sidebar.open .icon { |
| | | --w: var(--chip); |
| | | width: var(--w); |
| | | } |
| | | |
| | | .item-grid .item { |
| | | position: relative; |
| | | } |
| | | img { |
| | | width: 100%; |
| | | height: auto; |
| | | aspect-ratio: 1; |
| | | object-fit: cover; |
| | | } |
| | | nav.sidebar.open { |
| | | width: fit-content; |
| | | max-width: 100%; |
| | | } |
| | | |
| | | .replace { |
| | | margin-bottom: var(--offHeight)!important; |
| | | } |
| | | /******************************************** |
| | | GRID VIEW |
| | | ********************************************/ |
| | | .item-grid { |
| | | margin-bottom: 4rem; |
| | | } |
| | | .item-grid:has(.select-item:checked) .item { |
| | | padding: .75rem; |
| | | opacity : .8; |
| | | filter: var(--filter); |
| | | } |
| | | .item-grid .item:has(.select-item:checked) { |
| | | padding: .5rem; |
| | | filter: none; |
| | | opacity: 1; |
| | | background-color: var(--action-0); |
| | | } |
| | | |
| | | .grid-view .item > input[type=checkbox]:not(.label-button) + label { |
| | | padding-left: 0; |
| | | margin: 0; |
| | | } |
| | | .grid-view .item > input[type=checkbox] + label::before { |
| | | transform: unset; |
| | | top: .5rem; |
| | | left: .5rem; |
| | | } |
| | | .grid-view .item > input[type=checkbox] + label::after { |
| | | top: .5rem; |
| | | left: .75rem; |
| | | transform: translateY(20%) rotate(45deg); |
| | | } |
| | | nav.sidebar ul { |
| | | height: max-content; |
| | | width: 100%; |
| | | --gap: 0; |
| | | } |
| | | |
| | | .grid-view .item .item-actions { |
| | | position: absolute; |
| | | nav.sidebar .toggle { |
| | | width: var(--btn); |
| | | height: var(--chipchip); |
| | | box-shadow: none; |
| | | background-color: transparent; |
| | | min-height: 0; |
| | | } |
| | | nav.sidebar .toggle:hover, |
| | | nav.sidebar .toggle:focus { |
| | | background-color: var(--action-0); |
| | | color: var(--action-contrast); |
| | | } |
| | | |
| | | |
| | | nav.sidebar .title { |
| | | max-width: 0; |
| | | opacity: 0; |
| | | transition: max-width var(--trans-base); |
| | | } |
| | | nav.sidebar.open .title { |
| | | white-space: nowrap; |
| | | max-width: max-content; |
| | | opacity: 1; |
| | | } |
| | | nav.sidebar .icon { |
| | | min-width: var(--chip_); |
| | | } |
| | | |
| | | nav.sidebar li { |
| | | --justify: center; |
| | | --wrap: nowrap; |
| | | --align: flex-start; |
| | | overflow: hidden; |
| | | } |
| | | nav.sidebar.open li >div { |
| | | width: 100%; |
| | | padding-right: var(--btn); |
| | | } |
| | | nav.sidebar .has-submenu { |
| | | height: max-content; |
| | | } |
| | | nav.sidebar li ul { |
| | | width: 0; |
| | | } |
| | | nav.sidebar li.open ul { |
| | | width: max-content; |
| | | } |
| | | nav.sidebar.open li.has-submenu > div { |
| | | padding-right: 0; |
| | | } |
| | | nav.sidebar.open li.has-submenu > ul { |
| | | padding-left: var(--chip); |
| | | } |
| | | |
| | | nav.sidebar .a { |
| | | color: var(--contrast-200); |
| | | } |
| | | nav.sidebar a, |
| | | nav.sidebar .a { |
| | | height: var(--chipchip); |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | transition: none; |
| | | padding-left: 0; |
| | | } |
| | | nav.sidebar.open a, |
| | | nav.sidebar.open .a { |
| | | width: 100%; |
| | | justify-content: flex-start; |
| | | } |
| | | nav.sidebar .has-submenu ul { |
| | | max-height: 0; |
| | | height: 0; |
| | | overflow: hidden; |
| | | transition: var(--trans-size); |
| | | } |
| | | nav.sidebar .has-submenu.open > ul { |
| | | height: 100%; |
| | | max-height: fit-content; |
| | | } |
| | | |
| | | |
| | | |
| | | /** Queue Modifications **/ |
| | | aside.main.main#queue { |
| | | bottom: 0; |
| | | right: 0; |
| | | } |
| | | |
| | | .list-view h3, |
| | | .list-view p { |
| | | margin: 0!important; |
| | | button.qtoggle.sticky { |
| | | bottom: 0; |
| | | left: 0; |
| | | } |
| | | |
| | | @media (min-width: 768px) { |
| | | .grid-view { |
| | | grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); |
| | | section.replace { |
| | | margin: 0 var(--btn_) 0 calc(var(--btn) + var(--chipchip)); |
| | | } |
| | | section.replace > * { |
| | | max-width: 100%; |
| | | } |
| | | .grid-view .item .item-actions { |
| | | bottom: unset; |
| | | top: 0; |
| | | } |
| | | } |
| | | .bulk-controls { |
| | | margin: 1rem 0; |
| | | } |
| | | .bulk-controls .selected-count { |
| | | font-weight: normal; |
| | | font-size: var(--small); |
| | | text-transform: none; |
| | | font-style: italic; |
| | | display: flex; |
| | | gap: .25rem; |
| | | margin-left: 2rem; |
| | | } |
| | | .selected-count::before { |
| | | content: '{'; |
| | | } |
| | | .selected-count::after { |
| | | content: '}'; |
| | | } |
| | | |
| | | .bulk-edit-form .selected { |
| | | display: grid; |
| | | grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); |
| | | gap: 4px; |
| | | } |
| | | .selected label { |
| | | padding: .5rem; |
| | | opacity: .6; |
| | | filter: var(--filter); |
| | | border: 2px solid transparent; |
| | | transition: filter var(--transition-base), opacity var(--transition-base), border var(--transition-base), padding var(--transition-base); |
| | | } |
| | | .selected label:has(:checked) { |
| | | border-color: var(--action-0); |
| | | .dashboard :is(h1,h2,h3,h4,h5,h6) { |
| | | text-transform: none; |
| | | margin: .5em 0 1em; |
| | | } |
| | | |
| | | ul.dashboard { |
| | | margin: 0; |
| | | padding: 0; |
| | | opacity: 1; |
| | | filter: none; |
| | | transition: filter var(--transition-base), opacity var(--transition-base), border var(--transition-base), padding var(--transition-base); |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | gap: .5rem; |
| | | flex-wrap: wrap; |
| | | } |
| | | /****************************************************** |
| | | TABLE VIEW |
| | | ******************************************************/ |
| | | form.table img { |
| | | max-height: 4rem; |
| | | ul.dashboard li { |
| | | list-style: none; |
| | | } |
| | | ul.dashboard p { |
| | | margin: 0; |
| | | } |
| | | |
| | | .dashboard main > footer, |
| | | .dashboard .main-actions { |
| | | position: absolute; |
| | | left: var(--offScreen); |
| | | width: 0; |
| | | padding: 0; |
| | | } |
| | | |
| | | /** FILTERS **/ |
| | | .all-filters { |
| | | margin: 1rem 0; |
| | | padding: 1rem 0; |
| | | border: 1px solid var(--base-100); |
| | | border-width: 1px 0; |
| | | --gap: 0; |
| | | width: 100%; |
| | | } |
| | | .all-filters summary { |
| | | width: 100%; |
| | | } |
| | | .all-filters summary:hover { |
| | | color: var(--action-0); |
| | | } |
| | | |
| | | .all-filters .row { |
| | | --justify: flex-start; |
| | | } |
| | | .all-filters + [data-action="clear-filters"] { |
| | | --w: 1em; |
| | | width: max-content; |
| | | font-size: var(--txt-x-small); |
| | | min-height: var(--chip); |
| | | margin-left: auto; |
| | | display: block; |
| | | position: relative; |
| | | top: -1rem; |
| | | } |
| | | |
| | | |
| | | .all-filters [data-action="refresh"] { |
| | | margin-left: auto; |
| | | --w: 1em!important; |
| | | flex-wrap: nowrap; |
| | | width: max-content; |
| | | justify-content:flex-start; |
| | | transition: var(--trans-size); |
| | | min-height: var(--chip); |
| | | font-size: var(--txt-x-small); |
| | | } |
| | | .all-filters [data-action="refresh"]:focus, |
| | | .all-filters [data-action="refresh"]:hover { |
| | | width: max-content; |
| | | } |
| | | .all-filters [data-action="refresh"] span { |
| | | max-width: 0; |
| | | transition: var(--trans-size); |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | } |
| | | .all-filters [data-action="refresh"]:focus span, |
| | | .all-filters [data-action="refresh"]:hover span { |
| | | max-width: max-content; |
| | | } |
| | | |
| | | |
| | | .all-filters .btn + label { |
| | | box-shadow: var(--shdw-none); |
| | | color: var(--contrast-200); |
| | | } |
| | | .all-filters .radio-options input:not(.ch):checked + label { |
| | | box-shadow: rgba(var(--base-rgb),var(--op-6)) var(--shdw-inset); |
| | | color: var(--contrast-50); |
| | | border-color: var(--contrast-50); |
| | | } |
| | | |
| | | /****************************************************** |
| | | FILTERS |
| | | ******************************************************/ |
| | | .all-filters { |
| | | margin: 2rem 0; |
| | | padding: 1rem 0; |
| | | border-top: 1px solid var(--base-200); |
| | | border-bottom: 1px solid var(--base-200); |
| | | } |
| | | details.uploader + .items-list .all-filters { |
| | | border-top: none; |
| | | } |
| | | |
| | | |
| | | .all-filters .filters{ |
| | | width: 100%; |
| | | } |
| | |
| | | } |
| | | .all-filters span.label { |
| | | text-transform: uppercase; |
| | | font-size: var(--small); |
| | | font-size: var(--txt-small); |
| | | font-weight: 900; |
| | | width: 15vw; |
| | | display: inline-flex; |
| | | align-items: center; |
| | | padding-right: 2rem; |
| | | } |
| | | @media (max-width: 767px) { |
| | | .all-filters > .row { |
| | | padding: .5rem 0; |
| | | } |
| | | .all-filters span.label { |
| | | padding-top: .5rem; |
| | | width: 100%; |
| | | border-top: 1px solid var(--base-200); |
| | | } |
| | | } |
| | | .controls .icon { |
| | | --w: 1.4rem; |
| | | } |
| | | .all-filters .btn + label, |
| | | .all-filters button { |
| | | height: fit-content; |
| | | padding: .5rem!important; |
| | | height: var(--chip_); |
| | | padding: .125rem!important; |
| | | min-width: 0; |
| | | min-height: 0; |
| | | min-height: var(--chip_); |
| | | width: var(--chip_); |
| | | } |
| | | .all-filters > .row { |
| | | padding: .25rem 0; |
| | | } |
| | | .all-filters .btn + label:hover, |
| | | .all-filters .btn + label:focus, |
| | |
| | | transform-origin: left; |
| | | width: 0; |
| | | padding: 0; |
| | | transition: transform var(--transition-base), width var(--transition-base), padding var(--transition-base); |
| | | transition: transform var(--trans-base), width var(--trans-base), padding var(--trans-base); |
| | | } |
| | | .search-container button { |
| | | padding: .5rem; |
| | |
| | | .search-container.open .clear-search { |
| | | transform: scaleX(1); |
| | | transform-origin: left; |
| | | transition: transform var(--transition-base), width var(--transition-base), padding var(--transition-base); |
| | | transition: transform var(--trans-base), width var(--trans-base), padding var(--trans-base); |
| | | } |
| | | .all-filters > .search, |
| | | input[type=search], |
| | |
| | | width: 100%; |
| | | } |
| | | |
| | | /*********************************************************** |
| | | TABLE FIELDS |
| | | ***********************************************************/ |
| | | form.table textarea { |
| | | width: 250px; |
| | | padding: .5rem; |
| | | } |
| | | |
| | | .multi-select summary { |
| | | --gap: 2rem; |
| | | padding-right: 2.5rem; |
| | | } |
| | | |
| | | /************************************************************ |
| | | /******************************************************** |
| | | TABS |
| | | ************************************************************/ |
| | | dialog.edit[open], |
| | | dialog.bulk-edit[open], |
| | | dialog.create[open] { |
| | | height: 85vh; |
| | | top: 5vh; |
| | | } |
| | | .tab-content h2 { |
| | | display: none; |
| | | } |
| | | |
| | | /********************************************************** |
| | | HOURS |
| | | **********************************************************/ |
| | | .group-fields.hours .group-fields, |
| | | .group-fields.hours .group-fields .field { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | .group-fields.hours .group-fields { |
| | | padding: 1rem .5rem; |
| | | gap: 1rem; |
| | | } |
| | | .group-fields.hours .group-fields:nth-of-type(2n+1) { |
| | | background-color: var(--base); |
| | | } |
| | | .group-fields.hours .group-fields .field { |
| | | margin: 0; |
| | | } |
| | | |
| | | .group-fields.hours .true-false { |
| | | flex: 1; |
| | | } |
| | | .group-fields.hours .time { |
| | | position: relative; |
| | | } |
| | | .group-fields.hours .time label { |
| | | margin: 0; |
| | | font-size: var(--small); |
| | | position: absolute; |
| | | top: -1rem; |
| | | left: 0; |
| | | color: var(--contrast-200); |
| | | } |
| | | /************************************************************ |
| | | TODAY HOURS, specific to North'eh |
| | | ************************************************************/ |
| | | .today_hours { |
| | | width: min(500px, 90vw); |
| | | } |
| | | .today_hours .group-fields { |
| | | width: 100%; |
| | | padding: 0; |
| | | display: flex; |
| | | justify-content: center; |
| | | gap: .5rem; |
| | | } |
| | | @media (min-width: 768px) { |
| | | .today_hours .group-fields { |
| | | padding: 2rem; |
| | | } |
| | | } |
| | | .today_hours .field { |
| | | margin: 0; |
| | | } |
| | | .dash .true-false { |
| | | margin: 0; |
| | | } |
| | | .dash [type=submit] { |
| | | width: 90%; |
| | | } |
| | | .dashboard.dash h2 { |
| | | text-transform: none; |
| | | font-size: var(--large); |
| | | } |
| | | .dashboard.dash .replace > ul { |
| | | display: flex; |
| | | list-style: none; |
| | | align-items: flex-start; |
| | | justify-content: flex-start; |
| | | flex-wrap: wrap; |
| | | gap: .5rem; |
| | | } |
| | | .dashboard.settings nav.tabs { |
| | | --height: 3.5rem; |
| | | --x: var(--offHeight); |
| | | ********************************************************/ |
| | | nav.tabs { |
| | | position: fixed; |
| | | bottom: var(--height); |
| | | left: var(--x); |
| | | right: var(--x); |
| | | z-index:99; |
| | | width: calc(100% - var(--x) - var(--x)); |
| | | background-color: var(--base); |
| | | z-index:var(--z-4); |
| | | width: calc(100% - var(--btn)); |
| | | top: var(--btn); |
| | | left: var(--btn); |
| | | background-color: rgba(var(--base-rgb), var(--op-45)); |
| | | box-shadow: rgba(var(--base-rgb), var(--op-6)) var(--shdw-down); |
| | | } |
| | | nav.integrations ul, |
| | | nav.integrations li, |
| | | nav.integrations a, |
| | | nav.integrations { |
| | | height: auto; |
| | | } |
| | | |
| | | /*************************************** |
| | | |
| | | ***************************************/ |
| | | .replace { |
| | | overflow: hidden; |
| | | } |
| | | body.dash form#options { |
| | | display: flex; |
| | | flex-flow: column nowrap; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | |
| | | /*************************************** |
| | | INTEGRATIONS |
| | | ***************************************/ |
| | | .item-grid.integrations { |
| | | grid-template-columns: repeat(2, 1fr); |
| | | gap: 2rem; |
| | | } |
| | | .integration { |
| | | background: var(--base); |
| | | border: 2px solid var(--base-200); |
| | | border-radius: var(--outerRadius); |
| | | padding: 1rem; |
| | | position: relative; |
| | | transition: all var(--transition-base); |
| | | box-shadow: var(--shadow); |
| | | } |
| | | .integration.connected { |
| | | border-color: var(--success); |
| | | } |
| | | .integration.error, |
| | | .integration.disconnected { |
| | | border-color: var(--error); |
| | | } |
| | | .integration.hasChanges { |
| | | border-color: var(--warning); |
| | | } |
| | | .integration .header { |
| | | margin-bottom: .75rem; |
| | | padding-bottom: .75rem; |
| | | border-bottom: 2px solid var(--base-200); |
| | | } |
| | | .integration h3 { |
| | | letter-spacing: 1px; |
| | | font-size: var(--medium); |
| | | margin: 0; |
| | | } |
| | | .integration .meta { |
| | | margin-bottom: 1rem; |
| | | text-align: right; |
| | | color: var(--contrast-200); |
| | | font-size: var(--small); |
| | | } |
| | | |
| | | .integration .setup { |
| | | font-size: var(--small); |
| | | font-weight: bold; |
| | | text-transform: uppercase; |
| | | } |
| | | .integration .setup .indicator { |
| | | font-size: var(--medium); |
| | | } |
| | | .integration .connected .indicator, |
| | | .integration .setup .connected { |
| | | color: var(--success); |
| | | } |
| | | .integration .disconnected .indicator, |
| | | .integration .setup .disconnected { |
| | | color: var(--error); |
| | | } |
| | | .integration.hasChanges .disconnected { |
| | | color: var(--warning); |
| | | } |
| | | |
| | | .connection-status.connected { |
| | | background-color: var(--successBack); |
| | | color: var(--successText); |
| | | } |
| | | .connection-status.disconnected { |
| | | background-color: var(--errorBack); |
| | | color: var(--errorText); |
| | | } |
| | | |
| | | .integration code { |
| | | display: inline-block; |
| | | width: 90%; |
| | | margin: 0 .5rem; |
| | | user-select: all; |
| | | padding: .75rem; |
| | | border: 2px solid var(--base); |
| | | background-color: var(--base-200); |
| | | word-break: break-all; |
| | | } |
| | | .integration details + details { |
| | | margin-top: 1rem; |
| | | } |
| | | .integration .actions { |
| | | margin-top: 1rem; |
| | | } |
| | | |
| | | .hint { |
| | | line-height: 1.2; |
| | | font-style: italic; |
| | | font-size: var(--small); |
| | | } |
| | | |
| | | .hasChanges button[data-action=save_credentials] { |
| | | border-color: var(--warning); |
| | | animation: pulse-color 1s infinite; |
| | | animation-delay: 1s; |
| | | } |
| | | |
| | | .flash { |
| | | animation: flash .5s; |
| | | } |
| | | .flash.connected { |
| | | --b: var(--success); |
| | | } |
| | | .flash.disconnected { |
| | | --b: var(--error); |
| | | } |
| | | .flash.syncing { |
| | | --b: var(--success); |
| | | } |
| | | .flash.hasChanges, |
| | | .flash.error { |
| | | --b: var(--warning); |
| | | } |
| | | |
| | | @keyframes flash { |
| | | 0%, 100% {border-color: inherit} |
| | | 50% {border-color: var(--b)} |
| | | } |
| | | |
| | | .location.field { |
| | | width: 80vw; |
| | | } |
| | | .location.field > p { |
| | | text-align: center; |
| | | } |
| | | .location.field > p + p { |
| | | margin: 0 .5rem 0 0; |
| | | } |
| | | .location.field .location-map { |
| | | height: 20vh; |
| | | } |
| | | .location.field .location-links { |
| | | padding: .5rem 0; |
| | | display: flex; |
| | | justify-content: space-evenly; |
| | | } |
| | | |
| | | .item-grid .item, |
| | | .field.upload [data-upload-id] { |
| | | touch-action: none; |
| | | } |
| | | |
| | | .empty-state { |
| | | grid-column: 1/-1; |
| | | padding: 1rem 10vw; |
| | | margin: 0 10vw; |
| | | border-radius: var(--outerRadius); |
| | | background-color: var(--base-100); |
| | | } |
| | | |
| | | /****************** TEST ***/ |
| | | .jvb-oauth-connect { |
| | | position: relative; |
| | | transition: opacity 0.2s; |
| | | } |
| | | |
| | | .jvb-oauth-connect.loading { |
| | | opacity: 0.6; |
| | | pointer-events: none; |
| | | } |
| | | |
| | | .jvb-oauth-connect.loading::after { |
| | | content: ''; |
| | | position: absolute; |
| | | right: -30px; |
| | | top: 50%; |
| | | transform: translateY(-50%); |
| | | width: 16px; |
| | | height: 16px; |
| | | border: 2px solid #ccc; |
| | | border-top-color: #0073aa; |
| | | border-radius: 50%; |
| | | animation: oauth-spin 0.8s linear infinite; |
| | | } |
| | | |
| | | @keyframes oauth-spin { |
| | | to { transform: translateY(-50%) rotate(360deg); } |
| | | } |
| | | |
| | | /* Status Messages */ |
| | | .integration-status-message { |
| | | padding: 12px 16px; |
| | | margin: 16px 0; |
| | | border-radius: 4px; |
| | | display: none; |
| | | font-size: 14px; |
| | | line-height: 1.5; |
| | | } |
| | | |
| | | .integration-status-message.success { |
| | | display: block; |
| | | background: #d4edda; |
| | | color: #155724; |
| | | border-left: 4px solid #28a745; |
| | | } |
| | | |
| | | .integration-status-message.error { |
| | | display: block; |
| | | background: #f8d7da; |
| | | color: #721c24; |
| | | border-left: 4px solid #dc3545; |
| | | } |
| | | |
| | | .integration-status-message.info { |
| | | display: block; |
| | | background: #d1ecf1; |
| | | color: #0c5460; |
| | | border-left: 4px solid #17a2b8; |
| | | } |
| | | |
| | | /* Connection Status Indicator */ |
| | | .connection-status { |
| | | display: inline-flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | padding: 6px 12px; |
| | | border-radius: 4px; |
| | | font-size: 13px; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .connection-status.connected { |
| | | background: #d4edda; |
| | | color: #155724; |
| | | } |
| | | |
| | | .connection-status.disconnected { |
| | | background: #f8d7da; |
| | | color: #721c24; |
| | | } |
| | | |
| | | .status-indicator { |
| | | font-size: 10px; |
| | | line-height: 1; |
| | | } |
| | | |
| | | .connection-status.connected .status-indicator { |
| | | color: #28a745; |
| | | } |
| | | |
| | | .connection-status.disconnected .status-indicator { |
| | | color: #dc3545; |
| | | } |
| | | |
| | | .replace:has(nav.tabs) { |
| | | margin-top: var(--btn); |
| | | } |