:root {
  color-scheme: dark;
  --page-bg: #090c10;
  --box-bg: #0d1117;
  --box-hover: #070a10;
  --text: #b1b8c0;
  --secondary-text: #aaa;
  --border: #1d2634;
  --green: #5cdd8b;
  --yellow: #f8a306;
  --red: #dc3545;
  --blue: #1747f5;
  --empty: #848484;
  --ease-in: cubic-bezier(.54, .78, .55, .97);
}

*, *::before, *::after { box-sizing: border-box; }
html { min-height: 100%; background: var(--page-bg); }
body {
  min-height: 100vh;
  margin: 0;
  background: var(--page-bg);
  color: var(--text);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial,
    "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
    "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
}

::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 20px; }
.container { width: 100%; margin-right: auto; margin-left: auto; padding-right: .75rem; padding-left: .75rem; }
.mt-3 { margin-top: 1rem; }
.mt-4 { margin-top: 1.5rem; }
.mt-5 { margin-top: 3rem; }
.mb-2 { margin-bottom: .5rem; }
.mb-4 { margin-bottom: 1.5rem; }
.mb-5 { margin-bottom: 3rem; }
.me-2 { margin-right: .5rem; }
.p-4 { padding: 1.5rem; }

h1, h2 { margin-top: 0; margin-bottom: .5rem; font-weight: 500; line-height: 1.2; }
h1 { font-size: 30px; }
h2 { font-size: calc(1.325rem + .9vw); }
.title-flex { display: flex; align-items: center; gap: 10px; }
.logo-wrapper { display: inline-block; position: relative; flex: 0 0 auto; }
.logo { width: 60px; height: 60px; object-fit: contain; vertical-align: middle; }

