:root { color-scheme: light; font-family: "Microsoft YaHei UI", "PingFang SC", Inter, system-ui, sans-serif; --page: #eef3f9; --surface: #ffffff; --surface-soft: #f7f9fc; --line: #dce4ee; --line-strong: #cbd7e5; --text: #172033; --muted: #68758b; --primary: #2869e8; --primary-soft: #eaf1ff; --success: #16845b; --success-soft: #e7f7f0; --warning: #ba7314; --danger: #c23f4a; --shadow: 0 22px 60px rgba(43, 67, 101, .14), 0 4px 14px rgba(43, 67, 101, .08); } * { box-sizing: border-box; } html, body { width: 100%; height: 100%; margin: 0; overflow: hidden; } body { display: grid; place-items: center; padding: 16px; color: var(--text); font-size: 14px; line-height: 1.45; background: radial-gradient(circle at 15% 8%, rgba(74, 130, 235, .11), transparent 31%), linear-gradient(145deg, #f7f9fc 0%, var(--page) 100%); } button, textarea, select { font: inherit; } button, a, select { -webkit-tap-highlight-color: transparent; } button, select { cursor: pointer; } .shell { width: min(1280px, 100%); height: min(780px, calc(100dvh - 32px)); min-height: 620px; overflow: hidden; background: #f7f9fc; border: 1px solid rgba(205, 216, 230, .9); border-radius: 22px; box-shadow: var(--shadow); } .topbar { height: 68px; padding: 0 22px; display: flex; align-items: center; justify-content: space-between; gap: 20px; background: rgba(255, 255, 255, .94); border-bottom: 1px solid var(--line); } .topbar-main, .topbar-status, .card-heading, .button-row, .log-actions, .server-target, .command-footer, .capability-brief { display: flex; align-items: center; } .topbar-main { gap: 11px; min-width: 0; } .topbar-status { gap: 9px; flex-wrap: wrap; justify-content: flex-end; } .back-link, .product-mark, .icon-button, .result-icon { display: inline-grid; place-items: center; } .back-link, .icon-button { width: 34px; height: 34px; border: 1px solid var(--line); border-radius: 10px; color: #4d5b71; background: var(--surface); text-decoration: none; } .back-link:hover, .icon-button:hover { color: var(--primary); border-color: #a9c1ef; background: var(--primary-soft); } .back-link svg, .icon-button svg { width: 17px; height: 17px; } .product-mark { width: 36px; height: 36px; border-radius: 11px; color: white; background: linear-gradient(145deg, #3a7cf0, #1d59cd); box-shadow: 0 7px 16px rgba(40, 105, 232, .22); } .product-mark svg { width: 19px; } .eyebrow, .section-kicker { margin: 0; color: #7a88a0; font-size: 12px; font-weight: 700; letter-spacing: .08em; } h1 { margin: 1px 0 0; font-size: 20px; line-height: 1.15; letter-spacing: -.02em; } h2 { margin: 1px 0 0; font-size: 17px; line-height: 1.2; } .environment-chip, .server-state, .status-badge { display: inline-flex; align-items: center; gap: 6px; min-height: 29px; padding: 4px 10px; border: 1px solid var(--line); border-radius: 999px; color: #58677d; background: #f8fafc; font-size: 12px; font-weight: 700; white-space: nowrap; } .environment-chip svg { width: 14px; } .server-state span { width: 7px; height: 7px; border-radius: 50%; background: #9aa7b8; } .server-state.online { color: var(--success); border-color: #b9e5d3; background: var(--success-soft); } .server-state.online span { background: var(--success); box-shadow: 0 0 0 4px rgba(22, 132, 91, .1); } main { height: calc(100% - 68px); min-height: 0; padding: 11px; display: grid; grid-template-columns: 380px minmax(0, 1fr); grid-template-rows: 116px minmax(0, 1fr) 172px; grid-template-areas: "pipeline pipeline" "command execution" "software software"; gap: 10px; } .card { position: relative; min-width: 0; min-height: 0; overflow: hidden; padding: 12px 14px; background: var(--surface); border: 1px solid var(--line); border-radius: 15px; box-shadow: 0 2px 8px rgba(46, 66, 94, .045); } .card-heading { justify-content: space-between; gap: 12px; min-height: 32px; } .hero-grid { grid-area: command; min-width: 0; min-height: 0; } .hero-grid .command-card { height: 100%; } .pipeline-card { grid-area: pipeline; } .execution-grid { grid-area: execution; min-width: 0; min-height: 0; } .execution-grid .log-card { width: 100%; height: 100%; } .software-card { grid-area: software; } .baseline-picker { display: grid; grid-template-columns: auto auto; align-items: center; column-gap: 5px; color: var(--muted); font-size: 12px; font-weight: 700; } .baseline-picker svg { grid-row: 1 / 3; width: 16px; color: var(--primary); } .baseline-picker span { line-height: 1; } .baseline-picker select { max-width: 148px; border: 0; padding: 1px 18px 1px 0; color: var(--text); background: transparent; font-size: 13px; font-weight: 700; outline: none; } .command-card { display: flex; flex-direction: column; gap: 7px; } .command-card > label { color: #5d6b80; font-size: 13px; font-weight: 650; } textarea { width: 100%; min-height: 64px; flex: 1 1 70px; resize: none; padding: 9px 11px; color: var(--text); background: var(--surface-soft); border: 1px solid var(--line-strong); border-radius: 10px; font-size: 13px; line-height: 1.55; outline: none; } textarea:focus { border-color: #79a4f4; box-shadow: 0 0 0 3px rgba(40, 105, 232, .1); background: #fff; } .prompt-templates { display: flex; flex-wrap: wrap; gap: 6px; } .prompt-templates button { min-width: 0; padding: 5px 8px; border: 1px solid #cbd9ef; border-radius: 8px; color: #3563a9; background: #f3f7ff; font-size: 12px; font-weight: 700; white-space: nowrap; } .capability-brief { min-height: 50px; justify-content: space-between; gap: 8px; padding: 7px 9px; border: 1px solid #dbe6f6; border-radius: 10px; background: #f6f9fe; } .capability-brief > div { min-width: 0; display: grid; gap: 1px; } .capability-brief span { color: var(--muted); font-size: 12px; } .capability-brief strong { overflow: hidden; text-overflow: ellipsis; color: #344157; font-size: 13px; white-space: nowrap; } .capability-brief > svg { width: 17px; flex: 0 0 auto; color: #8fa7ca; } .capability-target { flex: 1; } .capability-target strong { color: var(--primary); } .command-footer { justify-content: flex-end; gap: 8px; } .button-row { gap: 6px; } .button { min-height: 33px; padding: 6px 11px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; border-radius: 9px; border: 1px solid transparent; font-size: 13px; font-weight: 750; white-space: nowrap; } .button svg { width: 15px; } .button-primary { color: white; background: var(--primary); box-shadow: 0 5px 12px rgba(40, 105, 232, .18); } .button-secondary { color: #526178; background: #fff; border-color: var(--line-strong); } .button:disabled, .icon-button:disabled { cursor: not-allowed; opacity: .48; } .pipeline { width: calc(100% - 230px); height: 58px; margin: 7px 0 0; padding: 0; display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); list-style: none; } .pipeline-stage { position: relative; min-width: 0; padding-top: 2px; text-align: center; } .pipeline-stage::after { content: ""; position: absolute; top: 14px; left: calc(50% + 15px); width: calc(100% - 30px); height: 2px; background: #dce4ee; } .pipeline-stage:last-child::after { display: none; } .stage-node { position: relative; z-index: 1; width: 28px; height: 28px; margin: 0 auto 1px; display: grid; place-items: center; border: 2px solid #d4deea; border-radius: 50%; color: #7b8aa0; background: #fff; } .stage-node svg { width: 14px; } .stage-name { display: block; overflow: hidden; text-overflow: ellipsis; font-size: 13px; line-height: 1.15; white-space: nowrap; } .stage-state { display: block; overflow: hidden; text-overflow: ellipsis; color: var(--muted); font-size: 12px; line-height: 1.1; white-space: nowrap; } .pipeline-stage[data-status="running"] .stage-node { color: var(--primary); border-color: var(--primary); background: var(--primary-soft); animation: pulse 1.4s infinite; } .pipeline-stage[data-status="success"] .stage-node { color: var(--success); border-color: #65bd9e; background: var(--success-soft); } .pipeline-stage[data-status="failed"] .stage-node, .pipeline-stage[data-status="blocked"] .stage-node { color: var(--danger); border-color: #e39aa1; background: #fff0f1; } .pipeline-stage[data-status="canceled"] .stage-node { color: #7b8798; background: #eef1f5; } .pipeline-stage[data-status="pending_confirmation"] .stage-node { color: var(--warning); border-color: #ecc080; background: #fff7e9; } .pipeline-stage[data-status="success"]::after { background: #8bcdb5; } .release-result { position: absolute; top: 43px; right: 14px; width: 210px; min-height: 52px; display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface-soft); } .result-icon { width: 32px; height: 32px; flex: 0 0 auto; color: #748399; border-radius: 9px; background: #e9eef5; } .result-icon svg { width: 17px; } .release-result div { min-width: 0; display: grid; } .release-result small { color: var(--muted); font-size: 12px; } .release-result strong { overflow: hidden; text-overflow: ellipsis; font-size: 13px; white-space: nowrap; } .release-result[data-state="success"] { border-color: #b9e5d3; background: var(--success-soft); } .release-result[data-state="success"] .result-icon { color: var(--success); background: #d2f0e3; } .release-result[data-state="failed"] { border-color: #efc5c9; background: #fff2f3; } .status-legend { display: none; } .log-card { display: grid; grid-template-rows: auto auto minmax(0, 1fr); gap: 7px; } .log-actions { gap: 6px; } .log-actions .icon-button { width: 31px; height: 31px; } .status-badge { min-height: 25px; padding: 3px 9px; } .status-badge[data-status="running"] { color: var(--primary); border-color: #b9cff7; background: var(--primary-soft); } .status-badge[data-status="success"], .status-badge[data-status="published"] { color: var(--success); border-color: #b9e5d3; background: var(--success-soft); } .status-badge[data-status="failed"], .status-badge[data-status="blocked"] { color: var(--danger); border-color: #efc5c9; background: #fff2f3; } .status-badge[data-status="ready"], .status-badge[data-status="pending_confirmation"] { color: var(--warning); border-color: #efd3a8; background: #fff7e9; } .metrics { margin: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; } .metrics div { min-width: 0; padding: 5px 7px; border-radius: 8px; background: var(--surface-soft); border: 1px solid #edf1f6; } .metrics dt { color: var(--muted); font-size: 12px; } .metrics dd { margin: 1px 0 0; overflow: hidden; text-overflow: ellipsis; font-size: 13px; font-weight: 750; white-space: nowrap; } .log-workspace { min-height: 0; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(220px, .9fr); gap: 8px; } .log-stream, .log-details { min-height: 0; overflow: auto; border: 1px solid var(--line); border-radius: 10px; background: #f9fbfd; } .log-stream { padding: 7px 9px; scrollbar-width: thin; } .empty-state { height: 100%; min-height: 110px; display: grid; place-content: center; justify-items: center; gap: 4px; color: var(--muted); text-align: center; } .empty-state svg { width: 24px; color: #93a3ba; } .empty-state strong { color: #4a596f; font-size: 13px; } .empty-state span { font-size: 12px; } .log-entry { display: grid; grid-template-columns: 58px 9px minmax(0, 1fr); gap: 7px; padding: 5px 0; border-bottom: 1px solid #e9eef5; } .log-entry:last-child { border-bottom: 0; } .log-time { color: #7b889b; font: 12px/1.4 ui-monospace, Consolas, monospace; } .log-dot { width: 7px; height: 7px; margin-top: 5px; border-radius: 50%; background: #91a0b4; } .log-entry[data-level="success"] .log-dot { background: var(--success); } .log-entry[data-level="error"] .log-dot { background: var(--danger); } .log-entry[data-level="warning"] .log-dot { background: var(--warning); } .log-copy { min-width: 0; } .log-copy strong { font-size: 13px; } .log-copy p { margin: 1px 0 0; color: #5b687b; font-size: 13px; overflow-wrap: anywhere; } .log-details { display: flex; flex-direction: column; } .inspector-tabs { display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--line); background: #f2f5f9; } .inspector-tabs button { padding: 7px 4px; border: 0; border-bottom: 2px solid transparent; color: #68768b; background: transparent; font-size: 12px; font-weight: 700; } .inspector-tabs button.active { color: var(--primary); border-bottom-color: var(--primary); background: #fff; } .inspector-content { min-height: 0; flex: 1; overflow: auto; padding: 7px; } .empty-inline, .empty-table { padding: 18px; color: var(--muted); text-align: center; font-size: 12px; } .change-item, .test-item { display: flex; gap: 7px; padding: 6px; border-bottom: 1px solid #e8edf4; } .change-type, .test-mark { flex: 0 0 auto; height: 21px; padding: 2px 5px; border-radius: 5px; color: var(--primary); background: var(--primary-soft); font-size: 12px; } .test-mark { width: 21px; display: grid; place-items: center; color: var(--success); background: var(--success-soft); } .test-mark svg { width: 12px; } .change-copy, .test-copy { min-width: 0; display: grid; } .change-copy strong, .test-copy strong { font-size: 12px; overflow-wrap: anywhere; } .change-copy span, .test-copy span { color: var(--muted); font-size: 12px; } .build-output, .code-block { margin: 0; color: #26364d; font: 12px/1.55 ui-monospace, Consolas, monospace; white-space: pre-wrap; overflow-wrap: anywhere; } .software-card { display: grid; grid-template-rows: 33px minmax(0, 1fr); gap: 5px; } .server-target { gap: 6px; color: var(--muted); font-size: 12px; } .server-target svg { width: 15px; color: var(--primary); } .server-target strong { color: #3b4a61; } .table-wrap { min-height: 0; overflow: auto; border: 1px solid var(--line); border-radius: 9px; } table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 13px; } th { position: sticky; top: 0; z-index: 1; padding: 6px 7px; color: #617086; background: #f2f5f9; text-align: left; font-weight: 750; white-space: nowrap; } td { padding: 6px 7px; border-top: 1px solid #e8edf4; color: #4d5a6e; vertical-align: middle; } th:nth-child(1) { width: 14%; } th:nth-child(2) { width: 13%; } th:nth-child(3) { width: 11%; } th:nth-child(4) { width: 28%; } th:nth-child(5) { width: 8%; } th:nth-child(6) { width: 26%; } .software-name, .file-cell { min-width: 0; display: grid; } .software-name strong, .file-cell strong { overflow: hidden; text-overflow: ellipsis; color: #26354b; white-space: nowrap; } .software-name span, .file-cell span { color: var(--muted); } .file-cell > span { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .cap-tags { display: flex; gap: 3px; flex-wrap: wrap; } .cap-tags span { padding: 2px 5px; color: #3563a9; background: #eef4ff; border-radius: 5px; white-space: nowrap; } .hash-value { display: inline; font-family: ui-monospace, Consolas, monospace; white-space: nowrap; } .table-actions { display: flex; align-items: center; gap: 3px; flex-wrap: nowrap; } .table-actions button, .table-actions a { min-width: 27px; height: 26px; padding: 3px 5px; display: inline-grid; place-items: center; border: 0; border-radius: 5px; color: #3563a9; background: #edf3ff; font-size: 12px; text-decoration: none; white-space: nowrap; } .table-actions svg { width: 13px; height: 13px; } .table-actions .publish-action { color: white; background: var(--primary); } .table-actions .delete-action { color: var(--danger); background: #fff0f1; } .table-actions .notify-action { flex: 0 0 42px; width: 42px; min-width: 42px; height: 34px; margin-left: auto; padding: 6px; border-radius: 8px; color: #fff; background: var(--primary); box-shadow: 0 4px 10px rgba(40, 105, 232, .2); } .table-actions .notify-action svg { width: 20px; height: 20px; stroke-width: 2.25; } .table-actions .notify-action:hover { background: color-mix(in srgb, var(--primary) 86%, #132447); } .baseline-protection { height: 26px; padding: 3px 6px; display: inline-flex; align-items: center; gap: 3px; color: var(--success); background: var(--success-soft); border-radius: 5px; font-size: 12px; white-space: nowrap; } .baseline-protection svg { width: 13px; } .status-badge[data-status="baseline"] { color: var(--success); border-color: #b9e5d3; background: var(--success-soft); } .modal-backdrop { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; padding: 24px; background: rgba(31, 43, 61, .34); backdrop-filter: blur(4px); } .modal-backdrop[hidden] { display: none; } .modal { width: min(1040px, 100%); max-height: min(820px, calc(100dvh - 48px)); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--shadow); } .modal header, .modal footer { padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--line); } .modal footer { justify-content: flex-end; border-top: 1px solid var(--line); border-bottom: 0; } .modal-body { overflow: auto; padding: 16px; } .detail-grid, .diff-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .detail-field, .diff-panel { min-width: 0; padding: 11px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); } .detail-field span { display: block; color: var(--muted); font-size: 12px; } .detail-field strong { display: block; margin-top: 3px; overflow-wrap: anywhere; } .diff-panel h3 { margin: 0 0 8px; font-size: 14px; } .diff-panel p { margin: 5px 0; color: #58677c; } .diff-panel.added { border-color: #b9e5d3; background: var(--success-soft); } .toast-region { position: fixed; z-index: 80; right: 22px; bottom: 22px; display: grid; gap: 8px; } .toast { max-width: 390px; padding: 10px 13px; color: #fff; background: #344258; border-radius: 9px; box-shadow: 0 10px 28px rgba(31, 43, 61, .22); font-size: 13px; } .toast.success { background: var(--success); } .toast.error { background: var(--danger); } @keyframes pulse { 50% { box-shadow: 0 0 0 5px rgba(40, 105, 232, .09); } } @media (max-width: 980px) { body { padding: 8px; } .shell { width: 100%; height: calc(100dvh - 16px); min-height: 560px; border-radius: 16px; } .topbar { height: 62px; padding: 0 14px; } .topbar-status .dashboard-chip, .environment-chip:last-child { display: none; } main { height: calc(100% - 62px); grid-template-columns: 330px minmax(0, 1fr); grid-template-rows: 108px minmax(0, 1fr) 164px; padding: 8px; gap: 8px; } .card { padding: 10px; } .pipeline { width: calc(100% - 190px); } .release-result { width: 176px; right: 10px; } .log-workspace { grid-template-columns: 1fr; } .log-details { display: none; } .metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 720px) { body { display: block; padding: 0; } .shell { height: 100dvh; min-height: 0; border: 0; border-radius: 0; } .topbar { height: 58px; } h1 { font-size: 17px; } .eyebrow, .topbar-status { display: none; } main { height: calc(100% - 58px); overflow: auto; grid-template-columns: 1fr; grid-template-rows: 104px 360px 330px 190px; grid-template-areas: "pipeline" "command" "execution" "software"; } .execution-grid { display: block; } .execution-grid .log-card { min-height: 330px; } .pipeline { width: 100%; } .pipeline-card { overflow-x: auto; } .pipeline-card .pipeline { width: 680px; } .release-result { display: none; } .stage-name { font-size: 11px; } .stage-state { display: none; } .command-card { gap: 5px; } .command-footer p { display: none; } .command-footer { justify-content: flex-end; } .prompt-templates button { flex: 1; } th:nth-child(2), td:nth-child(2), th:nth-child(3), td:nth-child(3) { display: none; } th:nth-child(1), th:nth-child(4), th:nth-child(5), th:nth-child(6) { width: auto; } } body.embedded { display: block; padding: 0; background: transparent; } body.embedded .shell { width: 100%; height: 100dvh; min-height: 0; border: 0; border-radius: 0; box-shadow: none; background: #f7f9fc; } body.embedded .topbar { display: none; } body.embedded main { height: 100%; padding: 8px; grid-template-columns: 350px minmax(0, 1fr); grid-template-rows: 82px minmax(0, 1fr) 204px; gap: 8px; } body.embedded .card { padding: 8px 10px; border-radius: 12px; } body.embedded .card-heading { min-height: 27px; } body.embedded .command-card { gap: 5px; } body.embedded textarea { min-height: 48px; padding: 7px 9px; } body.embedded .prompt-templates button { padding: 4px 7px; } body.embedded .capability-brief { min-height: 44px; padding: 5px 8px; } body.embedded .pipeline { height: 48px; margin: 4px 0 0; } body.embedded .stage-node { width: 24px; height: 24px; } body.embedded .pipeline-stage::after { top: 12px; } body.embedded .stage-node svg { width: 12px; } body.embedded .stage-name { font-size: 12px; } body.embedded .stage-state { font-size: 11px; } body.embedded .release-result { top: 18px; min-height: 44px; padding: 5px 8px; } body.embedded .result-icon { width: 28px; height: 28px; } body.embedded .log-card { gap: 5px; } body.embedded .metrics div { padding: 3px 6px; } body.embedded .software-card { grid-template-rows: 27px minmax(0, 1fr); gap: 3px; } body.embedded th { padding: 4px 6px; } body.embedded table { font-size: 12.5px; } body.embedded td { padding: 3px 6px; } body.embedded .software-name strong, body.embedded .file-cell strong { line-height: 1.2; } body.embedded .software-name span, body.embedded .file-cell span { line-height: 1.15; } @media (max-width: 720px) { body.embedded main { height: 100%; overflow: auto; grid-template-columns: 1fr; grid-template-rows: 96px 350px 320px 210px; grid-template-areas: "pipeline" "command" "execution" "software"; } body.embedded .pipeline-card { overflow-x: auto; } body.embedded .pipeline-card .pipeline { width: 680px; } } /* The workbench is rendered in an iframe, so it owns a complete theme token set instead of relying on custom properties from the parent document. */ :root[data-glass-theme="dark"] { color-scheme: dark; --page: #090e1c; --surface: #171e31; --surface-soft: #11182a; --line: #303a55; --line-strong: #44516d; --text: #edf2ff; --muted: #9ba9c0; --primary: #7aa3ff; --primary-soft: #1b2b53; --success: #55d4a1; --success-soft: #12372d; --warning: #f2bd68; --danger: #ff8993; --shadow: 0 26px 70px rgba(0, 0, 0, .42), 0 4px 18px rgba(0, 0, 0, .24); } :root[data-glass-theme="dark"] body:not(.embedded) { background: radial-gradient(circle at 15% 8%, color-mix(in srgb, var(--primary) 18%, transparent), transparent 31%), linear-gradient(145deg, #11182b 0%, var(--page) 100%); } :root[data-glass-theme="dark"] body.embedded { background: transparent; } :root[data-glass-theme="dark"] .shell, :root[data-glass-theme="dark"] body.embedded .shell { background: color-mix(in srgb, var(--surface-soft) 86%, var(--page)); border-color: color-mix(in srgb, var(--line-strong) 78%, transparent); } :root[data-glass-theme="dark"] .topbar { background: color-mix(in srgb, var(--surface) 94%, transparent); } :root[data-glass-theme="dark"] :is(.back-link, .icon-button, .button-secondary) { color: var(--muted); background: var(--surface); border-color: var(--line-strong); } :root[data-glass-theme="dark"] :is(.back-link, .icon-button):hover { color: var(--primary); border-color: color-mix(in srgb, var(--primary) 50%, var(--line)); background: var(--primary-soft); } :root[data-glass-theme="dark"] :is(.eyebrow, .section-kicker) { color: var(--muted); } :root[data-glass-theme="dark"] :is(.environment-chip, .server-state) { color: var(--muted); background: var(--surface-soft); } :root[data-glass-theme="dark"] .server-state span { background: color-mix(in srgb, var(--muted) 72%, transparent); } :root[data-glass-theme="dark"] .server-state.online, :root[data-glass-theme="dark"] .status-badge[data-status="baseline"] { border-color: color-mix(in srgb, var(--success) 44%, var(--line)); background: var(--success-soft); } :root[data-glass-theme="dark"] .card { box-shadow: 0 2px 10px rgba(0, 0, 0, .16); } :root[data-glass-theme="dark"] .command-card > label { color: var(--muted); } :root[data-glass-theme="dark"] textarea:focus { background: var(--surface); } :root[data-glass-theme="dark"] :is(select, option) { color: var(--text); background: var(--surface); } :root[data-glass-theme="dark"] .prompt-templates button, :root[data-glass-theme="dark"] .cap-tags span, :root[data-glass-theme="dark"] .table-actions :is(button, a) { color: var(--primary); background: var(--primary-soft); border-color: color-mix(in srgb, var(--primary) 34%, var(--line)); } :root[data-glass-theme="dark"] .capability-brief { border-color: color-mix(in srgb, var(--primary) 25%, var(--line)); background: color-mix(in srgb, var(--primary-soft) 44%, var(--surface-soft)); } :root[data-glass-theme="dark"] .capability-brief strong { color: var(--text); } :root[data-glass-theme="dark"] .capability-brief > svg { color: var(--primary); } :root[data-glass-theme="dark"] .pipeline-stage::after { background: var(--line); } :root[data-glass-theme="dark"] .stage-node { color: var(--muted); border-color: var(--line-strong); background: var(--surface); } :root[data-glass-theme="dark"] .pipeline-stage[data-status="success"] .stage-node { border-color: color-mix(in srgb, var(--success) 62%, var(--line)); } :root[data-glass-theme="dark"] .pipeline-stage[data-status="failed"] .stage-node, :root[data-glass-theme="dark"] .pipeline-stage[data-status="blocked"] .stage-node, :root[data-glass-theme="dark"] .release-result[data-state="failed"], :root[data-glass-theme="dark"] .status-badge[data-status="failed"], :root[data-glass-theme="dark"] .status-badge[data-status="blocked"] { color: var(--danger); border-color: color-mix(in srgb, var(--danger) 44%, var(--line)); background: color-mix(in srgb, var(--danger) 12%, var(--surface)); } :root[data-glass-theme="dark"] .pipeline-stage[data-status="canceled"] .stage-node { color: var(--muted); background: var(--surface-soft); } :root[data-glass-theme="dark"] .pipeline-stage[data-status="pending_confirmation"] .stage-node, :root[data-glass-theme="dark"] .status-badge[data-status="ready"], :root[data-glass-theme="dark"] .status-badge[data-status="pending_confirmation"] { color: var(--warning); border-color: color-mix(in srgb, var(--warning) 44%, var(--line)); background: color-mix(in srgb, var(--warning) 12%, var(--surface)); } :root[data-glass-theme="dark"] .pipeline-stage[data-status="success"]::after { background: color-mix(in srgb, var(--success) 64%, var(--line)); } :root[data-glass-theme="dark"] .release-result[data-state="success"], :root[data-glass-theme="dark"] .status-badge[data-status="success"], :root[data-glass-theme="dark"] .status-badge[data-status="published"] { border-color: color-mix(in srgb, var(--success) 44%, var(--line)); background: var(--success-soft); } :root[data-glass-theme="dark"] .result-icon { color: var(--muted); background: color-mix(in srgb, var(--surface-soft) 78%, var(--line)); } :root[data-glass-theme="dark"] .release-result[data-state="success"] .result-icon { color: var(--success); background: color-mix(in srgb, var(--success) 18%, var(--surface)); } :root[data-glass-theme="dark"] .metrics div { border-color: var(--line); } :root[data-glass-theme="dark"] :is(.log-stream, .log-details) { background: var(--surface-soft); } :root[data-glass-theme="dark"] .empty-state svg { color: var(--muted); } :root[data-glass-theme="dark"] .empty-state strong { color: var(--text); } :root[data-glass-theme="dark"] .log-entry, :root[data-glass-theme="dark"] :is(.change-item, .test-item) { border-color: var(--line); } :root[data-glass-theme="dark"] .log-time { color: var(--muted); } :root[data-glass-theme="dark"] .log-dot { background: var(--muted); } :root[data-glass-theme="dark"] .log-copy p { color: var(--muted); } :root[data-glass-theme="dark"] .inspector-tabs { background: var(--surface); } :root[data-glass-theme="dark"] .inspector-tabs button { color: var(--muted); } :root[data-glass-theme="dark"] .inspector-tabs button.active { color: var(--primary); background: var(--surface-soft); } :root[data-glass-theme="dark"] :is(.build-output, .code-block) { color: var(--text); } :root[data-glass-theme="dark"] .server-target strong { color: var(--text); } :root[data-glass-theme="dark"] th { color: var(--muted); background: var(--surface); } :root[data-glass-theme="dark"] td { color: var(--muted); border-color: var(--line); } :root[data-glass-theme="dark"] :is(.software-name strong, .file-cell strong) { color: var(--text); } :root[data-glass-theme="dark"] .table-actions .delete-action { color: var(--danger); background: color-mix(in srgb, var(--danger) 12%, var(--surface)); } :root[data-glass-theme="dark"] .table-actions .notify-action { color: #fff; background: color-mix(in srgb, var(--primary) 82%, #07101e); } :root[data-glass-theme="dark"] .modal-backdrop { background: rgba(2, 5, 14, .68); } :root[data-glass-theme="dark"] .modal { background: var(--surface); } :root[data-glass-theme="dark"] .diff-panel p { color: var(--muted); } :root[data-glass-theme="dark"] .diff-panel.added { border-color: color-mix(in srgb, var(--success) 42%, var(--line)); }