diff --git a/static/css/observability-system.css b/static/css/observability-system.css index 140b5b0..d6a3c92 100644 --- a/static/css/observability-system.css +++ b/static/css/observability-system.css @@ -845,3 +845,239 @@ 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; + } +} diff --git a/templates/components/_ewoooc_shell.html b/templates/components/_ewoooc_shell.html index ccd0ee3..7ae46a7 100644 --- a/templates/components/_ewoooc_shell.html +++ b/templates/components/_ewoooc_shell.html @@ -109,43 +109,53 @@ transform: rotate(0deg); } .momo-nav-subtree { - margin: 0.35rem 0 0.65rem 1.05rem; - padding-left: 0.75rem; + margin: 0.42rem 0 0.72rem 1.05rem; + padding: 0.42rem 0 0.42rem 0.78rem; border-left: 1px solid color-mix(in srgb, var(--momo-page-accent, #c96442) 34%, transparent); + background: + radial-gradient(circle at 6px 8px, rgba(201, 100, 66, 0.12) 1px, transparent 1.4px), + linear-gradient(180deg, rgba(255, 248, 238, 0.48), rgba(255, 252, 246, 0.18)); + background-size: 10px 10px, auto; + border-radius: 0 0.95rem 0.95rem 0; } .momo-nav-subtitle { - margin: 0.65rem 0 0.25rem; - color: var(--momo-text-tertiary, #9b9184); + margin: 0.68rem 0 0.3rem 0.42rem; + color: color-mix(in srgb, var(--momo-page-accent-dark, #8f4530) 58%, var(--momo-text-secondary, #6f665b)); font-size: 0.68rem; letter-spacing: 0.12em; text-transform: uppercase; - font-weight: 800; + font-weight: 900; } .momo-nav-sublink { display: grid; grid-template-columns: 1rem minmax(0, 1fr) auto; align-items: center; gap: 0.45rem; - padding: 0.42rem 0.55rem; + padding: 0.48rem 0.62rem; border-radius: 0.7rem; - color: var(--momo-text-secondary, #6f665b); + color: color-mix(in srgb, var(--momo-text-primary, #2a2520) 80%, var(--momo-text-secondary, #6f665b)); text-decoration: none; font-size: 0.86rem; - font-weight: 700; - transition: background-color 160ms ease, color 160ms ease, transform 160ms ease; + font-weight: 780; + background: rgba(255, 252, 246, 0.34); + transition: background-color 160ms ease, color 160ms ease, transform 160ms ease, box-shadow 160ms ease; + } + .momo-nav-sublink i { + color: color-mix(in srgb, var(--momo-page-accent-dark, #8f4530) 66%, var(--momo-text-secondary, #6f665b)); } .momo-nav-sublink:hover, .momo-nav-sublink.is-active { - background: var(--momo-page-accent-soft, rgba(201, 100, 66, 0.12)); + background: linear-gradient(135deg, rgba(255, 248, 238, 0.92), rgba(201, 100, 66, 0.13)); color: var(--momo-page-accent-dark, var(--momo-accent-700, #8f4530)); + box-shadow: inset 0 0 0 1px rgba(201, 100, 66, 0.22), 0 8px 18px rgba(70, 46, 28, 0.08); transform: translateX(2px); } .momo-nav-sublink .momo-nav-num { - color: var(--momo-text-tertiary, #9b9184); - font-weight: 800; + color: color-mix(in srgb, var(--momo-text-secondary, #6f665b) 82%, var(--momo-page-accent-dark, #8f4530)); + font-weight: 850; } .momo-nav-sublink.is-active .momo-nav-num { - color: var(--momo-page-accent-dark, rgba(143, 69, 48, 0.72)); + color: var(--momo-page-accent-dark, rgba(143, 69, 48, 0.82)); } .momo-nav-sublink .momo-nav-code { opacity: 0.68; diff --git a/web/static/css/observability-system.css b/web/static/css/observability-system.css index 140b5b0..d6a3c92 100644 --- a/web/static/css/observability-system.css +++ b/web/static/css/observability-system.css @@ -845,3 +845,239 @@ 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; + } +}