5123 lines
105 KiB
CSS
5123 lines
105 KiB
CSS
:root {
|
|
--bg: oklch(97.2% 0.004 228);
|
|
--bg-soft: oklch(99.1% 0.004 228);
|
|
--panel: oklch(99.7% 0.002 228 / 0.97);
|
|
--panel-muted: oklch(98.1% 0.005 228 / 0.98);
|
|
--panel-strong: oklch(100% 0 0 / 0.99);
|
|
--panel-tint: color-mix(in oklab, var(--panel-strong) 94%, var(--accent-soft));
|
|
--line: oklch(87% 0.014 232 / 0.96);
|
|
--line-strong: oklch(78% 0.022 234 / 0.98);
|
|
--text: oklch(29% 0.018 234);
|
|
--muted: oklch(53% 0.016 234);
|
|
--accent: oklch(51% 0.078 244);
|
|
--accent-soft: oklch(94% 0.018 244);
|
|
--ok: oklch(55% 0.12 154);
|
|
--ok-soft: oklch(95% 0.028 154);
|
|
--warn: oklch(68% 0.14 82);
|
|
--warn-soft: oklch(96% 0.034 82);
|
|
--bad: oklch(58% 0.15 32);
|
|
--bad-soft: oklch(95% 0.034 32);
|
|
--shadow: 0 14px 30px rgba(33, 46, 76, 0.06);
|
|
--shadow-soft: 0 10px 22px rgba(33, 46, 76, 0.05);
|
|
--shadow-lift: 0 18px 36px rgba(33, 46, 76, 0.1);
|
|
--group-gateway: oklch(54% 0.075 238);
|
|
--group-app: oklch(55% 0.085 176);
|
|
--group-pay: oklch(67% 0.13 82);
|
|
--group-infra: oklch(55% 0.05 204);
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
[v-cloak] {
|
|
display: none;
|
|
}
|
|
|
|
[hidden] {
|
|
display: none !important;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0;
|
|
min-height: 100%;
|
|
}
|
|
|
|
body {
|
|
position: relative;
|
|
color: var(--text);
|
|
font-family: "IBM Plex Sans", "PingFang SC", "Noto Sans SC", sans-serif;
|
|
background: linear-gradient(180deg, var(--bg-soft) 0%, var(--bg) 100%);
|
|
}
|
|
|
|
body::before {
|
|
content: "";
|
|
position: fixed;
|
|
inset: 0;
|
|
pointer-events: none;
|
|
background-image:
|
|
linear-gradient(color-mix(in oklab, var(--accent) 9%, transparent) 1px, transparent 1px),
|
|
linear-gradient(90deg, color-mix(in oklab, var(--accent) 9%, transparent) 1px, transparent 1px);
|
|
background-size: 32px 32px;
|
|
opacity: 0.11;
|
|
}
|
|
|
|
.shell {
|
|
position: relative;
|
|
z-index: 1;
|
|
max-width: 1940px;
|
|
margin: 0 auto;
|
|
padding: 16px 20px 36px;
|
|
}
|
|
|
|
.boot-indicator {
|
|
position: fixed;
|
|
right: 24px;
|
|
top: 18px;
|
|
z-index: 60;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
min-height: 40px;
|
|
padding: 0 14px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 8px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 96%, var(--accent-soft)) 0%, var(--panel) 100%);
|
|
box-shadow: 0 16px 32px rgba(33, 46, 76, 0.1);
|
|
color: var(--muted);
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.04em;
|
|
}
|
|
|
|
.boot-indicator::before {
|
|
content: "";
|
|
width: 10px;
|
|
height: 10px;
|
|
border-radius: 999px;
|
|
background: color-mix(in oklab, var(--accent) 66%, var(--ok));
|
|
box-shadow: 0 0 0 5px color-mix(in oklab, var(--accent-soft) 72%, transparent);
|
|
animation: boot-pulse 1.35s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes boot-pulse {
|
|
0%,
|
|
100% {
|
|
transform: scale(0.9);
|
|
opacity: 0.82;
|
|
}
|
|
50% {
|
|
transform: scale(1.08);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
.loading-stage {
|
|
display: grid;
|
|
gap: 14px;
|
|
margin-top: 10px;
|
|
min-height: 420px;
|
|
padding: 16px;
|
|
}
|
|
|
|
.loading-stage-head,
|
|
.loading-panels,
|
|
.loading-stack {
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
|
|
.loading-chip-row {
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.loading-chip,
|
|
.loading-pill,
|
|
.loading-band,
|
|
.loading-line,
|
|
.loading-table-row,
|
|
.loading-block {
|
|
position: relative;
|
|
overflow: hidden;
|
|
border-radius: 12px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 0%, color-mix(in oklab, var(--panel-muted) 90%, var(--panel-strong)) 100%);
|
|
}
|
|
|
|
.loading-chip::after,
|
|
.loading-pill::after,
|
|
.loading-band::after,
|
|
.loading-line::after,
|
|
.loading-table-row::after,
|
|
.loading-block::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(90deg, transparent 0%, color-mix(in oklab, var(--panel-strong) 54%, transparent) 50%, transparent 100%);
|
|
transform: translateX(-100%);
|
|
animation: skeleton-slide 1.8s ease-in-out infinite;
|
|
}
|
|
|
|
.loading-chip {
|
|
width: 82px;
|
|
height: 32px;
|
|
}
|
|
|
|
.loading-line {
|
|
height: 12px;
|
|
}
|
|
|
|
.loading-line-short {
|
|
width: min(100%, 220px);
|
|
}
|
|
|
|
.loading-line-medium {
|
|
width: min(100%, 160px);
|
|
}
|
|
|
|
.loading-band-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.loading-band {
|
|
height: 64px;
|
|
border-radius: 16px;
|
|
}
|
|
|
|
.loading-panels {
|
|
grid-template-columns: minmax(0, 1.35fr) minmax(260px, 0.65fr);
|
|
align-items: start;
|
|
}
|
|
|
|
.loading-card {
|
|
display: grid;
|
|
gap: 12px;
|
|
min-height: 240px;
|
|
padding: 14px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 18px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 96%, var(--accent-soft)) 0%, var(--panel) 100%);
|
|
}
|
|
|
|
.loading-card-wide {
|
|
min-height: 340px;
|
|
}
|
|
|
|
.loading-card-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
}
|
|
|
|
.loading-pill {
|
|
width: 88px;
|
|
height: 30px;
|
|
}
|
|
|
|
.loading-table {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.loading-table-row {
|
|
height: 42px;
|
|
border-radius: 14px;
|
|
}
|
|
|
|
.loading-block {
|
|
height: 56px;
|
|
}
|
|
|
|
@keyframes skeleton-slide {
|
|
0% {
|
|
transform: translateX(-100%);
|
|
}
|
|
100% {
|
|
transform: translateX(100%);
|
|
}
|
|
}
|
|
|
|
body.auth-page {
|
|
display: block;
|
|
padding: 28px 16px;
|
|
}
|
|
|
|
.auth-shell {
|
|
position: relative;
|
|
z-index: 1;
|
|
width: min(100%, 460px);
|
|
margin: min(12vh, 120px) auto 0;
|
|
}
|
|
|
|
.auth-panel {
|
|
border: 1px solid var(--line);
|
|
border-radius: 22px;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 92%, var(--accent-soft)) 0%, var(--panel) 100%);
|
|
box-shadow: var(--shadow);
|
|
padding: 22px;
|
|
}
|
|
|
|
.auth-panel-head {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
}
|
|
|
|
.auth-title {
|
|
margin: 0;
|
|
font-size: clamp(24px, 4vw, 30px);
|
|
font-weight: 700;
|
|
letter-spacing: 0.02em;
|
|
}
|
|
|
|
.auth-form {
|
|
display: grid;
|
|
gap: 14px;
|
|
margin-top: 18px;
|
|
}
|
|
|
|
.auth-field {
|
|
display: grid;
|
|
gap: 7px;
|
|
color: var(--muted);
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.auth-input {
|
|
min-height: 42px;
|
|
padding: 0 12px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 14px;
|
|
background: color-mix(in oklab, var(--panel-muted) 88%, var(--bg-soft));
|
|
color: var(--text);
|
|
font: inherit;
|
|
}
|
|
|
|
.auth-input:focus-visible {
|
|
outline: 0;
|
|
border-color: color-mix(in oklab, var(--accent) 56%, var(--line-strong));
|
|
box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent-soft) 84%, transparent);
|
|
}
|
|
|
|
.auth-submit {
|
|
width: 100%;
|
|
min-height: 40px;
|
|
}
|
|
|
|
.auth-error {
|
|
margin: 0;
|
|
padding: 10px 12px;
|
|
border: 1px solid color-mix(in oklab, var(--bad) 32%, var(--line));
|
|
border-radius: 14px;
|
|
background: color-mix(in oklab, var(--bad-soft) 56%, var(--panel-strong));
|
|
color: var(--bad);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.entry-panel {
|
|
display: grid;
|
|
gap: 18px;
|
|
}
|
|
|
|
.entry-grid,
|
|
.entry-stack {
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
|
|
.entry-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.entry-card {
|
|
display: grid;
|
|
gap: 8px;
|
|
min-height: 132px;
|
|
padding: 16px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 18px;
|
|
background: color-mix(in oklab, var(--panel-strong) 88%, var(--accent-soft));
|
|
color: inherit;
|
|
text-decoration: none;
|
|
transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
|
|
}
|
|
|
|
.entry-card:hover {
|
|
transform: translateY(-1px);
|
|
border-color: color-mix(in oklab, var(--accent) 42%, var(--line-strong));
|
|
background: color-mix(in oklab, var(--accent-soft) 74%, var(--panel-strong));
|
|
}
|
|
|
|
.entry-card strong {
|
|
font-family: "Space Grotesk", "IBM Plex Sans", sans-serif;
|
|
font-size: 1.1rem;
|
|
letter-spacing: -0.03em;
|
|
}
|
|
|
|
.entry-card span {
|
|
color: var(--muted);
|
|
font-size: 12px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.entry-card-static {
|
|
min-height: 0;
|
|
}
|
|
|
|
.entry-actions,
|
|
.entry-meta {
|
|
display: flex;
|
|
gap: 10px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.entry-actions {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.entry-link {
|
|
text-decoration: none;
|
|
}
|
|
|
|
.topbar,
|
|
.control-bar,
|
|
.panel {
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: linear-gradient(180deg, var(--panel-tint) 0%, var(--panel) 100%);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.topbar {
|
|
position: sticky;
|
|
top: 10px;
|
|
z-index: 20;
|
|
display: grid;
|
|
grid-template-columns: minmax(170px, 230px) minmax(0, max-content) minmax(360px, 1fr);
|
|
gap: 8px;
|
|
align-items: center;
|
|
min-height: 56px;
|
|
padding: 8px 12px;
|
|
backdrop-filter: blur(10px);
|
|
box-shadow:
|
|
0 10px 22px rgba(33, 46, 76, 0.05),
|
|
inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 76%, transparent);
|
|
}
|
|
|
|
.topbar::before,
|
|
.control-bar::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 14px;
|
|
right: 14px;
|
|
top: 0;
|
|
height: 3px;
|
|
border-radius: 999px;
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 40%, var(--group-app)) 0%, transparent 76%);
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.brand-stack {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
}
|
|
|
|
.brand-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.brand-mark {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: 13px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.16em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.env-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 24px;
|
|
padding: 0 9px;
|
|
border: 1px solid color-mix(in oklab, var(--accent) 34%, var(--line-strong));
|
|
border-radius: 7px;
|
|
background: var(--accent-soft);
|
|
color: var(--accent);
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
}
|
|
|
|
.sync-note {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.app-switcher {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 3px;
|
|
width: fit-content;
|
|
padding: 2px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 8px;
|
|
background: color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong));
|
|
}
|
|
|
|
.app-switch-link {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 24px;
|
|
padding: 0 8px;
|
|
border: 1px solid transparent;
|
|
border-radius: 6px;
|
|
color: var(--muted);
|
|
font-size: 10.5px;
|
|
font-weight: 700;
|
|
text-decoration: none;
|
|
white-space: nowrap;
|
|
transition: color 180ms ease, border-color 180ms ease, background 180ms ease;
|
|
}
|
|
|
|
.app-switch-link:hover {
|
|
color: var(--text);
|
|
border-color: color-mix(in oklab, var(--accent) 20%, var(--line));
|
|
background: color-mix(in oklab, var(--panel-strong) 92%, var(--accent-soft));
|
|
}
|
|
|
|
.app-switch-link.active {
|
|
border-color: color-mix(in oklab, var(--accent) 38%, var(--line-strong));
|
|
background: color-mix(in oklab, var(--accent-soft) 62%, var(--panel-strong));
|
|
color: var(--accent);
|
|
}
|
|
|
|
.topbar-nav {
|
|
display: flex;
|
|
gap: 6px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
padding: 3px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 10px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 0%, color-mix(in oklab, var(--panel-strong) 96%, var(--panel-muted)) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.nav-chip,
|
|
.filter-chip,
|
|
.refresh,
|
|
.interval-select,
|
|
.search,
|
|
.config-textarea {
|
|
border: 1px solid var(--line-strong);
|
|
color: var(--text);
|
|
font: inherit;
|
|
}
|
|
|
|
.nav-chip,
|
|
.filter-chip,
|
|
.refresh {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 34px;
|
|
padding: 0 12px;
|
|
border-radius: 8px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 0%, var(--panel-strong) 100%);
|
|
cursor: pointer;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
|
|
}
|
|
|
|
.nav-chip:hover,
|
|
.filter-chip:hover,
|
|
.refresh:hover {
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.nav-chip.active,
|
|
.filter-chip.active {
|
|
border-color: color-mix(in oklab, var(--accent) 46%, var(--line-strong));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 78%, var(--panel-strong)) 0%, color-mix(in oklab, var(--accent-soft) 56%, var(--panel-strong)) 100%);
|
|
color: var(--accent);
|
|
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 14%, transparent);
|
|
}
|
|
|
|
.topbar-status,
|
|
.control-group,
|
|
.control-group-spread,
|
|
.density-switch,
|
|
.panel-meta,
|
|
.action-group,
|
|
.host-tags,
|
|
.restart-pills {
|
|
display: flex;
|
|
gap: 10px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.topbar-status {
|
|
justify-content: flex-end;
|
|
flex-wrap: nowrap;
|
|
gap: 6px;
|
|
padding: 3px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 10px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 0%, color-mix(in oklab, var(--panel-strong) 96%, var(--panel-muted)) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.topbar-status .badge,
|
|
.topbar-status .refresh,
|
|
.topbar-status .interval-field {
|
|
flex: 0 0 auto;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.topbar-nav .nav-chip,
|
|
.topbar-status .refresh,
|
|
.topbar-status .interval-select {
|
|
min-height: 30px;
|
|
}
|
|
|
|
.control-bar {
|
|
position: sticky;
|
|
top: 72px;
|
|
z-index: 18;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
margin-top: 8px;
|
|
padding: 8px 14px;
|
|
backdrop-filter: blur(8px);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.task-control-bar {
|
|
gap: 12px;
|
|
align-items: center;
|
|
}
|
|
|
|
.taskbar-context {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 3px;
|
|
min-width: 160px;
|
|
}
|
|
|
|
.taskbar-context strong {
|
|
color: color-mix(in oklab, var(--text) 88%, var(--accent));
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.1em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.taskbar-context span {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
letter-spacing: 0.09em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.taskbar-inline {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.section-link {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
min-height: 28px;
|
|
padding: 0 10px;
|
|
border: 1px solid transparent;
|
|
border-radius: 10px;
|
|
background: transparent;
|
|
color: var(--muted);
|
|
font: inherit;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.06em;
|
|
cursor: pointer;
|
|
transition: color 180ms ease, opacity 180ms ease, border-color 180ms ease, background 180ms ease;
|
|
}
|
|
|
|
.section-link:hover {
|
|
color: var(--text);
|
|
border-color: color-mix(in oklab, var(--accent) 18%, var(--line));
|
|
background: color-mix(in oklab, var(--accent-soft) 22%, var(--panel-strong));
|
|
}
|
|
|
|
.section-link + .section-link {
|
|
margin-left: 0;
|
|
}
|
|
|
|
.control-group-spread {
|
|
justify-content: flex-end;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.search {
|
|
min-width: 320px;
|
|
min-height: 34px;
|
|
padding: 0 11px;
|
|
border-radius: 8px;
|
|
background: color-mix(in oklab, var(--panel-muted) 88%, var(--bg-soft));
|
|
}
|
|
|
|
.topbar-search {
|
|
flex: 1 1 220px;
|
|
min-width: min(22vw, 260px);
|
|
max-width: 320px;
|
|
}
|
|
|
|
.search::placeholder {
|
|
color: var(--muted);
|
|
opacity: 0.88;
|
|
}
|
|
|
|
.search:disabled {
|
|
opacity: 0.58;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.interval-field {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
color: var(--muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.interval-select {
|
|
min-width: 82px;
|
|
min-height: 32px;
|
|
padding: 0 11px;
|
|
border-radius: 8px;
|
|
background: var(--panel-strong);
|
|
}
|
|
|
|
.refresh {
|
|
border-color: color-mix(in oklab, var(--accent) 30%, var(--line-strong));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 62%, var(--panel-strong)) 0%, color-mix(in oklab, var(--accent-soft) 34%, var(--panel-strong)) 100%);
|
|
color: color-mix(in oklab, var(--accent) 54%, var(--text));
|
|
box-shadow:
|
|
inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 76%, transparent),
|
|
0 8px 18px rgba(49, 82, 130, 0.08);
|
|
}
|
|
|
|
.refresh.ghost {
|
|
border-color: color-mix(in oklab, var(--line) 94%, var(--panel-strong));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 98%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
color: var(--muted);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.refresh:not(:disabled):hover,
|
|
.filter-chip:not(:disabled):hover,
|
|
.nav-chip:not(:disabled):hover {
|
|
border-color: color-mix(in oklab, var(--accent) 28%, var(--line-strong));
|
|
box-shadow: 0 6px 16px rgba(35, 57, 92, 0.08);
|
|
}
|
|
|
|
.refresh.danger {
|
|
color: var(--bad);
|
|
border-color: color-mix(in oklab, var(--bad) 38%, var(--line-strong));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--bad-soft) 58%, var(--panel-strong)) 0%, color-mix(in oklab, var(--bad-soft) 40%, var(--panel-strong)) 100%);
|
|
box-shadow:
|
|
inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent),
|
|
0 8px 18px rgba(166, 76, 55, 0.1);
|
|
}
|
|
|
|
.refresh:disabled,
|
|
.filter-chip:disabled,
|
|
.nav-chip:disabled {
|
|
opacity: 0.56;
|
|
cursor: not-allowed;
|
|
transform: none;
|
|
}
|
|
|
|
.nav-chip:focus-visible,
|
|
.filter-chip:focus-visible,
|
|
.app-switch-link:focus-visible,
|
|
.refresh:focus-visible,
|
|
.search:focus-visible,
|
|
.interval-select:focus-visible,
|
|
.section-link:focus-visible,
|
|
.detail-log-input:focus-visible,
|
|
.config-item:focus-visible,
|
|
.config-textarea:focus-visible {
|
|
outline: 0;
|
|
border-color: color-mix(in oklab, var(--accent) 56%, var(--line-strong));
|
|
box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent-soft) 84%, transparent);
|
|
}
|
|
|
|
.toolbar-error {
|
|
margin: 12px 0 0;
|
|
color: var(--bad);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.panel {
|
|
position: relative;
|
|
padding: 14px;
|
|
overflow: hidden;
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.matrix-panel,
|
|
.hosts-panel,
|
|
.bridge-panel,
|
|
.summary-strip,
|
|
.overview-calm-strip {
|
|
position: relative;
|
|
}
|
|
|
|
.matrix-panel {
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 22%, var(--panel-strong)) 0%, var(--panel) 100%);
|
|
}
|
|
|
|
.hosts-panel {
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 95%, var(--ok-soft)) 0%, var(--panel) 100%);
|
|
}
|
|
|
|
.matrix-panel::before,
|
|
.hosts-panel::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 14px;
|
|
right: 14px;
|
|
top: 0;
|
|
height: 3px;
|
|
border-radius: 999px;
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 40%, var(--ok)) 0%, transparent 65%);
|
|
opacity: 0.7;
|
|
}
|
|
|
|
.summary-strip {
|
|
margin-top: 8px;
|
|
padding: 8px 10px;
|
|
background: var(--panel);
|
|
}
|
|
|
|
.summary-strip .status-band-list {
|
|
border-radius: 8px;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.overview-calm-strip {
|
|
display: grid;
|
|
gap: 10px;
|
|
margin-top: 8px;
|
|
padding: 10px 12px;
|
|
}
|
|
|
|
.overview-calm-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 10px;
|
|
}
|
|
|
|
.overview-calm-meta {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.overview-calm-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.overview-calm-card,
|
|
.overview-side-card {
|
|
display: grid;
|
|
gap: 5px;
|
|
min-height: 70px;
|
|
padding: 11px 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 14px;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 95%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 74%, transparent);
|
|
transition: border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
|
|
}
|
|
|
|
.overview-side-card {
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.overview-side-card::before,
|
|
.infra-mini-card::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
top: 0;
|
|
height: 3px;
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 44%, var(--group-app)) 0%, transparent 78%);
|
|
opacity: 0.76;
|
|
}
|
|
|
|
.overview-side-card:hover,
|
|
.infra-mini-card:hover {
|
|
border-color: color-mix(in oklab, var(--accent) 20%, var(--line));
|
|
box-shadow: var(--shadow-soft), inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 74%, transparent);
|
|
}
|
|
|
|
.overview-calm-card small,
|
|
.overview-side-card small,
|
|
.release-service-metric small {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.06em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.overview-calm-card strong,
|
|
.overview-side-card strong {
|
|
font-size: 15px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.overview-calm-card span,
|
|
.overview-side-card span {
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.overview-calm-card.tone-ok,
|
|
.overview-side-card.tone-ok {
|
|
border-color: color-mix(in oklab, var(--ok) 22%, var(--line));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--ok-soft) 40%, var(--panel-strong)) 0%, color-mix(in oklab, var(--ok-soft) 68%, var(--panel-muted)) 100%);
|
|
}
|
|
|
|
.summary-cards {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0;
|
|
}
|
|
|
|
.summary-tile,
|
|
.summary-card {
|
|
min-height: 54px;
|
|
padding: 8px 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: var(--panel-strong);
|
|
}
|
|
|
|
.summary-tile {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-height: 44px;
|
|
}
|
|
|
|
.summary-strip-label {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.summary-tile strong,
|
|
.summary-card strong {
|
|
font-family: "Space Grotesk", "IBM Plex Sans", sans-serif;
|
|
font-size: clamp(0.98rem, 1.3vw, 1.18rem);
|
|
line-height: 1;
|
|
letter-spacing: -0.04em;
|
|
}
|
|
|
|
.summary-tile small {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
}
|
|
|
|
.status-band-list {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(176px, 1fr));
|
|
gap: 1px;
|
|
align-items: stretch;
|
|
border: 1px solid var(--line);
|
|
border-radius: 14px;
|
|
overflow: hidden;
|
|
background: color-mix(in oklab, var(--line) 84%, var(--panel));
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 74%, transparent), var(--shadow-soft);
|
|
}
|
|
|
|
.status-band-item {
|
|
position: relative;
|
|
display: grid;
|
|
align-content: center;
|
|
justify-items: start;
|
|
gap: 3px;
|
|
min-height: 50px;
|
|
padding: 10px 14px;
|
|
border: 0;
|
|
border-radius: 0;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 94%, var(--panel-muted)) 0%, var(--panel-strong) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.status-band-item-major {
|
|
min-width: 220px;
|
|
}
|
|
|
|
.status-band-item::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
width: 100%;
|
|
height: 2px;
|
|
background: color-mix(in oklab, currentColor 46%, transparent);
|
|
opacity: 0.72;
|
|
}
|
|
|
|
.status-band-item.tone-ok,
|
|
.status-band-item.tone-warn,
|
|
.status-band-item.tone-bad {
|
|
border: 0;
|
|
}
|
|
|
|
.status-band-item.tone-ok {
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--ok-soft)) 0%, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 100%);
|
|
}
|
|
|
|
.status-band-item.tone-warn {
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--warn-soft) 54%, var(--panel-strong)) 0%, color-mix(in oklab, var(--warn-soft) 72%, var(--panel-muted)) 100%);
|
|
}
|
|
|
|
.status-band-item.tone-bad {
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--bad-soft) 54%, var(--panel-strong)) 0%, color-mix(in oklab, var(--bad-soft) 74%, var(--panel-muted)) 100%);
|
|
}
|
|
|
|
.status-band-item.tone-ok strong {
|
|
color: var(--ok);
|
|
}
|
|
|
|
.status-band-item.tone-warn strong {
|
|
color: var(--warn);
|
|
}
|
|
|
|
.status-band-item.tone-bad strong {
|
|
color: var(--bad);
|
|
}
|
|
|
|
.status-band-suffix {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.status-band-meta {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.summary-card small {
|
|
display: block;
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.summary-card strong {
|
|
display: block;
|
|
margin-top: 6px;
|
|
}
|
|
|
|
.summary-tile.tone-ok,
|
|
.summary-card.tone-ok,
|
|
.matrix-state.tone-ok,
|
|
.metric-chip.tone-ok,
|
|
.host-service-pill.tone-ok,
|
|
.host-detail-line.tone-ok,
|
|
.alert-item.tone-ok {
|
|
border-color: color-mix(in oklab, var(--ok) 32%, var(--line));
|
|
background: color-mix(in oklab, var(--ok-soft) 70%, var(--panel-strong));
|
|
}
|
|
|
|
.summary-strip .status-band-item.tone-ok {
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 99%, var(--accent-soft)) 0%, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 100%);
|
|
}
|
|
|
|
.summary-strip .status-band-item.tone-ok::before {
|
|
background: color-mix(in oklab, var(--ok) 28%, var(--line-strong));
|
|
opacity: 0.55;
|
|
}
|
|
|
|
.summary-strip .status-band-item.tone-ok strong {
|
|
color: color-mix(in oklab, var(--text) 74%, var(--ok));
|
|
}
|
|
|
|
.summary-tile.tone-warn,
|
|
.matrix-state.tone-warn,
|
|
.metric-chip.tone-warn,
|
|
.host-service-pill.tone-warn,
|
|
.host-detail-line.tone-warn,
|
|
.alert-item.tone-warn {
|
|
border-color: color-mix(in oklab, var(--warn) 32%, var(--line));
|
|
background: color-mix(in oklab, var(--warn-soft) 72%, var(--panel-strong));
|
|
}
|
|
|
|
.summary-tile.tone-bad,
|
|
.summary-card.tone-bad,
|
|
.matrix-state.tone-bad,
|
|
.metric-chip.tone-bad,
|
|
.host-service-pill.tone-bad,
|
|
.host-detail-line.tone-bad,
|
|
.alert-item.tone-bad {
|
|
border-color: color-mix(in oklab, var(--bad) 32%, var(--line));
|
|
background: color-mix(in oklab, var(--bad-soft) 72%, var(--panel-strong));
|
|
}
|
|
|
|
.matrix-state.tone-ok,
|
|
.matrix-state.tone-warn,
|
|
.matrix-state.tone-bad {
|
|
background: transparent;
|
|
}
|
|
|
|
.alert-item {
|
|
width: 100%;
|
|
padding: 9px 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: var(--panel-strong);
|
|
color: var(--text);
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.alert-item.compact {
|
|
padding: 7px 9px;
|
|
}
|
|
|
|
.alert-item strong,
|
|
.alert-item span {
|
|
display: block;
|
|
}
|
|
|
|
.alert-item strong {
|
|
font-size: 12px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.alert-item span {
|
|
margin-top: 4px;
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.content-grid {
|
|
display: grid;
|
|
gap: 14px;
|
|
margin-top: 8px;
|
|
}
|
|
|
|
.service-layout-open {
|
|
grid-template-columns: minmax(0, 1fr) 316px;
|
|
}
|
|
|
|
.service-layout-solo {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.panel-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: 12px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.panel-title {
|
|
display: grid;
|
|
gap: 3px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.matrix-panel > .panel-header,
|
|
.hosts-panel > .panel-header {
|
|
margin-bottom: 14px;
|
|
padding-bottom: 12px;
|
|
border-bottom: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
}
|
|
|
|
.panel-title h2 {
|
|
margin: 0;
|
|
font-size: clamp(1.02rem, 1vw, 1.15rem);
|
|
font-weight: 700;
|
|
letter-spacing: -0.02em;
|
|
font-family: "Space Grotesk", "IBM Plex Sans", sans-serif;
|
|
}
|
|
|
|
.panel-title p {
|
|
margin: 4px 0 0;
|
|
color: var(--muted);
|
|
max-width: 50ch;
|
|
font-size: 10.5px;
|
|
line-height: 1.45;
|
|
letter-spacing: 0.02em;
|
|
}
|
|
|
|
.panel-meta {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.panel-header .panel-meta .badge {
|
|
min-height: 25px;
|
|
padding: 0 8px;
|
|
font-size: 9.5px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.panel-header .panel-meta .refresh.ghost {
|
|
min-height: 30px;
|
|
padding: 0 10px;
|
|
}
|
|
|
|
.matrix-scroll,
|
|
.table-wrap {
|
|
overflow: auto;
|
|
border: 1px solid var(--line);
|
|
border-radius: 14px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
scrollbar-gutter: stable;
|
|
}
|
|
|
|
.matrix-stacks {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.matrix-stack {
|
|
--group-color: var(--accent);
|
|
display: grid;
|
|
gap: 6px;
|
|
padding: 6px 0 0;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 8px;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 0%, color-mix(in oklab, var(--panel-strong) 96%, var(--panel-muted)) 100%);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.matrix-stack::before {
|
|
content: "";
|
|
display: block;
|
|
width: 54px;
|
|
height: 2px;
|
|
border-radius: 0 999px 999px 0;
|
|
background: linear-gradient(90deg, var(--group-color) 0%, color-mix(in oklab, var(--group-color) 50%, transparent) 100%);
|
|
}
|
|
|
|
.matrix-stack-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
align-items: center;
|
|
padding: 0 10px 4px;
|
|
}
|
|
|
|
.matrix-stack-headline {
|
|
display: grid;
|
|
gap: 2px;
|
|
}
|
|
|
|
.matrix-stack-headline strong {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
color: var(--text);
|
|
font-size: 12px;
|
|
letter-spacing: -0.02em;
|
|
}
|
|
|
|
.matrix-stack-headline strong::before {
|
|
content: "";
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 999px;
|
|
background: var(--group-color);
|
|
box-shadow: 0 0 0 4px color-mix(in oklab, var(--group-color) 18%, transparent);
|
|
}
|
|
|
|
.matrix-stack-headline span {
|
|
color: var(--muted);
|
|
font-size: 9.5px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.matrix-stack-badges {
|
|
display: inline-flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.matrix-stack-badges .badge {
|
|
min-height: 24px;
|
|
padding: 0 8px;
|
|
font-size: 9.5px;
|
|
}
|
|
|
|
.matrix-table,
|
|
.table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
}
|
|
|
|
.matrix-table {
|
|
width: max-content;
|
|
table-layout: fixed;
|
|
min-width: 460px;
|
|
}
|
|
|
|
.matrix-table th,
|
|
.matrix-table td,
|
|
.table th,
|
|
.table td {
|
|
padding: 5px 8px;
|
|
border-bottom: 1px solid var(--line);
|
|
text-align: left;
|
|
vertical-align: middle;
|
|
font-size: 10.5px;
|
|
}
|
|
|
|
.matrix-table th,
|
|
.table th {
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 28%, var(--panel-muted)) 0%, color-mix(in oklab, var(--accent-soft) 18%, var(--panel-strong)) 100%);
|
|
color: var(--muted);
|
|
font-weight: 700;
|
|
font-size: 10px;
|
|
letter-spacing: 0.06em;
|
|
text-transform: uppercase;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.matrix-table th:not(.matrix-sticky-col) {
|
|
width: 92px;
|
|
}
|
|
|
|
.table tbody tr:nth-child(even),
|
|
.matrix-table tbody tr:nth-child(even) {
|
|
background: color-mix(in oklab, var(--accent-soft) 10%, var(--panel-strong));
|
|
}
|
|
|
|
.matrix-scroll {
|
|
max-height: 520px;
|
|
background: color-mix(in oklab, var(--panel-strong) 96%, var(--panel-muted));
|
|
}
|
|
|
|
.matrix-stack .matrix-scroll {
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: transparent;
|
|
}
|
|
|
|
.matrix-row {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.matrix-row:hover {
|
|
background: color-mix(in oklab, var(--accent-soft) 18%, var(--panel-strong));
|
|
}
|
|
|
|
.matrix-row.selected {
|
|
background: color-mix(in oklab, var(--accent-soft) 34%, var(--panel-strong));
|
|
box-shadow: inset 2px 0 0 color-mix(in oklab, var(--accent) 42%, transparent);
|
|
}
|
|
|
|
.matrix-row.focused {
|
|
background: color-mix(in oklab, var(--warn-soft) 28%, var(--panel-strong));
|
|
}
|
|
|
|
.matrix-service strong {
|
|
font-size: 11.5px;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.matrix-kind {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
}
|
|
|
|
.matrix-state {
|
|
min-width: 28px;
|
|
width: 92px;
|
|
height: 22px;
|
|
padding: 0 3px;
|
|
border-left: 1px solid var(--line);
|
|
text-align: center;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.matrix-state-marker {
|
|
display: block;
|
|
width: 7px;
|
|
height: 7px;
|
|
margin: 0 auto;
|
|
border-radius: 999px;
|
|
background: currentColor;
|
|
box-shadow: 0 0 0 2px color-mix(in oklab, currentColor 12%, transparent);
|
|
}
|
|
|
|
.matrix-state-code {
|
|
display: none;
|
|
margin-top: 2px;
|
|
font-size: 9px;
|
|
font-weight: 700;
|
|
line-height: 1;
|
|
}
|
|
|
|
.matrix-state-latency {
|
|
display: none;
|
|
margin-top: 2px;
|
|
color: var(--muted);
|
|
font-size: 9px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.matrix-table.is-detail .matrix-state {
|
|
height: 34px;
|
|
padding: 3px 4px;
|
|
}
|
|
|
|
.matrix-table.is-detail .matrix-state-code,
|
|
.matrix-table.is-detail .matrix-state-latency {
|
|
display: block;
|
|
}
|
|
|
|
.matrix-state-empty {
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 92%, var(--bg-soft)) 0%, color-mix(in oklab, var(--panel-muted) 82%, var(--bg-soft)) 100%),
|
|
repeating-linear-gradient(135deg, transparent 0 6px, color-mix(in oklab, var(--line) 30%, transparent) 6px 7px);
|
|
color: color-mix(in oklab, var(--muted) 58%, transparent);
|
|
}
|
|
|
|
.matrix-state-empty-mark {
|
|
display: block;
|
|
font-size: 9px;
|
|
line-height: 1;
|
|
opacity: 0.32;
|
|
}
|
|
|
|
.matrix-table thead th {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 4;
|
|
}
|
|
|
|
.matrix-sticky-col {
|
|
position: sticky;
|
|
left: 0;
|
|
z-index: 3;
|
|
background: color-mix(in oklab, var(--panel-strong) 94%, var(--panel-muted));
|
|
box-shadow: 1px 0 0 var(--line);
|
|
min-width: 108px;
|
|
width: 136px;
|
|
}
|
|
|
|
.matrix-table thead .matrix-sticky-col {
|
|
z-index: 5;
|
|
background: color-mix(in oklab, var(--accent-soft) 28%, var(--panel-muted));
|
|
}
|
|
|
|
.detail-panel {
|
|
display: flex;
|
|
flex-direction: column;
|
|
position: sticky;
|
|
top: 112px;
|
|
max-height: calc(100vh - 124px);
|
|
border-color: color-mix(in oklab, var(--accent) 12%, var(--line));
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 90%, var(--accent-soft)) 0%, color-mix(in oklab, var(--panel) 96%, var(--panel-muted)) 100%);
|
|
box-shadow:
|
|
var(--shadow-lift),
|
|
inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 78%, transparent);
|
|
}
|
|
|
|
.detail-panel::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 14px;
|
|
right: 14px;
|
|
top: 0;
|
|
height: 3px;
|
|
border-radius: 999px;
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 52%, var(--group-app)) 0%, transparent 72%);
|
|
opacity: 0.85;
|
|
}
|
|
|
|
.service-meta-grid,
|
|
.summary-grid,
|
|
.metric-grid,
|
|
.infra-mini-metrics,
|
|
.config-meta-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.service-meta-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.detail-instance-list {
|
|
display: grid;
|
|
gap: 8px;
|
|
max-height: 480px;
|
|
overflow: auto;
|
|
padding-right: 4px;
|
|
}
|
|
|
|
.detail-instance {
|
|
position: relative;
|
|
overflow: hidden;
|
|
padding: 9px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
transition: border-color 180ms ease, background 180ms ease, box-shadow 180ms ease, transform 180ms ease;
|
|
}
|
|
|
|
.detail-instance::before,
|
|
.detail-alert-panel::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
top: 0;
|
|
height: 2px;
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 42%, var(--group-app)) 0%, transparent 76%);
|
|
opacity: 0.78;
|
|
}
|
|
|
|
.detail-instance:hover {
|
|
transform: translateY(-1px);
|
|
border-color: color-mix(in oklab, var(--accent) 22%, var(--line));
|
|
box-shadow: var(--shadow-soft), inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.detail-instance-top {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.detail-instance-actions {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.detail-instance-top strong {
|
|
display: block;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.detail-instance-top p {
|
|
margin: 4px 0 0;
|
|
color: var(--muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.detail-inline {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
margin-top: 6px;
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.detail-secondary {
|
|
margin-top: 8px;
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.detail-note {
|
|
margin-top: 6px;
|
|
color: var(--text);
|
|
font-size: 11px;
|
|
line-height: 1.45;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.detail-log-trigger {
|
|
min-height: 26px;
|
|
padding: 0 9px;
|
|
}
|
|
|
|
.overview-side-stack {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.overview-side-grid,
|
|
.overview-side-host-list {
|
|
display: grid;
|
|
gap: 9px;
|
|
}
|
|
|
|
.overview-side-hosts {
|
|
display: grid;
|
|
gap: 10px;
|
|
padding: 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 16px;
|
|
background: color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong));
|
|
}
|
|
|
|
.overview-side-host-chip {
|
|
--group-color: var(--accent);
|
|
position: relative;
|
|
display: grid;
|
|
gap: 4px;
|
|
padding: 9px 10px 9px 14px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 68%, transparent);
|
|
transition: border-color 180ms ease, background 180ms ease, box-shadow 180ms ease, transform 180ms ease;
|
|
}
|
|
|
|
.overview-side-host-chip::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 8px;
|
|
bottom: 8px;
|
|
width: 3px;
|
|
border-radius: 999px;
|
|
background: var(--group-color);
|
|
}
|
|
|
|
.overview-side-host-chip:hover {
|
|
transform: translateY(-1px);
|
|
border-color: color-mix(in oklab, var(--accent) 18%, var(--line));
|
|
box-shadow: var(--shadow-soft), inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 68%, transparent);
|
|
}
|
|
|
|
.overview-side-host-chip-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
align-items: center;
|
|
}
|
|
|
|
.overview-side-host-chip strong {
|
|
font-size: 11px;
|
|
}
|
|
|
|
.overview-side-host-chip em {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-style: normal;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.overview-side-host-chip span {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.detail-log-panel {
|
|
margin-top: 10px;
|
|
padding: 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: var(--panel-muted);
|
|
}
|
|
|
|
.detail-log-toolbar {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.detail-log-field {
|
|
gap: 6px;
|
|
}
|
|
|
|
.detail-log-input {
|
|
width: 96px;
|
|
min-height: 30px;
|
|
padding: 0 9px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 10px;
|
|
background: var(--panel-strong);
|
|
color: var(--text);
|
|
font: inherit;
|
|
}
|
|
|
|
.detail-log-output {
|
|
margin: 0;
|
|
min-height: 144px;
|
|
max-height: 320px;
|
|
overflow: auto;
|
|
padding: 12px;
|
|
border: 1px solid color-mix(in oklab, var(--line-strong) 74%, transparent);
|
|
border-radius: 12px;
|
|
background: oklch(22% 0.01 240 / 0.98);
|
|
color: oklch(91% 0.01 230);
|
|
font-size: 11px;
|
|
line-height: 1.55;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.detail-alert-panel {
|
|
position: relative;
|
|
overflow: hidden;
|
|
margin-bottom: 8px;
|
|
padding: 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
}
|
|
|
|
.detail-alert-feed {
|
|
display: grid;
|
|
gap: 6px;
|
|
max-height: 112px;
|
|
overflow: auto;
|
|
padding-right: 2px;
|
|
}
|
|
|
|
.detail-subhead {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
align-items: center;
|
|
margin-bottom: 6px;
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.host-sections {
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
|
|
.host-section {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.section-caption-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
padding: 0 2px;
|
|
}
|
|
|
|
.section-caption {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.14em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.section-caption-meta {
|
|
display: inline-flex;
|
|
gap: 10px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.section-caption-meta span {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 24px;
|
|
padding: 0 8px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 999px;
|
|
background: color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong));
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.section-caption-row-quiet {
|
|
margin-bottom: -2px;
|
|
}
|
|
|
|
.host-row-list {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.host-row-list-overview {
|
|
gap: 7px;
|
|
}
|
|
|
|
.host-strip-overview {
|
|
border-radius: 12px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 0%, color-mix(in oklab, var(--panel-muted) 90%, var(--panel-strong)) 100%);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.host-strip-overview:hover {
|
|
transform: none;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.host-strip-quiet {
|
|
border-color: color-mix(in oklab, var(--line) 88%, var(--panel-strong));
|
|
}
|
|
|
|
.host-strip-main-overview {
|
|
grid-template-columns: minmax(156px, 196px) minmax(260px, 1fr) minmax(220px, 0.9fr) auto;
|
|
gap: 12px;
|
|
}
|
|
|
|
.host-metric-band {
|
|
display: flex;
|
|
gap: 10px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
min-width: 0;
|
|
}
|
|
|
|
.host-metric-band-fallback {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.host-metric-inline {
|
|
display: inline-flex;
|
|
align-items: baseline;
|
|
gap: 6px;
|
|
min-height: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
background: transparent;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.host-metric-inline small,
|
|
.host-metric-inline strong {
|
|
display: inline-block;
|
|
}
|
|
|
|
.host-metric-inline small {
|
|
color: inherit;
|
|
font-size: 9px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.host-metric-inline strong {
|
|
font-size: 11px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.host-metric-inline.tone-ok strong {
|
|
color: color-mix(in oklab, var(--ok) 62%, var(--text));
|
|
}
|
|
|
|
.host-metric-inline.tone-warn strong {
|
|
color: color-mix(in oklab, var(--warn) 76%, var(--text));
|
|
}
|
|
|
|
.host-metric-inline.tone-bad strong {
|
|
color: color-mix(in oklab, var(--bad) 82%, var(--text));
|
|
}
|
|
|
|
.host-service-summary {
|
|
display: grid;
|
|
gap: 4px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.host-service-summary small,
|
|
.host-service-summary strong {
|
|
display: block;
|
|
}
|
|
|
|
.host-service-summary small {
|
|
color: var(--muted);
|
|
font-size: 9px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.host-service-summary-text {
|
|
overflow: hidden;
|
|
font-size: 11px;
|
|
line-height: 1.35;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.host-service-summary.tone-bad .host-service-summary-text {
|
|
color: color-mix(in oklab, var(--bad) 82%, var(--text));
|
|
}
|
|
|
|
.host-service-summary.tone-warn .host-service-summary-text {
|
|
color: color-mix(in oklab, var(--warn) 72%, var(--text));
|
|
}
|
|
|
|
.host-service-summary.tone-neutral .host-service-summary-text {
|
|
color: color-mix(in oklab, var(--muted) 76%, var(--text));
|
|
}
|
|
|
|
.host-inline-state-overview {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.quiet-host-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.quiet-host-card {
|
|
--group-color: color-mix(in oklab, var(--accent) 42%, var(--ok));
|
|
position: relative;
|
|
display: grid;
|
|
gap: 9px;
|
|
min-height: 108px;
|
|
padding: 10px 11px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 16px;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 97%, var(--panel-strong)) 0%, color-mix(in oklab, var(--panel-muted) 92%, var(--panel-strong)) 100%);
|
|
color: var(--text);
|
|
text-align: left;
|
|
font: inherit;
|
|
cursor: pointer;
|
|
overflow: hidden;
|
|
transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.quiet-host-card::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0 auto auto 0;
|
|
width: 100%;
|
|
height: 3px;
|
|
background: linear-gradient(90deg, var(--group-color) 0%, transparent 72%);
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.quiet-host-card:hover {
|
|
transform: translateY(-1px);
|
|
border-color: color-mix(in oklab, var(--accent) 28%, var(--line));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 18%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
}
|
|
|
|
.quiet-host-card.active {
|
|
border-color: color-mix(in oklab, var(--group-color) 36%, var(--line));
|
|
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--group-color) 18%, transparent);
|
|
}
|
|
|
|
.quiet-host-head {
|
|
display: grid;
|
|
gap: 3px;
|
|
}
|
|
|
|
.quiet-host-head strong {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.quiet-host-head span {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
}
|
|
|
|
.quiet-host-metrics,
|
|
.quiet-host-foot {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
}
|
|
|
|
.quiet-host-foot {
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.quiet-host-foot .badge:last-child {
|
|
max-width: 100%;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.quiet-host-metrics-fallback {
|
|
min-height: 32px;
|
|
}
|
|
|
|
.metric-ring-chip-quiet {
|
|
min-height: 32px;
|
|
padding: 0 8px 0 6px;
|
|
}
|
|
|
|
.metric-ring-chip-quiet .metric-ring {
|
|
width: 20px;
|
|
height: 20px;
|
|
}
|
|
|
|
.metric-ring-chip-quiet .metric-ring-hole {
|
|
inset: 3px;
|
|
}
|
|
|
|
.metric-ring-chip-quiet .metric-ring-copy strong {
|
|
font-size: 10px;
|
|
}
|
|
|
|
.host-strip {
|
|
--group-color: color-mix(in oklab, var(--accent) 42%, var(--ok));
|
|
position: relative;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 14px;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 96%, var(--panel-muted)) 0%, var(--panel-strong) 100%);
|
|
overflow: hidden;
|
|
transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease, background 180ms ease;
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 70%, transparent);
|
|
}
|
|
|
|
.host-strip-alert {
|
|
border-color: color-mix(in oklab, var(--bad) 28%, var(--line));
|
|
}
|
|
|
|
.host-strip-focused {
|
|
border-color: color-mix(in oklab, var(--accent) 42%, var(--line));
|
|
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent-soft) 72%, transparent);
|
|
}
|
|
|
|
.host-strip::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
width: 3px;
|
|
background: linear-gradient(180deg, var(--group-color) 0%, color-mix(in oklab, var(--group-color) 56%, var(--panel-strong)) 100%);
|
|
}
|
|
|
|
.host-strip-alert::before {
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--warn) 72%, var(--accent)) 0%, var(--bad) 100%);
|
|
}
|
|
|
|
.host-strip:hover {
|
|
transform: translateY(-1px);
|
|
border-color: color-mix(in oklab, var(--accent) 24%, var(--line));
|
|
box-shadow: 0 10px 22px rgba(33, 46, 76, 0.08);
|
|
}
|
|
|
|
.host-strip-main {
|
|
display: grid;
|
|
grid-template-columns: minmax(176px, 214px) minmax(280px, 1fr) minmax(220px, 0.92fr) auto;
|
|
gap: 10px;
|
|
align-items: center;
|
|
min-height: 56px;
|
|
padding: 8px 11px 8px 16px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.host-strip-id strong,
|
|
.host-strip-id span {
|
|
display: block;
|
|
}
|
|
|
|
.host-strip-id strong {
|
|
font-size: 13px;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.host-strip-id span {
|
|
margin-top: 4px;
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.host-inline-metrics,
|
|
.host-inline-state {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.compact-metrics {
|
|
gap: 8px;
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.compact-metrics-fallback {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.metric-ring-chip,
|
|
.metric-stat-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-height: 36px;
|
|
padding: 0 9px 0 7px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 999px;
|
|
background: color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong));
|
|
}
|
|
|
|
.metric-ring-chip.tone-ok,
|
|
.metric-stat-chip.tone-ok {
|
|
border-color: color-mix(in oklab, var(--ok) 28%, var(--line));
|
|
}
|
|
|
|
.metric-ring-chip.tone-warn,
|
|
.metric-stat-chip.tone-warn {
|
|
border-color: color-mix(in oklab, var(--warn) 28%, var(--line));
|
|
}
|
|
|
|
.metric-ring-chip.tone-bad,
|
|
.metric-stat-chip.tone-bad {
|
|
border-color: color-mix(in oklab, var(--bad) 28%, var(--line));
|
|
}
|
|
|
|
.metric-ring {
|
|
--metric-color: var(--line-strong);
|
|
--metric-value: 0%;
|
|
position: relative;
|
|
width: 24px;
|
|
height: 24px;
|
|
border-radius: 999px;
|
|
background:
|
|
conic-gradient(var(--metric-color) 0 var(--metric-value), color-mix(in oklab, var(--line) 88%, transparent) var(--metric-value) 100%);
|
|
}
|
|
|
|
.metric-ring-hole {
|
|
position: absolute;
|
|
inset: 4px;
|
|
border-radius: 999px;
|
|
background: var(--panel-strong);
|
|
}
|
|
|
|
.metric-ring-copy,
|
|
.metric-stat-chip {
|
|
min-width: 0;
|
|
}
|
|
|
|
.metric-ring-copy small,
|
|
.metric-ring-copy strong,
|
|
.metric-stat-chip small,
|
|
.metric-stat-chip strong {
|
|
display: block;
|
|
}
|
|
|
|
.metric-ring-copy small,
|
|
.metric-stat-chip small {
|
|
color: var(--muted);
|
|
font-size: 9px;
|
|
line-height: 1;
|
|
letter-spacing: 0.06em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.metric-ring-copy strong,
|
|
.metric-stat-chip strong {
|
|
margin-top: 3px;
|
|
font-size: 11px;
|
|
line-height: 1.1;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.metric-state-chip {
|
|
display: inline-grid;
|
|
gap: 3px;
|
|
min-height: 36px;
|
|
padding: 6px 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong));
|
|
}
|
|
|
|
.metric-state-chip small,
|
|
.metric-state-chip strong {
|
|
display: block;
|
|
}
|
|
|
|
.metric-state-chip small {
|
|
color: var(--muted);
|
|
font-size: 9px;
|
|
line-height: 1;
|
|
letter-spacing: 0.06em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.metric-state-chip strong {
|
|
font-size: 11px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.metric-state-chip.tone-warn {
|
|
border-color: color-mix(in oklab, var(--warn) 34%, var(--line));
|
|
background: color-mix(in oklab, var(--warn-soft) 62%, var(--panel-strong));
|
|
color: var(--warn);
|
|
}
|
|
|
|
.host-alert-summary {
|
|
display: grid;
|
|
gap: 4px;
|
|
min-width: 0;
|
|
padding: 8px 10px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 12px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
}
|
|
|
|
.host-alert-summary small {
|
|
color: var(--muted);
|
|
font-size: 9px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.host-alert-path {
|
|
display: block;
|
|
width: 100%;
|
|
overflow: hidden;
|
|
color: var(--text);
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.host-alert-summary.tone-bad .host-alert-path {
|
|
color: color-mix(in oklab, var(--bad) 82%, var(--text));
|
|
}
|
|
|
|
.host-alert-summary.tone-bad {
|
|
border-color: color-mix(in oklab, var(--bad) 24%, var(--line));
|
|
background: color-mix(in oklab, var(--bad-soft) 44%, var(--panel-strong));
|
|
}
|
|
|
|
.host-alert-summary.tone-warn .host-alert-path {
|
|
color: color-mix(in oklab, var(--warn) 72%, var(--text));
|
|
}
|
|
|
|
.host-alert-summary.tone-warn {
|
|
border-color: color-mix(in oklab, var(--warn) 24%, var(--line));
|
|
background: color-mix(in oklab, var(--warn-soft) 40%, var(--panel-strong));
|
|
}
|
|
|
|
.host-alert-summary.tone-neutral .host-alert-path {
|
|
color: color-mix(in oklab, var(--muted) 76%, var(--text));
|
|
}
|
|
|
|
.host-inline-state {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.metric-chip,
|
|
.host-service-pill {
|
|
border: 1px solid var(--line);
|
|
border-radius: 999px;
|
|
background: var(--panel-muted);
|
|
color: var(--text);
|
|
}
|
|
|
|
.metric-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 30px;
|
|
padding: 0 10px;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.host-strip-detail {
|
|
display: flex;
|
|
gap: 6px;
|
|
flex-wrap: wrap;
|
|
padding: 0 11px 10px 16px;
|
|
}
|
|
|
|
.host-strip-detail-wide {
|
|
padding-top: 2px;
|
|
}
|
|
|
|
.host-strip-detail-list {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
.host-detail-line {
|
|
display: grid;
|
|
grid-template-columns: minmax(92px, 110px) minmax(0, 1fr);
|
|
gap: 12px;
|
|
align-items: center;
|
|
width: 100%;
|
|
padding: 7px 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 10px;
|
|
background: var(--panel-muted);
|
|
color: var(--text);
|
|
font: inherit;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.host-detail-line strong,
|
|
.host-detail-line span,
|
|
.host-detail-line small {
|
|
display: block;
|
|
}
|
|
|
|
.host-detail-line strong {
|
|
font-size: 11px;
|
|
}
|
|
|
|
.host-detail-line span,
|
|
.host-detail-line small {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.host-detail-line-warn {
|
|
cursor: default;
|
|
border-color: color-mix(in oklab, var(--warn) 36%, var(--line));
|
|
background: color-mix(in oklab, var(--warn-soft) 50%, var(--panel-muted));
|
|
}
|
|
|
|
.host-service-pill {
|
|
min-width: 138px;
|
|
padding: 7px 9px;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.host-service-pill strong,
|
|
.host-service-pill span,
|
|
.host-service-pill small {
|
|
display: block;
|
|
}
|
|
|
|
.host-service-pill strong {
|
|
font-size: 11px;
|
|
}
|
|
|
|
.host-service-pill span,
|
|
.host-service-pill small {
|
|
margin-top: 4px;
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.overview-infra-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
|
gap: 12px;
|
|
margin-top: 12px;
|
|
}
|
|
|
|
.metadata-strip {
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
margin-bottom: 10px;
|
|
padding: 8px 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: var(--panel-muted);
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 60%, transparent);
|
|
}
|
|
|
|
.metadata-strip span {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.metadata-strip-tight {
|
|
gap: 8px;
|
|
margin-bottom: 8px;
|
|
padding: 6px 8px;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.compact-workbench-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
align-items: center;
|
|
margin-bottom: 10px;
|
|
padding: 8px 10px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 14px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 98%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
}
|
|
|
|
.compact-workbench-head .metadata-strip {
|
|
flex: 1 1 auto;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.compact-workbench-head .metadata-strip span {
|
|
max-width: 100%;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.config-workbench-panel {
|
|
position: relative;
|
|
padding: 10px 12px;
|
|
background: var(--panel);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.config-workbench-panel::before {
|
|
content: none;
|
|
}
|
|
|
|
.config-head-strip {
|
|
margin-bottom: 8px;
|
|
padding: 0 0 7px;
|
|
border: 0;
|
|
border-bottom: 1px solid var(--line);
|
|
border-radius: 0;
|
|
background: transparent;
|
|
}
|
|
|
|
.config-head-strip .metadata-strip {
|
|
gap: 8px;
|
|
}
|
|
|
|
.config-inline-strip {
|
|
margin-bottom: 8px;
|
|
padding: 0 0 6px;
|
|
border: 0;
|
|
border-bottom: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.config-inline-strip span {
|
|
max-width: 100%;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.infra-overview-panel {
|
|
margin-top: 12px;
|
|
}
|
|
|
|
.infra-overview-grid,
|
|
.mongo-group-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.infra-focus-card,
|
|
.mongo-stat-group {
|
|
position: relative;
|
|
display: grid;
|
|
gap: 8px;
|
|
padding: 10px 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: var(--panel-strong);
|
|
transition: border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.infra-focus-card::before,
|
|
.mongo-stat-group::before,
|
|
.nacos-service-card::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 8px;
|
|
bottom: 8px;
|
|
width: 3px;
|
|
border-radius: 999px;
|
|
background: color-mix(in oklab, var(--accent) 48%, var(--ok));
|
|
}
|
|
|
|
.infra-focus-card:hover,
|
|
.mongo-stat-group:hover {
|
|
border-color: color-mix(in oklab, var(--accent) 22%, var(--line));
|
|
box-shadow: none;
|
|
}
|
|
|
|
.infra-focus-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
align-items: center;
|
|
}
|
|
|
|
.infra-focus-head strong {
|
|
font-size: 13px;
|
|
}
|
|
|
|
.infra-focus-metrics {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.infra-freshness {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
padding-top: 7px;
|
|
border-top: 1px solid color-mix(in oklab, var(--line) 86%, var(--panel-strong));
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.infra-inline-list {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.infra-inline-link {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 28px;
|
|
padding: 0 10px;
|
|
border: 1px solid color-mix(in oklab, var(--bad) 24%, var(--line));
|
|
border-radius: 999px;
|
|
background: color-mix(in oklab, var(--bad-soft) 38%, var(--panel-strong));
|
|
color: var(--bad);
|
|
font: inherit;
|
|
font-size: 11px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.nacos-summary-row.is-alert {
|
|
background: color-mix(in oklab, var(--bad-soft) 24%, var(--panel-strong));
|
|
}
|
|
|
|
.nacos-service-detail-cell {
|
|
padding: 8px;
|
|
background: color-mix(in oklab, var(--panel-muted) 92%, var(--panel-strong));
|
|
}
|
|
|
|
.fold-group {
|
|
display: grid;
|
|
gap: 10px;
|
|
margin-top: 12px;
|
|
}
|
|
|
|
.infra-detail-stack {
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
|
|
.mongo-workbench-panel .panel-header {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.mongo-workbench-strip {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.infra-inline-strip {
|
|
margin-bottom: 0;
|
|
padding: 0 0 8px;
|
|
border: 0;
|
|
border-bottom: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.mongo-detail-stack {
|
|
gap: 10px;
|
|
}
|
|
|
|
.mongo-detail-block {
|
|
display: grid;
|
|
gap: 8px;
|
|
padding: 10px 0 0;
|
|
border: 0;
|
|
border-top: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.mongo-detail-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
}
|
|
|
|
.mongo-detail-head .panel-title h2 {
|
|
font-size: 13px;
|
|
}
|
|
|
|
.mongo-detail-head .panel-title p {
|
|
margin-top: 3px;
|
|
font-size: 11px;
|
|
letter-spacing: 0.02em;
|
|
text-transform: none;
|
|
}
|
|
|
|
.mongo-detail-block .table-wrap {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.config-sidebar {
|
|
display: grid;
|
|
gap: 4px;
|
|
align-self: start;
|
|
position: sticky;
|
|
top: 0;
|
|
max-height: calc(100vh - 128px);
|
|
padding: 6px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.config-only-layout > .config-sidebar {
|
|
gap: 6px;
|
|
max-height: calc(100vh - 124px);
|
|
padding: 0 8px 0 0;
|
|
border: 0;
|
|
border-right: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.config-sidebar-head {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
.config-sidebar-meta {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
}
|
|
|
|
.config-sidebar-head.compact {
|
|
padding-bottom: 2px;
|
|
}
|
|
|
|
.config-list-ide {
|
|
gap: 2px;
|
|
padding-right: 2px;
|
|
}
|
|
|
|
.config-group {
|
|
display: grid;
|
|
gap: 3px;
|
|
}
|
|
|
|
.config-group-toggle {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto auto;
|
|
gap: 8px;
|
|
align-items: center;
|
|
width: 100%;
|
|
min-height: 26px;
|
|
padding: 0 8px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 10px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 98%, var(--panel-strong)) 0%, var(--panel-strong) 100%);
|
|
color: var(--text);
|
|
font: inherit;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
transition: border-color 180ms ease, background 180ms ease;
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 68%, transparent);
|
|
}
|
|
|
|
.config-group-toggle:hover {
|
|
border-color: color-mix(in oklab, var(--accent) 22%, var(--line));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 18%, var(--panel-strong)) 0%, var(--panel-strong) 100%);
|
|
}
|
|
|
|
.config-group-toggle strong {
|
|
font-size: 11px;
|
|
}
|
|
|
|
.config-group-toggle span,
|
|
.config-group-toggle small {
|
|
color: var(--muted);
|
|
font-size: 9.5px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.06em;
|
|
}
|
|
|
|
.config-group-items {
|
|
display: grid;
|
|
gap: 2px;
|
|
padding-left: 6px;
|
|
border-left: 1px solid color-mix(in oklab, var(--line) 88%, transparent);
|
|
}
|
|
|
|
.config-item-ide {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 8px;
|
|
align-items: center;
|
|
padding: 6px 7px 6px 9px;
|
|
border: 0;
|
|
border-radius: 10px;
|
|
background: transparent;
|
|
position: relative;
|
|
transition: background 180ms ease, box-shadow 180ms ease, border-color 180ms ease, transform 180ms ease;
|
|
}
|
|
|
|
.config-item-ide::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 6px;
|
|
bottom: 6px;
|
|
width: 2px;
|
|
border-radius: 999px;
|
|
background: transparent;
|
|
}
|
|
|
|
.config-item-ide strong {
|
|
font-size: 10.5px;
|
|
word-break: break-word;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.config-item-ide span {
|
|
margin-top: 0;
|
|
font-size: 9.5px;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
}
|
|
|
|
.config-item-ide small {
|
|
font-size: 9.5px;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.config-item-ide.active {
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 64%, var(--panel-strong)) 0%, color-mix(in oklab, var(--accent-soft) 42%, var(--panel-strong)) 100%);
|
|
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 26%, var(--line));
|
|
}
|
|
|
|
.config-item-ide:hover {
|
|
transform: none;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 22%, var(--panel-strong)) 0%, color-mix(in oklab, var(--accent-soft) 12%, var(--panel-strong)) 100%);
|
|
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 10%, var(--line));
|
|
}
|
|
|
|
.config-item-ide.active::before {
|
|
background: var(--accent);
|
|
}
|
|
|
|
.config-item-main,
|
|
.config-item-side {
|
|
display: grid;
|
|
gap: 3px;
|
|
}
|
|
|
|
.config-item-side {
|
|
justify-items: end;
|
|
}
|
|
|
|
.config-jump-group {
|
|
display: inline-flex;
|
|
gap: 6px;
|
|
align-items: center;
|
|
}
|
|
|
|
.editor-doc-pill {
|
|
display: grid;
|
|
gap: 2px;
|
|
min-width: 0;
|
|
padding: 3px 6px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 7px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 96%, var(--accent-soft)) 0%, var(--panel-strong) 100%);
|
|
}
|
|
|
|
.editor-doc-pill strong,
|
|
.editor-doc-pill small {
|
|
display: block;
|
|
}
|
|
|
|
.editor-doc-pill strong {
|
|
font-size: 11px;
|
|
line-height: 1.3;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.editor-doc-pill small {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
}
|
|
|
|
.editor-toolbar {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 10px;
|
|
align-items: center;
|
|
padding: 5px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 8px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.sticky-toolbar {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 8;
|
|
}
|
|
|
|
.editor-toolbar-main {
|
|
display: flex;
|
|
gap: 6px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.editor-toolbar-meta {
|
|
grid-column: 1 / -1;
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
padding-top: 4px;
|
|
border-top: 1px solid color-mix(in oklab, var(--line) 82%, var(--panel-strong));
|
|
color: var(--muted);
|
|
font-size: 9.5px;
|
|
}
|
|
|
|
.editor-toolbar-meta span {
|
|
overflow: hidden;
|
|
max-width: 220px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.editor-toolbar .filter-chip,
|
|
.editor-toolbar .refresh.ghost {
|
|
min-height: 28px;
|
|
padding: 0 9px;
|
|
border-color: color-mix(in oklab, var(--line) 80%, transparent);
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.editor-toolbar .refresh:not(.ghost) {
|
|
min-height: 30px;
|
|
}
|
|
|
|
.diff-panel {
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: oklch(100% 0 0 / 0.86);
|
|
overflow: auto;
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 76%, transparent);
|
|
}
|
|
|
|
.diff-list {
|
|
display: grid;
|
|
}
|
|
|
|
.diff-row {
|
|
display: grid;
|
|
grid-template-columns: 48px 48px 28px minmax(0, 1fr);
|
|
gap: 10px;
|
|
align-items: start;
|
|
padding: 6px 12px;
|
|
border-bottom: 1px solid var(--line);
|
|
font-size: 12px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.diff-row:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.diff-row.is-add {
|
|
background: color-mix(in oklab, var(--ok-soft) 58%, var(--panel-strong));
|
|
}
|
|
|
|
.diff-row.is-remove {
|
|
background: color-mix(in oklab, var(--bad-soft) 52%, var(--panel-strong));
|
|
}
|
|
|
|
.diff-gutter,
|
|
.diff-mark {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
text-align: right;
|
|
}
|
|
|
|
.diff-row code {
|
|
font: inherit;
|
|
word-break: break-word;
|
|
white-space: pre-wrap;
|
|
}
|
|
|
|
.activity-list {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.activity-list.compact {
|
|
margin-top: 12px;
|
|
}
|
|
|
|
.activity-grid {
|
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
}
|
|
|
|
.activity-item {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 12px;
|
|
align-items: center;
|
|
padding: 10px 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
transition: border-color 180ms ease, background 180ms ease, transform 180ms ease;
|
|
}
|
|
|
|
.activity-item:hover {
|
|
transform: translateY(-1px);
|
|
border-color: color-mix(in oklab, var(--accent) 20%, var(--line));
|
|
}
|
|
|
|
.activity-item.compact {
|
|
padding: 8px 10px;
|
|
}
|
|
|
|
.activity-item.tone-ok {
|
|
border-color: color-mix(in oklab, var(--ok) 28%, var(--line));
|
|
background: color-mix(in oklab, var(--ok-soft) 42%, var(--panel-strong));
|
|
}
|
|
|
|
.activity-item.tone-warn {
|
|
border-color: color-mix(in oklab, var(--warn) 28%, var(--line));
|
|
background: color-mix(in oklab, var(--warn-soft) 44%, var(--panel-strong));
|
|
}
|
|
|
|
.activity-item.tone-bad {
|
|
border-color: color-mix(in oklab, var(--bad) 28%, var(--line));
|
|
background: color-mix(in oklab, var(--bad-soft) 44%, var(--panel-strong));
|
|
}
|
|
|
|
.activity-item-main strong,
|
|
.activity-item-main span,
|
|
.activity-item-side small {
|
|
display: block;
|
|
}
|
|
|
|
.activity-item-main strong {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.activity-item-main span,
|
|
.activity-item-side small {
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.activity-item-side {
|
|
text-align: right;
|
|
}
|
|
|
|
.config-history-list {
|
|
gap: 0;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
overflow: hidden;
|
|
background: var(--panel-strong);
|
|
}
|
|
|
|
.config-history-list .activity-item {
|
|
border: 0;
|
|
border-bottom: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 0;
|
|
background: transparent;
|
|
}
|
|
|
|
.config-history-list .activity-item:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.config-history-list .activity-item:hover {
|
|
transform: none;
|
|
background: color-mix(in oklab, var(--accent-soft) 14%, var(--panel-strong));
|
|
}
|
|
|
|
.release-status-strip {
|
|
margin-top: 8px;
|
|
padding: 10px 12px;
|
|
background: var(--panel);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.sticky-release-strip {
|
|
position: sticky;
|
|
top: 126px;
|
|
z-index: 12;
|
|
}
|
|
|
|
.release-task-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 14px;
|
|
align-items: flex-start;
|
|
padding-bottom: 8px;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
|
|
.release-task-context {
|
|
display: grid;
|
|
gap: 3px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.release-task-context strong {
|
|
color: color-mix(in oklab, var(--text) 88%, var(--accent));
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.1em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.release-task-context span {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
letter-spacing: 0.04em;
|
|
}
|
|
|
|
.release-action-bar {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: flex-start;
|
|
padding-bottom: 10px;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
|
|
.release-action-summary {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
margin-top: 8px;
|
|
}
|
|
|
|
.release-meta-strip {
|
|
margin-top: 8px;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.release-inline-meta {
|
|
display: inline-grid;
|
|
gap: 3px;
|
|
min-width: 120px;
|
|
white-space: normal;
|
|
}
|
|
|
|
.release-inline-meta small,
|
|
.release-inline-meta strong {
|
|
display: block;
|
|
}
|
|
|
|
.release-inline-meta small {
|
|
color: var(--muted);
|
|
font-size: 9px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.release-inline-meta strong {
|
|
font-size: 11px;
|
|
line-height: 1.4;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.release-inline-meta.tone-ok strong {
|
|
color: color-mix(in oklab, var(--ok) 72%, var(--text));
|
|
}
|
|
|
|
.release-inline-meta.tone-warn strong {
|
|
color: color-mix(in oklab, var(--warn) 74%, var(--text));
|
|
}
|
|
|
|
.release-inline-meta.tone-bad strong {
|
|
color: color-mix(in oklab, var(--bad) 82%, var(--text));
|
|
}
|
|
|
|
.release-check-strip {
|
|
margin-top: 8px;
|
|
}
|
|
|
|
.release-command-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
margin-top: 0;
|
|
padding-top: 0;
|
|
border-top: 0;
|
|
}
|
|
|
|
.release-command-actions .refresh {
|
|
min-height: 30px;
|
|
}
|
|
|
|
.release-command-actions .refresh.ghost {
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.release-bottom-action-bar {
|
|
position: static;
|
|
z-index: auto;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
margin-top: 12px;
|
|
padding: 8px 10px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
background: var(--panel-strong);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.release-action-summary.compact {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.release-card-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
|
gap: 7px;
|
|
margin-top: 8px;
|
|
}
|
|
|
|
.release-service-card {
|
|
--release-kind-color: var(--accent);
|
|
position: relative;
|
|
display: grid;
|
|
gap: 6px;
|
|
padding: 8px 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--panel-strong);
|
|
cursor: pointer;
|
|
transition: border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.release-service-card::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 7px;
|
|
bottom: 7px;
|
|
width: 3px;
|
|
border-radius: 999px;
|
|
background: var(--release-kind-color);
|
|
}
|
|
|
|
.release-service-card:hover {
|
|
border-color: color-mix(in oklab, var(--accent) 28%, var(--line));
|
|
}
|
|
|
|
.release-service-card:focus-visible {
|
|
outline: 0;
|
|
border-color: color-mix(in oklab, var(--accent) 56%, var(--line-strong));
|
|
box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent-soft) 84%, transparent);
|
|
}
|
|
|
|
.release-service-card.selected {
|
|
border-color: color-mix(in oklab, var(--accent) 38%, var(--line));
|
|
background: color-mix(in oklab, var(--accent-soft) 26%, var(--panel-strong));
|
|
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 18%, transparent);
|
|
}
|
|
|
|
.release-service-card.selected::before {
|
|
background: color-mix(in oklab, var(--accent) 78%, var(--release-kind-color));
|
|
}
|
|
|
|
.release-service-card.selected .release-service-title strong {
|
|
color: var(--accent);
|
|
}
|
|
|
|
.release-service-card[data-kind="java"] {
|
|
--release-kind-color: var(--group-app);
|
|
}
|
|
|
|
.release-service-card[data-kind="golang"] {
|
|
--release-kind-color: var(--group-gateway);
|
|
}
|
|
|
|
.release-service-card[data-kind="frontend"] {
|
|
--release-kind-color: var(--group-pay);
|
|
}
|
|
|
|
.release-service-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.release-service-title {
|
|
display: grid;
|
|
gap: 4px;
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
}
|
|
|
|
.release-service-title-line {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto auto;
|
|
gap: 5px;
|
|
align-items: center;
|
|
}
|
|
|
|
.release-service-title strong {
|
|
grid-column: 1 / -1;
|
|
overflow: visible;
|
|
font-size: 13px;
|
|
line-height: 1.25;
|
|
overflow-wrap: anywhere;
|
|
text-overflow: clip;
|
|
white-space: normal;
|
|
}
|
|
|
|
.release-service-title-line .badge {
|
|
width: fit-content;
|
|
min-height: 22px;
|
|
padding: 0 6px;
|
|
font-size: 9.5px;
|
|
}
|
|
|
|
.release-service-meta {
|
|
display: grid;
|
|
gap: 2px;
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
line-height: 1.25;
|
|
}
|
|
|
|
.release-service-meta span {
|
|
overflow: hidden;
|
|
min-width: 0;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
word-break: normal;
|
|
}
|
|
|
|
.release-service-actions {
|
|
display: grid;
|
|
gap: 3px;
|
|
justify-items: end;
|
|
align-self: center;
|
|
}
|
|
|
|
.release-service-actions-tight {
|
|
align-self: flex-start;
|
|
}
|
|
|
|
.release-service-action-row {
|
|
display: none;
|
|
gap: 8px;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.release-service-card[data-kind="frontend"] .release-service-action-row {
|
|
display: flex;
|
|
}
|
|
|
|
.release-select-state {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 22px;
|
|
padding: 0 7px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 999px;
|
|
background: color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong));
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.06em;
|
|
}
|
|
|
|
.release-select-state.is-selected {
|
|
border-color: color-mix(in oklab, var(--accent) 34%, var(--line));
|
|
background: color-mix(in oklab, var(--accent-soft) 42%, var(--panel-strong));
|
|
color: var(--accent);
|
|
}
|
|
|
|
.release-service-note {
|
|
display: none;
|
|
}
|
|
|
|
.precheck-strip {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
margin-top: 10px;
|
|
padding-top: 10px;
|
|
border-top: 1px solid var(--line);
|
|
}
|
|
|
|
.release-log-preview {
|
|
display: grid;
|
|
gap: 8px;
|
|
margin-top: 12px;
|
|
padding-top: 10px;
|
|
border-top: 1px solid var(--line);
|
|
}
|
|
|
|
.release-log-preview-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
align-items: center;
|
|
}
|
|
|
|
.release-log-preview-head strong {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.release-log-list {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
.release-log-entry {
|
|
display: grid;
|
|
grid-template-columns: minmax(112px, 132px) 72px minmax(0, 1fr);
|
|
gap: 10px;
|
|
align-items: start;
|
|
padding: 8px 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 10px;
|
|
background: var(--panel-strong);
|
|
}
|
|
|
|
.release-log-entry strong,
|
|
.release-log-entry span,
|
|
.release-log-entry small {
|
|
margin: 0;
|
|
min-width: 0;
|
|
}
|
|
|
|
.release-log-entry strong {
|
|
font-size: 11px;
|
|
}
|
|
|
|
.release-log-entry span {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
}
|
|
|
|
.release-log-entry small {
|
|
color: var(--text);
|
|
font-size: 11px;
|
|
line-height: 1.45;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.release-log-entry.tone-bad {
|
|
border-color: color-mix(in oklab, var(--bad) 28%, var(--line));
|
|
background: color-mix(in oklab, var(--bad-soft) 28%, var(--panel-strong));
|
|
}
|
|
|
|
.release-table td strong {
|
|
display: block;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.table-subtext {
|
|
display: block;
|
|
margin-top: 4px;
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
}
|
|
|
|
.inline-copy {
|
|
display: inline-flex;
|
|
gap: 6px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.inline-button {
|
|
min-height: 24px;
|
|
padding: 0 8px;
|
|
}
|
|
|
|
.table-check {
|
|
display: inline-flex;
|
|
gap: 6px;
|
|
align-items: center;
|
|
min-height: 26px;
|
|
padding: 0 8px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 999px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 0%, var(--panel-strong) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 68%, transparent);
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
transition: border-color 180ms ease, background 180ms ease, color 180ms ease, box-shadow 180ms ease;
|
|
}
|
|
|
|
.table-check:hover {
|
|
border-color: color-mix(in oklab, var(--accent) 18%, var(--line));
|
|
}
|
|
|
|
.table-check.checked {
|
|
color: var(--accent);
|
|
border-color: color-mix(in oklab, var(--accent) 28%, var(--line));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 62%, var(--panel-strong)) 0%, color-mix(in oklab, var(--accent-soft) 38%, var(--panel-strong)) 100%);
|
|
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 14%, transparent);
|
|
}
|
|
|
|
.table-check span {
|
|
font-weight: 700;
|
|
}
|
|
|
|
.table-check input {
|
|
width: 14px;
|
|
height: 14px;
|
|
accent-color: var(--accent);
|
|
}
|
|
|
|
.table-empty-cell {
|
|
padding: 24px 10px;
|
|
color: var(--muted);
|
|
text-align: center;
|
|
}
|
|
|
|
.result-disclosure {
|
|
margin-top: 12px;
|
|
}
|
|
|
|
.result-disclosure summary {
|
|
cursor: pointer;
|
|
color: var(--text);
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.bridge-panel {
|
|
display: grid;
|
|
gap: 10px;
|
|
padding: 10px 12px 12px;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--bad-soft) 14%, var(--panel-strong)) 0%, var(--panel) 100%);
|
|
}
|
|
|
|
.bridge-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
align-items: center;
|
|
padding: 0 2px;
|
|
}
|
|
|
|
.bridge-head strong {
|
|
font-size: 12px;
|
|
letter-spacing: -0.02em;
|
|
}
|
|
|
|
.bridge-head span {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.bridge-list {
|
|
display: grid;
|
|
gap: 8px;
|
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
}
|
|
|
|
.bridge-item {
|
|
position: relative;
|
|
overflow: hidden;
|
|
display: grid;
|
|
grid-template-columns: minmax(92px, 110px) minmax(0, 1fr) auto;
|
|
gap: 12px;
|
|
align-items: center;
|
|
width: 100%;
|
|
padding: 7px 10px;
|
|
border: 1px solid color-mix(in oklab, var(--bad) 24%, var(--line));
|
|
border-radius: 10px;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--bad-soft) 46%, var(--panel-strong)) 0%, color-mix(in oklab, var(--bad-soft) 62%, var(--panel-muted)) 100%);
|
|
color: var(--text);
|
|
font: inherit;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.bridge-item::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
width: 3px;
|
|
background: color-mix(in oklab, var(--bad) 72%, var(--warn));
|
|
}
|
|
|
|
.bridge-item:hover {
|
|
border-color: color-mix(in oklab, var(--accent) 22%, var(--line));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 18%, var(--panel-strong)) 0%, var(--panel-strong) 100%);
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
animation: none !important;
|
|
transition: none !important;
|
|
scroll-behavior: auto !important;
|
|
}
|
|
}
|
|
|
|
.bridge-item strong {
|
|
font-size: 11px;
|
|
color: var(--bad);
|
|
}
|
|
|
|
.bridge-item span {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.bridge-item em {
|
|
color: var(--bad);
|
|
font-size: 10px;
|
|
font-style: normal;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.host-fold-toggle {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
width: fit-content;
|
|
min-height: 34px;
|
|
padding: 0 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 999px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 98%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
color: var(--text);
|
|
font: inherit;
|
|
cursor: pointer;
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 70%, transparent);
|
|
transition: border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
|
|
}
|
|
|
|
.host-fold-toggle::before {
|
|
content: "";
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 999px;
|
|
background: color-mix(in oklab, var(--accent) 54%, var(--group-app));
|
|
box-shadow: 0 0 0 4px color-mix(in oklab, var(--accent-soft) 66%, transparent);
|
|
}
|
|
|
|
.host-fold-toggle:hover {
|
|
border-color: color-mix(in oklab, var(--accent) 20%, var(--line));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 16%, var(--panel-muted)) 0%, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 100%);
|
|
}
|
|
|
|
.host-fold-toggle strong {
|
|
color: var(--text);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.host-fold-toggle small {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
}
|
|
|
|
.infra-mini-card {
|
|
position: relative;
|
|
display: grid;
|
|
gap: 8px;
|
|
padding: 10px 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: var(--panel-strong);
|
|
}
|
|
|
|
.infra-mini-card::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 8px;
|
|
bottom: 8px;
|
|
width: 3px;
|
|
border-radius: 999px;
|
|
background: color-mix(in oklab, var(--accent) 44%, var(--group-app));
|
|
}
|
|
|
|
.infra-mini-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.infra-mini-title {
|
|
display: grid;
|
|
gap: 4px;
|
|
}
|
|
|
|
.infra-mini-title strong {
|
|
font-size: 13px;
|
|
}
|
|
|
|
.infra-mini-title small {
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.infra-mini-metrics {
|
|
display: flex;
|
|
gap: 6px 12px;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
}
|
|
|
|
.infra-mini-metric {
|
|
display: inline-flex;
|
|
gap: 6px;
|
|
align-items: baseline;
|
|
min-width: 0;
|
|
}
|
|
|
|
.infra-mini-metric small {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
letter-spacing: 0.06em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.infra-mini-metric strong {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.infra-card-action {
|
|
align-self: flex-start;
|
|
}
|
|
|
|
.infra-panel {
|
|
margin-top: 12px;
|
|
}
|
|
|
|
.nacos-service-grid {
|
|
display: grid;
|
|
gap: 12px;
|
|
margin-top: 14px;
|
|
}
|
|
|
|
.nacos-service-card {
|
|
position: relative;
|
|
padding: 14px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 16px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
}
|
|
|
|
.table-wrap {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.table tbody tr:hover {
|
|
background: color-mix(in oklab, var(--accent-soft) 22%, var(--panel-strong));
|
|
}
|
|
|
|
.table tbody tr:last-child td,
|
|
.matrix-table tbody tr:last-child td {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.table.compact th,
|
|
.table.compact td {
|
|
padding: 8px 10px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.config-toolbar {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.config-search {
|
|
min-width: 320px;
|
|
}
|
|
|
|
.restart-pills {
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.restart-pills .config-item {
|
|
width: auto;
|
|
min-width: 220px;
|
|
}
|
|
|
|
.config-layout {
|
|
display: grid;
|
|
grid-template-columns: minmax(176px, 216px) minmax(0, 1fr);
|
|
gap: 8px;
|
|
}
|
|
|
|
.infra-panel > .panel-header {
|
|
margin-bottom: 14px;
|
|
padding-bottom: 10px;
|
|
border-bottom: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
}
|
|
|
|
.config-list {
|
|
display: grid;
|
|
gap: 6px;
|
|
max-height: calc(100vh - 196px);
|
|
overflow: auto;
|
|
padding-right: 4px;
|
|
}
|
|
|
|
.config-item {
|
|
display: block;
|
|
width: 100%;
|
|
padding: 12px 14px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 14px;
|
|
background: var(--panel-muted);
|
|
color: var(--text);
|
|
text-align: left;
|
|
cursor: pointer;
|
|
transition: transform 180ms ease, border-color 180ms ease, background 180ms ease;
|
|
}
|
|
|
|
.config-item:hover {
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.config-item.active {
|
|
border-color: color-mix(in oklab, var(--accent) 44%, var(--line-strong));
|
|
background: var(--accent-soft);
|
|
}
|
|
|
|
.config-item strong,
|
|
.config-item span,
|
|
.config-item small {
|
|
display: block;
|
|
}
|
|
|
|
.config-item strong {
|
|
font-size: 13px;
|
|
line-height: 1.35;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.config-item span,
|
|
.config-item small,
|
|
.config-description {
|
|
color: var(--muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.config-item span,
|
|
.config-description {
|
|
margin-top: 6px;
|
|
}
|
|
|
|
.config-list-ide .config-item-ide {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 6px;
|
|
align-items: center;
|
|
min-height: 28px;
|
|
padding: 4px 6px 4px 8px;
|
|
border: 0;
|
|
border-radius: 6px;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.config-list-ide .config-item-ide:hover {
|
|
transform: none;
|
|
background: color-mix(in oklab, var(--accent-soft) 16%, var(--panel-strong));
|
|
}
|
|
|
|
.config-list-ide .config-item-ide.active {
|
|
border-color: transparent;
|
|
background: color-mix(in oklab, var(--accent-soft) 56%, var(--panel-strong));
|
|
box-shadow: inset 2px 0 0 var(--accent);
|
|
}
|
|
|
|
.config-list-ide .config-item-ide strong {
|
|
overflow: hidden;
|
|
color: var(--text);
|
|
font-size: 10.5px;
|
|
line-height: 1.25;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
word-break: normal;
|
|
}
|
|
|
|
.config-list-ide .config-item-ide small {
|
|
display: none;
|
|
}
|
|
|
|
.config-list-ide .config-item-ide span {
|
|
margin-top: 0;
|
|
color: var(--muted);
|
|
font-size: 9px;
|
|
line-height: 1;
|
|
letter-spacing: 0.04em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.config-description {
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.config-editor {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.config-editor-meta {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.config-empty,
|
|
.empty-panel {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 88px;
|
|
padding: 14px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 88%, var(--panel-strong));
|
|
border-radius: 16px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 96%, var(--bg-soft)) 0%, color-mix(in oklab, var(--panel-muted) 88%, var(--panel-strong)) 100%);
|
|
color: var(--muted);
|
|
text-align: center;
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 68%, transparent);
|
|
}
|
|
|
|
.empty-panel.compact {
|
|
min-height: 60px;
|
|
padding: 12px;
|
|
}
|
|
|
|
[data-group="gateway"] {
|
|
--group-color: var(--group-gateway);
|
|
}
|
|
|
|
[data-group="app"] {
|
|
--group-color: var(--group-app);
|
|
}
|
|
|
|
[data-group="pay"] {
|
|
--group-color: var(--group-pay);
|
|
}
|
|
|
|
[data-group="nacos"],
|
|
[data-group="mongo"],
|
|
[data-group="infra"] {
|
|
--group-color: var(--group-infra);
|
|
}
|
|
|
|
.config-textarea {
|
|
width: 100%;
|
|
min-height: clamp(360px, 66vh, 760px);
|
|
padding: 12px 14px;
|
|
resize: vertical;
|
|
border-radius: 8px;
|
|
background: oklch(100% 0 0 / 0.86);
|
|
box-shadow: inset 0 1px 2px rgba(52, 71, 103, 0.08);
|
|
font-size: 12px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.task-page-head {
|
|
margin-top: 8px;
|
|
padding: 10px 12px;
|
|
background: var(--panel);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.task-page-head::before,
|
|
.config-workbench-panel::before,
|
|
.editor-toolbar::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 14px;
|
|
right: 14px;
|
|
top: 0;
|
|
height: 3px;
|
|
border-radius: 999px;
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 44%, var(--group-app)) 0%, transparent 78%);
|
|
opacity: 0.82;
|
|
}
|
|
|
|
.task-page-head .panel-header {
|
|
margin: 0;
|
|
align-items: center;
|
|
}
|
|
|
|
.task-page-head .panel-title h2 {
|
|
font-size: clamp(1.08rem, 1.12vw, 1.2rem);
|
|
}
|
|
|
|
.task-page-head .panel-title p {
|
|
margin-top: 4px;
|
|
font-size: 11px;
|
|
letter-spacing: 0.04em;
|
|
text-transform: none;
|
|
}
|
|
|
|
.task-page-head .panel-meta .badge.neutral {
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 98%, var(--panel-strong)) 0%, var(--panel-muted) 100%);
|
|
}
|
|
|
|
.mongo-admin-layout {
|
|
align-items: start;
|
|
}
|
|
|
|
.database-control-bar {
|
|
align-items: center;
|
|
}
|
|
|
|
.database-engine-switch {
|
|
position: relative;
|
|
padding-right: 10px;
|
|
}
|
|
|
|
.database-engine-switch::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 6px;
|
|
right: 0;
|
|
bottom: 6px;
|
|
width: 1px;
|
|
background: color-mix(in oklab, var(--line) 88%, transparent);
|
|
}
|
|
|
|
.database-workbench-panel {
|
|
position: relative;
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 97%, var(--accent-soft)) 0%, color-mix(in oklab, var(--panel) 98%, var(--panel-muted)) 100%);
|
|
box-shadow: var(--shadow-soft), inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 74%, transparent);
|
|
}
|
|
|
|
.database-workbench-panel::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 16px;
|
|
right: 16px;
|
|
top: 0;
|
|
height: 3px;
|
|
border-radius: 999px;
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 44%, var(--group-app)) 0%, transparent 78%);
|
|
opacity: 0.84;
|
|
}
|
|
|
|
.mongo-taskbar-context {
|
|
flex-direction: row;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
min-width: 0;
|
|
gap: 8px;
|
|
}
|
|
|
|
.mongo-taskbar-context span {
|
|
color: inherit;
|
|
font-size: 11px;
|
|
letter-spacing: 0;
|
|
text-transform: none;
|
|
}
|
|
|
|
.mongo-sidebar {
|
|
top: 112px;
|
|
}
|
|
|
|
.mongo-admin-editor {
|
|
min-width: 0;
|
|
}
|
|
|
|
.mysql-workbench-panel {
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 96%, var(--group-pay)) 0%, color-mix(in oklab, var(--panel) 98%, var(--panel-muted)) 100%);
|
|
}
|
|
|
|
.mongo-workbench-panel {
|
|
background:
|
|
linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 96%, var(--group-infra)) 0%, color-mix(in oklab, var(--panel) 98%, var(--panel-muted)) 100%);
|
|
}
|
|
|
|
.mysql-workbench-head {
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.mongo-workbench-head {
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.mongo-workbench-head .metadata-strip,
|
|
.mysql-workbench-head .metadata-strip {
|
|
gap: 8px;
|
|
}
|
|
|
|
.mongo-workbench-head .metadata-strip span,
|
|
.mysql-workbench-head .metadata-strip span {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 24px;
|
|
padding: 0 8px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 999px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 0%, var(--panel-strong) 100%);
|
|
color: color-mix(in oklab, var(--muted) 92%, var(--text));
|
|
}
|
|
|
|
.mongo-admin-subpanel,
|
|
.mongo-action-panel {
|
|
display: grid;
|
|
gap: 12px;
|
|
padding: 14px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 18px;
|
|
background: color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong));
|
|
}
|
|
|
|
.mongo-panel-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.common-cdn-grid {
|
|
align-items: start;
|
|
grid-template-columns: minmax(0, 360px) minmax(0, 1fr);
|
|
}
|
|
|
|
.common-cdn-summary {
|
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
}
|
|
|
|
.common-cdn-textarea-field {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.common-cdn-textarea {
|
|
min-height: 240px;
|
|
}
|
|
|
|
.common-cdn-url {
|
|
display: block;
|
|
max-width: 100%;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.common-cdn-task-panel .table-wrap {
|
|
max-height: 520px;
|
|
}
|
|
|
|
.common-cdn-domain-strip,
|
|
.common-cdn-result-strip {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.mongo-panel-grid.narrow {
|
|
grid-template-columns: minmax(0, 220px) minmax(0, 1fr);
|
|
}
|
|
|
|
.mongo-query-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.mongo-json-textarea {
|
|
min-height: 180px;
|
|
}
|
|
|
|
.mongo-editor-textarea {
|
|
min-height: 320px;
|
|
}
|
|
|
|
.mongo-subtoolbar {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.mongo-document-table td {
|
|
vertical-align: top;
|
|
}
|
|
|
|
.mongo-doc-preview,
|
|
.mongo-index-text {
|
|
margin: 0;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
font-size: 11px;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.mongo-doc-preview {
|
|
color: var(--muted);
|
|
}
|
|
|
|
.mongo-index-text {
|
|
color: var(--text);
|
|
}
|
|
|
|
.mongo-pager {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.mongo-check-grid {
|
|
display: flex;
|
|
gap: 12px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.mongo-tag-list {
|
|
display: flex;
|
|
gap: 6px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.mongo-mini-empty {
|
|
padding: 8px 10px;
|
|
border: 1px dashed var(--line);
|
|
border-radius: 10px;
|
|
color: var(--muted);
|
|
font-size: 11px;
|
|
text-align: left;
|
|
}
|
|
|
|
.mysql-overview-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));
|
|
gap: 8px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.mongo-admin-overview-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));
|
|
gap: 8px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.mongo-admin-overview-card,
|
|
.mysql-overview-card {
|
|
position: relative;
|
|
overflow: hidden;
|
|
display: grid;
|
|
gap: 4px;
|
|
min-height: 66px;
|
|
padding: 9px 10px;
|
|
border-radius: 14px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 97%, var(--panel-muted)) 0%, var(--panel-muted) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 74%, transparent);
|
|
}
|
|
|
|
.mongo-admin-overview-card::before,
|
|
.mysql-overview-card::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
top: 0;
|
|
height: 3px;
|
|
background: linear-gradient(90deg, color-mix(in oklab, currentColor 42%, transparent) 0%, transparent 78%);
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.mysql-overview-card small {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.mongo-admin-overview-card small,
|
|
.mongo-admin-overview-card span,
|
|
.mysql-overview-card span {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.mongo-admin-overview-card small {
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.database-admin-layout {
|
|
grid-template-columns: minmax(216px, 236px) minmax(0, 1fr);
|
|
gap: 12px;
|
|
}
|
|
|
|
.mysql-sidebar-section {
|
|
display: grid;
|
|
gap: 8px;
|
|
padding: 6px 6px 8px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 12px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 0%, var(--panel-strong) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 70%, transparent);
|
|
}
|
|
|
|
.mongo-sidebar-section {
|
|
display: grid;
|
|
gap: 6px;
|
|
padding: 6px 6px 8px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 12px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 0%, var(--panel-strong) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 70%, transparent);
|
|
}
|
|
|
|
.mongo-sidebar-strip,
|
|
.mysql-sidebar-strip {
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.mysql-admin-layout {
|
|
grid-template-columns: minmax(216px, 236px) minmax(0, 1fr);
|
|
gap: 10px;
|
|
}
|
|
|
|
.mongo-sidebar-list {
|
|
max-height: min(46vh, 520px);
|
|
}
|
|
|
|
.mysql-sidebar-list {
|
|
max-height: min(35vh, 360px);
|
|
}
|
|
|
|
.mysql-sidebar-section .section-caption-row {
|
|
padding: 0 2px;
|
|
}
|
|
|
|
.table-scroll-x {
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.mysql-data-table {
|
|
min-width: max-content;
|
|
}
|
|
|
|
.mysql-row-action-cell {
|
|
min-width: 188px;
|
|
}
|
|
|
|
.mysql-sort-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 0;
|
|
border: none;
|
|
background: transparent;
|
|
color: inherit;
|
|
font: inherit;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.mysql-sort-indicator {
|
|
color: var(--accent);
|
|
font-size: 10px;
|
|
letter-spacing: 0.06em;
|
|
}
|
|
|
|
.mysql-cell {
|
|
max-width: 240px;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
vertical-align: top;
|
|
}
|
|
|
|
.mysql-cell.is-null {
|
|
color: var(--muted);
|
|
font-style: italic;
|
|
}
|
|
|
|
.mysql-data-table tbody tr.selected {
|
|
background: color-mix(in oklab, var(--accent-soft) 28%, var(--panel-strong));
|
|
}
|
|
|
|
.mysql-filter-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.mysql-filter-list {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.mysql-filter-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 168px) minmax(0, 128px) minmax(0, 1fr) auto;
|
|
gap: 10px;
|
|
align-items: end;
|
|
padding: 8px;
|
|
border: 1px dashed color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
border-radius: 14px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 0%, var(--panel-strong) 100%);
|
|
}
|
|
|
|
.mysql-filter-static {
|
|
display: flex;
|
|
align-items: center;
|
|
min-height: 36px;
|
|
padding: 0 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 14px;
|
|
background: var(--panel-muted);
|
|
color: var(--muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.mysql-query-stack {
|
|
display: grid;
|
|
gap: 6px;
|
|
padding: 8px;
|
|
border: 1px solid color-mix(in oklab, var(--line) 92%, var(--panel-strong));
|
|
border-radius: 16px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 0%, color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong)) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.mongo-context-strip,
|
|
.mongo-result-strip {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.mongo-cell-preview {
|
|
max-width: 420px;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.mongo-aggregate-side {
|
|
align-content: start;
|
|
}
|
|
|
|
.mongo-danger-panel {
|
|
border-color: color-mix(in oklab, var(--bad) 22%, var(--line));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--bad-soft) 20%, var(--panel-strong)) 0%, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 100%);
|
|
}
|
|
|
|
.mongo-danger-panel::before {
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--bad) 74%, var(--warn)) 0%, transparent 78%);
|
|
}
|
|
|
|
.action-group-stack {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.config-group-toggle.active {
|
|
border-color: color-mix(in oklab, var(--accent) 20%, var(--line));
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--accent-soft) 28%, var(--panel-strong)) 0%, var(--panel-strong) 100%);
|
|
}
|
|
|
|
.mysql-checkbox-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.mysql-checkbox {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-height: 40px;
|
|
padding: 0 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 14px;
|
|
background: var(--panel-muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.mysql-checkbox input {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
.mysql-shortcut-grid,
|
|
.mysql-tag-list,
|
|
.mysql-result-meta {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.mysql-result-toolbar {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.mysql-write-grid,
|
|
.mysql-schema-grid {
|
|
align-items: start;
|
|
}
|
|
|
|
.mysql-action-panel {
|
|
position: relative;
|
|
overflow: hidden;
|
|
border-radius: 16px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 0%, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 100%);
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
|
|
}
|
|
|
|
.mysql-action-panel::before,
|
|
.mysql-console-panel::before,
|
|
.mysql-console-result::before,
|
|
.mysql-ddl-panel::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
top: 0;
|
|
height: 3px;
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 48%, var(--group-pay)) 0%, transparent 78%);
|
|
opacity: 0.82;
|
|
}
|
|
|
|
.mysql-action-panel.tone-write::before {
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--ok) 72%, var(--accent)) 0%, transparent 78%);
|
|
}
|
|
|
|
.mysql-action-panel.tone-edit::before {
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--warn) 74%, var(--accent)) 0%, transparent 78%);
|
|
}
|
|
|
|
.mysql-action-panel.tone-structure::before {
|
|
background: linear-gradient(90deg, color-mix(in oklab, var(--group-app) 64%, var(--accent)) 0%, transparent 78%);
|
|
}
|
|
|
|
.mysql-console-panel,
|
|
.mysql-console-result,
|
|
.mysql-ddl-panel {
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.mysql-console-panel {
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong)) 0%, color-mix(in oklab, var(--panel-strong) 98%, var(--panel-muted)) 100%);
|
|
}
|
|
|
|
.mysql-shortcut-grid {
|
|
padding-bottom: 2px;
|
|
}
|
|
|
|
.mysql-shortcut-grid .refresh {
|
|
min-height: 28px;
|
|
}
|
|
|
|
.mysql-console-textarea {
|
|
min-height: 300px;
|
|
border-color: color-mix(in oklab, var(--line-strong) 76%, transparent);
|
|
background: oklch(22% 0.01 240 / 0.98);
|
|
color: oklch(91% 0.01 230);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
|
}
|
|
|
|
.mysql-ddl-textarea {
|
|
min-height: 240px;
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 96%, var(--panel-muted)) 0%, color-mix(in oklab, var(--panel-muted) 92%, var(--panel-strong)) 100%);
|
|
}
|
|
|
|
.mysql-result-strip {
|
|
background: linear-gradient(180deg, color-mix(in oklab, var(--panel-strong) 96%, var(--accent-soft)) 0%, var(--panel-muted) 100%);
|
|
}
|
|
|
|
.action-group-tight {
|
|
gap: 6px;
|
|
}
|
|
|
|
.config-actions {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.update-form-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 12px;
|
|
margin-top: 14px;
|
|
}
|
|
|
|
.update-field,
|
|
.update-check {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.update-field span,
|
|
.update-check span {
|
|
color: var(--muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.update-field-toggle {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.update-check {
|
|
flex-direction: row;
|
|
align-items: center;
|
|
gap: 10px;
|
|
min-height: 44px;
|
|
padding: 0 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 12px;
|
|
background: color-mix(in oklab, var(--panel-muted) 96%, var(--panel-strong));
|
|
}
|
|
|
|
.update-check input {
|
|
width: 18px;
|
|
height: 18px;
|
|
margin: 0;
|
|
}
|
|
|
|
.update-check strong,
|
|
.update-check small {
|
|
display: block;
|
|
}
|
|
|
|
.update-check strong {
|
|
font-size: 12px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.update-check small {
|
|
color: var(--muted);
|
|
font-size: 10px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.operation-meta {
|
|
margin-top: 14px;
|
|
}
|
|
|
|
.update-log-panel {
|
|
margin-top: 14px;
|
|
padding: 16px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 18px;
|
|
background: var(--panel-muted);
|
|
}
|
|
|
|
.update-log-head {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.update-log-output {
|
|
margin: 0;
|
|
min-height: 180px;
|
|
max-height: 420px;
|
|
overflow: auto;
|
|
padding: 16px;
|
|
border: 1px solid color-mix(in oklab, var(--line-strong) 78%, transparent);
|
|
border-radius: 14px;
|
|
background: oklch(22% 0.01 240 / 0.98);
|
|
color: oklch(91% 0.01 230);
|
|
font-size: 12px;
|
|
line-height: 1.55;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.log-viewer-overlay {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 48;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: 28px 20px;
|
|
background: color-mix(in oklab, var(--text) 14%, transparent);
|
|
backdrop-filter: blur(8px);
|
|
}
|
|
|
|
.log-viewer {
|
|
display: grid;
|
|
grid-template-rows: auto auto minmax(0, 1fr);
|
|
gap: 12px;
|
|
width: min(1120px, 100%);
|
|
max-height: min(88vh, 920px);
|
|
padding: 16px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 22px;
|
|
background: color-mix(in oklab, var(--panel-strong) 96%, var(--panel-muted));
|
|
box-shadow: 0 24px 64px rgba(29, 42, 68, 0.24);
|
|
}
|
|
|
|
.build-params-dialog {
|
|
grid-template-rows: auto auto auto;
|
|
width: min(900px, 100%);
|
|
}
|
|
|
|
.build-params-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
margin-top: 0;
|
|
}
|
|
|
|
.build-params-toggle {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.log-viewer-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 14px;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.log-viewer-toolbar {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.log-viewer-output {
|
|
margin: 0;
|
|
min-height: 280px;
|
|
max-height: calc(88vh - 176px);
|
|
overflow: auto;
|
|
padding: 16px;
|
|
border: 1px solid color-mix(in oklab, var(--line-strong) 78%, transparent);
|
|
border-radius: 16px;
|
|
background: oklch(22% 0.01 240 / 0.98);
|
|
color: oklch(91% 0.01 230);
|
|
font-size: 12px;
|
|
line-height: 1.58;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 28px;
|
|
padding: 0 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 999px;
|
|
background: var(--panel-muted);
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.01em;
|
|
box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-strong) 66%, transparent);
|
|
}
|
|
|
|
.badge.neutral {
|
|
color: color-mix(in oklab, var(--muted) 92%, var(--text));
|
|
border-color: color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
background: color-mix(in oklab, var(--panel-muted) 94%, var(--panel-strong));
|
|
}
|
|
|
|
.badge.ok,
|
|
.ok-text,
|
|
.tone-ok {
|
|
color: var(--ok);
|
|
}
|
|
|
|
.badge.warn,
|
|
.warn-text,
|
|
.tone-warn {
|
|
color: var(--warn);
|
|
}
|
|
|
|
.badge.bad,
|
|
.bad-text,
|
|
.tone-bad {
|
|
color: var(--bad);
|
|
}
|
|
|
|
.badge.ok {
|
|
border-color: color-mix(in oklab, var(--ok) 26%, var(--line));
|
|
background: color-mix(in oklab, var(--ok-soft) 32%, var(--panel-muted));
|
|
}
|
|
|
|
.badge.warn {
|
|
border-color: color-mix(in oklab, var(--warn) 42%, var(--line));
|
|
background: color-mix(in oklab, var(--warn-soft) 70%, var(--panel-muted));
|
|
}
|
|
|
|
.badge.bad {
|
|
border-color: color-mix(in oklab, var(--bad) 42%, var(--line));
|
|
background: color-mix(in oklab, var(--bad-soft) 70%, var(--panel-muted));
|
|
}
|
|
|
|
.tone-neutral {
|
|
color: var(--text);
|
|
}
|
|
|
|
.metric-error {
|
|
margin: 0;
|
|
color: var(--bad);
|
|
font-size: 12px;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.metric-error.warn {
|
|
color: var(--warn);
|
|
}
|
|
|
|
.mono,
|
|
.detail-secondary {
|
|
font-family: "IBM Plex Mono", "SFMono-Regular", monospace;
|
|
}
|
|
|
|
@media (max-width: 1320px) {
|
|
.loading-band-grid {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
|
|
.loading-panels {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.topbar {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.service-layout-open {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.bridge-list {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.overview-infra-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.service-meta-grid,
|
|
.summary-grid,
|
|
.metric-grid,
|
|
.infra-mini-metrics,
|
|
.config-meta-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.infra-overview-grid,
|
|
.mongo-group-grid,
|
|
.release-status-grid,
|
|
.release-log-snippets,
|
|
.overview-calm-grid,
|
|
.release-service-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.update-form-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.mongo-panel-grid,
|
|
.common-cdn-grid,
|
|
.mongo-query-grid,
|
|
.mysql-filter-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.mysql-filter-row,
|
|
.mysql-checkbox-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1280px) {
|
|
.topbar {
|
|
grid-template-columns: minmax(160px, 220px) minmax(0, 1fr);
|
|
}
|
|
|
|
.topbar-status {
|
|
grid-column: 1 / -1;
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.topbar-search {
|
|
max-width: none;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1040px) {
|
|
.control-bar {
|
|
position: static;
|
|
}
|
|
|
|
.topbar {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.topbar-nav,
|
|
.topbar-status {
|
|
width: 100%;
|
|
justify-content: flex-start;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.detail-panel {
|
|
position: static;
|
|
max-height: none;
|
|
}
|
|
|
|
.config-sidebar {
|
|
position: static;
|
|
max-height: none;
|
|
}
|
|
|
|
.summary-cards {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 6px;
|
|
}
|
|
|
|
.loading-band-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.host-strip-main {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.config-layout {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.config-only-layout > .config-sidebar {
|
|
padding: 0 0 10px;
|
|
border-right: 0;
|
|
border-bottom: 1px solid color-mix(in oklab, var(--line) 90%, var(--panel-strong));
|
|
}
|
|
|
|
.mongo-panel-grid.narrow {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.config-list {
|
|
max-height: 280px;
|
|
}
|
|
|
|
.mysql-sidebar-list {
|
|
max-height: 280px;
|
|
}
|
|
|
|
.sticky-toolbar,
|
|
.sticky-release-strip {
|
|
position: static;
|
|
}
|
|
|
|
.release-status-grid,
|
|
.infra-overview-grid,
|
|
.mongo-group-grid,
|
|
.release-log-snippets,
|
|
.overview-calm-grid,
|
|
.release-service-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
body.auth-page {
|
|
padding: 20px 12px;
|
|
}
|
|
|
|
.auth-shell {
|
|
width: 100%;
|
|
margin-top: 72px;
|
|
}
|
|
|
|
.auth-panel {
|
|
padding: 18px;
|
|
}
|
|
|
|
.shell {
|
|
padding: 14px 12px 28px;
|
|
}
|
|
|
|
.boot-indicator {
|
|
left: 12px;
|
|
right: 12px;
|
|
top: 14px;
|
|
width: auto;
|
|
justify-content: center;
|
|
}
|
|
|
|
.topbar {
|
|
position: static;
|
|
padding: 14px;
|
|
}
|
|
|
|
.control-bar,
|
|
.config-toolbar,
|
|
.config-actions,
|
|
.panel-header {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.control-group,
|
|
.control-group-spread,
|
|
.density-switch,
|
|
.action-group,
|
|
.host-tags,
|
|
.restart-pills {
|
|
width: 100%;
|
|
}
|
|
|
|
.search,
|
|
.config-search {
|
|
min-width: 100%;
|
|
}
|
|
|
|
.summary-cards,
|
|
.bridge-list,
|
|
.service-meta-grid,
|
|
.summary-grid,
|
|
.metric-grid,
|
|
.infra-mini-metrics,
|
|
.config-meta-grid,
|
|
.update-form-grid,
|
|
.mongo-panel-grid,
|
|
.common-cdn-grid,
|
|
.mongo-query-grid,
|
|
.mysql-filter-grid,
|
|
.mysql-checkbox-grid,
|
|
.release-status-grid,
|
|
.infra-overview-grid,
|
|
.mongo-group-grid,
|
|
.overview-calm-grid,
|
|
.release-service-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.status-band-item {
|
|
border-right: 0;
|
|
border-bottom: 1px solid var(--line);
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.status-band-item:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.service-layout-open {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.host-inline-metrics,
|
|
.host-inline-state {
|
|
width: 100%;
|
|
}
|
|
|
|
.section-caption-row {
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.entry-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.host-service-pill,
|
|
.restart-pills .config-item {
|
|
width: 100%;
|
|
}
|
|
|
|
.taskbar-context,
|
|
.taskbar-inline,
|
|
.metadata-strip,
|
|
.release-meta-strip,
|
|
.mongo-pager,
|
|
.precheck-strip,
|
|
.compact-workbench-head,
|
|
.activity-item-side,
|
|
.release-task-head,
|
|
.release-action-bar,
|
|
.release-action-summary,
|
|
.log-viewer-head,
|
|
.log-viewer-toolbar,
|
|
.entry-actions {
|
|
width: 100%;
|
|
text-align: left;
|
|
}
|
|
|
|
.editor-toolbar,
|
|
.activity-item {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.mysql-filter-row {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.log-viewer-overlay {
|
|
padding: 14px 12px;
|
|
}
|
|
|
|
.log-viewer {
|
|
max-height: calc(100vh - 28px);
|
|
padding: 14px;
|
|
}
|
|
|
|
.release-action-bar,
|
|
.release-command-row,
|
|
.release-bottom-action-bar,
|
|
.release-task-head,
|
|
.log-viewer-head,
|
|
.compact-workbench-head,
|
|
.release-service-head,
|
|
.infra-mini-head {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.release-service-actions {
|
|
justify-items: start;
|
|
}
|
|
|
|
.release-service-action-row {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.release-log-entry {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.diff-row {
|
|
grid-template-columns: 34px 34px 22px minmax(0, 1fr);
|
|
gap: 8px;
|
|
padding: 6px 8px;
|
|
}
|
|
}
|