.shadow-box { padding: 10px; border-radius: 10px; background-color: var(--box-bg); box-shadow: 0 15px 70px rgba(0, 0, 0, .1); }
.overall-banner { min-height: 85.5px; display: flex; align-items: center; }
.overall-status { display: flex; align-items: center; font-size: 25px; font-weight: 700; }
.overall-icon { display: inline-flex; align-items: center; margin-right: 5px; }
.overall-icon svg { display: block; width: 25px; height: 25px; }
.overall-banner.operational .overall-icon { color: var(--green); }
.overall-banner.degraded .overall-icon { color: var(--yellow); }
.overall-banner.outage .overall-icon { color: var(--red); }
.overall-banner.maintenance .overall-icon { color: var(--blue); }
.overall-banner.unknown .overall-icon { color: #efefef; }

.service-groups { margin-bottom: 1.5rem; }
.group-section { min-width: 0; }
.group-title { display: flex; align-items: center; }
.collapse-toggle { display: inline-flex; min-width: 15px; padding: 2px; border: 0; background: transparent; color: inherit; cursor: pointer; font: inherit; text-align: left; }
.group-name { padding-left: .5rem; }
.chevron { width: .8em; height: .8em; color: #bbb; transition: transform .2s var(--ease-in); }
.chevron.collapsed { transform: rotate(-90deg); }
.group-content { min-width: 0; }
.group-content.collapsing { overflow: hidden; transition: height .2s var(--ease-in), opacity .2s var(--ease-in), transform .2s var(--ease-in); }
.group-content.collapsed { display: none; }

.monitor-list { min-height: 46px; }
.monitor-item { display: block; padding: 13px 15px 10px; border-radius: 10px; text-decoration: none; transition: all ease-in-out .15s; }
.monitor-item:hover, .monitor-item:focus-within { background-color: var(--box-hover); }
.row { display: flex; flex-wrap: wrap; margin-right: -.75rem; margin-left: -.75rem; }
.row > * { flex-shrink: 0; width: 100%; max-width: 100%; padding-right: .75rem; padding-left: .75rem; }
.col-9 { flex: 0 0 auto; width: 75%; }
.col-3 { flex: 0 0 auto; width: 25%; }
.small-padding { min-width: 0; }
.info { overflow: hidden; white-space: nowrap; }
.item-name { display: inline-block; max-width: calc(100% - 72px); margin: 0; padding-right: 5px; padding-left: 5px; overflow: hidden; color: var(--text); font-size: 14px; text-overflow: ellipsis; vertical-align: middle; white-space: nowrap; }
.item-name[href] { text-decoration: none; }
.item-name[href]:hover { color: var(--green); text-decoration: underline; }
.uptime-badge { display: inline-block; min-width: 62px; padding: .35em .65em; border-radius: 50rem; color: #000; font-size: .75em; font-weight: 700; line-height: 1; text-align: center; vertical-align: baseline; white-space: nowrap; }
.uptime-badge.operational { background: var(--green); }
.uptime-badge.degraded { background: var(--yellow); }
.uptime-badge.outage { color: #fff; background: var(--red); }
.uptime-badge.maintenance { color: #fff; background: var(--blue); }
.uptime-badge.unknown { color: #fff; background: #6c757d; }

.heartbeat-wrap { width: 100%; padding: 4px 2.5px; overflow: hidden; white-space: nowrap; }
.heartbeat-bar { overflow: hidden; }
.heartbeat-canvas { display: block; height: 24px; cursor: pointer; outline: none; }
.heartbeat-canvas:focus-visible { outline: 2px solid var(--green); outline-offset: 1px; border-radius: 3px; }
.heartbeat-labels { display: flex; align-items: center; justify-content: space-between; color: var(--secondary-text); font-size: 12px; line-height: 1.5; }
.connecting-line { flex-grow: 1; height: 1px; margin: 2px 10px 0; background-color: #333; }

footer { text-align: center; font-size: 14px; }
.refresh-info { opacity: .7; }

.tooltip-wrapper { position: fixed; z-index: 9999; pointer-events: none; transform: translateX(-50%); animation: tooltip-fade-in .2s cubic-bezier(0, 0, .2, 1); }
.tooltip-wrapper.tooltip-above { transform: translateX(-50%) translateY(-8px); }
.tooltip-content { position: relative; min-width: 120px; padding: 8px 12px; border: 1px solid rgba(107, 114, 128, .3); border-radius: 8px; background: rgba(31, 41, 55, .95); box-shadow: 0 10px 25px rgba(0, 0, 0, .25); text-align: center; backdrop-filter: blur(8px); }
.tooltip-content::before { content: ""; position: absolute; top: -1px; left: 50%; width: 14px; height: 2px; background: rgba(31, 41, 55, .95); transform: translateX(-50%); }
.tooltip-above .tooltip-content::before { top: auto; bottom: -1px; }
.tooltip-status { margin-bottom: 4px; font-size: 16px; font-weight: 600; letter-spacing: .5px; text-transform: uppercase; }
.tooltip-status.operational { color: var(--green); }
.tooltip-status.outage { color: var(--red); }
.tooltip-status.degraded { color: var(--yellow); }
.tooltip-status.maintenance { color: var(--blue); }
.tooltip-status.unknown { color: var(--secondary-text); }
.tooltip-time { margin-bottom: 2px; color: #d1d5db; font-size: 13px; }
.tooltip-message { margin-top: 4px; padding-top: 4px; border-top: 1px solid rgba(75, 85, 99, .3); color: #f3f4f6; font-size: 12px; }
.tooltip-arrow { position: absolute; top: -6px; left: 50%; width: 12px; height: 6px; overflow: hidden; transform: translateX(-50%); }
.tooltip-arrow::before { content: ""; position: absolute; top: 100%; left: 50%; width: 8px; height: 8px; border: 1px solid rgba(107, 114, 128, .3); border-right: 0; border-bottom: 0; background: rgba(31, 41, 55, .95); transform: translateX(-50%) translateY(-50%) rotate(45deg); }
.tooltip-above .tooltip-arrow { top: auto; bottom: -6px; }
.tooltip-above .tooltip-arrow::before { top: 0; transform: translateX(-50%) translateY(-50%) rotate(225deg); }
@keyframes tooltip-fade-in { from { opacity: 0; transform: translateX(-50%) translateY(4px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } }

@media (min-width: 576px) { .container { max-width: 540px; } }
@media (min-width: 768px) { .container { max-width: 720px; } }
@media (min-width: 992px) { .container { max-width: 960px; } }
@media (min-width: 1200px) { .container { max-width: 1140px; } h2 { font-size: 2rem; } .col-xl-6 { flex: 0 0 auto; width: 50%; } }
@media (min-width: 1400px) { .container { max-width: 1320px; } }
@media (max-width: 767.98px) { h1 { font-size: 22px; } .overall-status { font-size: 20px; } .monitor-item { padding: 13px 0 10px; } .heartbeat-labels { display: none; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; } }
