:root{--bg: #0b0e13;--bg-elevated: #11151c;--card: #161b23;--card-hover: #1b2129;--text: #e8ecf1;--text-strong: #ffffff;--muted: #8a93a3;--muted-2: #5f6877;--line: #232a36;--line-strong: #2d3542;--green: #1f7a3a;--green-fg: #b6f3c8;--green-soft: rgba(45, 180, 90, .12);--green-border: rgba(45, 180, 90, .45);--red: #b3303f;--red-fg: #ffc4cb;--red-soft: rgba(220, 70, 90, .1);--red-border: rgba(220, 70, 90, .5);--yellow: #a07a1f;--yellow-fg: #ffe0a3;--yellow-soft: rgba(220, 170, 60, .1);--yellow-border: rgba(220, 170, 60, .45);--grey: #2a313c;--grey-fg: #c0c8d4;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--shadow-card: 0 1px 0 rgba(255, 255, 255, .03), 0 1px 2px rgba(0, 0, 0, .4);--ease: cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}:focus-visible{outline:2px solid #6aa6ff;outline-offset:2px;border-radius:4px}.app{min-height:100vh}.topbar{position:sticky;top:0;z-index:10;background:#0b0e13d9;backdrop-filter:saturate(140%) blur(10px);-webkit-backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid var(--line)}.topbar-inner{max-width:100%;margin:0 auto;padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.brand h1{font-size:20px;margin:0 0 2px;font-weight:650;letter-spacing:-.01em;color:var(--text-strong)}.brand-sub{font-size:13px;color:var(--muted);display:flex;gap:8px;align-items:center}.brand-sub strong{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.summary-bad strong{color:#ff9aa4}.dot-sep{color:var(--muted-2)}.chip{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--line);background:var(--bg-elevated);color:var(--text);transition:background .15s var(--ease),border-color .15s var(--ease)}.chip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}.chip-ok .chip-dot{background:#3bd278;box-shadow:0 0 0 3px #3bd2782e}.chip-pending .chip-dot{background:#f0c044;box-shadow:0 0 0 3px #f0c04433;animation:chip-pulse 1.6s ease-in-out infinite}.chip-err .chip-dot{background:#ff6173;box-shadow:0 0 0 3px #ff617333}@keyframes chip-pulse{0%,to{opacity:1}50%{opacity:.5}}.wrap{max-width:100%;margin:0 auto;padding:28px 24px 64px}.devices{display:grid;grid-template-columns:1fr;gap:24px}.device{padding:20px 20px 8px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--card);box-shadow:var(--shadow-card);transition:border-color .2s var(--ease)}.device-header{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px}.device-title{font-size:16px;font-weight:650;margin:0;color:var(--text-strong);letter-spacing:-.005em}.device-id{color:var(--muted);font-size:11px}.device-id code{background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-sm);padding:2px 7px;font-size:11px;color:var(--muted);font-family:ui-monospace,SF Mono,Menlo,monospace}.banner{border-radius:var(--radius);padding:14px 16px;margin-bottom:18px;border:1px solid var(--line);background:var(--bg-elevated);display:flex;align-items:flex-start;gap:12px}.banner-dot{font-size:10px;line-height:1;margin-top:6px;flex-shrink:0}.banner-text{min-width:0}.banner-headline{font-size:14px;font-weight:650;margin-bottom:2px;letter-spacing:-.005em}.banner-detail{font-size:12px;opacity:.85;line-height:1.4}.banner-green{background:var(--green-soft);color:var(--green-fg);border-color:var(--green-border)}.banner-green .banner-dot{color:#3bd278}.banner-red{background:var(--red-soft);color:var(--red-fg);border-color:var(--red-border)}.banner-red .banner-dot{color:#ff6173;animation:dot-pulse 1.8s ease-in-out infinite}.banner-yellow{background:var(--yellow-soft);color:var(--yellow-fg);border-color:var(--yellow-border)}.banner-yellow .banner-dot{color:#f0c044}.banner-grey{background:var(--bg-elevated);color:var(--grey-fg);border-color:var(--line)}.banner-grey .banner-dot{color:var(--muted)}@keyframes dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}@media (max-width: 520px){.tiles{grid-template-columns:1fr}}.tile{background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;transition:border-color .15s var(--ease),background .15s var(--ease)}.tile-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin-bottom:10px}.tile-value-row{display:flex;align-items:baseline;gap:4px}.tile-value{font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--text-strong)}.tile-unit{color:var(--muted);font-size:13px;margin-left:2px}.tile-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;min-height:22px}.tile-caption{font-size:11px;color:var(--muted);font-weight:500;text-align:right}.sparkline{display:block;flex-shrink:0}.sparkline-empty{display:inline-block;align-self:center;border-bottom:1px dashed var(--line)}.tile-ok .tile-value{color:#b6f3c8}.tile-warn{border-color:var(--yellow-border);background:var(--yellow-soft)}.tile-warn .tile-value{color:var(--yellow-fg)}.tile-warn .tile-caption{color:var(--yellow-fg);opacity:.8}.tile-crit{border-color:var(--red-border);background:var(--red-soft)}.tile-crit .tile-value{color:var(--red-fg)}.tile-crit .tile-caption{color:var(--red-fg);opacity:.85}.alarm{background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px;transition:border-color .2s var(--ease),background .2s var(--ease)}.alarm-armed{border-color:var(--red-border);background:var(--red-soft)}.alarm-off{opacity:.7}.alarm-row{display:flex;align-items:center;gap:14px}.alarm-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.alarm-title{font-size:13px;font-weight:650;color:var(--text-strong);letter-spacing:-.005em}.alarm-state{font-weight:500;color:var(--muted);margin-left:4px}.alarm-armed .alarm-state{color:#ff9aa4}.alarm-hint{font-size:12px;color:var(--muted);font-weight:400}.alarm-armed .alarm-hint{color:var(--red-fg)}.alarm-switch{display:inline-flex;align-items:center;cursor:pointer;user-select:none;flex-shrink:0}.alarm-switch input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.alarm-switch-track{position:relative;display:inline-block;width:38px;height:22px;background:var(--grey);border:1px solid var(--line-strong);border-radius:999px;transition:background .18s var(--ease),border-color .18s var(--ease);flex-shrink:0}.alarm-switch-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s var(--ease);box-shadow:0 1px 3px #00000059}.alarm-switch input:checked+.alarm-switch-track{background:#b3303f;border-color:#c84055}.alarm-switch input:checked+.alarm-switch-track .alarm-switch-thumb{transform:translate(16px)}.alarm-switch input:focus-visible+.alarm-switch-track{outline:2px solid #6aa6ff;outline-offset:2px}.alarm-meta{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);color:var(--muted);font-size:11px;font-family:ui-monospace,SF Mono,Menlo,monospace}.alarm-meta code{background:#00000040;border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:11px;color:var(--text)}.meta{background:transparent;border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;margin-bottom:14px}.meta dl{margin:0;display:grid;grid-template-columns:max-content 1fr;column-gap:18px;row-gap:6px}.meta dt{color:var(--muted);font-size:12px;font-weight:500}.meta dd{margin:0;font-size:12px;font-variant-numeric:tabular-nums;word-break:break-all;color:var(--text)}.availability{border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;margin-bottom:14px}.availability-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.availability-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.range-toggle{display:inline-flex;gap:2px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:2px}.range-btn{appearance:none;border:none;background:transparent;color:var(--muted);font:inherit;font-size:11px;font-weight:600;padding:3px 10px;border-radius:999px;cursor:pointer;transition:background .15s var(--ease),color .15s var(--ease)}.range-btn:hover{color:var(--text)}.range-btn-active{background:var(--card-hover);color:var(--text-strong)}.timeline{display:flex;gap:1px;height:30px;border-radius:4px;overflow:hidden}.timeline-seg{flex:1;min-width:0;transition:opacity .12s var(--ease)}.timeline-seg:hover{opacity:.65}.timeline-up{background:#2c9d54}.timeline-partial,.timeline-down,.timeline-reboot{background:#c64152}.timeline-nodata{background:var(--line-strong)}.availability-axis{display:flex;justify-content:space-between;font-size:10px;color:var(--muted-2);margin-top:5px}.availability-stats{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:12px;font-size:12px;color:var(--muted)}.uptime-pct{font-weight:650;font-variant-numeric:tabular-nums}.uptime-ok{color:#b6f3c8}.uptime-warn{color:var(--yellow-fg)}.uptime-crit{color:var(--red-fg)}.availability-now{margin-left:auto;color:var(--red-fg);background:var(--red-soft);border:1px solid var(--red-border);border-radius:999px;padding:2px 10px;font-weight:600;font-size:11px}.availability-empty{font-size:12px;color:var(--muted-2);padding:6px 0}details.trend{border:1px solid var(--line);border-radius:var(--radius);padding:0 16px;margin-bottom:14px}details.trend[open]{padding-bottom:16px}details.trend summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0}details.trend summary::-webkit-details-marker{display:none}.trend-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.trend-title:before{content:"▸";color:var(--muted-2);display:inline-block;margin-right:8px;transition:transform .15s var(--ease)}details.trend[open] .trend-title:before{transform:rotate(90deg)}.trend-windows{display:inline-flex;gap:2px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:2px}.trend-window{appearance:none;border:none;background:transparent;color:var(--muted);font:inherit;font-size:11px;font-weight:600;padding:3px 10px;border-radius:999px;cursor:pointer;transition:background .15s var(--ease),color .15s var(--ease)}.trend-window:hover{color:var(--text)}.trend-window-active{background:var(--card-hover);color:var(--text-strong)}.trend-charts{display:flex;flex-direction:column;gap:16px}.chart{display:flex;flex-direction:column;gap:4px}.chart-head{display:flex;align-items:baseline;justify-content:space-between}.chart-label{font-size:12px;font-weight:600;color:var(--text)}.chart-last{font-size:13px;font-weight:650;font-variant-numeric:tabular-nums;color:var(--text-strong)}.chart-unit{color:var(--muted);font-size:11px;margin-left:2px}.chart-svg{width:100%;height:88px;display:block}.chart-axis{display:flex;justify-content:space-between;font-size:10px;color:var(--muted-2)}.chart-range{color:var(--muted);font-variant-numeric:tabular-nums}.chart-empty{height:88px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--muted-2);border:1px dashed var(--line);border-radius:var(--radius-sm)}details.raw{background:transparent;border:1px solid var(--line);border-radius:var(--radius);padding:10px 16px;margin-bottom:8px;transition:border-color .15s var(--ease)}details.raw[open]{background:var(--bg-elevated)}details.raw summary{cursor:pointer;color:var(--muted);font-size:12px;font-weight:500;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px}details.raw summary::-webkit-details-marker{display:none}details.raw summary:before{content:"▸";color:var(--muted-2);display:inline-block;transition:transform .15s var(--ease);margin-right:6px}details.raw[open] summary:before{transform:rotate(90deg)}.raw-size{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10px;color:var(--muted-2)}details.raw pre{margin:10px 0 0;font-size:11px;color:var(--text);background:var(--bg);padding:12px;border-radius:var(--radius-sm);border:1px solid var(--line);overflow-x:auto;font-family:ui-monospace,SF Mono,Menlo,monospace;line-height:1.5}.device-skeleton .skeleton-line,.device-skeleton .skeleton-tile{background:linear-gradient(90deg,var(--bg-elevated) 0%,var(--card-hover) 50%,var(--bg-elevated) 100%);background-size:200% 100%;border-radius:var(--radius);animation:shimmer 1.4s ease-in-out infinite}.skeleton-line{height:14px;margin-bottom:14px}.skeleton-line-lg{height:56px;border-radius:var(--radius)}.skeleton-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.skeleton-tile{height:88px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.availability-graphs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin:18px 0}@media (max-width: 768px){.availability-graphs-grid{grid-template-columns:1fr;gap:16px}}.availability-graph-card{border:1px solid var(--line);background:#ffffff04;border-radius:var(--radius);padding:16px 20px;display:flex;flex-direction:column;gap:10px}.availability-graph-card.graph-uptime{border-left:3px solid #3bd278}.availability-graph-card.graph-downtime{border-left:3px solid #ff6173}.availability-graph-card.graph-availability{border-left:3px solid #3bd278;margin:18px 0}.graph-legend{display:flex;gap:14px;font-size:11px;font-weight:600}.graph-legend-item.val-up{color:#b6f3c8}.graph-legend-item.val-down{color:#ffc4cb}.graph-card-header{display:flex;justify-content:space-between;align-items:baseline}.graph-card-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.graph-card-value{font-size:16px;font-weight:700}.graph-card-value.val-up{color:#b6f3c8}.graph-card-value.val-down{color:#ffc4cb}.graph-card-footer{display:flex;justify-content:space-between;font-size:10px;color:var(--muted-2)}.svg-wrapper{background:#00000040;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.svg-wrapper svg{display:block}.availability-badge-preview{margin-left:auto;font-size:10px;background:#ffffff0d;color:var(--muted);border:1px solid var(--line);padding:2px 8px;border-radius:999px;font-weight:600}
