:root { --bg: #07111f; --panel: rgba(10, 20, 36, 0.84); --panel-strong: #0f1d33; --line: rgba(148, 163, 184, 0.18); --text: #edf4ff; --muted: #90a3bf; --brand: #61dafb; --brand-strong: #2dd4bf; --danger: #f87171; --success: #34d399; --warning: #fbbf24; --shadow: 0 32px 80px rgba(0, 0, 0, 0.35); --radius-xl: 28px; --radius-lg: 20px; --radius-md: 14px; --font-display: 'Georgia', 'Times New Roman', serif; --font-body: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif; } * { box-sizing: border-box; } html, body { margin: 0; min-height: 100%; background: radial-gradient(circle at top, #123456 0%, #07111f 42%, #020611 100%); color: var(--text); font-family: var(--font-body); } button, input, select, textarea { font: inherit; } button { cursor: pointer; } .shell { display: grid; grid-template-columns: 280px minmax(0, 1fr); min-height: 100vh; } .sidebar { padding: 28px; border-right: 1px solid var(--line); background: linear-gradient(180deg, rgba(6, 11, 23, 0.96), rgba(6, 11, 23, 0.74)); backdrop-filter: blur(18px); } .brand { display: flex; gap: 16px; align-items: center; margin-bottom: 36px; } .brand-badge { width: 56px; height: 56px; border-radius: 18px; display: grid; place-items: center; background: linear-gradient(135deg, var(--brand), var(--brand-strong)); color: #02111d; font-weight: 800; letter-spacing: 0.1em; box-shadow: 0 18px 40px rgba(45, 212, 191, 0.25); } .brand h1 { margin: 0; font-family: var(--font-display); font-size: 1.5rem; } .brand p { margin: 4px 0 0; color: var(--muted); font-size: 0.92rem; } .sidebar-nav { display: flex; flex-direction: column; gap: 10px; } .nav-link { text-align: left; border: 1px solid transparent; border-radius: 14px; padding: 14px 16px; background: transparent; color: var(--muted); transition: 160ms ease; } .nav-link.active, .nav-link:hover { background: rgba(97, 218, 251, 0.12); border-color: rgba(97, 218, 251, 0.22); color: var(--text); } .workspace { padding: 28px; display: flex; flex-direction: column; gap: 22px; } .hero-card, .stats-card, .panel, .log-card, .command-card, .history-item, .config-group { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius-xl); box-shadow: var(--shadow); backdrop-filter: blur(18px); } .hero-card { padding: 28px 30px; display: flex; justify-content: space-between; gap: 24px; align-items: center; } .eyebrow { color: var(--brand); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.2em; } .hero-card h2 { margin: 10px 0 12px; font-family: var(--font-display); font-size: 2rem; max-width: 760px; } .hero-card p { margin: 0; color: var(--muted); max-width: 760px; line-height: 1.7; } .hero-status { min-width: 220px; align-self: stretch; border-radius: 22px; background: linear-gradient(160deg, rgba(45, 212, 191, 0.18), rgba(96, 165, 250, 0.08)); border: 1px solid rgba(45, 212, 191, 0.2); padding: 20px; display: flex; align-items: center; } .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 16px; } .stats-card { padding: 18px 20px; border-radius: var(--radius-lg); } .stats-card .label { color: var(--muted); font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.16em; } .stats-card .value { margin-top: 10px; font-family: var(--font-display); font-size: 1.9rem; } .stats-card .meta { margin-top: 8px; color: var(--muted); font-size: 0.92rem; } .utility-strip { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; } .analytics-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 16px; } .scheduler-strip { display: flex; } .scheduler-card { width: 100%; padding: 20px; border-radius: var(--radius-lg); background: var(--panel); border: 1px solid var(--line); box-shadow: var(--shadow); } .scheduler-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-top: 16px; } .scheduler-meta .item { padding: 12px 14px; border-radius: 14px; background: rgba(3, 10, 20, 0.72); border: 1px solid rgba(148, 163, 184, 0.12); } .scheduler-meta .label { color: var(--muted); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.12em; } .scheduler-meta .value { margin-top: 8px; color: var(--text); line-height: 1.5; word-break: break-word; } .analytics-card { padding: 20px; border-radius: var(--radius-lg); background: var(--panel); border: 1px solid var(--line); box-shadow: var(--shadow); } .analytics-header h3 { margin: 0; font-family: var(--font-display); } .analytics-header p { margin: 8px 0 0; color: var(--muted); } .analytics-list { display: grid; gap: 10px; margin-top: 18px; } .analytics-item { display: flex; justify-content: space-between; gap: 12px; padding: 12px 14px; border-radius: 14px; background: rgba(3, 10, 20, 0.72); border: 1px solid rgba(148, 163, 184, 0.12); } .analytics-item strong { color: var(--text); } .analytics-item span { color: var(--muted); font-variant-numeric: tabular-nums; } .utility-feedback { color: var(--muted); min-height: 22px; } .result-strip { display: flex; } .result-card { width: 100%; padding: 16px 18px; border-radius: var(--radius-lg); background: rgba(3, 10, 20, 0.72); border: 1px solid rgba(148, 163, 184, 0.14); color: var(--text); } .result-card.hidden { display: none; } .result-card.success { border-color: rgba(52, 211, 153, 0.24); background: rgba(6, 78, 59, 0.2); } .result-card.error { border-color: rgba(248, 113, 113, 0.24); background: rgba(127, 29, 29, 0.2); } .log-tools { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; } .mini-toggle { display: inline-flex; gap: 8px; align-items: center; color: var(--muted); font-size: 0.88rem; } .log-filter-input { width: 220px; } .panel { display: none; padding: 24px; } .panel.active { display: block; } .panel-header { display: flex; justify-content: space-between; gap: 16px; align-items: center; margin-bottom: 20px; } .panel-header h3 { margin: 0; font-family: var(--font-display); font-size: 1.5rem; } .panel-header p { margin: 6px 0 0; color: var(--muted); } .command-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); gap: 18px; margin-bottom: 20px; } .command-card { padding: 20px; border-radius: var(--radius-lg); } .command-card-head { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 16px; } .command-title { margin: 0; font-size: 1.1rem; } .command-description { margin: 8px 0 0; color: var(--muted); line-height: 1.6; min-height: 46px; } .command-key { font-size: 0.78rem; color: var(--brand); text-transform: uppercase; letter-spacing: 0.16em; } .command-options { display: grid; gap: 10px; margin-bottom: 16px; } .field-label { display: grid; gap: 6px; color: var(--muted); font-size: 0.88rem; } .field-label strong { color: var(--text); font-size: 0.94rem; } input, select, textarea { width: 100%; border-radius: 14px; border: 1px solid rgba(148, 163, 184, 0.2); background: rgba(3, 10, 20, 0.72); color: var(--text); padding: 12px 14px; } .primary, .ghost { border-radius: 14px; border: 1px solid transparent; padding: 12px 16px; transition: 160ms ease; font-weight: 600; } .primary { background: linear-gradient(135deg, var(--brand), var(--brand-strong)); color: #07111f; } .primary:hover { transform: translateY(-1px); } .ghost { background: rgba(148, 163, 184, 0.08); border-color: rgba(148, 163, 184, 0.18); color: var(--text); } .ghost.danger { color: #ffd7d7; border-color: rgba(248, 113, 113, 0.24); background: rgba(127, 29, 29, 0.2); } .log-card { padding: 18px; border-radius: var(--radius-lg); } .log-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .log-output { margin: 0; min-height: 280px; max-height: 460px; overflow: auto; padding: 18px; border-radius: 18px; background: rgba(1, 6, 14, 0.85); border: 1px solid rgba(148, 163, 184, 0.12); line-height: 1.55; white-space: pre-wrap; } .pill { display: inline-flex; align-items: center; justify-content: center; min-width: 92px; border-radius: 999px; padding: 8px 12px; font-size: 0.82rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; } .pill.idle { background: rgba(148, 163, 184, 0.16); color: var(--muted); } .pill.running { background: rgba(251, 191, 36, 0.18); color: #fde68a; } .pill.completed { background: rgba(52, 211, 153, 0.18); color: #bbf7d0; } .pill.failed, .pill.stopped { background: rgba(248, 113, 113, 0.16); color: #fecaca; } .config-groups { display: grid; gap: 18px; } .config-group { padding: 20px; border-radius: var(--radius-lg); } .config-group h4 { margin: 0 0 14px; font-size: 1.08rem; } .config-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; } .checkbox-field { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 16px; border-radius: 14px; background: rgba(3, 10, 20, 0.72); border: 1px solid rgba(148, 163, 184, 0.14); } .history-list { display: grid; gap: 12px; } .history-item { padding: 16px 18px; border-radius: var(--radius-lg); display: flex; justify-content: space-between; gap: 16px; align-items: center; } .history-title { margin: 0; font-size: 1rem; } .history-meta { margin: 8px 0 0; color: var(--muted); font-size: 0.9rem; } @media (max-width: 1100px) { .shell { grid-template-columns: 1fr; } .sidebar { border-right: none; border-bottom: 1px solid var(--line); } .sidebar-nav { flex-direction: row; flex-wrap: wrap; } .hero-card { flex-direction: column; align-items: flex-start; } .hero-status { min-width: 0; width: 100%; } } @media (max-width: 720px) { .workspace { padding: 18px; } .panel, .hero-card, .sidebar { padding: 18px; } .hero-card h2 { font-size: 1.5rem; } .panel-header { flex-direction: column; align-items: flex-start; } }