:root { --bg: #eef2f0; --surface: #fffefa; --surface-muted: #f5f7f4; --ink: #18221f; --muted: #66736f; --line: #d8e0dc; --line-strong: #bdc9c4; --accent: #27675a; --accent-dark: #1d4e45; --accent-soft: #e7f1ed; --warn: #8a5a10; --warn-soft: #fff4d8; --process: #245f96; --process-soft: #e7f1fb; --ok: #146c43; --ok-soft: #e8f6ed; --bad: #9f2f24; --bad-soft: #fdebea; --shadow: 0 16px 34px rgba(36, 54, 49, 0.08); font-family: Aptos, "PingFang SC", "Microsoft YaHei", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-variant-numeric: tabular-nums; } * { box-sizing: border-box; } html { height: 100%; scroll-behavior: smooth; overflow: hidden; } body { height: 100%; margin: 0; overflow: hidden; background: var(--bg); color: var(--ink); } button, input, select, textarea { font: inherit; } .app-shell { width: min(1680px, calc(100vw - 32px)); height: 100dvh; margin: 0 auto; padding: 14px 0 16px; display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 12px; overflow: hidden; } .topbar, .panel { background: var(--surface); border: 1px solid var(--line); border-radius: 8px; box-shadow: var(--shadow); } .topbar { display: flex; align-items: center; justify-content: flex-start; gap: 18px; min-height: 68px; padding: 0 16px; } .brand-block { min-width: 0; display: flex; align-items: center; gap: 10px; } .brand-logo { display: block; width: 190px; height: 52px; object-fit: cover; object-position: center; border-radius: 4px; background: #ffffff; } .top-nav { min-width: 0; height: 100%; flex: 1 1 auto; display: flex; align-items: stretch; } .top-nav-item { display: flex; align-items: center; min-height: 68px; padding: 0 18px; border-bottom: 3px solid transparent; color: var(--muted); font-size: 15px; font-weight: 800; white-space: nowrap; } .top-nav-item.is-active { color: var(--accent-dark); border-bottom-color: var(--accent); background: var(--accent-soft); } .title-block { min-width: 220px; display: grid; gap: 2px; } .eyebrow { color: var(--accent); font-size: 12px; font-weight: 700; letter-spacing: 0; } h1, h2, h3, h4, p { margin: 0; } h1 { font-size: 24px; line-height: 1.18; letter-spacing: 0; } h2 { font-size: 16px; line-height: 1.3; } h3 { font-size: 15px; line-height: 1.35; } h4 { color: #33433e; font-size: 13px; font-weight: 700; } p, .muted, .hint { color: var(--muted); } .top-actions, .actions, .task-card-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } .top-actions { position: relative; margin-left: auto; justify-content: flex-end; flex-wrap: nowrap; } .state, .task-pill { flex: 0 0 auto; border-radius: 6px; font-size: 12px; font-weight: 700; line-height: 1; } .state { padding: 8px 10px; background: #edf0ee; color: var(--muted); } .state-ok { color: var(--ok); background: var(--ok-soft); } .state-warn { color: var(--warn); background: var(--warn-soft); } .state-bad { color: var(--bad); background: var(--bad-soft); } .status-icon { min-height: 36px; display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--line-strong); border-radius: 8px; padding: 0 10px; background: #ffffff; color: var(--ink); cursor: pointer; transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease; } .status-icon:hover { border-color: #a9bdb5; background: var(--accent-soft); color: var(--accent-dark); } .status-icon:active { transform: translateY(1px); } .status-icon.state-ok { border-color: #9fc6b5; background: var(--ok-soft); } .status-icon.state-warn { border-color: #e4c98d; } .status-icon.state-bad { border-color: #efb4af; background: var(--bad-soft); } .status-icon.state-ok .status-icon-value { color: var(--ok); } .status-icon.state-warn .status-icon-value { color: var(--warn); } .status-icon.state-bad .status-icon-value { color: var(--bad); } .status-icon-glyph { width: 18px; color: currentColor; font-size: 18px; font-weight: 800; line-height: 1; text-align: center; } .status-icon-label { font-size: 12px; font-weight: 800; white-space: nowrap; } .status-icon-value { color: var(--muted); font-size: 12px; white-space: nowrap; } .status-popover { position: absolute; z-index: 40; top: calc(100% + 10px); right: 0; width: min(390px, calc(100vw - 24px)); padding: 16px; border: 1px solid var(--line-strong); border-radius: 10px; background: #ffffff; box-shadow: 0 18px 48px rgba(26, 48, 40, 0.18); color: var(--ink); } .status-popover::before { position: absolute; top: -6px; right: 28px; width: 10px; height: 10px; border-top: 1px solid var(--line-strong); border-left: 1px solid var(--line-strong); background: #ffffff; content: ''; transform: rotate(45deg); } .status-popover-head, .status-popover-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .status-popover-eyebrow { margin-bottom: 3px; color: var(--muted); font-size: 10px; font-weight: 800; letter-spacing: 0.08em; } .status-popover-close { width: 30px; min-height: 30px; padding: 0; border-color: transparent; background: transparent; color: var(--muted); font-size: 22px; } .status-popover-close:hover { border-color: var(--line); background: var(--surface-muted); color: var(--ink); } .status-popover-body { display: grid; gap: 8px; margin: 14px 0; } .status-detail-summary { margin-bottom: 3px; padding: 10px 12px; border-radius: 7px; font-size: 13px; font-weight: 800; } .status-detail-summary.state-ok { color: var(--ok); background: var(--ok-soft); } .status-detail-summary.state-warn { color: var(--warn); background: var(--warn-soft); } .status-detail-summary.state-bad { color: var(--bad); background: var(--bad-soft); } .status-detail-row { display: grid; grid-template-columns: minmax(96px, 0.42fr) minmax(0, 0.58fr); gap: 12px; padding-bottom: 7px; border-bottom: 1px solid var(--line); font-size: 12px; line-height: 1.45; } .status-detail-row:last-child { padding-bottom: 0; border-bottom: 0; } .status-detail-row span { color: var(--muted); } .status-detail-row strong { min-width: 0; text-align: right; overflow-wrap: anywhere; } .status-popover-actions { justify-content: flex-end; padding-top: 12px; border-top: 1px solid var(--line); } .status-popover .secondary-button { min-height: 32px; border-color: var(--line-strong); background: #ffffff; color: var(--ink); } .status-popover .secondary-button:hover { border-color: var(--accent); background: var(--accent-soft); color: var(--accent-dark); } button { min-height: 36px; border: 1px solid var(--accent); border-radius: 6px; padding: 0 14px; background: var(--accent); color: #ffffff; cursor: pointer; transition: background-color 180ms ease, border-color 180ms ease, transform 180ms ease; } button:hover { background: var(--accent-dark); border-color: var(--accent-dark); } button:active { transform: translateY(1px); } button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 3px solid rgba(39, 103, 90, 0.22); outline-offset: 2px; } .secondary { color: var(--ink); background: #ffffff; border-color: var(--line-strong); } .secondary:hover { color: var(--accent-dark); background: var(--accent-soft); border-color: #a9bdb5; } .danger-button { min-height: 30px; border-color: #e0aaa4; padding: 0 10px; color: var(--bad); background: var(--bad-soft); font-size: 12px; } .danger-button:hover { border-color: #c97870; color: #ffffff; background: var(--bad); } button:disabled { opacity: 0.52; cursor: not-allowed; } input, select { width: 100%; border: 1px solid var(--line-strong); border-radius: 6px; padding: 8px 9px; color: var(--ink); background: #ffffff; } textarea { width: 100%; resize: none; border: 1px solid var(--line-strong); border-radius: 8px; padding: 12px; color: var(--ink); background: #fcfdfb; font: 13px/1.55 "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; } #rawInstruction { min-height: 0; height: 100%; } .hint { margin-top: 10px; font-size: 13px; line-height: 1.5; } .workbench-grid { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 0.76fr) minmax(0, 1.25fr); gap: 10px; align-items: stretch; width: 100%; min-width: 0; min-height: 0; overflow: hidden; } .channel-panel { grid-column: 1 / -1; grid-template-rows: auto auto minmax(0, 1fr) auto; min-height: 0; max-height: 250px; } .channel-panel .panel-head { align-items: flex-start; } .channel-panel .panel-head p { margin-top: 4px; font-size: 12px; } .channel-form { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) auto; align-items: end; gap: 8px; } .channel-form label { display: grid; gap: 5px; color: var(--muted); font-size: 11px; font-weight: 700; } .channel-form input, .channel-form select { min-height: 34px; padding: 6px 8px; font-size: 12px; } .channel-form button { min-height: 34px; white-space: nowrap; } .channel-list { min-height: 0; overflow: auto; display: grid; align-content: start; gap: 6px; } .channel-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-muted); } .channel-row-main { min-width: 0; display: grid; gap: 2px; } .channel-row-heading { display: flex; align-items: center; gap: 7px; min-width: 0; } .channel-row-heading strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; } .channel-row-main p { font-size: 11px; } .channel-key-state { color: var(--ok); } .channel-error, .channel-message { color: var(--bad); font-size: 11px; } .channel-row-actions { display: flex; flex: 0 0 auto; gap: 6px; } .channel-row-actions button { min-height: 28px; padding: 0 8px; font-size: 11px; } .channel-row-actions select { min-height: 28px; padding: 0 8px; font-size: 11px; } .leader-summary-panel { min-height: 0 !important; grid-template-rows: auto auto minmax(120px, auto) auto !important; } .leader-summary-safety { padding: 9px 11px; border: 1px solid #d6c89d; border-radius: 7px; background: #fffaf0; color: #725b18; font-size: 11px; line-height: 1.55; } .leader-summary-list .channel-row-main p { overflow-wrap: anywhere; } .account-authorization-summary { color: var(--ink) !important; } .account-authorization-panel { display: grid; gap: 12px; padding: 12px; border: 1px solid #aebcc4; border-radius: 8px; background: #ffffff; } .account-authorization-head, .account-authorization-footer { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; } .account-authorization-head h3 { margin-top: 2px; font-size: 15px; } .account-authorization-head .muted { max-width: 760px; margin-top: 4px; font-size: 12px; line-height: 1.5; } .account-authorization-head-actions, .account-authorization-footer .actions { display: flex; flex: 0 0 auto; gap: 7px; } .account-authorization-head-actions button, .account-authorization-footer button { min-height: 30px; padding: 0 10px; font-size: 11px; } .account-authorization-types { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; max-height: 260px; overflow: auto; } .account-authorization-type { min-width: 0; display: flex; align-items: flex-start; gap: 8px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-muted); cursor: pointer; } .account-authorization-type:hover, .account-authorization-type.is-selected { border-color: #8197a2; background: #edf3f5; } .account-authorization-type input { width: 15px; height: 15px; margin-top: 1px; accent-color: var(--ink); } .account-authorization-type-copy { min-width: 0; display: grid; gap: 3px; } .account-authorization-type-copy strong, .account-authorization-type-copy small { min-width: 0; overflow-wrap: anywhere; } .account-authorization-type-copy strong { font-size: 12px; line-height: 1.35; } .account-authorization-type-copy small { font-size: 10px; } .account-authorization-footer { align-items: center; padding-top: 2px; } .panel { min-width: 0; min-height: 0; padding: 14px; display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 12px; overflow: hidden; } .instruction-panel { grid-template-rows: auto minmax(0, 1fr) auto; } .instruction-panel .actions { justify-content: center; } .detail-panel { grid-template-rows: auto auto auto; align-content: start; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; scrollbar-color: #b8cbc2 transparent; scrollbar-width: thin; } .panel-head { min-width: 0; min-height: 32px; display: flex; align-items: center; justify-content: space-between; gap: 12px; } .detail-panel-actions { min-width: 0; max-width: 100%; display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; } .task-stages { min-width: 0; padding: 2px 0 0; } .task-stage-flow { position: relative; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .task-stage-card { position: relative; z-index: 1; min-width: 0; min-height: 46px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-muted); } .task-stage-card.is-pending { border-color: #cbd4cf; background: #e9eeeb; } .task-stage-card.is-needs { border-color: #e4c98d; background: var(--warn-soft); } .task-stage-card.is-processing { border-color: #9bbcdf; background: var(--process-soft); } .task-stage-card.is-complete { border-color: #9fc6b5; background: var(--ok-soft); } .task-stage-card.is-failed { border-color: #efb4af; background: var(--bad-soft); } .task-stage-heading { min-width: 0; display: flex; align-items: center; overflow: hidden; } .task-stage-title { min-width: 0; color: var(--ink); font-size: 12px; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .task-stage-status { display: inline-flex; flex: 0 0 auto; align-items: center; min-height: 20px; padding: 2px 5px; border: 1px solid var(--line); border-radius: 4px; color: var(--muted); background: #ffffff; font-size: 10px; line-height: 1.2; white-space: nowrap; } .task-stage-status.is-current { border-color: #d6b56e; color: var(--warn); background: #fffaf0; font-weight: 800; } .task-stage-card.is-complete .task-stage-status.is-current { border-color: #83b59d; color: var(--ok); background: #f5fcf7; } .task-stage-card.is-failed .task-stage-status.is-current { border-color: #dc9188; color: var(--bad); background: #fff7f6; } .task-stage-card.is-processing .task-stage-status.is-current { border-color: #8fb2d8; color: var(--process); background: #f4f8fd; } .task-stage-card.is-pending .task-stage-status.is-current { border-color: #c2ccc7; color: #6a7771; background: #f4f7f5; } .task-cards, .task-detail { min-width: 0; min-height: 0; max-height: none; overflow-x: hidden; overflow-y: auto; padding-right: 2px; } .task-cards { display: grid; align-content: start; gap: 6px; } .task-card { min-width: 0; display: grid; gap: 5px; padding: 7px 8px; border: 1px solid var(--line); border-left: 3px solid transparent; border-radius: 8px; background: var(--surface-muted); cursor: pointer; transition: background-color 180ms ease, border-color 180ms ease, transform 180ms ease; } .task-card:hover { border-color: #b8c8c0; border-left-color: var(--accent); background: #fbfcfa; } .task-card.is-selected { border-color: #9fb9ae; border-left-color: var(--accent); background: var(--accent-soft); } .task-card-head { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 10px; } .task-card-title-wrap { min-width: 0; display: grid; gap: 3px; } .task-card-title-row { min-width: 0; display: flex; align-items: center; gap: 5px; } .task-source-tag { flex: 0 0 auto; padding: 2px 5px; border: 1px solid transparent; border-radius: 999px; font-size: 10px; font-weight: 700; line-height: 1.2; white-space: nowrap; } .task-source-tag.agentbus { color: #2e5d88; background: #eaf3fb; border-color: #c9deef; } .task-source-tag.manual { color: #5d675f; background: #eef1ef; border-color: #d7ded9; } .task-card-status { min-width: 0; max-width: 48%; display: flex; align-items: center; justify-content: flex-end; gap: 4px; align-self: center; } .task-card-status .task-pill { min-width: 0; max-width: 100%; flex: 0 1 auto; padding: 4px 6px; overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } .task-card-title { min-width: 0; font-size: 13px; line-height: 1.25; overflow-wrap: anywhere; } .task-id { color: var(--muted); font: 10px/1.25 "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; overflow-wrap: anywhere; } .task-card-message { color: var(--muted); font-size: 11px; line-height: 1.25; } .task-pill { padding: 6px 8px; background: #edf0ee; color: var(--muted); } .task-pill.running, .task-pill.accepted, .task-pill.queued, .task-pill.awaiting_confirmation, .task-pill.awaiting_user_input, .task-pill.confirmed, .task-pill.paused, .task-pill.created, .task-pill.waiting_extension { color: var(--warn); background: var(--warn-soft); } .task-pill.completed { color: var(--ok); background: var(--ok-soft); } .task-pill.is-failure, .task-pill.blocked, .task-pill.saved_unverified, .task-pill.parse_failed, .task-pill.parse_blocked { color: var(--bad); background: var(--bad-soft); } .task-card-actions button { min-height: 26px; padding: 0 9px; font-size: 12px; } .task-empty, .detail-empty { padding: 14px; color: var(--muted); font-size: 13px; border: 1px dashed var(--line-strong); border-radius: 8px; background: #fbfcfa; } .task-detail { height: auto; min-width: 0; overflow: visible; display: flex; flex-direction: column; gap: 10px; } .task-detail > .task-output-panel:not(.task-lifecycle-panel) { flex: 0 0 auto; } .task-detail > .task-lifecycle-panel { flex: 0 0 auto; min-height: 0; } .task-input-request { min-width: 0; display: grid; gap: 9px; padding: 12px; border: 1px solid #e4c98d; border-radius: 8px; background: var(--warn-soft); } .task-input-request-head, .task-input-request-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; } .task-input-request-head .task-output-label { color: var(--warn); } .task-input-request-state, .task-input-request-status { color: var(--warn); font-size: 12px; line-height: 1.4; } .task-input-request-prompts { display: grid; gap: 4px; color: #6f4b0d; font-size: 12px; line-height: 1.5; } .task-input-request-list { margin: 0; padding-left: 20px; } .task-input-request-form { display: grid; gap: 8px; } .task-reply-input { min-height: 88px; max-height: 180px; resize: vertical; background: #fffdf7; font-family: Aptos, "PingFang SC", "Microsoft YaHei", ui-sans-serif, system-ui, sans-serif; } .task-input-request-actions { justify-content: flex-start; } .task-output-panel { min-width: 0; min-height: 0; display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 6px; } .task-output-heading { min-width: 0; min-height: 26px; display: flex; align-items: center; justify-content: space-between; gap: 10px; } .task-output-label { color: var(--muted); font-size: 12px; font-weight: 800; line-height: 1.25; letter-spacing: 0.02em; } .task-output-heading .task-output-label { min-width: 0; } .task-copy-button { flex: 0 0 auto; min-height: 28px; padding: 0 10px; border-radius: 7px; font-size: 11px; line-height: 1; } .task-copy-button.is-copied { border-color: #83b59d; color: var(--ok); background: var(--ok-soft); } .task-copy-button.is-error { border-color: #dc9188; color: var(--bad); background: var(--bad-soft); } .task-important-message-panel { grid-template-rows: auto auto auto; gap: 8px; padding-bottom: 8px; } .task-important-message-panel > .task-output-label { color: var(--ink); } .task-important-message-card { min-width: 0; padding: 10px 12px; border: 1px solid var(--line); border-left: 3px solid var(--line-strong); border-radius: 8px; background: var(--surface-muted); } .task-important-message-card.state-warn { border-color: #e4c98d; border-left-color: var(--warn); background: var(--warn-soft); } .task-important-message-card.state-bad { border-color: #efb4af; border-left-color: var(--bad); background: #fff7f6; } .task-important-message-card.state-ok { border-color: #9fc6b5; border-left-color: var(--ok); background: var(--ok-soft); } .task-operation-review-panel { grid-template-rows: auto auto; padding-bottom: 8px; } .task-operation-review-card { display: grid; gap: 7px; min-width: 0; padding: 11px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-muted); } .task-operation-review-card.state-warn { border-color: #e4c98d; background: var(--warn-soft); } .task-operation-review-row { display: grid; grid-template-columns: minmax(92px, 0.28fr) minmax(0, 1fr); gap: 10px; align-items: baseline; } .task-operation-review-key { color: var(--muted); font-size: 11px; font-weight: 800; } .task-operation-review-value { min-width: 0; overflow-wrap: anywhere; color: var(--ink); font-size: 12px; } .task-operation-review-note { margin: 3px 0 0; padding-top: 8px; border-top: 1px solid rgba(151, 112, 38, 0.24); color: var(--muted); font-size: 11px; line-height: 1.55; } .task-operation-timing-panel { grid-template-rows: auto auto auto; gap: 8px; padding-bottom: 8px; } .task-operation-timing-total { flex: 0 0 auto; color: var(--ink); font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums; } .task-operation-timing-list { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 8px; background: #fff; } .task-operation-timing-stage { min-width: 0; padding: 9px 11px; border-top: 1px solid var(--line); } .task-operation-timing-stage:first-child { border-top: 0; } .task-operation-timing-stage-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .task-operation-timing-stage-name { min-width: 0; display: grid; gap: 2px; } .task-operation-timing-stage-name strong { color: var(--ink); font-size: 12px; } .task-operation-timing-stage-name code { color: var(--muted); font-size: 10px; overflow-wrap: anywhere; } .task-operation-timing-stage-metrics { flex: 0 0 auto; display: grid; justify-items: end; gap: 2px; color: var(--muted); font-size: 10px; font-variant-numeric: tabular-nums; } .task-operation-timing-stage-metrics strong { color: var(--ink); font-size: 13px; } .task-operation-timing-details { display: grid; gap: 4px; margin-top: 7px; padding-top: 7px; border-top: 1px dashed var(--line); } .task-operation-timing-detail { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; color: var(--muted); font-size: 10px; } .task-operation-timing-detail span { min-width: 0; overflow-wrap: anywhere; } .task-operation-timing-detail strong { color: var(--ink-soft); font-weight: 750; font-variant-numeric: tabular-nums; text-align: right; } .task-operation-timing-note { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.5; } .task-artifact-panel { grid-template-rows: auto auto; padding-bottom: 8px; } .task-artifact-list { display: grid; gap: 6px; } .task-artifact-row { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid #c8ddd2; border-radius: 9px; background: #ffffff; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8); } .task-artifact-meta { min-width: 0; display: block; } .task-artifact-name { min-width: 0; overflow-wrap: anywhere; color: var(--ink); font-size: 13px; font-weight: 750; line-height: 1.4; } .task-artifact-pending, .task-artifact-unavailable { color: var(--muted); font-size: 11px; line-height: 1.45; } .task-artifact-pending { margin: 0; padding: 9px 11px; border: 1px dashed var(--line-strong); border-radius: 8px; } .task-artifact-download { flex: 0 0 auto; min-height: 30px; padding: 0 10px; display: inline-flex; align-items: center; text-decoration: none; font-size: 11px; } .task-important-message-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; } .task-lifecycle-panel { min-height: 0; } .task-outcome-panel { grid-template-rows: auto auto; padding-bottom: 8px; } .task-outcome-panel > .task-output-label { color: var(--ok); } .task-outcome-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .task-outcome-card { min-width: 0; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; } .task-outcome-card.state-ok { border-color: #9fc6b5; } .task-outcome-card.state-bad { border-color: #efb4af; } .task-outcome-card.special-record { border-color: #9fc6b5; border-left: 3px solid var(--ok); color: var(--ok); background: var(--ok-soft); } .task-outcome-card.special-record .task-outcome-time, .task-outcome-card.special-record .task-outcome-line { color: #277d56; } .task-outcome-card.special-record .task-outcome-json { border-color: #9fc6b5; color: var(--ok); } .task-outcome-title, .task-outcome-time, .task-outcome-line, .task-outcome-message { display: block; } .task-outcome-title { margin-bottom: 4px; } .task-outcome-time, .task-outcome-line { color: var(--muted); font-size: 12px; line-height: 1.45; } .task-outcome-message { margin: 6px 0 0; color: inherit; font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; } .task-outcome-json { max-height: 120px; margin: 7px 0 0; padding: 8px; overflow: auto; border: 1px solid rgba(38, 58, 52, 0.16); border-radius: 6px; background: rgba(255, 255, 255, 0.48); color: inherit; font: 11px/1.45 "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; white-space: pre-wrap; overflow-wrap: anywhere; } .task-outcome-empty { padding: 10px 12px; border: 1px dashed var(--line-strong); border-radius: 8px; color: var(--muted); font-size: 12px; } .task-lifecycle-console { height: 100%; min-height: 0; max-height: none; margin: 0; overflow-x: hidden; overflow-y: auto; padding: 14px; border: 1px solid #263a34; border-radius: 8px; background: #0d1512; color: #d7f8e7; box-shadow: inset 0 0 0 1px rgba(122, 194, 157, 0.08); font: 12px/1.65 "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; white-space: pre-wrap; word-break: break-word; } .receipt-hero { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(220px, 0.9fr); gap: 16px; padding: 14px; border: 1px solid #7db39c; border-radius: 8px; background: #e5f7ec; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72); } .receipt-hero-main { min-width: 0; display: grid; gap: 5px; } .receipt-hero-main strong { color: var(--ok); font-size: 28px; line-height: 1.05; overflow-wrap: anywhere; } .receipt-hero-main p { color: #226244; font-size: 13px; font-weight: 700; } .receipt-hero-meta { min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; align-content: center; } .receipt-hero-meta .detail-field strong { color: var(--ink); font-size: 14px; } .detail-hero { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding-bottom: 12px; border-bottom: 1px solid var(--line); } .detail-hero-main { min-width: 0; display: grid; gap: 5px; } .detail-label, .metric span, .detail-field span, .mini-table-head span { color: var(--muted); font-size: 12px; font-weight: 700; } .detail-hero-main strong { font-size: 18px; line-height: 1.25; overflow-wrap: anywhere; } .detail-hero-main p { font-size: 13px; line-height: 1.45; } .detail-hero-meta { min-width: 220px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; align-content: start; } .metric-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--line); border-radius: 8px; background: var(--surface-muted); } .metric { min-width: 0; display: grid; gap: 4px; padding: 10px; border-right: 1px solid var(--line); } .metric:last-child { border-right: 0; } .metric strong { min-width: 0; font-size: 14px; line-height: 1.35; overflow-wrap: anywhere; } .detail-block { display: grid; gap: 10px; padding-top: 12px; border-top: 1px solid var(--line); } .receipt-block { padding: 12px; border: 1px solid #9fc6b5; border-radius: 8px; background: #edf8f1; } .receipt-grid { display: grid; grid-template-columns: 1.2fr 1fr 1fr 1fr; gap: 10px 14px; } .receipt-grid .detail-field strong { color: var(--ok); font-size: 16px; } .receipt-title { color: var(--ok); font-size: 13px; font-weight: 700; line-height: 1.4; } .field-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 14px; } .detail-field { min-width: 0; display: grid; gap: 4px; } .detail-field strong { min-width: 0; font-size: 14px; line-height: 1.35; overflow-wrap: anywhere; } .detail-split { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 12px; } .detail-subblock { min-width: 0; display: grid; align-content: start; gap: 8px; } .mini-table { border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: #ffffff; } .mini-table-row { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); border-top: 1px solid var(--line); } .mini-table-row:first-child { border-top: 0; } .mini-table-row span { min-width: 0; padding: 8px 10px; font-size: 13px; line-height: 1.35; overflow-wrap: anywhere; } .mini-table-head { background: var(--surface-muted); } .room-list { display: flex; gap: 8px; flex-wrap: wrap; } .room-chip { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: 6px; background: #ffffff; font-size: 13px; } .room-chip span { color: var(--muted); } .finance-total { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0 0; color: var(--muted); font-size: 13px; } .finance-total strong { color: var(--ink); font-size: 18px; } .task-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; } .task-step { min-width: 0; display: flex; align-items: center; gap: 7px; padding: 8px; border: 1px solid var(--line); border-radius: 8px; background: #ffffff; color: var(--muted); font-size: 12px; } .task-step strong { min-width: 0; overflow-wrap: anywhere; } .step-dot { width: 9px; height: 9px; flex: 0 0 auto; border-radius: 50%; background: #b8c3be; } .task-step.done { color: var(--ok); background: var(--ok-soft); } .task-step.done .step-dot { background: var(--ok); } .task-step.active { color: var(--warn); background: var(--warn-soft); } .task-step.active .step-dot { background: var(--warn); } .task-step.blocked { color: var(--bad); background: var(--bad-soft); } .task-step.blocked .step-dot { background: var(--bad); } .progress-note, .detail-note { font-size: 13px; line-height: 1.5; } .detail-alert { display: grid; gap: 6px; padding: 10px; border: 1px solid #efb4af; border-radius: 8px; color: var(--bad); background: var(--bad-soft); } .detail-alert p { color: inherit; font-size: 13px; line-height: 1.45; } @media (max-width: 1120px) { .workbench-grid { grid-template-columns: minmax(0, 0.9fr) minmax(0, 0.76fr) minmax(0, 1.25fr); } } @media (max-width: 920px) { .app-shell { width: min(100vw - 20px, 760px); padding-top: 10px; } .topbar { display: grid; gap: 0; padding: 0 12px 12px; } .top-nav { min-height: 52px; } .top-nav-item { min-height: 52px; } .task-stage-flow { grid-template-columns: 1fr; } .top-actions { align-items: stretch; } .top-actions button, .top-actions .state { flex: 1 1 140px; } .top-actions .status-popover button { flex: 0 0 auto; } .field-grid, .receipt-hero, .detail-hero, .receipt-grid, .detail-split, .metric-strip, .task-steps, .task-outcome-grid { grid-template-columns: 1fr; } .detail-hero { display: grid; } .detail-hero-meta { min-width: 0; } .workbench-grid { grid-template-columns: minmax(0, 1fr); grid-auto-rows: minmax(320px, auto); overflow-x: hidden; overflow-y: auto; } .channel-panel { max-height: none; } .channel-form { grid-template-columns: repeat(2, minmax(0, 1fr)); } .channel-form button { width: 100%; } .channel-row { align-items: flex-start; flex-direction: column; } .account-authorization-head, .account-authorization-footer { align-items: stretch; flex-direction: column; } .account-authorization-types { grid-template-columns: repeat(2, minmax(0, 1fr)); } .metric { border-right: 0; border-bottom: 1px solid var(--line); } .metric:last-child { border-bottom: 0; } .task-cards, .task-detail { max-height: none; } } :root { --login-bg: #f4f5f7; } /* Component display rules must never override the native hidden attribute. */ [hidden] { display: none !important; } .login-panel { min-height: calc(100vh - 110px); display: grid; place-items: center; padding: 48px 24px; background: var(--login-bg); } .login-card { width: min(420px, 100%); padding: 34px; border: 1px solid rgba(20, 24, 32, .12); border-radius: 18px; background: #fff; box-shadow: 0 18px 60px rgba(20, 24, 32, .12); } .login-card h1 { margin: 6px 0 8px; } .login-card form { display: grid; gap: 14px; margin-top: 24px; } .login-card label { display: grid; gap: 7px; font-size: 13px; color: #4c5563; } .login-card input { width: 100%; box-sizing: border-box; min-height: 42px; padding: 0 12px; border: 1px solid #ccd2dc; border-radius: 9px; font: inherit; } .login-card button { min-height: 44px; border: 0; border-radius: 9px; background: #111827; color: #fff; font: inherit; cursor: pointer; } .login-error { min-height: 20px; margin: 0; color: #b42318; font-size: 13px; } .auth-state { max-width: 180px; overflow: hidden; color: #5d6673; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .logout-button { border: 1px solid #ccd2dc; border-radius: 8px; padding: 8px 11px; background: #fff; color: #394150; cursor: pointer; } /* * UI optimization pass: redesign-preserve for the business workbench. * The existing DOM and state classes are intentionally kept intact so this * layer only changes visual hierarchy, density, responsive behavior, and * interaction feedback. */ :root { color-scheme: light; --bg: #edf2f4; --surface: #ffffff; --surface-muted: #f6f9f8; --surface-subtle: #f0f5f3; --ink: #162521; --muted: #60716b; --line: #d8e3df; --line-strong: #b9cbc3; --accent: #176f5d; --accent-dark: #0f5547; --accent-soft: #e7f3ee; --brand-blue: #1d4d8f; --warn: #8a5a10; --warn-soft: #fff5dc; --process: #245f96; --process-soft: #e8f1fb; --ok: #146c43; --ok-soft: #e7f5ec; --bad: #a33b31; --bad-soft: #fceceb; --radius-control: 8px; --radius-panel: 14px; --radius-pill: 999px; --shadow-sm: 0 1px 2px rgba(22, 37, 33, 0.04), 0 7px 20px rgba(22, 37, 33, 0.045); --shadow-md: 0 12px 32px rgba(22, 37, 33, 0.08); font-family: Aptos, "PingFang SC", "Microsoft YaHei", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } html { scroll-behavior: auto; } body { background: var(--bg); color: var(--ink); } .app-shell { width: min(1600px, calc(100vw - 40px)); padding: 16px 0 18px; gap: 14px; } .topbar, .panel { border-color: var(--line); border-radius: var(--radius-panel); box-shadow: var(--shadow-sm); } .topbar { min-height: 72px; padding: 0 18px; gap: 22px; } .brand-logo { width: 184px; height: 48px; border-radius: 6px; object-position: center 52%; } .top-nav-item { min-height: 72px; padding: 0 20px; border-bottom-width: 2px; color: #6a7974; font-size: 14px; font-weight: 700; transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease; } .top-nav-item.is-active { color: var(--accent-dark); background: linear-gradient(180deg, transparent 0%, var(--accent-soft) 100%); } .top-actions { gap: 9px; } .auth-state { max-width: 200px; padding: 0 4px; color: var(--muted); font-size: 12px; font-weight: 600; } .status-icon { min-height: 38px; gap: 7px; border-color: var(--line-strong); border-radius: var(--radius-control); padding: 0 11px; background: rgba(255, 255, 255, 0.82); box-shadow: 0 1px 1px rgba(22, 37, 33, 0.03); transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease, box-shadow 180ms ease; } .status-icon:hover { border-color: #93b7aa; background: var(--accent-soft); box-shadow: 0 4px 12px rgba(23, 111, 93, 0.1); } .status-icon:active, button:active { transform: translateY(1px) scale(0.99); } .status-icon-label { color: var(--ink); font-size: 11px; font-weight: 700; } .status-icon-value { font-size: 11px; font-weight: 600; } .status-icon-glyph { width: 16px; font-size: 16px; } .status-popover { top: calc(100% + 12px); width: min(400px, calc(100vw - 24px)); padding: 18px; border-color: var(--line-strong); border-radius: 12px; background: #ffffff; box-shadow: var(--shadow-md); } .status-popover-eyebrow, .eyebrow { color: var(--accent); font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; } .status-popover-close { border-radius: 7px; } button { min-height: 40px; border-radius: var(--radius-control); padding: 0 15px; box-shadow: 0 1px 1px rgba(22, 37, 33, 0.06); font-size: 13px; font-weight: 700; transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease, box-shadow 180ms ease; } button:hover:not(:disabled) { box-shadow: 0 5px 14px rgba(23, 111, 93, 0.14); } button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 3px solid rgba(23, 111, 93, 0.24); outline-offset: 2px; } .secondary, .secondary-button, .logout-button { border-color: var(--line-strong); border-radius: var(--radius-control); background: #ffffff; color: var(--ink); } .secondary:hover, .secondary-button:hover, .logout-button:hover { border-color: #91b3a7; background: var(--accent-soft); color: var(--accent-dark); } .danger-button { min-height: 34px; border-radius: var(--radius-control); border-color: #e2b4ae; background: var(--bad-soft); font-weight: 700; } input, select { min-height: 40px; border-color: var(--line-strong); border-radius: var(--radius-control); padding: 8px 11px; background: #ffffff; font-size: 13px; } input::placeholder, textarea::placeholder { color: #8a9993; opacity: 1; } textarea { border-color: var(--line-strong); border-radius: 10px; padding: 14px; background: var(--surface-muted); } #rawInstruction { min-height: 230px; border-color: #c8d8d1; background: linear-gradient(180deg, #fbfdfc 0%, #f4f9f7 100%); box-shadow: inset 0 1px 2px rgba(22, 37, 33, 0.03); font-size: 13px; line-height: 1.65; } .workbench-grid { grid-template-columns: minmax(270px, 0.82fr) minmax(250px, 0.76fr) minmax(470px, 1.42fr); gap: 14px; } .panel { padding: 16px; gap: 14px; background: rgba(255, 255, 255, 0.96); } .instruction-panel { background: linear-gradient(180deg, #ffffff 0%, #fbfdfc 100%); } .panel-head { min-height: 34px; padding-bottom: 11px; border-bottom: 1px solid var(--line); } .panel-head h2 { color: var(--ink); font-size: 14px; font-weight: 800; letter-spacing: 0.01em; } .panel-head .muted { font-size: 12px; font-weight: 600; } .instruction-panel .actions { justify-content: center; padding-top: 2px; } .task-stages { padding-top: 0; } .task-stage-flow { gap: 10px; } .task-stage-card { min-height: 58px; align-items: flex-start; padding: 11px 12px; border-color: var(--line); border-radius: 10px; background: var(--surface-muted); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72); } .task-stage-title { color: var(--ink); font-size: 12px; font-weight: 700; } .task-stage-status { min-height: 22px; padding: 3px 7px; border-radius: var(--radius-pill); font-size: 10px; font-weight: 700; } .task-cards, .task-detail { padding-right: 4px; scrollbar-color: #b8cbc2 transparent; scrollbar-width: thin; } .task-cards { gap: 8px; } .task-card { gap: 7px; padding: 11px 12px; border-color: var(--line); border-left-width: 3px; border-radius: 10px; background: #fbfdfc; transition: background-color 180ms ease, border-color 180ms ease, transform 180ms ease, box-shadow 180ms ease; } .task-card:hover { border-color: #a9c1b6; border-left-color: var(--accent); background: #ffffff; box-shadow: 0 5px 14px rgba(22, 37, 33, 0.06); transform: translateY(-1px); } .task-card.is-selected { border-color: #92b8a9; border-left-color: var(--accent); background: var(--accent-soft); box-shadow: 0 5px 14px rgba(23, 111, 93, 0.09); } .task-card-title { font-size: 13px; font-weight: 750; } .task-id { color: #72827b; font-size: 10px; } .task-source-tag { border-radius: var(--radius-pill); padding: 3px 7px; font-size: 10px; font-weight: 800; } .task-card-message { color: var(--muted); font-size: 11px; } .task-pill { border-radius: var(--radius-pill); padding: 6px 8px; font-size: 10px; font-weight: 800; } .task-empty, .detail-empty { padding: 18px 14px; border-color: var(--line-strong); border-radius: 10px; background: var(--surface-muted); text-align: center; } .task-detail { gap: 12px; } .task-important-message-card, .task-input-request, .task-outcome-card, .receipt-block, .detail-alert { border-radius: 10px; } .task-important-message-card { padding: 12px 14px; background: var(--surface-muted); } .task-output-label { font-size: 11px; font-weight: 800; letter-spacing: 0.03em; } .task-lifecycle-console { padding: 16px; border-color: #29483d; border-radius: 10px; background: #0d1915; box-shadow: inset 0 0 0 1px rgba(122, 194, 157, 0.1), 0 8px 18px rgba(15, 38, 29, 0.12); color: #d9f6e7; font-size: 11px; line-height: 1.7; } .detail-hero, .receipt-hero { border-radius: 10px; } .detail-hero { padding-bottom: 14px; } .detail-hero-main strong { font-size: 19px; font-weight: 800; } .metric-strip { border-radius: 10px; background: var(--surface-muted); } .metric { padding: 11px 12px; } .metric strong, .detail-field strong { font-weight: 750; } .detail-block { gap: 11px; padding-top: 14px; } .detail-block h3 { color: var(--ink); font-size: 13px; font-weight: 800; } .mini-table, .room-chip { border-radius: 9px; } .mini-table-row span { padding: 9px 11px; } .room-chip { min-height: 36px; background: var(--surface-muted); } .login-panel { min-height: 0; height: 100%; padding: 28px 24px; background: transparent; } .login-card { width: min(440px, 100%); padding: 34px; border-color: var(--line); border-radius: 16px; background: rgba(255, 255, 255, 0.96); box-shadow: var(--shadow-md); } .login-card h1 { margin: 7px 0 9px; font-size: 26px; letter-spacing: -0.02em; } .login-card .muted { font-size: 13px; line-height: 1.6; } .login-card form { gap: 15px; margin-top: 26px; } .login-card label { gap: 8px; color: var(--ink); font-size: 12px; font-weight: 700; } .login-card input { min-height: 44px; border-color: var(--line-strong); border-radius: var(--radius-control); padding: 0 12px; } .login-card button { min-height: 44px; border: 1px solid var(--accent); border-radius: var(--radius-control); background: var(--accent); color: #ffffff; font-weight: 800; } .login-card button:hover:not(:disabled) { background: var(--accent-dark); } .login-error { color: var(--bad); } .logout-button { min-height: 34px; padding: 0 11px; font-size: 12px; } @media (max-width: 1180px) and (min-width: 921px) { .app-shell { width: min(100vw - 28px, 1120px); } .workbench-grid { grid-template-columns: minmax(250px, 0.82fr) minmax(235px, 0.75fr) minmax(400px, 1.35fr); gap: 10px; } .panel { padding: 13px; } .status-icon { padding: 0 8px; } .status-icon-label { display: none; } } @media (max-width: 920px) { .app-shell { width: min(calc(100vw - 20px), 760px); padding-top: 10px; } .topbar { min-height: 0; gap: 0; padding: 0 12px 12px; } .brand-logo { width: 170px; height: 46px; } .top-nav, .top-nav-item { min-height: 48px; } .top-nav-item { padding: 0 12px; } .top-actions { gap: 7px; } .top-actions button, .top-actions .state { min-width: 0; } .workbench-grid { grid-template-columns: minmax(0, 1fr); grid-auto-rows: minmax(320px, auto); gap: 10px; overflow-x: hidden; overflow-y: auto; } .instruction-panel { min-height: 360px; } .task-list-panel { min-height: 320px; } .detail-panel { min-height: 640px; } .task-stage-flow { grid-template-columns: 1fr; } .field-grid, .receipt-hero, .detail-hero, .receipt-grid, .detail-split, .metric-strip, .task-steps, .task-outcome-grid { grid-template-columns: 1fr; } .detail-hero { display: grid; } .detail-hero-meta { min-width: 0; } .metric { border-right: 0; border-bottom: 1px solid var(--line); } .metric:last-child { border-bottom: 0; } } @media (max-width: 620px) { .topbar { padding: 8px 10px 10px; } .brand-logo { width: 156px; height: 42px; } .top-nav-item { padding: 0 10px; font-size: 13px; } .top-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; margin-top: 8px; } .top-actions .auth-state { grid-column: 1 / -1; max-width: none; padding: 0; } .top-actions button { width: 100%; } .status-icon { justify-content: center; } .status-popover { right: -4px; } .panel { padding: 13px; } .panel-head, .detail-panel-actions { align-items: flex-start; } .detail-panel-actions { justify-content: flex-end; } .detail-panel-actions button { flex: 1 1 auto; } .login-card { padding: 26px 22px; } } .automation-toggle { min-height: 36px; border: 1px solid #d7b66a; border-radius: 8px; padding: 0 11px; background: var(--warn-soft); color: var(--warn); cursor: pointer; font-size: 12px; font-weight: 800; white-space: nowrap; transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease; } .automation-toggle:hover:not(:disabled) { border-color: #bd9340; background: #ffefbd; } .automation-toggle:active:not(:disabled) { transform: translateY(1px); } .automation-toggle.is-enabled { border-color: #8fc2a6; background: var(--ok-soft); color: var(--ok); } .automation-toggle.is-enabled:hover:not(:disabled) { border-color: #5da37d; background: #d9f0e2; } .automation-toggle.is-error { border-color: #efb4af; background: var(--bad-soft); color: var(--bad); } .automation-toggle:disabled { cursor: wait; opacity: 0.72; } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: 0.01ms !important; } } @media (max-width: 920px) { .workbench-grid { grid-auto-rows: auto; } .instruction-panel { min-height: 392px; grid-template-rows: auto minmax(230px, 1fr) auto; } .instruction-panel #rawInstruction { height: auto; min-height: 230px; } } .top-nav-item { color: var(--muted); text-decoration: none; } .top-nav-item.is-active { color: var(--accent-dark); } .panel-title-group { min-width: 0; display: flex; align-items: baseline; gap: 9px; } .task-list-head-actions { min-width: 0; display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; } .task-history-link { min-height: 32px; display: inline-flex; align-items: center; padding: 0 10px; color: var(--accent-dark); font-size: 12px; font-weight: 800; text-decoration: none; white-space: nowrap; } .history-filters { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(150px, 0.7fr) auto; align-items: end; gap: 9px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-muted); } .history-filters label { min-width: 0; display: grid; gap: 5px; color: var(--muted); font-size: 11px; font-weight: 700; } .history-filter-actions { display: flex; align-items: center; gap: 7px; } .history-filter-actions button, .history-pagination button { min-height: 38px; white-space: nowrap; } .history-batch-actions { min-width: 0; display: flex; align-items: center; gap: 10px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 9px; background: #fbfcfa; } .history-select-all { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px; color: var(--ink); font-size: 12px; font-weight: 750; cursor: pointer; } .history-select-all input, .task-card-select input { width: 16px; min-height: 16px; margin: 0; padding: 0; accent-color: var(--accent); cursor: pointer; } .history-batch-message { min-width: 0; flex: 1 1 auto; color: var(--muted); font-size: 11px; line-height: 1.35; } .history-batch-message.is-error { color: var(--bad); } .history-batch-message.is-success { color: var(--ok); } .history-batch-actions > .danger-button, .history-batch-actions > .secondary-button { flex: 0 0 auto; white-space: nowrap; } .history-pagination { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-top: 10px; border-top: 1px solid var(--line); } .history-pagination-actions { display: flex; gap: 7px; } .channels-page { min-width: 0; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr); align-content: start; gap: 12px; overflow: auto; } .channels-page .channel-panel { min-height: 100%; max-height: none; grid-template-rows: auto auto minmax(0, 1fr) auto; } .channels-page .channel-panel.account-panel.is-authorizing { height: max-content; grid-template-rows: auto auto auto auto auto; overflow: visible; } .channels-page .channel-list { max-height: none; } .audit-page-active .channel-row { display: grid; align-items: stretch; } .audit-page-active .channel-row > pre { max-height: 180px; margin: 0; } .operations-dashboard-page { --dashboard-ink: #17372f; --dashboard-ink-soft: #264c43; --dashboard-accent: #2b7565; --dashboard-accent-soft: #dcebe5; --dashboard-paper: #f3f5f1; --dashboard-surface: #fffefa; --dashboard-line: #d8dfda; --dashboard-muted: #6b7772; min-height: 0; display: block; overflow: auto; color: var(--dashboard-ink); } .operations-dashboard-page button { transition: transform 180ms ease, border-color 180ms ease, background-color 180ms ease, color 180ms ease, box-shadow 180ms ease; } .operations-dashboard-page button:active { transform: translateY(1px); } .operations-dashboard-page button:focus-visible, .operations-dashboard-page input:focus-visible, .operations-dashboard-page select:focus-visible { outline: 3px solid rgba(43, 117, 101, 0.24); outline-offset: 2px; } .operations-dashboard-panel { min-height: 100%; display: grid; gap: 18px; padding: 22px; border: 1px solid var(--dashboard-line); border-radius: 10px; background: var(--dashboard-paper); box-shadow: 0 18px 44px rgba(27, 59, 51, 0.09); } .operations-dashboard-refresh { min-height: 38px; padding: 0 16px; border: 1px solid rgba(255, 255, 255, 0.28); border-radius: 7px; background: transparent; color: #ffffff; cursor: pointer; } .operations-dashboard-refresh:hover { border-color: rgba(255, 255, 255, 0.56); background: rgba(255, 255, 255, 0.08); } .operations-dashboard-refresh:disabled { opacity: 0.55; cursor: wait; } .operations-dashboard-filters { display: grid; grid-template-columns: auto repeat(5, minmax(122px, 0.72fr)) minmax(250px, 1.45fr) auto; gap: 10px; align-items: end; padding: 15px; border: 1px solid var(--dashboard-line); border-radius: 9px; background: var(--dashboard-surface); } .operations-dashboard-range-presets { display: flex; gap: 4px; padding: 4px; border-radius: 8px; background: #edf0ec; } .operations-dashboard-range-presets button { min-height: 34px; padding: 0 11px; border: 0; border-radius: 6px; background: transparent; color: var(--dashboard-muted); font-size: 12px; font-weight: 700; cursor: pointer; white-space: nowrap; } .operations-dashboard-range-presets button:hover, .operations-dashboard-range-presets button.is-active { background: #ffffff; color: var(--dashboard-ink); box-shadow: 0 2px 8px rgba(32, 66, 57, 0.1); } .operations-dashboard-filters label { min-width: 0; display: grid; gap: 6px; color: var(--dashboard-muted); font-size: 11px; font-weight: 650; } .operations-dashboard-filters input, .operations-dashboard-filters select { width: 100%; min-height: 42px; border-color: var(--dashboard-line); border-radius: 7px; background: #ffffff; color: var(--dashboard-ink); } .operations-dashboard-submit { min-height: 42px; padding: 0 18px; border: 1px solid var(--dashboard-accent); border-radius: 7px; background: var(--dashboard-accent); color: #ffffff; font-weight: 700; cursor: pointer; white-space: nowrap; } .operations-dashboard-submit:hover { border-color: var(--dashboard-ink-soft); background: var(--dashboard-ink-soft); } .operations-dashboard-active-filters { min-height: 26px; display: flex; align-items: center; gap: 7px; overflow-x: auto; color: var(--dashboard-muted); font-size: 11px; white-space: nowrap; } .operations-dashboard-filter-label { padding-right: 3px; font-weight: 700; } .operations-dashboard-filter-chip { padding: 5px 9px; border: 1px solid var(--dashboard-line); border-radius: 6px; background: rgba(255, 255, 255, 0.72); } .operations-dashboard-summary { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; } .operations-dashboard-stat { position: relative; min-width: 0; min-height: 116px; display: grid; align-content: space-between; gap: 6px; padding: 16px; border: 1px solid var(--dashboard-line); border-radius: 9px; background: var(--dashboard-surface); color: var(--dashboard-ink); font: inherit; text-align: left; } .operations-dashboard-stat > span { color: var(--dashboard-muted); font-size: 12px; font-weight: 700; } .operations-dashboard-stat > strong { color: var(--dashboard-ink); font-size: clamp(27px, 2.5vw, 38px); font-weight: 720; line-height: 1; letter-spacing: -0.04em; } .operations-dashboard-stat > small { color: var(--dashboard-muted); font-size: 11px; } .operations-dashboard-stat-total::before, .operations-dashboard-stat-success::before, .operations-dashboard-stat-active::before, .operations-dashboard-stat-failed::before { position: absolute; top: 15px; right: 15px; width: 8px; height: 8px; border-radius: 50%; background: var(--dashboard-accent); content: ""; } .operations-dashboard-stat-failed::before { background: #a54f43; } .operations-dashboard-insight-grid { min-width: 0; display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(330px, 0.8fr); gap: 12px; } .operations-dashboard-insight, .operations-dashboard-people, .operations-dashboard-workstream { min-width: 0; border: 1px solid var(--dashboard-line); border-radius: 10px; background: var(--dashboard-surface); } .operations-dashboard-insight { min-height: 330px; display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 18px; padding: 18px; } .operations-dashboard-section-head { min-width: 0; display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; } .operations-dashboard-section-head > div { display: grid; gap: 4px; } .operations-dashboard-section-head p { color: var(--dashboard-accent); font-size: 11px; font-weight: 750; letter-spacing: 0.08em; } .operations-dashboard-section-head h2 { color: var(--dashboard-ink); font-size: 19px; font-weight: 720; letter-spacing: -0.025em; } .operations-dashboard-section-head > span { color: var(--dashboard-muted); font-size: 11px; white-space: nowrap; } .operations-dashboard-day-chart { min-width: 0; min-height: 230px; display: flex; align-items: stretch; gap: 5px; overflow-x: auto; padding: 12px 2px 2px; } .operations-dashboard-day-column { min-width: 34px; flex: 1 0 34px; display: grid; grid-template-rows: 22px minmax(140px, 1fr) 24px; align-items: end; gap: 5px; padding: 0 2px; border: 0; border-radius: 6px; background: transparent; color: var(--dashboard-muted); font: inherit; cursor: pointer; } .operations-dashboard-day-column:hover { background: #edf4f0; color: var(--dashboard-ink); } .operations-dashboard-day-column > strong { color: var(--dashboard-ink); font-size: 12px; text-align: center; } .operations-dashboard-day-column > span:last-child { font-size: 10px; text-align: center; white-space: nowrap; } .operations-dashboard-day-bars { width: 100%; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; gap: 2px; padding: 0 5px; border-bottom: 1px solid var(--dashboard-line); } .operations-dashboard-day-bars i { width: 100%; min-height: 2px; display: block; border-radius: 3px 3px 1px 1px; } .operations-dashboard-day-bars .is-completed { background: var(--dashboard-accent); } .operations-dashboard-day-bars .is-remaining { background: #d9b474; } .operations-dashboard-business-list { min-height: 0; display: grid; align-content: start; gap: 8px; overflow: auto; padding-right: 4px; } .operations-dashboard-business-row { width: 100%; display: grid; gap: 7px; padding: 10px 11px; border: 0; border-radius: 7px; background: #f4f6f3; color: var(--dashboard-ink); font: inherit; text-align: left; cursor: pointer; } .operations-dashboard-business-row:hover { background: #eaf2ee; } .operations-dashboard-business-heading { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 12px; } .operations-dashboard-business-heading strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .operations-dashboard-business-heading b { color: var(--dashboard-ink); font-size: 17px; } .operations-dashboard-business-track, .operations-dashboard-user-contribution { height: 4px; display: block; overflow: hidden; border-radius: 4px; background: #dfe5e1; } .operations-dashboard-business-track i, .operations-dashboard-user-contribution i { height: 100%; display: block; border-radius: inherit; background: var(--dashboard-accent); } .operations-dashboard-business-row small { color: var(--dashboard-muted); font-size: 10px; } .operations-dashboard-people { display: grid; gap: 14px; padding: 18px; } .operations-dashboard-users { min-width: 0; display: grid; grid-auto-columns: minmax(250px, 0.3fr); grid-auto-flow: column; gap: 9px; overflow-x: auto; padding-bottom: 4px; } .operations-dashboard-user-row { min-width: 0; display: grid; gap: 12px; padding: 14px; border: 0; border-radius: 8px; background: #f4f6f3; color: var(--dashboard-ink); font: inherit; text-align: left; cursor: pointer; } .operations-dashboard-user-row:hover { background: #eaf2ee; transform: translateY(-2px); } .operations-dashboard-user-identity, .operations-dashboard-task-person { min-width: 0; display: flex; align-items: center; gap: 9px; } .operations-dashboard-avatar { width: 34px; height: 34px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 8px; background: var(--dashboard-ink); color: #ffffff; font-size: 13px; font-weight: 750; } .operations-dashboard-user-name { min-width: 0; display: grid; gap: 2px; } .operations-dashboard-user-name strong { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; } .operations-dashboard-user-name small, .operations-dashboard-user-last { color: var(--dashboard-muted); font-size: 10px; } .operations-dashboard-user-metrics { display: flex; flex-wrap: wrap; gap: 6px 14px; color: var(--dashboard-muted); font-size: 11px; } .operations-dashboard-user-metrics .needs-attention { color: #8b5f1d; } .operations-dashboard-workstream { min-height: 420px; display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; gap: 12px; padding: 18px; } .operations-dashboard-workstream-head { align-items: end; } .operations-dashboard-flow-labels { display: grid; grid-template-columns: minmax(190px, 0.34fr) repeat(2, minmax(0, 1fr)); gap: 16px; padding: 0 14px; color: var(--dashboard-muted); font-size: 10px; font-weight: 750; letter-spacing: 0.06em; } .operations-dashboard-tasks { min-height: 0; display: grid; align-content: start; gap: 8px; overflow: auto; } .operations-dashboard-task-row { width: 100%; min-width: 0; display: grid; grid-template-columns: minmax(190px, 0.34fr) minmax(0, 1fr); gap: 16px; padding: 14px; border: 0; border-left: 3px solid transparent; border-radius: 8px; background: #f5f7f4; color: var(--dashboard-ink); font: inherit; text-align: left; cursor: pointer; } .operations-dashboard-task-row:hover, .operations-dashboard-task-row.is-selected { border-left-color: var(--dashboard-accent); background: #eaf2ee; } .operations-dashboard-task-identity { min-width: 0; display: grid; align-content: start; gap: 7px; } .operations-dashboard-task-person strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .operations-dashboard-task-identity time { color: var(--dashboard-muted); font-size: 10px; } .operations-dashboard-task-type { color: var(--dashboard-ink-soft); font-size: 11px; font-weight: 700; } .operations-dashboard-task-identity .state { width: fit-content; padding: 6px 8px; font-size: 10px; } .operations-dashboard-task-identity .state-process { background: #e6efec; color: var(--dashboard-accent); } .operations-dashboard-task-flow { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) 28px minmax(0, 1fr); align-items: stretch; gap: 8px; } .operations-dashboard-flow-block { min-width: 0; display: grid; align-content: start; gap: 7px; padding: 12px; border-radius: 7px; background: #ffffff; } .operations-dashboard-flow-block small { color: var(--dashboard-muted); font-size: 10px; font-weight: 750; } .operations-dashboard-flow-block > span { display: -webkit-box; overflow: hidden; color: var(--dashboard-ink); font-size: 12px; line-height: 1.55; -webkit-box-orient: vertical; -webkit-line-clamp: 3; } .operations-dashboard-flow-block.is-output { background: #eaf3ef; } .operations-dashboard-flow-block.is-output > span { color: #265d4f; } .operations-dashboard-flow-arrow { display: grid; place-items: center; color: #8aa69c; font-size: 18px; } .operations-dashboard-pagination { padding-top: 12px; border-top: 1px solid var(--dashboard-line); } .operations-dashboard-pagination > span { color: var(--dashboard-muted); font-size: 11px; } .operations-dashboard-message { min-height: 18px; color: #8b5f1d; font-size: 11px; } .operations-dashboard-empty { min-height: 92px; display: grid; place-items: center; color: var(--dashboard-muted); font-size: 12px; text-align: center; } .operations-dashboard-detail { position: fixed; z-index: 40; top: 94px; right: max(18px, calc((100vw - 1680px) / 2 + 18px)); bottom: 20px; width: min(660px, calc(100vw - 36px)); display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 16px; overflow: hidden; padding: 20px; border: 1px solid #aebfb7; border-radius: 10px; background: #fffefa; box-shadow: -18px 24px 64px rgba(23, 55, 47, 0.22); } .operations-dashboard-detail[hidden] { display: none; } .operations-dashboard-detail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding-bottom: 15px; border-bottom: 1px solid var(--dashboard-line); } .operations-dashboard-detail-head > div { display: grid; gap: 4px; } .operations-dashboard-detail-head p { color: var(--dashboard-accent); font-size: 11px; font-weight: 750; } .operations-dashboard-detail-head h2 { color: var(--dashboard-ink); font-size: 20px; letter-spacing: -0.02em; } .operations-dashboard-detail-body { min-height: 0; display: grid; align-content: start; gap: 18px; overflow: auto; padding-right: 4px; } .operations-dashboard-detail-section { min-width: 0; display: grid; gap: 10px; padding-top: 16px; border-top: 1px solid var(--dashboard-line); } .operations-dashboard-detail-section:first-child { padding-top: 0; border-top: 0; } .operations-dashboard-detail-section h3 { color: var(--dashboard-ink); font-size: 13px; } .operations-dashboard-detail-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .operations-dashboard-input-history, .operations-dashboard-attachments { display: grid; gap: 8px; } .operations-dashboard-input-item, .operations-dashboard-attachment-row { min-width: 0; display: grid; gap: 7px; padding: 12px; border: 0; border-radius: 7px; background: #f3f5f2; } .operations-dashboard-input-item strong, .operations-dashboard-attachment-row strong { color: var(--dashboard-ink); font-size: 12px; } .operations-dashboard-input-item > span, .operations-dashboard-attachment-row > span { color: var(--dashboard-muted); font-size: 10px; } .operations-dashboard-input-item p { color: var(--dashboard-ink); font-size: 12px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; } .operations-dashboard-result-detail { max-height: none; margin: 0; padding: 14px; overflow: visible; border: 0; border-left: 3px solid var(--dashboard-accent); border-radius: 6px; background: #eaf3ef; color: #265d4f; font-family: inherit; font-size: 13px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; } @media (max-width: 1320px) { .operations-dashboard-filters { grid-template-columns: auto repeat(3, minmax(145px, 1fr)); } .operations-dashboard-search { grid-column: span 2; } .operations-dashboard-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); } } @media (max-width: 980px) { .operations-dashboard-insight-grid { grid-template-columns: minmax(0, 1fr); } .operations-dashboard-task-row { grid-template-columns: minmax(0, 1fr); } .operations-dashboard-flow-labels { display: none; } } @media (max-width: 760px) { .operations-dashboard-panel { padding: 12px; } .operations-dashboard-filters { grid-template-columns: minmax(0, 1fr); } .operations-dashboard-search { grid-column: auto; } .operations-dashboard-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } .operations-dashboard-task-flow { grid-template-columns: minmax(0, 1fr); } .operations-dashboard-flow-arrow { min-height: 18px; transform: rotate(90deg); } .operations-dashboard-detail { top: 18px; right: 18px; bottom: 18px; } } /* Compact leadership dashboard: metrics, two fixed rankings, then filters and detail. */ .operations-dashboard-panel { gap: 12px; padding: 16px; } .operations-dashboard-summary { gap: 8px; } .operations-dashboard-stat { min-height: 88px; gap: 4px; padding: 12px 14px; } .operations-dashboard-stat > strong { font-size: clamp(25px, 2vw, 32px); } .operations-dashboard-stat > small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .operations-dashboard-stat-total::before, .operations-dashboard-stat-success::before, .operations-dashboard-stat-active::before, .operations-dashboard-stat-failed::before { top: 12px; right: 12px; } .operations-dashboard-ranking-grid { min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .operations-dashboard-ranking-grid .operations-dashboard-insight, .operations-dashboard-ranking-grid .operations-dashboard-people { height: 304px; min-height: 304px; display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 10px; padding: 14px; overflow: hidden; } .operations-dashboard-ranking-grid .operations-dashboard-section-head { align-items: center; } .operations-dashboard-ranking-grid .operations-dashboard-section-head h2 { font-size: 16px; } .operations-dashboard-business-list, .operations-dashboard-users { min-width: 0; min-height: 0; display: grid; grid-auto-flow: row; grid-auto-columns: auto; align-content: start; gap: 5px; overflow-x: hidden; overflow-y: auto; padding: 0 3px 0 0; } .operations-dashboard-business-row, .operations-dashboard-user-row { position: relative; isolation: isolate; width: 100%; min-width: 0; min-height: 42px; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 10px; overflow: hidden; padding: 7px 10px; border: 0; border-radius: 6px; background: transparent; color: var(--dashboard-ink); font: inherit; text-align: left; cursor: pointer; } .operations-dashboard-business-row:hover, .operations-dashboard-user-row:hover { background: transparent; transform: none; } .operations-dashboard-business-row > :not(.operations-dashboard-rank-bar), .operations-dashboard-user-row > :not(.operations-dashboard-rank-bar) { position: relative; z-index: 1; } .operations-dashboard-rank-number { color: #87938e; font-family: ui-monospace, "SFMono-Regular", Consolas, monospace; font-size: 11px; font-weight: 700; letter-spacing: -0.03em; } .operations-dashboard-rank-name { overflow: hidden; color: var(--dashboard-ink); font-size: 12px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .operations-dashboard-rank-metrics, .operations-dashboard-user-metrics { display: flex; align-items: center; justify-content: flex-end; gap: 12px; color: var(--dashboard-muted); font-size: 11px; white-space: nowrap; } .operations-dashboard-rank-bar { position: absolute; z-index: 0; inset: 0 auto 0 0; min-width: 3px; display: block; border-radius: 6px; background: #d9e7e0; box-shadow: inset 3px 0 0 rgba(37, 119, 96, 0.72); transition: width 220ms ease, background-color 180ms ease; } .operations-dashboard-business-row:hover .operations-dashboard-rank-bar, .operations-dashboard-user-row:hover .operations-dashboard-rank-bar { background: #cfe1d8; } .operations-dashboard-rank-metrics .is-total, .operations-dashboard-user-metrics .is-total { color: #63736d; font-weight: 650; } .operations-dashboard-rank-metrics .is-success, .operations-dashboard-user-metrics .is-success { color: var(--dashboard-accent); font-weight: 700; } .operations-dashboard-user-row { grid-template-columns: 34px minmax(0, 1fr) auto; } .operations-dashboard-user-identity { gap: 8px; } .operations-dashboard-user-row .operations-dashboard-avatar { width: 28px; height: 28px; border-radius: 6px; font-size: 11px; } .operations-dashboard-user-name strong { font-size: 12px; } .operations-dashboard-workstream { min-height: 480px; grid-template-rows: auto auto auto minmax(280px, 1fr) auto auto; gap: 10px; padding: 14px; } .operations-dashboard-workstream-head { align-items: center; } .operations-dashboard-update-state { display: flex; align-items: center; gap: 10px; color: var(--dashboard-muted); font-size: 11px; white-space: nowrap; } .operations-dashboard-refresh { min-height: 32px; padding: 0 12px; border: 1px solid var(--dashboard-line); border-radius: 6px; background: #ffffff; color: var(--dashboard-ink-soft); font-size: 11px; font-weight: 700; } .operations-dashboard-refresh:hover { border-color: #9cb4aa; background: #eef4f1; } .operations-dashboard-filters { grid-template-columns: auto repeat(5, minmax(118px, 0.72fr)) minmax(220px, 1.35fr) auto; gap: 8px; padding: 11px; border-radius: 7px; background: #f5f7f4; } .operations-dashboard-filters label { gap: 5px; font-size: 10px; } .operations-dashboard-filters input, .operations-dashboard-filters select, .operations-dashboard-submit { min-height: 38px; } .operations-dashboard-range-presets { align-self: end; } .operations-dashboard-range-presets button { min-height: 30px; padding: 0 9px; } .operations-dashboard-table-meta { display: flex; align-items: center; justify-content: space-between; gap: 16px; color: var(--dashboard-muted); font-size: 11px; } .operations-dashboard-table-meta > span:first-child { color: var(--dashboard-ink-soft); font-weight: 700; } .operations-dashboard-table-wrap { min-width: 0; min-height: 280px; overflow: auto; border: 1px solid var(--dashboard-line); border-radius: 7px; background: #ffffff; } .operations-dashboard-table { width: 100%; min-width: 1120px; border-collapse: separate; border-spacing: 0; table-layout: fixed; color: var(--dashboard-ink); font-size: 12px; } .operations-dashboard-table th { position: sticky; z-index: 1; top: 0; padding: 10px 12px; border-bottom: 1px solid var(--dashboard-line); background: #eef2ef; color: var(--dashboard-muted); font-size: 10px; font-weight: 750; letter-spacing: 0.04em; text-align: left; white-space: nowrap; } .operations-dashboard-table th:nth-child(1) { width: 148px; } .operations-dashboard-table th:nth-child(2) { width: 132px; } .operations-dashboard-table th:nth-child(3) { width: 170px; } .operations-dashboard-table th:nth-child(6) { width: 94px; } .operations-dashboard-table-row { cursor: pointer; outline: none; transition: background-color 160ms ease, box-shadow 160ms ease; } .operations-dashboard-table-row td { height: 66px; padding: 9px 12px; overflow: hidden; border-bottom: 1px solid #e4e9e6; vertical-align: middle; } .operations-dashboard-table-row:last-child td { border-bottom: 0; } .operations-dashboard-table-row:hover td, .operations-dashboard-table-row:focus-visible td, .operations-dashboard-table-row.is-selected td { background: #eef5f1; } .operations-dashboard-table-row:focus-visible { box-shadow: inset 3px 0 0 var(--dashboard-accent); } .operations-dashboard-table-time time { color: var(--dashboard-muted); font-size: 11px; white-space: nowrap; } .operations-dashboard-table-actor .operations-dashboard-avatar { width: 28px; height: 28px; border-radius: 6px; font-size: 11px; } .operations-dashboard-table-actor strong, .operations-dashboard-table-type { overflow: hidden; font-size: 11px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .operations-dashboard-table-copy > span { display: -webkit-box; overflow: hidden; color: var(--dashboard-ink-soft); font-size: 11px; line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .operations-dashboard-table-copy.is-output > span { color: #286251; } .operations-dashboard-table-copy > small { display: block; margin-top: 3px; color: var(--dashboard-muted); font-size: 9px; } .operations-dashboard-table-status .state { display: inline-flex; padding: 5px 7px; font-size: 10px; white-space: nowrap; } .operations-dashboard-table-empty td { padding: 0; } .operations-dashboard-pagination { padding-top: 8px; } .operations-dashboard-message:empty { min-height: 0; } @media (max-width: 1450px) { .operations-dashboard-filters { grid-template-columns: auto repeat(3, minmax(150px, 1fr)); } .operations-dashboard-search { grid-column: span 2; } } @media (max-width: 980px) { .operations-dashboard-ranking-grid { grid-template-columns: minmax(0, 1fr); } .operations-dashboard-ranking-grid .operations-dashboard-insight, .operations-dashboard-ranking-grid .operations-dashboard-people { height: 280px; min-height: 280px; } } @media (max-width: 760px) { .operations-dashboard-panel { padding: 10px; } .operations-dashboard-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } .operations-dashboard-filters { grid-template-columns: minmax(0, 1fr); } .operations-dashboard-search { grid-column: auto; } .operations-dashboard-table-meta, .operations-dashboard-workstream-head { align-items: flex-start; flex-direction: column; } } /* Standalone leadership view: keep the shared route focused on the dashboard. */ body.operations-dashboard-page-active .top-nav, body.operations-dashboard-page-active #automationToggleButton, body.operations-dashboard-page-active #aiState, body.operations-dashboard-page-active #bridgeState, body.operations-dashboard-page-active #statusDetailsPopover { display: none !important; } body.operations-dashboard-page-active .topbar { display: flex; justify-content: space-between; } body.operations-dashboard-page-active .top-actions { margin-left: auto; } body.operations-dashboard-detail-open .operations-dashboard-page { overflow: hidden; } .operations-dashboard-page { overscroll-behavior-y: contain; scrollbar-gutter: stable; -webkit-overflow-scrolling: touch; } .operations-dashboard-page-head { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 2px; } .operations-dashboard-page-head > div { min-width: 0; display: grid; gap: 3px; } .operations-dashboard-page-head p { color: var(--dashboard-accent); font-size: 10px; font-weight: 800; letter-spacing: 0.08em; } .operations-dashboard-page-head h1 { color: var(--dashboard-ink); font-size: 22px; font-weight: 760; letter-spacing: -0.025em; } .operations-dashboard-page-head span { color: var(--dashboard-muted); font-size: 12px; } .operations-dashboard-back-link { min-height: 40px; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; padding: 0 13px; border: 1px solid var(--dashboard-line); border-radius: 7px; background: #ffffff; color: var(--dashboard-ink-soft); font-size: 12px; font-weight: 750; text-decoration: none; } .operations-dashboard-back-link:hover { border-color: #9cb4aa; background: #eef4f1; } .operations-dashboard-back-link:focus-visible { outline: 3px solid rgba(43, 117, 101, 0.24); outline-offset: 2px; } @media (max-width: 920px) { body.operations-dashboard-page-active .app-shell { width: 100%; margin: 0; padding: 0; gap: 0; } body.operations-dashboard-page-active .topbar { min-height: 56px; flex: 0 0 auto; gap: 7px; padding: calc(6px + env(safe-area-inset-top)) calc(10px + env(safe-area-inset-right)) 6px calc(10px + env(safe-area-inset-left)); border-top: 0; border-right: 0; border-left: 0; border-radius: 0; box-shadow: 0 1px 8px rgba(22, 37, 33, 0.06); } body.operations-dashboard-page-active .brand-block { flex: 0 1 auto; } body.operations-dashboard-page-active .brand-logo { width: 128px; height: 40px; max-width: 100%; object-fit: cover; } body.operations-dashboard-page-active .top-actions { width: auto; display: flex; flex: 0 0 auto; flex-wrap: nowrap; gap: 5px; margin: 0 0 0 auto; } body.operations-dashboard-page-active .top-actions .auth-state { display: none !important; } body.operations-dashboard-page-active .top-actions button { width: auto; min-height: 38px; padding: 0 8px; font-size: 11px; } .operations-dashboard-page { scrollbar-gutter: auto; } .operations-dashboard-panel { min-height: 100%; gap: 12px; padding: 12px 10px calc(18px + env(safe-area-inset-bottom)); border: 0; border-radius: 0; box-shadow: none; } .operations-dashboard-page-head { align-items: flex-start; gap: 10px; padding: 1px 2px 3px; } .operations-dashboard-page-head h1 { font-size: 21px; } .operations-dashboard-page-head span { display: block; max-width: 220px; font-size: 11px; line-height: 1.45; } .operations-dashboard-back-link { min-height: 40px; padding: 0 10px; font-size: 11px; } .operations-dashboard-summary { display: flex; gap: 8px; margin: 0 -10px; padding: 0 10px 4px; overflow-x: auto; scroll-padding-inline: 10px; scroll-snap-type: x proximity; scrollbar-width: none; } .operations-dashboard-summary::-webkit-scrollbar { display: none; } .operations-dashboard-stat { min-width: 0; min-height: 94px; flex: 0 0 clamp(142px, 42vw, 164px); padding: 12px; scroll-snap-align: start; } .operations-dashboard-stat > strong { font-size: 28px; } .operations-dashboard-ranking-grid .operations-dashboard-insight, .operations-dashboard-ranking-grid .operations-dashboard-people { height: 286px; min-height: 286px; padding: 12px; } .operations-dashboard-ranking-grid .operations-dashboard-section-head { gap: 10px; } .operations-dashboard-business-row, .operations-dashboard-user-row { min-height: 48px; grid-template-columns: 28px minmax(0, 1fr) auto; gap: 7px; padding: 7px 8px; touch-action: manipulation; } .operations-dashboard-rank-metrics, .operations-dashboard-user-metrics { gap: 7px; font-size: 10px; } .operations-dashboard-workstream { min-height: 0; grid-template-rows: repeat(6, auto); padding: 12px; } .operations-dashboard-workstream-head { width: 100%; align-items: flex-start; flex-direction: column; gap: 10px; } .operations-dashboard-workstream-head > .operations-dashboard-update-state { width: 100%; display: flex; align-items: center; justify-content: space-between; } .operations-dashboard-refresh { min-height: 44px; } .operations-dashboard-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px 8px; padding: 10px; } .operations-dashboard-range-presets, .operations-dashboard-search, .operations-dashboard-submit { grid-column: 1 / -1; } .operations-dashboard-range-presets { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-self: auto; gap: 4px; } .operations-dashboard-range-presets button, .operations-dashboard-filters input, .operations-dashboard-filters select, .operations-dashboard-submit { min-height: 44px; } .operations-dashboard-filters input, .operations-dashboard-filters select { min-width: 0; font-size: 16px; } .operations-dashboard-table-meta { width: 100%; display: flex; align-items: center; flex-direction: row; } .operations-dashboard-table-meta > span:last-child { display: none; } .operations-dashboard-table-wrap { min-height: 0; overflow: visible; border: 0; border-radius: 0; background: transparent; } .operations-dashboard-table, .operations-dashboard-table tbody { width: 100%; min-width: 0; display: block; } .operations-dashboard-table thead { display: none; } .operations-dashboard-table tbody { display: grid; gap: 9px; } .operations-dashboard-table-row { position: relative; min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 11px 12px; padding: 12px; overflow: hidden; border: 1px solid var(--dashboard-line); border-radius: 9px; background: #ffffff; box-shadow: 0 2px 8px rgba(23, 55, 47, 0.04); touch-action: manipulation; } .operations-dashboard-table-row:hover, .operations-dashboard-table-row:focus-visible, .operations-dashboard-table-row.is-selected { border-color: #8fb2a4; background: #eef5f1; box-shadow: inset 3px 0 0 var(--dashboard-accent), 0 3px 10px rgba(23, 55, 47, 0.07); } .operations-dashboard-table-row td, .operations-dashboard-table-row:last-child td { min-width: 0; height: auto; display: grid; align-content: start; gap: 4px; padding: 0; overflow: visible; border: 0; background: transparent; } .operations-dashboard-table-row:hover td, .operations-dashboard-table-row:focus-visible td, .operations-dashboard-table-row.is-selected td { background: transparent; } .operations-dashboard-table-row td::before { color: var(--dashboard-muted); content: attr(data-label); font-size: 9px; font-weight: 750; letter-spacing: 0.04em; } .operations-dashboard-table-row td:nth-child(1) { grid-column: 1; grid-row: 1; } .operations-dashboard-table-row td:nth-child(2) { grid-column: 1; grid-row: 2; } .operations-dashboard-table-row td:nth-child(3) { grid-column: 2; grid-row: 2; } .operations-dashboard-table-row td:nth-child(4), .operations-dashboard-table-row td:nth-child(5) { grid-column: 1 / -1; padding: 9px 10px; border-radius: 7px; background: #f4f6f3; } .operations-dashboard-table-row td:nth-child(4) { grid-row: 3; } .operations-dashboard-table-row td:nth-child(5) { grid-row: 4; background: #eaf3ef; } .operations-dashboard-table-row td:nth-child(6) { grid-column: 2; grid-row: 1; align-self: start; justify-self: end; } .operations-dashboard-table-row td:nth-child(6)::before { display: none; } .operations-dashboard-table-type { color: var(--dashboard-ink-soft); white-space: normal; } .operations-dashboard-table-copy > span { font-size: 12px; -webkit-line-clamp: 3; } .operations-dashboard-table-empty { display: block; } .operations-dashboard-table-empty td { display: block; padding: 18px 12px; border: 1px solid var(--dashboard-line); border-radius: 9px; background: #ffffff; } .operations-dashboard-table-empty td::before { display: none; } .operations-dashboard-pagination { align-items: center; } .operations-dashboard-pagination .history-pagination-actions { flex: 1 1 auto; justify-content: flex-end; } .operations-dashboard-pagination button { min-height: 44px; } .operations-dashboard-detail { inset: calc(8px + env(safe-area-inset-top)) calc(8px + env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) calc(8px + env(safe-area-inset-left)); width: auto; gap: 12px; padding: 14px; border-radius: 12px; box-shadow: 0 18px 64px rgba(23, 55, 47, 0.28); } .operations-dashboard-detail-head { align-items: center; gap: 10px; padding-bottom: 12px; } .operations-dashboard-detail-head h2 { font-size: 18px; } .operations-dashboard-detail-head button { min-height: 44px; } .operations-dashboard-detail-body { padding: 0 2px calc(4px + env(safe-area-inset-bottom)) 0; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; } .operations-dashboard-detail-facts { grid-template-columns: minmax(0, 1fr); } } .history-page .workbench-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); } .history-page .task-list-panel { grid-template-rows: auto auto auto minmax(0, 1fr) auto; } .history-page .task-card { padding: 10px; } .history-page .task-card.has-history-actions { grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; } .history-page .task-card.is-checked { border-color: #92b8a9; border-left-color: var(--accent); background: #f4faf7; } .task-card-select { align-self: stretch; display: inline-flex; align-items: center; padding: 0 2px; cursor: pointer; } .task-card-actions { display: flex; align-items: center; justify-content: flex-end; gap: 6px; } .task-card-delete, .task-card-archive { min-height: 30px; align-self: center; padding: 0 9px; white-space: nowrap; } @media (max-width: 920px) { .history-page .workbench-grid { grid-template-columns: minmax(0, 1fr); } .history-filters { grid-template-columns: minmax(0, 1fr); } .history-filter-actions { justify-content: flex-end; } .history-batch-actions { flex-wrap: wrap; } .history-batch-message { order: 3; flex-basis: 100%; } .history-pagination { align-items: flex-start; flex-direction: column; } .history-pagination-actions { width: 100%; } .history-pagination-actions button { flex: 1 1 0; } } .parser-routing-page { min-width: 0; min-height: 0; overflow: hidden; } html.parser-routing-page-active, body.parser-routing-page-active { height: auto; min-height: 100%; overflow-x: hidden; overflow-y: auto; } body.parser-routing-page-active .app-shell { height: auto; min-height: 100dvh; grid-template-rows: auto auto; overflow: visible; } body.parser-routing-page-active .parser-routing-page, body.parser-routing-page-active .parser-routing-panel { min-height: 0; overflow: visible; } body.parser-routing-page-active .parser-routing-panel { grid-template-rows: auto auto auto auto; } body.parser-routing-page-active .parser-routing-table-wrap { overflow-x: auto; overflow-y: visible; } .parser-routing-panel { min-height: 100%; padding: 16px; display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; gap: 12px; overflow: hidden; } .parser-routing-head { align-items: flex-start; } .parser-routing-head h2 { margin: 2px 0 4px; } .parser-emergency-button { min-height: 42px; padding-inline: 16px; white-space: nowrap; } .parser-automation-notice { padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-muted); color: var(--muted); font-size: 13px; line-height: 1.5; } .parser-automation-notice.is-enabled { border-color: #d8b867; background: var(--warn-soft); color: var(--warn); font-weight: 700; } .parser-routing-table-wrap { min-height: 0; overflow: auto; border: 1px solid var(--line); border-radius: 8px; } .parser-routing-table { width: 100%; min-width: 1180px; border-collapse: collapse; font-size: 12px; } .parser-routing-table th, .parser-routing-table td { padding: 11px 10px; border-bottom: 1px solid var(--line); vertical-align: top; text-align: left; } .parser-routing-table th { position: sticky; top: 0; z-index: 1; background: #f0f4f1; color: var(--muted); font-size: 11px; letter-spacing: 0.04em; text-transform: uppercase; } .parser-routing-table tbody tr:last-child td { border-bottom: 0; } .parser-routing-table tbody tr:hover td { background: #fbfcfa; } .parser-business-name, .parser-route-id, .parser-release-order, .parser-version, .parser-revision, .parser-updated-at, .parser-implementation, .parser-gate span, .parser-routing-table td > time, .parser-routing-table td > span { display: block; } .parser-business-name { margin-bottom: 4px; font-size: 13px; } .parser-route-id, .parser-release-order, .parser-version, .parser-revision, .parser-updated-at { margin-top: 4px; color: var(--muted); font-size: 10px; } .parser-release-order { color: var(--accent-dark); font-weight: 700; } .parser-version { max-width: 170px; overflow-wrap: anywhere; } .parser-implementation { width: fit-content; padding: 2px 6px; border-radius: 999px; background: var(--surface-muted); color: var(--muted); font-size: 10px; font-weight: 800; } .parser-implementation.is-ready { background: var(--ok-soft); color: var(--ok); } .parser-mode-select { min-width: 112px; min-height: 34px; border: 1px solid var(--line-strong); border-radius: 7px; background: white; color: var(--ink); font-weight: 800; } .parser-mode-select.mode-shadow { border-color: #7d8ea3; color: #41566e; } .parser-mode-select.mode-auto { border-color: #c59536; color: var(--warn); } .parser-mode-select.mode-program { border-color: #4f927b; color: var(--ok); } .parser-gate { display: grid; gap: 4px; max-width: 260px; } .parser-gate strong { color: var(--warn); } .parser-gate.is-ready strong, .parser-gate-complete { color: var(--ok); } .parser-gate span { color: var(--muted); line-height: 1.45; } .parser-routing-empty { padding: 32px !important; color: var(--muted); text-align: center !important; } .task-parser-tag { display: inline-flex; align-items: center; min-height: 20px; padding: 2px 6px; border-radius: 999px; background: var(--surface-muted); color: var(--muted); font-size: 10px; font-weight: 800; white-space: nowrap; } .task-parser-tag.is-program { background: var(--ok-soft); color: var(--ok); } .task-parser-tag.is-ai { background: var(--process-soft); color: var(--process); } .task-parser-tag.is-fallback { background: var(--warn-soft); color: var(--warn); } .task-parser-tag.is-different { background: var(--bad-soft); color: var(--bad); } .task-parser-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 10px; } .task-parser-diff, .task-parser-review, .task-parser-reparse { margin-top: 10px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-muted); } .task-parser-diff ul { margin: 7px 0 0; padding-left: 20px; color: var(--muted); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 11px; } .task-parser-difference-list { display: grid; gap: 8px; margin-top: 8px; } .task-parser-difference-row { display: grid; gap: 6px; padding: 8px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface); } .task-parser-difference-path { color: var(--muted); font-size: 11px; overflow-wrap: anywhere; } .task-parser-difference-values { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .task-parser-difference-value { min-width: 0; } .task-parser-difference-value > span { display: block; margin-bottom: 3px; color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; } .task-parser-difference-value pre { max-height: 180px; margin: 0; padding: 7px; overflow: auto; border-radius: 6px; background: var(--code-bg, rgba(15, 23, 42, .06)); white-space: pre-wrap; overflow-wrap: anywhere; font: 11px/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; } .task-parser-review, .task-parser-reparse { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .task-parser-review-actions { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; } .danger-secondary-button { border-color: #dbaca7 !important; background: var(--bad-soft) !important; color: var(--bad) !important; } @media (max-width: 920px) { .parser-routing-panel { padding: 12px; } .parser-routing-head, .task-parser-review, .task-parser-reparse { align-items: stretch; flex-direction: column; } .task-parser-grid { grid-template-columns: minmax(0, 1fr); } .task-parser-difference-values { grid-template-columns: minmax(0, 1fr); } .task-parser-review-actions { justify-content: flex-start; } }