/* * AI 觀測台共用視覺系統 * 只在 ewoooc_base.html 的 .momo-observability-mode 啟用,避免污染一般後台頁。 * * Governance: * - 新增觀測頁時,優先使用本檔 token / utility class,不要在 template 內重建一套 hero/table/card。 * - 標題與 KPI 數字使用 --obs-title-size / --obs-value-size,不要再硬寫超大 clamp。 * - 圖表容器使用 .obs-chart-frame 系列;只有資料百分比 width 可保留 inline style。 * - 視覺語言固定為暖色焦糖系、Noto Sans TC、點陣方格;禁止回到紫色、純黑、Times/Georgia。 */ .momo-observability-mode { --obs-ink: var(--momo-ink, #302720); --obs-muted: var(--momo-muted, #8b8077); --obs-paper: var(--momo-paper, #fff8ef); --obs-accent: var(--momo-accent, #c96442); --obs-accent-soft: rgba(201, 100, 66, 0.12); --obs-line: rgba(86, 64, 48, 0.14); --obs-card: rgba(255, 252, 246, 0.92); --obs-green: #4f8a5b; --obs-amber: #b8792f; --obs-red: #b94b45; --obs-blue: #4f6f8f; --obs-radius-lg: 8px; --obs-radius-md: 8px; --obs-shadow: 0 18px 44px rgba(70, 46, 28, 0.09); --obs-dot: radial-gradient(circle, rgba(201, 100, 66, 0.18) 1px, transparent 1.3px); --obs-title-size: 2.25rem; --obs-value-size: 2rem; } .momo-observability-mode .momo-content { background: var(--obs-dot), radial-gradient(circle at 8% 4%, rgba(201, 100, 66, 0.12), transparent 24rem), radial-gradient(circle at 100% 20%, rgba(79, 111, 143, 0.11), transparent 26rem), linear-gradient(180deg, rgba(255, 248, 239, 0.65), rgba(255, 253, 248, 0.96)); background-size: 18px 18px, auto, auto, auto; color: var(--obs-ink); font-family: 'Noto Sans TC', 'Inter', sans-serif; } .momo-observability-mode .momo-content::before { content: ""; position: fixed; inset: 64px 0 auto 260px; height: 180px; pointer-events: none; background: linear-gradient(180deg, rgba(255, 248, 239, 0.92), rgba(255, 248, 239, 0)); z-index: 0; } .momo-observability-mode .container-fluid, .momo-observability-mode .obs-warroom, .momo-observability-mode .agent-page, .momo-observability-mode .biz-warroom, .momo-observability-mode .runtime-page, .momo-observability-mode .calls-page, .momo-observability-mode .gov-page, .momo-observability-mode .gate-page, .momo-observability-mode .rag-page, .momo-observability-mode .quality-page, .momo-observability-mode .ppt-page { position: relative; z-index: 1; } .momo-observability-mode .container-fluid > h2:first-child { position: relative; margin-bottom: 1.1rem !important; padding: 1.2rem 1.25rem; border: 1px solid var(--obs-line); border-radius: 24px; background: radial-gradient(circle at 16% 10%, rgba(201, 100, 66, 0.16), transparent 20rem), linear-gradient(135deg, rgba(255, 248, 239, 0.96), rgba(255, 255, 255, 0.76)); box-shadow: 0 18px 42px rgba(70, 46, 28, 0.08); color: var(--obs-ink); font-family: 'Noto Sans TC', 'Inter', sans-serif; font-size: var(--obs-title-size); letter-spacing: -0.045em; } .momo-observability-mode .container-fluid > h2:first-child small { display: block; margin-top: 0.3rem; color: var(--obs-muted) !important; font-family: 'Noto Sans TC', sans-serif; font-size: 0.88rem; font-weight: 500; letter-spacing: 0; } .momo-observability-mode .card { border: 1px solid var(--obs-line); border-radius: 22px; background: var(--obs-card); box-shadow: 0 14px 34px rgba(70, 46, 28, 0.07); overflow: hidden; } .momo-observability-mode .card-header { border-bottom: 1px solid var(--obs-line); background: linear-gradient(90deg, rgba(255, 248, 239, 0.92), rgba(255, 255, 255, 0.72)) !important; color: var(--obs-ink); font-weight: 800; } .momo-observability-mode .card-body { color: var(--obs-ink); } .momo-observability-mode .card-footer { border-top: 1px solid var(--obs-line); background: rgba(255, 248, 239, 0.56); } .momo-observability-mode .text-muted { color: var(--obs-muted) !important; } .momo-observability-mode h3, .momo-observability-mode h4, .momo-observability-mode h5 { letter-spacing: -0.035em; } .momo-observability-mode h1, .momo-observability-mode h2, .momo-observability-mode h3, .momo-observability-mode h4, .momo-observability-mode h5, .momo-observability-mode h6 { color: var(--obs-ink); font-family: 'Noto Sans TC', 'Inter', sans-serif !important; font-weight: 850; } .momo-observability-mode .obs-title, .momo-observability-mode .agent-title, .momo-observability-mode .biz-command h1, .momo-observability-mode .runtime-title, .momo-observability-mode .calls-title, .momo-observability-mode .gov-title, .momo-observability-mode .gate-title, .momo-observability-mode .rag-title, .momo-observability-mode .quality-title, .momo-observability-mode .ppt-title { max-width: 780px; font-family: 'Noto Sans TC', 'Inter', sans-serif !important; font-size: clamp(1.9rem, 3.2vw, 2.75rem) !important; line-height: 1.12 !important; letter-spacing: -0.045em !important; font-weight: 860 !important; } .momo-observability-mode .obs-hero, .momo-observability-mode .agent-hero, .momo-observability-mode .biz-command, .momo-observability-mode .runtime-hero, .momo-observability-mode .calls-hero, .momo-observability-mode .gov-hero, .momo-observability-mode .gate-hero, .momo-observability-mode .rag-hero, .momo-observability-mode .quality-hero, .momo-observability-mode .ppt-hero { position: relative; overflow: hidden; border: 1px solid rgba(201, 100, 66, 0.16) !important; border-radius: 28px !important; box-shadow: var(--obs-shadow) !important; padding-top: clamp(1.05rem, 2vw, 1.65rem) !important; padding-bottom: clamp(1.05rem, 2vw, 1.65rem) !important; } .momo-observability-mode .obs-hero::after, .momo-observability-mode .agent-hero::after, .momo-observability-mode .biz-command::after, .momo-observability-mode .runtime-hero::after, .momo-observability-mode .calls-hero::after, .momo-observability-mode .gov-hero::after, .momo-observability-mode .gate-hero::after, .momo-observability-mode .rag-hero::after, .momo-observability-mode .quality-hero::after, .momo-observability-mode .ppt-hero::after, .momo-observability-mode .obs-panel::after, .momo-observability-mode .agent-panel::after, .momo-observability-mode .biz-panel::after, .momo-observability-mode .runtime-panel::after, .momo-observability-mode .calls-panel::after, .momo-observability-mode .gov-panel::after, .momo-observability-mode .gate-panel::after, .momo-observability-mode .rag-panel::after, .momo-observability-mode .quality-panel::after, .momo-observability-mode .ppt-panel::after { content: ""; position: absolute; inset: auto 0 0 auto; width: 220px; height: 120px; pointer-events: none; opacity: 0.46; background-image: var(--obs-dot); background-size: 12px 12px; mask-image: linear-gradient(135deg, transparent, #000); } .momo-observability-mode .obs-kicker, .momo-observability-mode .agent-kicker, .momo-observability-mode .biz-kicker, .momo-observability-mode .runtime-kicker, .momo-observability-mode .calls-kicker, .momo-observability-mode .gov-kicker, .momo-observability-mode .gate-kicker, .momo-observability-mode .rag-kicker, .momo-observability-mode .quality-kicker, .momo-observability-mode .ppt-kicker, .momo-observability-mode [class$="-label"] { color: color-mix(in srgb, var(--obs-accent) 74%, var(--obs-muted)) !important; font-size: 0.74rem !important; font-weight: 850 !important; letter-spacing: 0.11em !important; text-transform: uppercase; } .momo-observability-mode .obs-subtitle, .momo-observability-mode .agent-subtitle, .momo-observability-mode .biz-command p, .momo-observability-mode .runtime-subtitle, .momo-observability-mode .calls-subtitle, .momo-observability-mode .gov-subtitle, .momo-observability-mode .gate-subtitle, .momo-observability-mode .rag-subtitle, .momo-observability-mode .quality-subtitle, .momo-observability-mode .ppt-subtitle { color: color-mix(in srgb, var(--obs-ink) 62%, var(--obs-muted)) !important; font-size: 0.94rem !important; line-height: 1.68 !important; letter-spacing: 0 !important; } .momo-observability-mode .obs-signal, .momo-observability-mode .agent-signal, .momo-observability-mode .biz-signal, .momo-observability-mode .runtime-signal, .momo-observability-mode .calls-signal, .momo-observability-mode .gov-signal, .momo-observability-mode .gate-signal, .momo-observability-mode .rag-signal, .momo-observability-mode .quality-signal, .momo-observability-mode .ppt-signal, .momo-observability-mode .obs-panel, .momo-observability-mode .agent-panel, .momo-observability-mode .biz-panel, .momo-observability-mode .runtime-panel, .momo-observability-mode .calls-panel, .momo-observability-mode .gov-panel, .momo-observability-mode .gate-panel, .momo-observability-mode .rag-panel, .momo-observability-mode .quality-panel, .momo-observability-mode .ppt-panel, .momo-observability-mode .obs-table-shell, .momo-observability-mode [class$="-table-shell"] { position: relative; border: 1px solid var(--obs-line) !important; border-radius: var(--obs-radius-lg) !important; background: linear-gradient(180deg, rgba(255, 252, 247, 0.96), rgba(255, 248, 241, 0.9)), var(--obs-dot) !important; background-size: auto, 14px 14px !important; box-shadow: var(--obs-shadow) !important; } .momo-observability-mode .obs-signal-value, .momo-observability-mode .agent-value, .momo-observability-mode .biz-signal .value, .momo-observability-mode .runtime-value, .momo-observability-mode .calls-value, .momo-observability-mode .gov-value, .momo-observability-mode .gate-value, .momo-observability-mode .rag-value, .momo-observability-mode .quality-value, .momo-observability-mode .ppt-value { font-size: clamp(1.55rem, 3vw, 2.25rem) !important; line-height: 1.05 !important; letter-spacing: -0.055em !important; font-weight: 900 !important; } .momo-observability-mode .obs-panel-title, .momo-observability-mode .agent-panel-title, .momo-observability-mode .biz-panel-head h3, .momo-observability-mode .runtime-panel-title, .momo-observability-mode .calls-panel-title, .momo-observability-mode .gov-panel-title, .momo-observability-mode .gate-panel-title, .momo-observability-mode .rag-panel-title, .momo-observability-mode .quality-panel-title, .momo-observability-mode .ppt-panel-title, .momo-observability-mode [class$="-table-title"] h3 { font-size: clamp(1.05rem, 2vw, 1.45rem) !important; line-height: 1.25 !important; letter-spacing: -0.035em !important; } .momo-observability-mode code, .momo-observability-mode .momo-mono, .momo-observability-mode table td, .momo-observability-mode table th { font-variant-numeric: tabular-nums; } .momo-observability-mode .table { --bs-table-bg: transparent; --bs-table-striped-bg: rgba(255, 248, 239, 0.46); color: var(--obs-ink); margin-bottom: 0; font-size: 0.9rem; } .momo-observability-mode .table thead, .momo-observability-mode .table-light { --bs-table-bg: rgba(255, 248, 239, 0.9); color: var(--obs-muted); font-size: 0.74rem; letter-spacing: 0.08em; text-transform: uppercase; } .momo-observability-mode .table td, .momo-observability-mode .table th { border-color: rgba(86, 64, 48, 0.1); vertical-align: middle; padding: 0.78rem 0.82rem; } .momo-observability-mode .table-responsive { border-radius: 18px; overflow-x: auto; } .momo-observability-mode table code, .momo-observability-mode .biz-table code { color: #7c402e; background: rgba(201, 100, 66, 0.08); border-radius: 0.45rem; padding: 0.12rem 0.36rem; } .momo-observability-mode .biz-panel-body.table-responsive { max-width: 100%; overflow-x: auto; } .momo-observability-mode .biz-table { min-width: 760px; max-width: 100%; } .momo-observability-mode .biz-table td, .momo-observability-mode .biz-table th { overflow-wrap: anywhere; } .momo-observability-mode .biz-table td:nth-child(3), .momo-observability-mode .biz-table td:last-child { max-width: 220px; } .momo-observability-mode .btn { border-radius: 999px; font-weight: 760; letter-spacing: -0.01em; min-height: 2.25rem; padding-inline: 0.9rem; box-shadow: none; transition: transform 160ms ease, box-shadow 160ms ease, background-color 160ms ease; } .momo-observability-mode .btn-primary, .momo-observability-mode .btn-warning, .momo-observability-mode .btn-success { border-color: var(--obs-accent) !important; background: var(--obs-accent) !important; color: #fff8ef !important; } .momo-observability-mode .btn-outline-primary, .momo-observability-mode .btn-outline-secondary, .momo-observability-mode .btn-outline-info, .momo-observability-mode .btn-outline-warning, .momo-observability-mode .btn-outline-danger, .momo-observability-mode .btn-outline-success { border-color: rgba(201, 100, 66, 0.34) !important; color: var(--obs-accent) !important; background: rgba(255, 255, 255, 0.5); } .momo-observability-mode .btn:hover { transform: translateY(-1px); box-shadow: 0 10px 22px rgba(201, 100, 66, 0.14); } .momo-observability-mode .badge.bg-secondary, .momo-observability-mode .badge.bg-primary, .momo-observability-mode .badge.bg-info { background: rgba(79, 111, 143, 0.14) !important; color: var(--obs-blue) !important; } .momo-observability-mode .badge.bg-warning { background: rgba(184, 121, 47, 0.14) !important; color: var(--obs-amber) !important; } .momo-observability-mode .badge.bg-danger { background: rgba(185, 75, 69, 0.14) !important; color: var(--obs-red) !important; } .momo-observability-mode .badge.bg-success { background: rgba(79, 138, 91, 0.14) !important; color: var(--obs-green) !important; } .momo-observability-mode .alert { border-radius: 18px; border-color: rgba(184, 121, 47, 0.24); background: rgba(184, 121, 47, 0.08); color: var(--obs-amber); } .momo-observability-mode .obs-empty, .momo-observability-mode .agent-empty, .momo-observability-mode .biz-empty, .momo-observability-mode .runtime-empty, .momo-observability-mode .calls-empty, .momo-observability-mode .gov-empty, .momo-observability-mode .gate-empty, .momo-observability-mode .rag-empty, .momo-observability-mode .quality-empty, .momo-observability-mode .ppt-empty, .momo-observability-mode .text-center.text-muted { border: 1px dashed rgba(201, 100, 66, 0.24); border-radius: 16px; background: linear-gradient(135deg, rgba(255, 248, 239, 0.74), rgba(255, 252, 247, 0.82)), var(--obs-dot); background-size: auto, 14px 14px; } .momo-observability-mode canvas { max-width: 100%; } /* Data surface polish: tables, matrices, lists */ .momo-observability-mode .obs-table-shell, .momo-observability-mode [class$="-table-shell"], .momo-observability-mode .table-responsive { background: linear-gradient(180deg, rgba(255, 252, 247, 0.96), rgba(255, 248, 241, 0.9)), var(--obs-dot); background-size: auto, 14px 14px; } .momo-observability-mode .table { border-collapse: separate; border-spacing: 0; } .momo-observability-mode .table thead th { position: relative; background: rgba(255, 243, 232, 0.92) !important; color: #7a5b4d !important; border-bottom: 1px solid rgba(201, 100, 66, 0.18) !important; font-size: 0.72rem; font-weight: 850; white-space: nowrap; } .momo-observability-mode .table tbody tr { transition: background-color 140ms ease, transform 140ms ease; } .momo-observability-mode .table tbody tr:hover { background: rgba(201, 100, 66, 0.045); } .momo-observability-mode .table tbody td { color: color-mix(in srgb, var(--obs-ink) 88%, var(--obs-muted)); } .momo-observability-mode .table td small, .momo-observability-mode .table td .text-muted { line-height: 1.45; } .momo-observability-mode .table td:last-child { max-width: 360px; } .momo-observability-mode .table td:last-child small, .momo-observability-mode .table td:last-child .text-muted { display: inline-block; max-width: 100%; overflow-wrap: anywhere; } .momo-observability-mode .agent-table-shell .table td, .momo-observability-mode .agent-table-shell .table th { text-align: center; } .momo-observability-mode .agent-table-shell .table td:first-child, .momo-observability-mode .agent-table-shell .table th:first-child { text-align: left; min-width: 190px; } .momo-observability-mode .agent-card, .momo-observability-mode .rec-card, .momo-observability-mode .fix-card, .momo-observability-mode .root-card, .momo-observability-mode .episode-card, .momo-observability-mode .biz-decision-card, .momo-observability-mode .obs-route-card { box-shadow: 0 10px 24px rgba(70, 46, 28, 0.055); } .momo-observability-mode .agent-card:hover, .momo-observability-mode .rec-card:hover, .momo-observability-mode .fix-card:hover, .momo-observability-mode .root-card:hover, .momo-observability-mode .episode-card:hover, .momo-observability-mode .biz-decision-card:hover, .momo-observability-mode .obs-route-card:hover { transform: translateY(-1px); box-shadow: 0 16px 32px rgba(70, 46, 28, 0.09); } .momo-observability-mode .progress, .momo-observability-mode .agent-meter { background: rgba(86, 64, 48, 0.09) !important; box-shadow: inset 0 1px 2px rgba(70, 46, 28, 0.08); } .momo-observability-mode .progress-bar { background: linear-gradient(90deg, var(--obs-accent), #e3a65b) !important; } .momo-observability-mode .form-control, .momo-observability-mode .form-select { border-color: rgba(201, 100, 66, 0.18); border-radius: 14px; background-color: rgba(255, 252, 247, 0.88); color: var(--obs-ink); } .momo-observability-mode .form-control:focus, .momo-observability-mode .form-select:focus { border-color: rgba(201, 100, 66, 0.52); box-shadow: 0 0 0 0.2rem rgba(201, 100, 66, 0.12); } .momo-observability-mode .badge { border-radius: 999px; font-weight: 850; letter-spacing: -0.01em; padding: 0.36em 0.62em; } .momo-observability-mode .obs-chart-frame { height: 250px; min-height: 220px; } .momo-observability-mode .obs-chart-frame-tall { height: 260px; } .momo-observability-mode .obs-chart-frame-slim { height: 86px; min-height: 72px; } .momo-observability-mode .obs-progress-xs { height: 6px; } .momo-observability-mode .obs-progress-sm { height: 8px; } .momo-observability-mode .obs-modal-preview { border: 1px solid rgba(201, 100, 66, 0.14); border-radius: 14px; background: linear-gradient(135deg, rgba(255, 252, 247, 0.94), rgba(255, 248, 241, 0.84)), var(--obs-dot); background-size: auto, 13px 13px; } .momo-observability-mode .quality-distribution-cell { width: 200px; } .momo-observability-mode .budget-input { width: 110px; max-width: 100%; } .momo-observability-mode .alert-input { width: 80px; max-width: 100%; } /* Cross-page layout hardening */ .momo-observability-mode .momo-content { overflow-x: hidden; } .momo-observability-mode .obs-warroom, .momo-observability-mode .agent-page, .momo-observability-mode .biz-warroom, .momo-observability-mode .runtime-page, .momo-observability-mode .calls-page, .momo-observability-mode .gov-page, .momo-observability-mode .gate-page, .momo-observability-mode .rag-page, .momo-observability-mode .quality-page, .momo-observability-mode .ppt-page, .momo-observability-mode .container-fluid { max-width: 1480px; margin-inline: auto; } .momo-observability-mode .obs-grid, .momo-observability-mode .agent-grid, .momo-observability-mode .biz-layout, .momo-observability-mode .runtime-grid, .momo-observability-mode .calls-grid, .momo-observability-mode .gov-grid, .momo-observability-mode .gate-grid, .momo-observability-mode .rag-grid, .momo-observability-mode .quality-grid, .momo-observability-mode .ppt-grid { gap: 1rem !important; } .momo-observability-mode .obs-command-strip, .momo-observability-mode .agent-command, .momo-observability-mode .biz-signal-grid, .momo-observability-mode .runtime-command, .momo-observability-mode .calls-command, .momo-observability-mode .gov-command, .momo-observability-mode .gate-command, .momo-observability-mode .rag-command, .momo-observability-mode .quality-command, .momo-observability-mode .ppt-command { align-items: stretch; } .momo-observability-mode .obs-signal, .momo-observability-mode .agent-signal, .momo-observability-mode .biz-signal, .momo-observability-mode .runtime-signal, .momo-observability-mode .calls-signal, .momo-observability-mode .gov-signal, .momo-observability-mode .gate-signal, .momo-observability-mode .rag-signal, .momo-observability-mode .quality-signal, .momo-observability-mode .ppt-signal { min-width: 0; } .momo-observability-mode .obs-panel-body, .momo-observability-mode .agent-panel-body, .momo-observability-mode .biz-panel-body, .momo-observability-mode .runtime-panel-body, .momo-observability-mode .calls-panel-body, .momo-observability-mode .gov-panel-body, .momo-observability-mode .gate-panel-body, .momo-observability-mode .rag-panel-body, .momo-observability-mode .quality-panel-body, .momo-observability-mode .ppt-panel-body { min-width: 0; } .momo-observability-mode [class$="-panel-head"], .momo-observability-mode [class$="-table-title"] { min-width: 0; } .momo-observability-mode [class$="-panel-head"] > div, .momo-observability-mode [class$="-table-title"] > div { min-width: 0; } .momo-observability-mode [class$="-panel-head"] p, .momo-observability-mode [class$="-table-title"] p, .momo-observability-mode .text-muted { overflow-wrap: anywhere; } .momo-observability-mode .obs-route-card, .momo-observability-mode .agent-card, .momo-observability-mode .biz-decision-card, .momo-observability-mode .rec-card, .momo-observability-mode .fix-card, .momo-observability-mode .root-card { min-width: 0; transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease; } .momo-observability-mode .obs-route-card:focus-visible, .momo-observability-mode .btn:focus-visible, .momo-observability-mode .form-control:focus-visible, .momo-observability-mode .form-select:focus-visible { outline: 3px solid rgba(201, 100, 66, 0.28); outline-offset: 2px; } .momo-observability-mode .alert { overflow-wrap: anywhere; } .momo-observability-mode .modal-content { border: 1px solid var(--obs-line); border-radius: 24px; background: var(--obs-paper); box-shadow: 0 24px 70px rgba(70, 46, 28, 0.18); } .momo-observability-mode .modal-header, .momo-observability-mode .modal-footer { border-color: var(--obs-line); } @media (max-width: 1180px) { .momo-observability-mode .obs-grid, .momo-observability-mode .agent-grid, .momo-observability-mode .biz-layout, .momo-observability-mode .runtime-grid, .momo-observability-mode .calls-grid, .momo-observability-mode .gov-grid, .momo-observability-mode .gate-grid, .momo-observability-mode .rag-grid, .momo-observability-mode .quality-grid, .momo-observability-mode .ppt-grid { grid-template-columns: 1fr !important; } .momo-observability-mode .obs-command-strip, .momo-observability-mode .agent-command, .momo-observability-mode .biz-signal-grid, .momo-observability-mode .runtime-command, .momo-observability-mode .calls-command, .momo-observability-mode .gov-command, .momo-observability-mode .gate-command, .momo-observability-mode .rag-command, .momo-observability-mode .quality-command, .momo-observability-mode .ppt-command { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } @media (max-width: 768px) { .momo-observability-mode .container-fluid { padding-left: 0.7rem; padding-right: 0.7rem; } .momo-observability-mode .momo-content { padding-left: 0.85rem; padding-right: 0.85rem; } .momo-observability-mode .table-responsive, .momo-observability-mode .card-body.p-0 { overflow-x: auto; } .momo-observability-mode .obs-title, .momo-observability-mode .agent-title, .momo-observability-mode .biz-command h1, .momo-observability-mode .runtime-title, .momo-observability-mode .calls-title, .momo-observability-mode .gov-title, .momo-observability-mode .gate-title, .momo-observability-mode .rag-title, .momo-observability-mode .quality-title, .momo-observability-mode .ppt-title { font-size: clamp(1.8rem, 10vw, 2.45rem) !important; } .momo-observability-mode .obs-command-strip, .momo-observability-mode .agent-command, .momo-observability-mode .biz-signal-grid, .momo-observability-mode .runtime-command, .momo-observability-mode .calls-command, .momo-observability-mode .gov-command, .momo-observability-mode .gate-command, .momo-observability-mode .rag-command, .momo-observability-mode .quality-command, .momo-observability-mode .ppt-command { grid-template-columns: 1fr !important; } .momo-observability-mode .obs-hero, .momo-observability-mode .agent-hero, .momo-observability-mode .biz-command, .momo-observability-mode .runtime-hero, .momo-observability-mode .calls-hero, .momo-observability-mode .gov-hero, .momo-observability-mode .gate-hero, .momo-observability-mode .rag-hero, .momo-observability-mode .quality-hero, .momo-observability-mode .ppt-hero { border-radius: 22px !important; } .momo-observability-mode .obs-panel, .momo-observability-mode .agent-panel, .momo-observability-mode .biz-panel, .momo-observability-mode .runtime-panel, .momo-observability-mode .calls-panel, .momo-observability-mode .gov-panel, .momo-observability-mode .gate-panel, .momo-observability-mode .rag-panel, .momo-observability-mode .quality-panel, .momo-observability-mode .ppt-panel, .momo-observability-mode [class$="-table-shell"] { border-radius: 20px !important; } .momo-observability-mode .table { font-size: 0.84rem; } .momo-observability-mode .btn { min-height: 2.45rem; } .momo-observability-mode .momo-content::before { left: 0; } } /* v2.2 professional polish: cross-page hierarchy, tables, buttons, and dense data layouts. */ .momo-observability-mode { --obs-surface-warm: rgba(255, 248, 238, 0.72); --obs-surface-glass: rgba(255, 252, 246, 0.78); --obs-focus-ring: 0 0 0 3px rgba(201, 100, 66, 0.18); } .momo-observability-mode .momo-content { font-feature-settings: "tnum" 1, "kern" 1; } .momo-observability-mode .obs-hero, .momo-observability-mode .agent-hero, .momo-observability-mode .biz-command, .momo-observability-mode .runtime-hero, .momo-observability-mode .calls-hero, .momo-observability-mode .gov-hero, .momo-observability-mode .gate-hero, .momo-observability-mode .rag-hero, .momo-observability-mode .quality-hero, .momo-observability-mode .ppt-hero { background: radial-gradient(circle at 14% 16%, rgba(201, 100, 66, 0.19), transparent 24rem), radial-gradient(circle at 86% 10%, rgba(79, 111, 143, 0.14), transparent 24rem), linear-gradient(135deg, rgba(255, 248, 238, 0.98), rgba(255, 252, 246, 0.82) 58%, rgba(247, 234, 219, 0.92)) !important; } .momo-observability-mode .obs-panel, .momo-observability-mode .agent-panel, .momo-observability-mode .biz-panel, .momo-observability-mode .runtime-panel, .momo-observability-mode .calls-panel, .momo-observability-mode .gov-panel, .momo-observability-mode .gate-panel, .momo-observability-mode .rag-panel, .momo-observability-mode .quality-panel, .momo-observability-mode .ppt-panel, .momo-observability-mode .card { position: relative; background: linear-gradient(180deg, var(--obs-surface-glass), rgba(255, 255, 255, 0.7)) !important; backdrop-filter: blur(10px); } .momo-observability-mode .obs-panel-head, .momo-observability-mode .agent-panel-head, .momo-observability-mode .biz-panel-head, .momo-observability-mode .runtime-panel-head, .momo-observability-mode .calls-panel-head, .momo-observability-mode .gov-panel-head, .momo-observability-mode .gate-panel-head, .momo-observability-mode .rag-panel-head, .momo-observability-mode .quality-panel-head, .momo-observability-mode .ppt-panel-head, .momo-observability-mode .card-header { min-height: 54px; align-items: center; } .momo-observability-mode .obs-panel-title, .momo-observability-mode .agent-panel-title, .momo-observability-mode .biz-panel-title, .momo-observability-mode .runtime-panel-title, .momo-observability-mode .calls-panel-title, .momo-observability-mode .gov-panel-title, .momo-observability-mode .gate-panel-title, .momo-observability-mode .rag-panel-title, .momo-observability-mode .quality-panel-title, .momo-observability-mode .ppt-panel-title, .momo-observability-mode .card-title { color: var(--obs-ink) !important; font-size: clamp(1rem, 1.35vw, 1.16rem) !important; line-height: 1.34; } .momo-observability-mode .obs-value, .momo-observability-mode .agent-value, .momo-observability-mode .biz-value, .momo-observability-mode .runtime-value, .momo-observability-mode .calls-value, .momo-observability-mode .gov-value, .momo-observability-mode .gate-value, .momo-observability-mode .rag-value, .momo-observability-mode .quality-value, .momo-observability-mode .ppt-value, .momo-observability-mode .obs-signal-value, .momo-observability-mode .display-4, .momo-observability-mode .display-5, .momo-observability-mode .h1 { font-family: 'JetBrains Mono', 'Noto Sans TC', monospace !important; font-size: var(--obs-value-size) !important; font-weight: 850 !important; letter-spacing: -0.055em !important; } .momo-observability-mode .table, .momo-observability-mode table { --bs-table-bg: transparent; --bs-table-color: var(--obs-ink); color: var(--obs-ink); border-collapse: separate !important; border-spacing: 0 0.42rem !important; font-size: 0.9rem; } .momo-observability-mode .table thead th, .momo-observability-mode table thead th { border: 0 !important; color: color-mix(in srgb, var(--obs-ink) 70%, var(--obs-muted)) !important; background: transparent !important; font-size: 0.7rem; font-weight: 900; letter-spacing: 0.08em; text-transform: uppercase; } .momo-observability-mode .table tbody tr, .momo-observability-mode table tbody tr { box-shadow: 0 8px 20px rgba(70, 46, 28, 0.045); } .momo-observability-mode .table tbody td, .momo-observability-mode table tbody td { padding: 0.72rem 0.78rem !important; border-top: 1px solid var(--obs-line) !important; border-bottom: 1px solid var(--obs-line) !important; background: rgba(255, 255, 255, 0.62) !important; vertical-align: middle; } .momo-observability-mode .table tbody td:first-child, .momo-observability-mode table tbody td:first-child { border-left: 1px solid var(--obs-line) !important; border-radius: 14px 0 0 14px; } .momo-observability-mode .table tbody td:last-child, .momo-observability-mode table tbody td:last-child { border-right: 1px solid var(--obs-line) !important; border-radius: 0 14px 14px 0; } .momo-observability-mode .btn { border-radius: 999px !important; font-weight: 850 !important; letter-spacing: 0.01em; box-shadow: none !important; } .momo-observability-mode .btn:focus-visible, .momo-observability-mode a:focus-visible, .momo-observability-mode button:focus-visible { outline: 0; box-shadow: var(--obs-focus-ring) !important; } .momo-observability-mode .btn-primary, .momo-observability-mode .btn-warning, .momo-observability-mode .btn-danger, .momo-observability-mode .btn-success { color: #fff8ee !important; border-color: transparent !important; } .momo-observability-mode .btn-outline-primary, .momo-observability-mode .btn-outline-secondary, .momo-observability-mode .btn-outline-warning, .momo-observability-mode .btn-outline-danger, .momo-observability-mode .btn-outline-success { background: rgba(255, 248, 238, 0.58) !important; border-color: rgba(201, 100, 66, 0.28) !important; } .momo-observability-mode .badge, .momo-observability-mode .obs-pill, .momo-observability-mode [class$="-pill"] { border: 1px solid rgba(201, 100, 66, 0.18); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5); } .momo-observability-mode .progress { height: 0.62rem; border-radius: 999px; background: rgba(70, 46, 28, 0.08); overflow: hidden; } .momo-observability-mode .list-group-item, .momo-observability-mode .dropdown-menu, .momo-observability-mode .modal-content, .momo-observability-mode .alert { border-color: var(--obs-line) !important; background: rgba(255, 252, 246, 0.96) !important; color: var(--obs-ink) !important; box-shadow: 0 16px 38px rgba(70, 46, 28, 0.08); } .momo-observability-mode .obs-chart-frame, .momo-observability-mode .chart-frame, .momo-observability-mode .chart-container { position: relative; min-height: 240px; padding: 0.85rem; border: 1px solid var(--obs-line); border-radius: 20px; background: radial-gradient(circle at 12px 12px, rgba(201, 100, 66, 0.13) 1px, transparent 1.35px), rgba(255, 255, 255, 0.52); background-size: 13px 13px, auto; } .momo-observability-mode canvas { max-width: 100%; } @media (max-width: 992px) { .momo-observability-mode .obs-command-strip, .momo-observability-mode .obs-grid, .momo-observability-mode .obs-metric-grid, .momo-observability-mode .agent-grid, .momo-observability-mode .biz-grid, .momo-observability-mode .runtime-grid, .momo-observability-mode .calls-grid, .momo-observability-mode .gov-grid, .momo-observability-mode .gate-grid, .momo-observability-mode .rag-grid, .momo-observability-mode .quality-grid, .momo-observability-mode .ppt-grid { grid-template-columns: 1fr !important; } .momo-observability-mode .obs-host-card { grid-template-columns: 1fr !important; } } /* v3 alignment: the observability cockpit must obey the same production UI * guardrails as the refreshed V3 pages, even when older page-level inline CSS * is still present in individual templates. */ .momo-observability-mode { --obs-title-size: 2.25rem; --obs-value-size: 2rem; --obs-radius-lg: 8px; --obs-radius-md: 8px; --obs-card: rgba(255, 252, 246, 0.94); --obs-surface-warm: rgba(255, 248, 238, 0.72); --obs-surface-glass: rgba(255, 252, 246, 0.82); } .momo-observability-mode .momo-content { background: var(--obs-dot), linear-gradient(180deg, rgba(255, 248, 239, 0.72), rgba(255, 253, 248, 0.96)) !important; background-size: 18px 18px, auto !important; } .momo-observability-mode .container-fluid > h2:first-child, .momo-observability-mode .obs-hero, .momo-observability-mode .agent-hero, .momo-observability-mode .biz-command, .momo-observability-mode .runtime-hero, .momo-observability-mode .calls-hero, .momo-observability-mode .gov-hero, .momo-observability-mode .gate-hero, .momo-observability-mode .rag-hero, .momo-observability-mode .quality-hero, .momo-observability-mode .ppt-hero { border-radius: 8px !important; background: linear-gradient(135deg, rgba(255, 248, 239, 0.98), rgba(247, 234, 219, 0.88)) !important; } .momo-observability-mode .card, .momo-observability-mode .obs-signal, .momo-observability-mode .agent-signal, .momo-observability-mode .biz-signal, .momo-observability-mode .runtime-signal, .momo-observability-mode .calls-signal, .momo-observability-mode .gov-signal, .momo-observability-mode .gate-signal, .momo-observability-mode .rag-signal, .momo-observability-mode .quality-signal, .momo-observability-mode .ppt-signal, .momo-observability-mode .obs-panel, .momo-observability-mode .agent-panel, .momo-observability-mode .biz-panel, .momo-observability-mode .runtime-panel, .momo-observability-mode .calls-panel, .momo-observability-mode .gov-panel, .momo-observability-mode .gate-panel, .momo-observability-mode .rag-panel, .momo-observability-mode .quality-panel, .momo-observability-mode .ppt-panel, .momo-observability-mode .obs-table-shell, .momo-observability-mode [class$="-table-shell"], .momo-observability-mode .agent-card, .momo-observability-mode .rec-card, .momo-observability-mode .fix-card, .momo-observability-mode .root-card, .momo-observability-mode .episode-card, .momo-observability-mode .biz-decision-card, .momo-observability-mode .obs-route-card, .momo-observability-mode [class$="-mini"], .momo-observability-mode .strategy-card, .momo-observability-mode .episode-text, .momo-observability-mode .similar-box, .momo-observability-mode .host-lane, .momo-observability-mode .list-group-item, .momo-observability-mode .dropdown-menu, .momo-observability-mode .modal-content, .momo-observability-mode .alert, .momo-observability-mode .obs-chart-frame, .momo-observability-mode .chart-frame, .momo-observability-mode .chart-container, .momo-observability-mode .obs-modal-preview, .momo-observability-mode .table-responsive { border-radius: 8px !important; } .momo-observability-mode .obs-panel, .momo-observability-mode .agent-panel, .momo-observability-mode .biz-panel, .momo-observability-mode .runtime-panel, .momo-observability-mode .calls-panel, .momo-observability-mode .gov-panel, .momo-observability-mode .gate-panel, .momo-observability-mode .rag-panel, .momo-observability-mode .quality-panel, .momo-observability-mode .ppt-panel, .momo-observability-mode .card, .momo-observability-mode .obs-signal, .momo-observability-mode .agent-signal, .momo-observability-mode .biz-signal, .momo-observability-mode .runtime-signal, .momo-observability-mode .calls-signal, .momo-observability-mode .gov-signal, .momo-observability-mode .gate-signal, .momo-observability-mode .rag-signal, .momo-observability-mode .quality-signal, .momo-observability-mode .ppt-signal { background: linear-gradient(180deg, rgba(255, 252, 246, 0.96), rgba(255, 248, 241, 0.9)) !important; } .momo-observability-mode .obs-title, .momo-observability-mode .agent-title, .momo-observability-mode .biz-command h1, .momo-observability-mode .runtime-title, .momo-observability-mode .calls-title, .momo-observability-mode .gov-title, .momo-observability-mode .gate-title, .momo-observability-mode .rag-title, .momo-observability-mode .quality-title, .momo-observability-mode .ppt-title { font-size: var(--obs-title-size) !important; letter-spacing: 0 !important; line-height: 1.14 !important; } .momo-observability-mode .obs-signal-value, .momo-observability-mode .obs-value, .momo-observability-mode .agent-value, .momo-observability-mode .biz-value, .momo-observability-mode .biz-signal .value, .momo-observability-mode .runtime-value, .momo-observability-mode .calls-value, .momo-observability-mode .gov-value, .momo-observability-mode .gate-value, .momo-observability-mode .rag-value, .momo-observability-mode .quality-value, .momo-observability-mode .ppt-value, .momo-observability-mode .display-4, .momo-observability-mode .display-5, .momo-observability-mode .h1, .momo-observability-mode [class$="-mini"] strong { font-size: var(--obs-value-size) !important; letter-spacing: 0 !important; } .momo-observability-mode .obs-panel-title, .momo-observability-mode .agent-panel-title, .momo-observability-mode .biz-panel-title, .momo-observability-mode .biz-panel-head h3, .momo-observability-mode .runtime-panel-title, .momo-observability-mode .calls-panel-title, .momo-observability-mode .gov-panel-title, .momo-observability-mode .gate-panel-title, .momo-observability-mode .rag-panel-title, .momo-observability-mode .quality-panel-title, .momo-observability-mode .ppt-panel-title, .momo-observability-mode [class$="-table-title"] h3, .momo-observability-mode .card-title { font-size: 1.1rem !important; letter-spacing: 0 !important; } .momo-observability-mode .btn, .momo-observability-mode .form-control, .momo-observability-mode .form-select { border-radius: 8px !important; } .momo-observability-mode .table tbody td:first-child, .momo-observability-mode table tbody td:first-child { border-radius: 8px 0 0 8px !important; } .momo-observability-mode .table tbody td:last-child, .momo-observability-mode table tbody td:last-child { border-radius: 0 8px 8px 0 !important; } @media (max-width: 768px) { .momo-observability-mode { --obs-title-size: 1.75rem; --obs-value-size: 1.55rem; } .momo-observability-mode .obs-command-strip, .momo-observability-mode .agent-command, .momo-observability-mode .biz-signal-grid, .momo-observability-mode .runtime-command, .momo-observability-mode .calls-command, .momo-observability-mode .gov-command, .momo-observability-mode .gate-command, .momo-observability-mode .rag-command, .momo-observability-mode .quality-command, .momo-observability-mode .ppt-command { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 0.65rem !important; } .momo-observability-mode .obs-hero, .momo-observability-mode .agent-hero, .momo-observability-mode .biz-command, .momo-observability-mode .runtime-hero, .momo-observability-mode .calls-hero, .momo-observability-mode .gov-hero, .momo-observability-mode .gate-hero, .momo-observability-mode .rag-hero, .momo-observability-mode .quality-hero, .momo-observability-mode .ppt-hero { padding: 1rem !important; } .momo-observability-mode .obs-signal, .momo-observability-mode .agent-signal, .momo-observability-mode .biz-signal, .momo-observability-mode .runtime-signal, .momo-observability-mode .calls-signal, .momo-observability-mode .gov-signal, .momo-observability-mode .gate-signal, .momo-observability-mode .rag-signal, .momo-observability-mode .quality-signal, .momo-observability-mode .ppt-signal { min-height: 84px !important; padding: 0.78rem !important; } } /* v3.2 strict alignment: keep all AI observability pages on the production * design spec even when older inline template CSS appears later in the DOM. */ .momo-observability-mode { --obs-ink: var(--momo-text-primary, #2a2520); --obs-muted: var(--momo-text-secondary, #6b6155); --obs-paper: var(--momo-bg-surface, #faf6ec); --obs-card: var(--momo-bg-elevated, #fdfaf2); --obs-accent: var(--momo-page-accent, var(--momo-warm-saffron, #b8792f)); --obs-accent-soft: var(--momo-page-accent-soft, rgba(184, 121, 47, 0.13)); --obs-line: var(--momo-border, rgba(42, 37, 32, 0.16)); --obs-green: var(--momo-success, #5a7a3f); --obs-amber: var(--momo-warning, #b8792f); --obs-red: var(--momo-danger, #a84428); --obs-blue: var(--momo-info, #4a6b85); --obs-radius-lg: 8px; --obs-radius-md: 8px; --obs-shadow: var(--momo-shadow-soft, 0 2px 6px rgba(42, 37, 32, 0.06)); --obs-title-size: 1.8rem; --obs-value-size: 1.85rem; --obs-surface-warm: var(--momo-bg-paper, #f5efe2); --obs-surface-glass: var(--momo-bg-elevated, #fdfaf2); } .momo-observability-mode .momo-content { background-color: var(--momo-bg-body, #f0ebe1) !important; background-image: var(--obs-dot) !important; background-size: 18px 18px !important; color: var(--obs-ink); font-family: var(--momo-font-family, "Inter", "Noto Sans TC", system-ui, sans-serif) !important; overflow-x: clip; } .momo-observability-mode .momo-content::before, .momo-observability-mode .obs-hero::after, .momo-observability-mode .agent-hero::after, .momo-observability-mode .biz-command::after, .momo-observability-mode .runtime-hero::after, .momo-observability-mode .calls-hero::after, .momo-observability-mode .gov-hero::after, .momo-observability-mode .gate-hero::after, .momo-observability-mode .rag-hero::after, .momo-observability-mode .qa-hero::after, .momo-observability-mode .quality-hero::after, .momo-observability-mode .ppt-hero::after, .momo-observability-mode .obs-panel::after, .momo-observability-mode .agent-panel::after, .momo-observability-mode .biz-panel::after, .momo-observability-mode .runtime-panel::after, .momo-observability-mode .calls-panel::after, .momo-observability-mode .gov-panel::after, .momo-observability-mode .gate-panel::after, .momo-observability-mode .rag-panel::after, .momo-observability-mode .qa-panel::after, .momo-observability-mode .quality-panel::after, .momo-observability-mode .ppt-panel::after { display: none !important; } .momo-observability-mode .container-fluid > h2:first-child, .momo-observability-mode .obs-hero, .momo-observability-mode .agent-hero, .momo-observability-mode .biz-command, .momo-observability-mode .runtime-hero, .momo-observability-mode .calls-hero, .momo-observability-mode .gov-hero, .momo-observability-mode .gate-hero, .momo-observability-mode .rag-hero, .momo-observability-mode .qa-hero, .momo-observability-mode .quality-hero, .momo-observability-mode .ppt-hero { border: 1px solid var(--obs-line) !important; border-radius: 8px !important; background-color: var(--momo-bg-surface, #faf6ec) !important; background-image: var(--obs-dot) !important; background-size: 16px 16px !important; box-shadow: var(--obs-shadow) !important; color: var(--obs-ink) !important; padding: 1rem 1.2rem !important; } .momo-observability-mode .card, .momo-observability-mode .obs-signal, .momo-observability-mode .agent-signal, .momo-observability-mode .biz-signal, .momo-observability-mode .runtime-signal, .momo-observability-mode .calls-signal, .momo-observability-mode .gov-signal, .momo-observability-mode .gate-signal, .momo-observability-mode .rag-signal, .momo-observability-mode .qa-signal, .momo-observability-mode .quality-signal, .momo-observability-mode .ppt-signal, .momo-observability-mode .obs-panel, .momo-observability-mode .agent-panel, .momo-observability-mode .biz-panel, .momo-observability-mode .runtime-panel, .momo-observability-mode .calls-panel, .momo-observability-mode .gov-panel, .momo-observability-mode .gate-panel, .momo-observability-mode .rag-panel, .momo-observability-mode .qa-panel, .momo-observability-mode .quality-panel, .momo-observability-mode .ppt-panel, .momo-observability-mode .obs-table-shell, .momo-observability-mode .agent-table-shell, .momo-observability-mode .biz-table-shell, .momo-observability-mode .runtime-table-shell, .momo-observability-mode .calls-table-shell, .momo-observability-mode .gov-table-shell, .momo-observability-mode .gate-table-shell, .momo-observability-mode .rag-table-shell, .momo-observability-mode .qa-table-shell, .momo-observability-mode .quality-table-shell, .momo-observability-mode .ppt-table-shell, .momo-observability-mode .agent-card, .momo-observability-mode .caller-card, .momo-observability-mode .rec-card, .momo-observability-mode .fix-card, .momo-observability-mode .root-card, .momo-observability-mode .episode-card, .momo-observability-mode .biz-decision-card, .momo-observability-mode .obs-route-card, .momo-observability-mode [class$="-mini"], .momo-observability-mode .strategy-card, .momo-observability-mode .episode-text, .momo-observability-mode .similar-box, .momo-observability-mode .host-lane, .momo-observability-mode .list-group-item, .momo-observability-mode .dropdown-menu, .momo-observability-mode .modal-content, .momo-observability-mode .alert, .momo-observability-mode .obs-chart-frame, .momo-observability-mode .chart-frame, .momo-observability-mode .chart-container, .momo-observability-mode .obs-modal-preview, .momo-observability-mode .table-responsive { border-color: var(--obs-line) !important; border-radius: 8px !important; background-color: var(--obs-card) !important; background-image: none !important; box-shadow: var(--obs-shadow) !important; backdrop-filter: none !important; } .momo-observability-mode .obs-table-shell, .momo-observability-mode .agent-table-shell, .momo-observability-mode .biz-table-shell, .momo-observability-mode .runtime-table-shell, .momo-observability-mode .calls-table-shell, .momo-observability-mode .gov-table-shell, .momo-observability-mode .gate-table-shell, .momo-observability-mode .rag-table-shell, .momo-observability-mode .qa-table-shell, .momo-observability-mode .quality-table-shell, .momo-observability-mode .ppt-table-shell, .momo-observability-mode .obs-chart-frame, .momo-observability-mode .chart-frame, .momo-observability-mode .chart-container, .momo-observability-mode .obs-modal-preview { background-color: var(--momo-bg-surface, #faf6ec) !important; background-image: var(--obs-dot) !important; background-size: 14px 14px !important; } .momo-observability-mode h1, .momo-observability-mode h2, .momo-observability-mode h3, .momo-observability-mode h4, .momo-observability-mode h5, .momo-observability-mode h6, .momo-observability-mode .obs-title, .momo-observability-mode .agent-title, .momo-observability-mode .biz-command h1, .momo-observability-mode .runtime-title, .momo-observability-mode .calls-title, .momo-observability-mode .gov-title, .momo-observability-mode .gate-title, .momo-observability-mode .rag-title, .momo-observability-mode .qa-title, .momo-observability-mode .quality-title, .momo-observability-mode .ppt-title { color: var(--obs-ink) !important; font-family: var(--momo-font-display, "Inter", "Noto Sans TC", system-ui, sans-serif) !important; letter-spacing: 0 !important; text-wrap: pretty; } .momo-observability-mode .obs-title, .momo-observability-mode .agent-title, .momo-observability-mode .biz-command h1, .momo-observability-mode .runtime-title, .momo-observability-mode .calls-title, .momo-observability-mode .gov-title, .momo-observability-mode .gate-title, .momo-observability-mode .rag-title, .momo-observability-mode .qa-title, .momo-observability-mode .quality-title, .momo-observability-mode .ppt-title { font-size: var(--obs-title-size) !important; font-weight: 800 !important; line-height: 1.2 !important; max-width: 820px; } .momo-observability-mode .obs-signal-value, .momo-observability-mode .obs-value, .momo-observability-mode .agent-value, .momo-observability-mode .biz-value, .momo-observability-mode .biz-signal .value, .momo-observability-mode .runtime-value, .momo-observability-mode .calls-value, .momo-observability-mode .gov-value, .momo-observability-mode .gate-value, .momo-observability-mode .rag-value, .momo-observability-mode .qa-value, .momo-observability-mode .quality-value, .momo-observability-mode .ppt-value, .momo-observability-mode .display-4, .momo-observability-mode .display-5, .momo-observability-mode .h1, .momo-observability-mode [class$="-mini"] strong { font-family: var(--momo-font-mono, "JetBrains Mono", ui-monospace, monospace) !important; font-size: var(--obs-value-size) !important; font-weight: 800 !important; letter-spacing: 0 !important; line-height: 1.12 !important; font-variant-numeric: tabular-nums; } .momo-observability-mode .obs-kicker, .momo-observability-mode .agent-kicker, .momo-observability-mode .biz-kicker, .momo-observability-mode .runtime-kicker, .momo-observability-mode .calls-kicker, .momo-observability-mode .gov-kicker, .momo-observability-mode .gate-kicker, .momo-observability-mode .rag-kicker, .momo-observability-mode .qa-kicker, .momo-observability-mode .quality-kicker, .momo-observability-mode .ppt-kicker, .momo-observability-mode [class$="-label"], .momo-observability-mode .obs-signal-label, .momo-observability-mode .obs-section-eyebrow, .momo-observability-mode .obs-route-code { color: color-mix(in srgb, var(--obs-accent) 72%, var(--obs-muted)) !important; font-family: var(--momo-font-family, "Inter", "Noto Sans TC", system-ui, sans-serif) !important; font-size: 0.78rem !important; font-weight: 700 !important; letter-spacing: 0.06em !important; text-transform: uppercase; } .momo-observability-mode .obs-subtitle, .momo-observability-mode .agent-subtitle, .momo-observability-mode .biz-command p, .momo-observability-mode .runtime-subtitle, .momo-observability-mode .calls-subtitle, .momo-observability-mode .gov-subtitle, .momo-observability-mode .gate-subtitle, .momo-observability-mode .rag-subtitle, .momo-observability-mode .qa-subtitle, .momo-observability-mode .quality-subtitle, .momo-observability-mode .ppt-subtitle, .momo-observability-mode .obs-signal-note, .momo-observability-mode .qa-note, .momo-observability-mode .text-muted { color: var(--obs-muted) !important; font-size: 0.92rem !important; line-height: 1.55 !important; letter-spacing: 0 !important; } .momo-observability-mode .obs-panel-title, .momo-observability-mode .agent-panel-title, .momo-observability-mode .biz-panel-title, .momo-observability-mode .biz-panel-head h3, .momo-observability-mode .runtime-panel-title, .momo-observability-mode .calls-panel-title, .momo-observability-mode .gov-panel-title, .momo-observability-mode .gate-panel-title, .momo-observability-mode .rag-panel-title, .momo-observability-mode .qa-panel-title, .momo-observability-mode .quality-panel-title, .momo-observability-mode .ppt-panel-title, .momo-observability-mode [class$="-table-title"] h3, .momo-observability-mode .card-title { font-size: 1rem !important; font-weight: 700 !important; letter-spacing: 0 !important; line-height: 1.4 !important; } .momo-observability-mode .obs-command-strip, .momo-observability-mode .agent-command, .momo-observability-mode .biz-signal-grid, .momo-observability-mode .runtime-command, .momo-observability-mode .calls-command, .momo-observability-mode .gov-command, .momo-observability-mode .gate-command, .momo-observability-mode .rag-command, .momo-observability-mode .qa-command, .momo-observability-mode .quality-command, .momo-observability-mode .ppt-command { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: 0.75rem !important; } .momo-observability-mode .obs-grid, .momo-observability-mode .agent-grid, .momo-observability-mode .biz-layout, .momo-observability-mode .runtime-grid, .momo-observability-mode .runtime-main, .momo-observability-mode .calls-grid, .momo-observability-mode .gov-grid, .momo-observability-mode .gate-grid, .momo-observability-mode .rag-grid, .momo-observability-mode .qa-grid, .momo-observability-mode .quality-grid, .momo-observability-mode .ppt-grid { display: grid !important; gap: 1rem !important; } .momo-observability-mode .btn, .momo-observability-mode .form-control, .momo-observability-mode .form-select { border-radius: 8px !important; font-family: var(--momo-font-family, "Inter", "Noto Sans TC", system-ui, sans-serif) !important; letter-spacing: 0 !important; } .momo-observability-mode .btn-primary, .momo-observability-mode .btn-warning, .momo-observability-mode .btn-danger, .momo-observability-mode .btn-success, .momo-observability-mode .progress-bar, .momo-observability-mode .agent-meter span, .momo-observability-mode .caller-meter span { background-color: var(--obs-accent) !important; background-image: none !important; color: var(--momo-page-inverse, #fff8ef) !important; } .momo-observability-mode .btn-outline-primary, .momo-observability-mode .btn-outline-secondary, .momo-observability-mode .btn-outline-info, .momo-observability-mode .btn-outline-warning, .momo-observability-mode .btn-outline-danger, .momo-observability-mode .btn-outline-success { background-color: var(--momo-bg-surface, #faf6ec) !important; background-image: none !important; border-color: var(--obs-line) !important; color: var(--obs-ink) !important; } .momo-observability-mode .table thead th, .momo-observability-mode table thead th { background-color: var(--momo-bg-paper, #f5efe2) !important; color: var(--obs-muted) !important; font-family: var(--momo-font-mono, "JetBrains Mono", ui-monospace, monospace) !important; font-size: 0.82rem !important; font-weight: 700 !important; letter-spacing: 0.05em !important; } .momo-observability-mode .table tbody td, .momo-observability-mode table tbody td { background-color: var(--momo-bg-elevated, #fdfaf2) !important; color: var(--obs-ink) !important; } .momo-observability-mode .table tbody tr:hover td, .momo-observability-mode table tbody tr:hover td { background-color: color-mix(in srgb, var(--obs-accent) 7%, var(--momo-bg-elevated, #fdfaf2)) !important; } @media (max-width: 1180px) { .momo-observability-mode .obs-command-strip, .momo-observability-mode .agent-command, .momo-observability-mode .biz-signal-grid, .momo-observability-mode .runtime-command, .momo-observability-mode .calls-command, .momo-observability-mode .gov-command, .momo-observability-mode .gate-command, .momo-observability-mode .rag-command, .momo-observability-mode .qa-command, .momo-observability-mode .quality-command, .momo-observability-mode .ppt-command, .momo-observability-mode [class$="-mini-grid"] { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .momo-observability-mode .obs-grid, .momo-observability-mode .agent-grid, .momo-observability-mode .biz-layout, .momo-observability-mode .biz-hero, .momo-observability-mode .runtime-grid, .momo-observability-mode .runtime-main, .momo-observability-mode .calls-grid, .momo-observability-mode .gov-grid, .momo-observability-mode .gate-grid, .momo-observability-mode .rag-grid, .momo-observability-mode .qa-grid, .momo-observability-mode .quality-grid, .momo-observability-mode .ppt-grid { grid-template-columns: 1fr !important; } } @media (max-width: 560px) { .momo-observability-mode { --obs-title-size: 1.55rem; --obs-value-size: 1.35rem; } .momo-observability-mode .container-fluid, .momo-observability-mode .momo-content { padding-left: 0.75rem !important; padding-right: 0.75rem !important; } .momo-observability-mode .container-fluid > h2:first-child, .momo-observability-mode .obs-hero, .momo-observability-mode .agent-hero, .momo-observability-mode .biz-command, .momo-observability-mode .runtime-hero, .momo-observability-mode .calls-hero, .momo-observability-mode .gov-hero, .momo-observability-mode .gate-hero, .momo-observability-mode .rag-hero, .momo-observability-mode .qa-hero, .momo-observability-mode .quality-hero, .momo-observability-mode .ppt-hero { padding: 0.9rem !important; } .momo-observability-mode .obs-command-strip, .momo-observability-mode .agent-command, .momo-observability-mode .biz-signal-grid, .momo-observability-mode .runtime-command, .momo-observability-mode .calls-command, .momo-observability-mode .gov-command, .momo-observability-mode .gate-command, .momo-observability-mode .rag-command, .momo-observability-mode .qa-command, .momo-observability-mode .quality-command, .momo-observability-mode .ppt-command, .momo-observability-mode [class$="-mini-grid"] { grid-template-columns: 1fr !important; } } /* v3.3 observability hardening: shared visual system, bounded data surfaces, mobile-safe widths. */ .momo-observability-mode { --obs-title-size: 1.8rem; --obs-value-size: 1.85rem; --obs-shadow: var(--momo-shadow-md, 0 0 0 1px rgba(42, 37, 32, 0.1)); --obs-dot: radial-gradient(color-mix(in srgb, var(--obs-muted) 14%, transparent) 0.8px, transparent 0.8px); } .momo-observability-mode, .momo-observability-mode :where(*) { box-sizing: border-box; min-width: 0; } .momo-observability-mode .momo-content, .momo-observability-mode .container-fluid { max-width: 100%; overflow-x: hidden; } .momo-observability-mode :is( .obs-hero, .agent-hero, .biz-command, .runtime-hero, .calls-hero, .gov-hero, .gate-hero, .rag-hero, .qa-hero, .quality-hero, .ppt-hero, .obs-panel, .agent-panel, .biz-panel, .runtime-panel, .calls-panel, .gov-panel, .gate-panel, .rag-panel, .qa-panel, .quality-panel, .ppt-panel, .obs-signal, .agent-signal, .biz-signal, .runtime-signal, .calls-signal, .gov-signal, .gate-signal, .rag-signal, .qa-signal, .quality-signal, .ppt-signal, .card ) { background-color: var(--momo-bg-surface, #faf6ec) !important; background-image: none !important; border: 1px solid var(--obs-line) !important; border-radius: 8px !important; box-shadow: var(--obs-shadow) !important; color: var(--obs-ink) !important; } .momo-observability-mode :is( .obs-table-shell, .agent-table-shell, .biz-table-shell, .runtime-table-shell, .calls-table-shell, .gov-table-shell, .gate-table-shell, .rag-table-shell, .qa-table-shell, .quality-table-shell, .ppt-table-shell, .table-responsive, .obs-chart-frame, .chart-frame, .chart-container ) { background-color: var(--momo-bg-surface, #faf6ec) !important; background-image: var(--obs-dot) !important; background-size: 14px 14px !important; border-color: var(--obs-line) !important; border-radius: 8px !important; box-shadow: var(--obs-shadow) !important; } .momo-observability-mode :is( .container-fluid > h2:first-child, .obs-title, .agent-title, .biz-title, .runtime-title, .calls-title, .gov-title, .gate-title, .rag-title, .qa-title, .quality-title, .ppt-title ) { color: var(--obs-ink) !important; font-family: var(--momo-font-family, "Inter", "Noto Sans TC", system-ui, sans-serif) !important; font-size: var(--obs-title-size) !important; font-weight: 800 !important; letter-spacing: 0 !important; line-height: 1.25 !important; } .momo-observability-mode :is( .obs-value, .agent-value, .biz-value, .runtime-value, .calls-value, .gov-value, .gate-value, .rag-value, .qa-value, .quality-value, .ppt-value, .kpi-value ) { color: var(--obs-ink) !important; font-family: var(--momo-font-mono, "JetBrains Mono", ui-monospace, monospace) !important; font-size: var(--obs-value-size) !important; font-weight: 800 !important; letter-spacing: 0 !important; line-height: 1.1 !important; } .momo-observability-mode :is( code, pre, .table td, .table th, .episode-text, .similar-box, .fix-card, .root-card, .rec-card, .agent-card, .caller-card, .biz-decision-card, .host-lane, .obs-route-card, .biz-panel-head, .biz-badge ) { overflow-wrap: anywhere; word-break: break-word; } .momo-observability-mode .table { margin-bottom: 0 !important; min-width: 760px; } .momo-observability-mode .table-responsive { max-width: 100%; overflow: auto !important; overscroll-behavior: contain; } .momo-observability-mode .table-responsive .table { min-width: 100%; width: max-content; } .momo-observability-mode :is( .calls-table-shell .table-responsive, .gate-table-shell .table-responsive, .runtime-table-shell .table-responsive, .biz-panel-body.table-responsive, .ppt-table-shell .table-responsive, .qa-table-shell .table-responsive, .rag-table-shell .table-responsive, .agent-table-shell .table-responsive, .quality-table-shell .table-responsive ) { max-height: min(62vh, 640px); overflow: auto !important; } .momo-observability-mode :is( .biz-warroom, .biz-hero, .biz-layout, .biz-panel, .biz-panel-head, .biz-panel-body, .biz-strategy-grid, .biz-strategy-card, .biz-decision-list, .biz-decision-card, .biz-table ) { max-width: 100% !important; min-width: 0 !important; } .momo-observability-mode .biz-panel { overflow: hidden !important; } .momo-observability-mode .biz-panel-head { align-items: flex-start !important; flex-wrap: wrap !important; } .momo-observability-mode .biz-panel-head > div { flex: 1 1 220px; min-width: 0 !important; } .momo-observability-mode .biz-badge { max-width: 100%; white-space: normal; } .momo-observability-mode .biz-strategy-card .metrics { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } .momo-observability-mode .calls-signal { min-height: 0 !important; overflow: hidden !important; } .momo-observability-mode .calls-signal canvas[data-spark] { display: block !important; height: 28px !important; margin-top: 0.45rem; max-height: 28px !important; width: 100% !important; } @media (max-width: 768px) { .momo-observability-mode { --obs-title-size: 1.55rem; --obs-value-size: 1.35rem; } .momo-observability-mode :is( .calls-table-shell .table-responsive, .gate-table-shell .table-responsive, .runtime-table-shell .table-responsive, .biz-panel-body.table-responsive, .ppt-table-shell .table-responsive, .qa-table-shell .table-responsive, .rag-table-shell .table-responsive, .agent-table-shell .table-responsive, .quality-table-shell .table-responsive ) { max-height: min(58vh, 460px); } } @media (max-width: 560px) { .momo-observability-mode .host-lane, .momo-observability-mode .biz-strategy-card .metrics, .momo-observability-mode .biz-decision-card { grid-template-columns: 1fr !important; } .momo-observability-mode :is(.obs-hero, .agent-hero, .biz-command, .runtime-hero, .calls-hero, .gov-hero, .gate-hero, .rag-hero, .qa-hero, .quality-hero, .ppt-hero) { gap: 0.8rem !important; } } /* v3.4 chip and nested-surface normalization: remove low-contrast legacy dark-hero residue. */ .momo-observability-mode :is( .biz-filter-card, .biz-alert-strip, .biz-strategy-card, .biz-mini-metric, .biz-decision-card, .episode-card, .similar-box, .fix-card, .root-card, .rec-card, .agent-card, .caller-card, .host-lane, .strategy-card, .obs-route-card ) { background-color: var(--momo-bg-elevated, #fdfaf2) !important; background-image: none !important; border: 1px solid var(--obs-line) !important; border-radius: 8px !important; box-shadow: none !important; color: var(--obs-ink) !important; } .momo-observability-mode :is(.obs-pill, [class$="-pill"], .biz-badge, .badge) { align-items: center; background-color: color-mix(in srgb, var(--obs-accent) 9%, var(--momo-bg-elevated, #fdfaf2)) !important; background-image: none !important; border: 1px solid color-mix(in srgb, var(--obs-accent) 22%, var(--obs-line)) !important; border-radius: 8px !important; color: var(--obs-ink) !important; display: inline-flex; font-family: var(--momo-font-family, "Inter", "Noto Sans TC", system-ui, sans-serif) !important; font-size: 0.78rem !important; font-weight: 700 !important; gap: 0.35rem; letter-spacing: 0 !important; line-height: 1.25 !important; max-width: 100%; min-height: 1.75rem; padding: 0.28rem 0.55rem !important; text-transform: none !important; white-space: normal !important; } .momo-observability-mode :is(.badge.bg-success, .biz-badge.good) { background-color: color-mix(in srgb, var(--obs-green) 14%, var(--momo-bg-elevated, #fdfaf2)) !important; border-color: color-mix(in srgb, var(--obs-green) 28%, var(--obs-line)) !important; color: color-mix(in srgb, var(--obs-green) 76%, var(--obs-ink)) !important; } .momo-observability-mode :is(.badge.bg-warning, .biz-badge.warn) { background-color: color-mix(in srgb, var(--obs-warn) 16%, var(--momo-bg-elevated, #fdfaf2)) !important; border-color: color-mix(in srgb, var(--obs-warn) 32%, var(--obs-line)) !important; color: color-mix(in srgb, var(--obs-warn) 72%, var(--obs-ink)) !important; } .momo-observability-mode .badge.bg-danger { background-color: color-mix(in srgb, var(--obs-red) 14%, var(--momo-bg-elevated, #fdfaf2)) !important; border-color: color-mix(in srgb, var(--obs-red) 32%, var(--obs-line)) !important; color: color-mix(in srgb, var(--obs-red) 74%, var(--obs-ink)) !important; } .momo-observability-mode :is(.badge.bg-info, .badge.bg-primary, .badge.bg-secondary, .badge.bg-light) { background-color: color-mix(in srgb, var(--obs-blue) 10%, var(--momo-bg-elevated, #fdfaf2)) !important; border-color: color-mix(in srgb, var(--obs-blue) 22%, var(--obs-line)) !important; color: var(--obs-ink) !important; } .momo-observability-mode .biz-meta-row { gap: 0.5rem !important; max-width: 100%; }