592 lines
11 KiB
CSS
592 lines
11 KiB
CSS
:root {
|
|
--wb-primary: #0077ff;
|
|
--wb-primary-alt: #00b8ff;
|
|
--wb-ink: #0f2a4b;
|
|
--wb-subtle: #5f7da3;
|
|
--wb-page: #eef5ff;
|
|
--wb-panel: rgba(255, 255, 255, 0.76);
|
|
--wb-card: rgba(255, 255, 255, 0.92);
|
|
--wb-border: #d7e4f6;
|
|
--wb-border-strong: #c7d8ef;
|
|
--wb-grid: rgba(0, 102, 255, 0.08);
|
|
--wb-shadow-lg: 0 24px 56px rgba(24, 74, 150, 0.16);
|
|
--wb-shadow-md: 0 12px 30px rgba(20, 76, 154, 0.12);
|
|
|
|
--el-color-primary: var(--wb-primary);
|
|
--el-color-success: #17b26a;
|
|
--el-color-warning: #f79009;
|
|
--el-color-danger: #f04438;
|
|
--el-bg-color: #f8fbff;
|
|
--el-bg-color-page: var(--wb-page);
|
|
--el-bg-color-overlay: #ffffff;
|
|
--el-fill-color-blank: #ffffff;
|
|
--el-border-color: var(--wb-border);
|
|
--el-border-color-light: #e4edf9;
|
|
--el-border-color-lighter: #edf3fb;
|
|
--el-text-color-primary: var(--wb-ink);
|
|
--el-text-color-regular: #26486f;
|
|
--el-text-color-secondary: var(--wb-subtle);
|
|
--el-text-color-placeholder: #8ca4c1;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body,
|
|
#app {
|
|
height: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
color: var(--el-text-color-primary);
|
|
font-family: "Space Grotesk", "PingFang SC", "Microsoft YaHei", sans-serif;
|
|
background:
|
|
radial-gradient(circle at 15% 12%, rgba(0, 167, 255, 0.2), transparent 42%),
|
|
radial-gradient(circle at 85% 8%, rgba(0, 98, 255, 0.17), transparent 44%),
|
|
linear-gradient(180deg, #f9fcff 0%, #edf4ff 100%);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
body::before,
|
|
body::after {
|
|
content: "";
|
|
position: fixed;
|
|
pointer-events: none;
|
|
inset: 0;
|
|
z-index: -1;
|
|
}
|
|
|
|
body::before {
|
|
background-image:
|
|
linear-gradient(transparent 31px, var(--wb-grid) 32px),
|
|
linear-gradient(90deg, transparent 31px, var(--wb-grid) 32px);
|
|
background-size: 32px 32px;
|
|
opacity: 0.55;
|
|
}
|
|
|
|
body::after {
|
|
background:
|
|
radial-gradient(circle at 18% 78%, rgba(0, 168, 255, 0.16), transparent 34%),
|
|
radial-gradient(circle at 80% 74%, rgba(0, 110, 255, 0.14), transparent 38%);
|
|
}
|
|
|
|
.app-root {
|
|
height: 100%;
|
|
overscroll-behavior: none;
|
|
}
|
|
|
|
.app-shell {
|
|
height: 100vh;
|
|
padding: 14px;
|
|
gap: 12px;
|
|
overscroll-behavior: none;
|
|
}
|
|
|
|
.app-aside {
|
|
border: 1px solid var(--wb-border);
|
|
border-radius: 22px;
|
|
overflow: hidden;
|
|
background: var(--wb-panel);
|
|
backdrop-filter: blur(14px);
|
|
box-shadow: var(--wb-shadow-lg);
|
|
}
|
|
|
|
.brand-panel {
|
|
padding: 20px 16px 16px;
|
|
border-bottom: 1px solid var(--el-border-color-light);
|
|
}
|
|
|
|
.brand-title {
|
|
font-size: 18px;
|
|
font-weight: 700;
|
|
color: #083a72;
|
|
letter-spacing: 0.4px;
|
|
}
|
|
|
|
.brand-sub {
|
|
margin-top: 6px;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
letter-spacing: 1.4px;
|
|
text-transform: uppercase;
|
|
color: #6284af;
|
|
}
|
|
|
|
.app-menu {
|
|
border-right: none !important;
|
|
background: transparent !important;
|
|
padding: 10px 8px 14px;
|
|
}
|
|
|
|
.app-menu .el-menu-item {
|
|
height: 42px;
|
|
margin-bottom: 6px;
|
|
border-radius: 12px;
|
|
color: #2f557f;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.app-menu .el-menu-item .el-icon {
|
|
font-size: 16px;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
.app-menu .el-menu-item:hover {
|
|
background: rgba(0, 122, 255, 0.12);
|
|
color: #005ac0;
|
|
}
|
|
|
|
.app-menu .el-menu-item.is-active {
|
|
color: #ffffff !important;
|
|
background: linear-gradient(135deg, #0084ff 0%, #00b0ff 100%);
|
|
box-shadow: 0 10px 22px rgba(0, 129, 255, 0.3);
|
|
}
|
|
|
|
.app-main {
|
|
border: 1px solid var(--wb-border);
|
|
border-radius: 22px;
|
|
padding: 0 !important;
|
|
overflow: hidden !important;
|
|
display: flex;
|
|
flex-direction: column;
|
|
background: var(--wb-panel);
|
|
backdrop-filter: blur(14px);
|
|
box-shadow: var(--wb-shadow-lg);
|
|
}
|
|
|
|
.app-topbar {
|
|
height: 58px;
|
|
padding: 0 18px;
|
|
border-bottom: 1px solid var(--el-border-color-light);
|
|
background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(246, 250, 255, 0.92));
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
}
|
|
|
|
.topbar-title {
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.6px;
|
|
text-transform: uppercase;
|
|
color: #6584ac;
|
|
}
|
|
|
|
.topbar-right {
|
|
margin-left: auto;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
}
|
|
|
|
.auth-pill {
|
|
padding: 6px 10px;
|
|
border-radius: 999px;
|
|
font-size: 12px;
|
|
color: #0b4d94;
|
|
border: 1px solid #b8d8ff;
|
|
background: linear-gradient(120deg, #eaf6ff 0%, #f4fbff 100%);
|
|
}
|
|
|
|
.content-stage {
|
|
flex: 1;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
overscroll-behavior: contain;
|
|
}
|
|
|
|
.panel-page {
|
|
flex: 1;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
overscroll-behavior: contain;
|
|
}
|
|
|
|
.panel-scroll {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
padding: 18px;
|
|
overscroll-behavior: contain;
|
|
}
|
|
|
|
.panel-loading {
|
|
padding: 40px;
|
|
text-align: center;
|
|
color: var(--el-text-color-placeholder);
|
|
}
|
|
|
|
.panel-footer {
|
|
padding: 12px 18px;
|
|
border-top: 1px solid var(--el-border-color-light);
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
background: rgba(251, 253, 255, 0.8);
|
|
}
|
|
|
|
.log-toolbar {
|
|
padding: 10px 16px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
border-bottom: 1px solid var(--el-border-color-light);
|
|
background: linear-gradient(180deg, rgba(255, 255, 255, 0.95), rgba(246, 250, 255, 0.8));
|
|
}
|
|
|
|
.log-search {
|
|
width: 260px;
|
|
}
|
|
|
|
.log-status {
|
|
margin-left: auto;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
font-size: 12px;
|
|
color: #5f7ca1;
|
|
}
|
|
|
|
.status-dot {
|
|
width: 9px;
|
|
height: 9px;
|
|
border-radius: 50%;
|
|
background: #9ab4d8;
|
|
box-shadow: 0 0 0 4px rgba(154, 180, 216, 0.2);
|
|
}
|
|
|
|
.log-status.is-online .status-dot {
|
|
background: #0fb772;
|
|
box-shadow: 0 0 0 4px rgba(15, 183, 114, 0.16);
|
|
}
|
|
|
|
.log-status.is-offline .status-dot {
|
|
background: #f04438;
|
|
box-shadow: 0 0 0 4px rgba(240, 68, 56, 0.14);
|
|
}
|
|
|
|
.log-stream {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
padding: 12px 16px 16px;
|
|
font-family: "JetBrains Mono", "Cascadia Code", "Consolas", monospace;
|
|
font-size: 13px;
|
|
line-height: 1.65;
|
|
overscroll-behavior: contain;
|
|
}
|
|
|
|
.log-line {
|
|
padding: 2px 0;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.config-card {
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.config-card-header {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 8px;
|
|
}
|
|
|
|
.config-card-title {
|
|
font-weight: 700;
|
|
}
|
|
|
|
.config-card-section {
|
|
color: var(--el-text-color-placeholder);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.config-row {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 10px 0;
|
|
gap: 12px;
|
|
border-bottom: 1px dashed var(--el-border-color-light);
|
|
}
|
|
|
|
.config-key {
|
|
width: 220px;
|
|
flex-shrink: 0;
|
|
color: #4f7097;
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.config-val {
|
|
flex: 1;
|
|
}
|
|
|
|
.config-tags {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: 4px;
|
|
}
|
|
|
|
.plugin-card {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.plugin-main {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 14px;
|
|
}
|
|
|
|
.plugin-info {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
.plugin-title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.plugin-name {
|
|
font-size: 15px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.plugin-version {
|
|
font-size: 12px;
|
|
color: var(--el-text-color-placeholder);
|
|
}
|
|
|
|
.plugin-desc {
|
|
font-size: 13px;
|
|
color: var(--el-text-color-secondary);
|
|
margin-top: 4px;
|
|
}
|
|
|
|
.plugin-meta {
|
|
font-size: 12px;
|
|
color: var(--el-text-color-placeholder);
|
|
margin-top: 4px;
|
|
}
|
|
|
|
.plugin-actions {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.dialog-body-scroll {
|
|
max-height: 60vh;
|
|
overflow-y: auto;
|
|
overscroll-behavior: contain;
|
|
}
|
|
|
|
.security-wrap {
|
|
max-width: 680px;
|
|
}
|
|
|
|
.login-page {
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 16px;
|
|
}
|
|
|
|
.login-card {
|
|
width: min(92vw, 430px);
|
|
}
|
|
|
|
.login-title {
|
|
font-size: 21px;
|
|
font-weight: 700;
|
|
color: #0d335f;
|
|
letter-spacing: 0.4px;
|
|
}
|
|
|
|
.login-subtitle {
|
|
margin-top: 6px;
|
|
font-size: 13px;
|
|
color: #6b87ab;
|
|
}
|
|
|
|
.el-card {
|
|
border-radius: 18px;
|
|
border: 1px solid var(--wb-border);
|
|
background: var(--wb-card);
|
|
box-shadow: var(--wb-shadow-md);
|
|
}
|
|
|
|
.el-card__header {
|
|
border-bottom: 1px solid var(--el-border-color-light);
|
|
}
|
|
|
|
.el-dialog {
|
|
border-radius: 20px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.el-dialog__header {
|
|
margin-right: 0;
|
|
padding: 16px 18px;
|
|
border-bottom: 1px solid var(--el-border-color-light);
|
|
background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(249, 252, 255, 0.86));
|
|
}
|
|
|
|
.el-dialog__body {
|
|
padding: 16px 18px;
|
|
}
|
|
|
|
.el-dialog__footer {
|
|
padding: 10px 18px 16px;
|
|
}
|
|
|
|
.el-input__wrapper,
|
|
.el-textarea__inner,
|
|
.el-input-number__decrease,
|
|
.el-input-number__increase,
|
|
.el-input-number .el-input__wrapper {
|
|
border-radius: 12px !important;
|
|
}
|
|
|
|
.el-input__wrapper,
|
|
.el-textarea__inner,
|
|
.el-input-number .el-input__wrapper {
|
|
box-shadow: 0 0 0 1px var(--wb-border-strong) inset !important;
|
|
background: #f8fbff;
|
|
}
|
|
|
|
.el-input__wrapper.is-focus,
|
|
.el-textarea__inner:focus,
|
|
.el-input-number .el-input__wrapper.is-focus {
|
|
box-shadow: 0 0 0 2px rgba(0, 119, 255, 0.22) inset !important;
|
|
}
|
|
|
|
.el-button {
|
|
border-radius: 12px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.el-button--primary {
|
|
border: none;
|
|
color: #ffffff;
|
|
background: linear-gradient(135deg, var(--wb-primary) 0%, var(--wb-primary-alt) 100%);
|
|
box-shadow: 0 10px 22px rgba(0, 123, 255, 0.26);
|
|
}
|
|
|
|
.el-button--primary:hover {
|
|
color: #ffffff;
|
|
filter: brightness(1.04);
|
|
}
|
|
|
|
.el-tag {
|
|
border-radius: 999px;
|
|
}
|
|
|
|
.el-alert {
|
|
border-radius: 14px;
|
|
}
|
|
|
|
@media (max-width: 980px) {
|
|
.app-shell {
|
|
padding: 10px;
|
|
gap: 8px;
|
|
}
|
|
|
|
.app-aside {
|
|
width: 86px !important;
|
|
min-width: 86px !important;
|
|
border-radius: 16px;
|
|
}
|
|
|
|
.brand-panel {
|
|
padding: 14px 8px;
|
|
}
|
|
|
|
.brand-title {
|
|
font-size: 13px;
|
|
text-align: center;
|
|
}
|
|
|
|
.brand-sub {
|
|
display: none;
|
|
}
|
|
|
|
.app-menu {
|
|
padding: 8px 6px 10px;
|
|
}
|
|
|
|
.app-menu .el-menu-item {
|
|
justify-content: center;
|
|
padding: 0 !important;
|
|
}
|
|
|
|
.app-menu .el-menu-item .el-icon {
|
|
margin-right: 0;
|
|
}
|
|
|
|
.app-menu .el-menu-item span {
|
|
display: none;
|
|
}
|
|
|
|
.app-topbar {
|
|
height: 52px;
|
|
padding: 0 12px;
|
|
}
|
|
|
|
.topbar-title {
|
|
display: none;
|
|
}
|
|
|
|
.log-search {
|
|
width: 180px;
|
|
}
|
|
|
|
.config-key {
|
|
width: 132px;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
.log-toolbar {
|
|
flex-wrap: wrap;
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.log-search {
|
|
width: 100%;
|
|
}
|
|
|
|
.log-status {
|
|
margin-left: 0;
|
|
}
|
|
|
|
.plugin-main {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: 12px;
|
|
}
|
|
|
|
.plugin-actions {
|
|
width: 100%;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.config-row {
|
|
align-items: flex-start;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.config-key {
|
|
width: 100%;
|
|
}
|
|
}
|