/* ========================================================================== Monitor Detail ========================================================================== */ .detail-main { padding-top: 34px; } .detail-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 32px; margin-top: 34px; padding-bottom: 36px; border-bottom: 1px solid #e7e7e7; } .detail-title { display: flex; align-items: center; gap: 18px; min-width: 0; } .status-orb { flex: 0 0 auto; width: 16px; height: 16px; border: 4px solid #f2d4d4; border-radius: 50%; background: #c74f4f; box-shadow: 0 0 0 8px #fff; } .status-orb.online { border-color: #c5f1df; background: var(--primary-deep); } .status-orb.pending { border-color: #f6e2c8; background: #d8892f; } .status-orb.checking { border-color: #eee5bd; background: #c6aa38; } .detail-title h1 { margin: 0; overflow: hidden; font-size: 40px; font-weight: 500; line-height: 1.1; letter-spacing: -1.5px; text-overflow: ellipsis; white-space: nowrap; } .detail-title a { display: inline-flex; align-items: center; gap: 6px; max-width: min(70vw, 680px); margin-top: 9px; overflow: hidden; font: 400 13px/1.4 'IBM Plex Mono', monospace; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; } .detail-title a:hover { color: var(--primary-deep); } .detail-title a svg { flex: 0 0 auto; width: 13px; height: 13px; } .detail-actions { display: flex; align-items: center; gap: 18px; } .muted-alert { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); } .muted-alert svg { width: 14px; height: 14px; } .sla-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; margin-top: 24px; } .sla-card { min-width: 0; padding: 20px; border: 1px solid #e3e3e3; border-radius: 8px; background: #fff; } .sla-card p { margin: 0 0 17px; font-size: 12px; color: var(--muted); } .sla-card strong { display: block; font: 500 23px/1 'IBM Plex Mono', monospace; letter-spacing: -1px; } .sla-card span { display: block; margin-top: 11px; overflow: hidden; font-size: 11px; color: var(--faint); text-overflow: ellipsis; white-space: nowrap; } .sla-card.incident-summary { background: #fafafa; } .sla-card.incident-summary.has-incident { border-color: #e8c3c3; background: #fff8f8; } .sla-card.incident-summary.has-incident strong { color: #a83e3e; } .detail-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, 0.75fr); gap: 16px; margin-top: 16px; } .detail-grid.lower-grid { align-items: stretch; } .lower-grid > .data-panel { height: 100%; } .data-panel { overflow: hidden; border: 1px solid #dedede; border-radius: 8px; background: #fff; } .data-panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 82px; padding: 18px 22px; border-bottom: 1px solid #ededed; } .data-panel-heading .overline { margin-bottom: 5px; } .data-panel-heading h2 { margin: 0; font-size: 18px; font-weight: 500; } .data-panel-heading > span { font: 400 11px/1.4 'IBM Plex Mono', monospace; color: var(--faint); } .configuration-panel { margin-top: 16px; } .config-list { margin: 0; } .config-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 22px; border-bottom: 1px solid #f0f0f0; } .config-row:last-child { border-bottom: 0; } .config-row dt { font-size: 12px; color: var(--muted); } .config-row dd { margin: 0; font: 400 13px/1.4 'IBM Plex Mono', monospace; color: var(--ink); } .config-row .config-row-actions { display: flex; align-items: center; gap: 10px; } .config-row-actions .row-action { font-family: 'DM Sans', 'Helvetica Neue', sans-serif; } .config-danger { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 22px; border-top: 1px solid #ededed; background: #fdfafa; } .config-danger p { margin: 0; font-size: 12px; color: var(--muted); } .chart-panel, .uptime-panel { min-height: 330px; } .sparkline-wrap { position: relative; height: 245px; padding: 26px 24px 24px; background: linear-gradient(180deg, #fdfefe, #fff); } .chart-scale { position: absolute; inset: 19px 22px 20px auto; display: flex; flex-direction: column; justify-content: space-between; pointer-events: none; font: 400 9px/1 'IBM Plex Mono', monospace; color: #aaa; } .uptime-bar { height: 148px; padding: 24px 22px 18px; background: linear-gradient(180deg, #fcfefd 0%, #fff 100%); } .uptime-legend { display: flex; justify-content: space-between; padding: 14px 22px 0; border-top: 1px solid #f0f0f0; font-size: 10px; color: #999; } .uptime-legend span { display: inline-flex; align-items: center; gap: 5px; } .uptime-legend i { width: 6px; height: 6px; border-radius: 50%; background: var(--primary-deep); } .uptime-legend i.legend-down { margin-left: 5px; background: var(--chart-down); } .uptime-legend i.legend-degraded { margin-left: 5px; background: var(--chart-degraded); } .data-table-wrap { overflow-x: auto; } .recent-checks-panel { display: flex; min-height: 0; flex-direction: column; } .recent-checks-scroll, .incident-list { max-height: clamp(320px, 52vh, 556px); overflow: auto; overscroll-behavior: contain; scrollbar-color: #b8c7c0 #f4f6f5; scrollbar-gutter: stable; scrollbar-width: thin; } .recent-checks-scroll:focus-visible, .incident-list:focus-visible { outline: 2px solid rgb(36 180 126 / 0.45); outline-offset: -2px; } .recent-checks-scroll::-webkit-scrollbar, .incident-list::-webkit-scrollbar { width: 9px; height: 9px; } .recent-checks-scroll::-webkit-scrollbar-track, .incident-list::-webkit-scrollbar-track { background: #f4f6f5; } .recent-checks-scroll::-webkit-scrollbar-thumb, .incident-list::-webkit-scrollbar-thumb { border: 2px solid #f4f6f5; border-radius: 999px; background: #b8c7c0; } .recent-checks-scroll::-webkit-scrollbar-thumb:hover, .incident-list::-webkit-scrollbar-thumb:hover { background: #91a69d; } .incident-list { min-height: 0; } .incident-list article { display: flex; gap: 13px; padding: 18px 20px; } .incident-list article > div { min-width: 0; } .incident-list article + article { border-top: 1px solid #ededed; } .incident-list article > span { display: grid; flex: 0 0 auto; width: 30px; height: 30px; place-items: center; border-radius: 50%; color: #16885b; background: #eaf9f2; } .incident-list article.open > span { color: #aa4141; background: #fff0f0; } .incident-list article svg { width: 15px; height: 15px; } .incident-list strong { font-size: 13px; font-weight: 500; } .incident-list p { margin: 4px 0 6px; overflow-wrap: anywhere; font-size: 12px; line-height: 1.45; color: var(--muted); } .incident-list small { font: 400 10px/1.4 'IBM Plex Mono', monospace; color: #aaa; } .incident-list .incident-raw { display: block; margin: -1px 0 5px; overflow-wrap: anywhere; } .incident-detail-link { display: inline-flex; align-items: center; gap: 10px; padding: 0; border: 0; color: inherit; background: transparent; cursor: pointer; } @media (max-width: 1000px) { .sla-grid { grid-template-columns: repeat(3, 1fr); } .detail-grid, .detail-grid.lower-grid { grid-template-columns: 1fr; } } @media (max-width: 760px) { .detail-hero { align-items: flex-start; flex-direction: column; } .detail-actions { flex-wrap: wrap; } .config-row { flex-wrap: wrap; } .config-danger { align-items: flex-start; flex-direction: column; } .detail-title h1 { font-size: 34px; } .sla-grid { grid-template-columns: repeat(2, 1fr); } .sla-card.incident-summary { grid-column: 1 / -1; } } @media (max-width: 520px) { .detail-title { align-items: flex-start; } .status-orb { margin-top: 11px; } .sla-grid { grid-template-columns: 1fr; } .sla-card.incident-summary { grid-column: auto; } .data-panel-heading { padding: 16px; } } /* Dark operations console. */ .dark .detail-main { position: relative; isolation: isolate; } .dark .detail-main::before { position: absolute; z-index: -1; top: -110px; left: 50%; width: min(920px, 92vw); height: 430px; background: radial-gradient(circle at 35% 20%, rgb(62 207 142 / 0.075), transparent 45%), linear-gradient(90deg, rgb(255 255 255 / 0.018) 1px, transparent 1px), linear-gradient(rgb(255 255 255 / 0.018) 1px, transparent 1px); background-size: auto, 44px 44px, 44px 44px; content: ''; mask-image: linear-gradient(to bottom, #000 0%, transparent 82%); pointer-events: none; transform: translateX(-50%); } .dark .back-link { color: #858d9a; transition: color 160ms ease; } .dark .back-link:hover { color: #f3f4f6; } .dark .back-link svg { color: #4ade80; } .dark .detail-hero { border-bottom-color: rgb(255 255 255 / 0.09); } .dark .detail-title h1 { color: #f8fafc; text-shadow: 0 1px 18px rgb(0 0 0 / 0.22); } .dark .detail-title a { color: #929aa7; } .dark .detail-title a:hover { color: #4ade80; } .dark .status-orb { border-color: rgb(248 113 113 / 0.24); background: #f87171; box-shadow: 0 0 0 8px #090b0d, 0 0 22px rgb(248 113 113 / 0.32); } .dark .status-orb.online { border-color: rgb(62 207 142 / 0.22); background: #3ecf8e; box-shadow: 0 0 0 8px #090b0d, 0 0 24px rgb(62 207 142 / 0.38); } .dark .status-orb.pending { border-color: rgb(245 158 11 / 0.24); background: #f0a440; box-shadow: 0 0 0 8px #090b0d, 0 0 22px rgb(245 158 11 / 0.28); } .dark .status-orb.checking { border-color: rgb(250 204 21 / 0.22); background: #e6c94b; box-shadow: 0 0 0 8px #090b0d, 0 0 22px rgb(250 204 21 / 0.25); } .dark .muted-alert { color: #929aa7; } .dark .sla-card { position: relative; border-color: rgb(255 255 255 / 0.085); background: linear-gradient(145deg, #13161b 0%, #0f1115 100%); box-shadow: 0 10px 26px rgb(0 0 0 / 0.22), inset 0 1px rgb(255 255 255 / 0.035); transition: border-color 180ms ease, transform 180ms ease, box-shadow 180ms ease; } .dark .sla-card::before { position: absolute; top: -1px; left: 20px; width: 34px; height: 1px; background: rgb(62 207 142 / 0.65); content: ''; } .dark .sla-card p { color: #929aa7; } .dark .sla-card strong { color: #f4f7f6; } .dark .sla-card span { color: #737c89; } .dark .sla-card.incident-summary { background: linear-gradient(145deg, #15171b 0%, #101216 100%); } .dark .sla-card.incident-summary::before { background: rgb(148 163 184 / 0.48); } .dark .sla-card.incident-summary.has-incident { border-color: rgb(248 113 113 / 0.3); background: linear-gradient(145deg, rgb(73 28 31 / 0.58), #151114 100%); } .dark .sla-card.incident-summary.has-incident::before { background: #f87171; } .dark .sla-card.incident-summary.has-incident strong { color: #fca5a5; } @media (hover: hover) { .dark .sla-card:hover { border-color: rgb(62 207 142 / 0.24); box-shadow: 0 14px 34px rgb(0 0 0 / 0.3), 0 0 0 1px rgb(62 207 142 / 0.035), inset 0 1px rgb(255 255 255 / 0.05); transform: translateY(-2px); } } .dark .data-panel { border-color: rgb(255 255 255 / 0.085); background: #101216; box-shadow: 0 16px 38px rgb(0 0 0 / 0.27), inset 0 1px rgb(255 255 255 / 0.03); } .dark .data-panel-heading { border-bottom-color: rgb(255 255 255 / 0.075); background: linear-gradient(180deg, rgb(255 255 255 / 0.022), transparent); } .dark .data-panel-heading h2 { color: #f3f5f7; } .dark .data-panel-heading > span { color: #7e8794; } .dark .sparkline-wrap, .dark .uptime-bar { background: linear-gradient(180deg, rgb(62 207 142 / 0.025), transparent 55%), #0d0f13; } .dark .sparkline-wrap .recharts-cartesian-grid line { stroke: rgb(255 255 255 / 0.075); } .dark .chart-scale { color: #68717e; } .dark .monitor-chart-tooltip { border-color: rgb(255 255 255 / 0.12); color: #e5e7eb; background: rgb(19 22 27 / 0.96); box-shadow: 0 16px 40px rgb(0 0 0 / 0.55), inset 0 1px rgb(255 255 255 / 0.045); } .dark .uptime-legend { border-top-color: rgb(255 255 255 / 0.065); color: #747d89; background: #0f1115; } .dark .recent-checks-scroll, .dark .incident-list { scrollbar-color: #3c4650 #0c0e11; } .dark .recent-checks-scroll::-webkit-scrollbar-track, .dark .incident-list::-webkit-scrollbar-track { background: #0c0e11; } .dark .recent-checks-scroll::-webkit-scrollbar-thumb, .dark .incident-list::-webkit-scrollbar-thumb { border-color: #0c0e11; background: #3c4650; } .dark .recent-checks-scroll::-webkit-scrollbar-thumb:hover, .dark .incident-list::-webkit-scrollbar-thumb:hover { background: #53606b; } .dark .recent-checks-panel [data-slot='table-row'] { transition: background-color 140ms ease; } .dark .recent-checks-panel [data-slot='table-body'] [data-slot='table-row']:hover { background: rgb(255 255 255 / 0.022); } .dark .recent-checks-panel code { color: #c7ced7; } .dark .incident-list article + article { border-top-color: rgb(255 255 255 / 0.065); } .dark .incident-list article { transition: background-color 140ms ease; } .dark .incident-list article:hover { background: rgb(255 255 255 / 0.022); } .dark .incident-list article > span { color: #4ade80; background: rgb(62 207 142 / 0.105); box-shadow: inset 0 0 0 1px rgb(62 207 142 / 0.12); } .dark .incident-list article.open > span { color: #f87171; background: rgb(248 113 113 / 0.1); box-shadow: inset 0 0 0 1px rgb(248 113 113 / 0.14); } .dark .incident-list strong { color: #e8ebef; } .dark .incident-detail-link:hover strong { color: #4ade80; } .dark .incident-list p { color: #9ca3af; } .dark .incident-list small { color: #747d89; } .dark .config-row { border-bottom-color: rgb(255 255 255 / 0.065); transition: background-color 140ms ease; } .dark .config-row:hover { background: rgb(255 255 255 / 0.018); } .dark .config-row dt { color: #929aa7; } .dark .config-row dd { color: #e5e7eb; } .dark .config-row-actions > span { color: #4ade80; } .dark .config-danger { border-top-color: rgb(248 113 113 / 0.14); background: linear-gradient(90deg, rgb(127 29 29 / 0.11), transparent 52%), #111215; } .dark .config-danger p { color: #929aa7; } .dark .detail-hero, .dark .sla-grid, .dark .detail-grid, .dark .configuration-panel { animation: monitor-detail-enter 420ms both cubic-bezier(0.22, 1, 0.36, 1); } .dark .sla-grid { animation-delay: 45ms; } .dark .detail-grid { animation-delay: 90ms; } .dark .detail-grid.lower-grid { animation-delay: 135ms; } .dark .configuration-panel { animation-delay: 180ms; } @keyframes monitor-detail-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } @media (max-width: 520px) { .dark .detail-main::before { top: -80px; height: 330px; background-size: auto, 34px 34px, 34px 34px; } .dark .sla-card { padding: 18px; } }