186 lines
3.1 KiB
CSS
186 lines
3.1 KiB
CSS
/* Dark theme */
|
|
body {
|
|
background-color: #0f1115;
|
|
}
|
|
|
|
.card.health-card {
|
|
background: #101520;
|
|
}
|
|
|
|
.health-dot {
|
|
width: 12px;
|
|
height: 12px;
|
|
border-radius: 50%;
|
|
background: #dc3545;
|
|
}
|
|
|
|
.health-dot.ok {
|
|
background: #28a745;
|
|
}
|
|
|
|
.health-dot.bad {
|
|
background: #dc3545;
|
|
}
|
|
|
|
/* Tables */
|
|
.table td,
|
|
.table th {
|
|
vertical-align: middle;
|
|
}
|
|
|
|
/* Dividers */
|
|
.vr {
|
|
width: 1px;
|
|
min-height: 1rem;
|
|
background: rgba(255, 255, 255, .15);
|
|
}
|
|
|
|
/* --- horizontal scroll & nowrap for wide tables --- */
|
|
.table-responsive {
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.table-nowrap {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
@media (min-width: 992px) {
|
|
.table-nowrap-lg-normal {
|
|
white-space: normal;
|
|
}
|
|
}
|
|
|
|
/* sticky first column (for wide tables) */
|
|
.sticky-col {
|
|
position: sticky;
|
|
left: 0;
|
|
z-index: 2;
|
|
background: var(--bs-body-bg);
|
|
box-shadow: 1px 0 0 rgba(255, 255, 255, .08);
|
|
}
|
|
|
|
footer.site-footer {
|
|
border-top: 1px solid rgba(255, 255, 255, .1);
|
|
}
|
|
|
|
footer.site-footer a {
|
|
text-decoration: none;
|
|
}
|
|
|
|
footer.site-footer a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
/* Toast container constraints */
|
|
#toast-container .toast {
|
|
max-width: min(420px, 90vw);
|
|
word-wrap: break-word;
|
|
}
|
|
|
|
#toast-container {
|
|
max-width: 92vw;
|
|
}
|
|
|
|
|
|
#toast-container {
|
|
width: min(480px, 96vw);
|
|
max-width: min(480px, 96vw);
|
|
}
|
|
|
|
#toast-container .toast {
|
|
max-width: 100%;
|
|
overflow-wrap: anywhere;
|
|
word-break: break-word;
|
|
white-space: normal;
|
|
}
|
|
|
|
.position-fixed.bottom-0.end-0.p-3 {
|
|
right: max(env(safe-area-inset-right), 1rem);
|
|
bottom: max(env(safe-area-inset-bottom), 1rem);
|
|
}
|
|
|
|
/* Row chevron (expandable rows) */
|
|
.table .chev {
|
|
width: 1.25rem;
|
|
text-align: center;
|
|
user-select: none;
|
|
}
|
|
|
|
.table tr.expandable {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.table tr.expandable .chev::before {
|
|
content: "▸";
|
|
display: inline-block;
|
|
transition: transform .15s ease;
|
|
}
|
|
|
|
.table tr.expanded .chev::before {
|
|
transform: rotate(90deg);
|
|
content: "▾";
|
|
}
|
|
|
|
/* Small utility widths */
|
|
.w-1 {
|
|
width: 1.25rem;
|
|
}
|
|
|
|
/* Subtle skeleton */
|
|
.skel {
|
|
position: relative;
|
|
background: linear-gradient(90deg, rgba(255, 255, 255, .05) 25%, rgba(255, 255, 255, .10) 37%, rgba(255, 255, 255, .05) 63%);
|
|
background-size: 400% 100%;
|
|
animation: skel 1.4s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes skel {
|
|
0% {
|
|
background-position: 100% 0;
|
|
}
|
|
|
|
100% {
|
|
background-position: 0 0;
|
|
}
|
|
}
|
|
|
|
|
|
/* --- VM Admin: dropdown „target node” ma być zawsze nad wierszem poniżej --- */
|
|
#vm-admin,
|
|
#vm-admin .table-responsive,
|
|
#vm-admin table,
|
|
#vm-admin tbody,
|
|
#vm-admin tr,
|
|
#vm-admin td {
|
|
overflow: visible !important;
|
|
}
|
|
|
|
#vm-admin td {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
#vm-admin .target-node {
|
|
position: relative;
|
|
z-index: 1001;
|
|
/* ponad sąsiednimi wierszami */
|
|
}
|
|
|
|
/* --- Toasty: prawy-dolny róg, stabilnie --- */
|
|
#toast-container {
|
|
position: fixed;
|
|
right: max(env(safe-area-inset-right), 1rem);
|
|
bottom: max(env(safe-area-inset-bottom), 1rem);
|
|
z-index: 2000;
|
|
width: min(480px, 96vw);
|
|
max-width: min(480px, 96vw);
|
|
pointer-events: none;
|
|
}
|
|
|
|
#toast-container .toast {
|
|
pointer-events: auto;
|
|
max-width: 100%;
|
|
overflow-wrap: anywhere;
|
|
word-break: break-word;
|
|
white-space: normal;
|
|
} |