:root{color-scheme:light dark;--bg: light-dark(#f5f6f8, #17181c);--panel: light-dark(#ffffff, #1f2128);--panel-2: light-dark(#eef0f3, #262932);--border: light-dark(#d9dde3, #33363f);--text: light-dark(#1c1e21, #e8eaed);--muted: light-dark(#6b7280, #9aa0aa);--accent: #4f8cff;--pos: light-dark(#0a8f3c, #4cd471);--neg: light-dark(#c62828, #ff6b60);font-family:-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}.app{max-width:1500px;margin:0 auto;padding:20px 24px 32px}header{display:flex;align-items:center;gap:28px;margin-bottom:18px}header h1{font-size:17px;font-weight:700;margin:0;letter-spacing:.2px}header h1:before{content:"●";color:var(--accent);margin-right:8px;font-size:12px;vertical-align:2px}nav{display:inline-flex;background:var(--panel-2);border:1px solid var(--border);border-radius:9px;padding:3px;gap:2px}nav button{border:0;background:transparent;color:var(--muted);font:inherit;font-weight:600;padding:6px 18px;border-radius:7px;cursor:pointer}nav button:hover{color:var(--text)}nav button.active{background:var(--panel);color:var(--text);box-shadow:0 1px 3px #00000040}.user{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--muted);font-weight:600}.login{min-height:100vh;display:flex;align-items:center;justify-content:center}.login form{background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 4px #0000001f;padding:28px 32px 26px;width:320px;display:flex;flex-direction:column;gap:12px}.login h1{font-size:17px;font-weight:700;margin:0 0 6px;text-align:center}.login h1:before{content:"●";color:var(--accent);margin-right:8px;font-size:12px;vertical-align:2px}.login input{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:9px 12px;outline:none}.login input:focus{border-color:var(--accent)}.login .btn{margin-top:6px;padding:8px 14px}.login .error{font-size:13px;text-align:center}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:10px;color:var(--muted);font-size:13px}.toolbar>span{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;padding:3px 12px}.error{color:var(--neg)}.btn{border:1px solid var(--border);background:var(--panel);color:var(--text);font:inherit;font-size:13px;font-weight:600;padding:4px 14px;border-radius:999px;cursor:pointer}.btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn:disabled{opacity:.5;cursor:default}.table-wrap{background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:auto;max-height:calc(100vh - 180px);box-shadow:0 1px 4px #0000001f}table{border-collapse:separate;border-spacing:0;width:100%}thead th{position:sticky;top:0;z-index:1;background:var(--panel-2);border-bottom:1px solid var(--border);padding:10px 12px 8px;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);white-space:nowrap}.th-title{cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:6px}.th-title:hover{color:var(--text)}input.filter{width:100%;min-width:90px;font:inherit;font-size:12px;text-transform:none;letter-spacing:normal;color:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:4px 8px;outline:none}input.filter:focus{border-color:var(--accent)}input.filter::placeholder{color:var(--muted);opacity:.7}tbody td{padding:7px 12px;border-bottom:1px solid var(--border);white-space:nowrap}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:light-dark(#4f8cff12,#4f8cff1a)}td.symbol{font-weight:600}td.time{color:var(--muted);font-variant-numeric:tabular-nums}.num{display:block;text-align:right;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;font-variant-numeric:tabular-nums}.num.pos{color:var(--pos)}.num.neg{color:var(--neg)}.empty{text-align:center;color:var(--muted);padding:24px!important}.btn.danger:hover:not(:disabled){border-color:var(--neg);color:var(--neg)}.btn.live-on{border-color:var(--pos);color:var(--pos)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 4px #0000001f;padding:14px 16px}.card h3{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:0 0 10px}.badge{display:inline-block;font-weight:700;border-radius:999px;padding:3px 14px;margin-bottom:10px}.badge.ok{background:light-dark(#0a8f3c1a,#4cd47126);color:var(--pos)}.badge.warn{background:light-dark(#b457001a,#ffb45726);color:light-dark(#b45700,#ffb457)}.badge.bad{background:light-dark(#c628281a,#ff6b6026);color:var(--neg)}.card .big{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;margin-bottom:10px}.card .big small{font-size:13px;font-weight:500;color:var(--muted)}.card dl{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0;font-size:13px}.card dt{color:var(--muted)}.card dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.card dd.neg{color:var(--neg);font-weight:700}.status .toolbar{margin-bottom:14px}.alerts .cards{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.alerts .add-row{display:flex;gap:8px;margin-bottom:12px}.field{flex:1;min-width:0;font:inherit;font-size:13px;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:6px 10px;outline:none}.field:focus{border-color:var(--accent)}.toolbar>span.ok-note{color:var(--pos)}button.badge{border:0;font:inherit;font-weight:700;cursor:pointer}.logs{display:flex;gap:16px;align-items:flex-start}.logs aside{min-width:280px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 14px}.logs aside h2{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:2px 0 10px}.logs aside ul{list-style:none;padding:0;margin:0}.logs aside li{display:flex;align-items:center;gap:8px;padding:3px 0}.logs aside li button{border:0;background:transparent;color:var(--text);font:inherit;cursor:pointer;padding:4px 8px;border-radius:6px;flex:1;text-align:left;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px}.logs aside li button:hover{background:var(--panel-2)}.logs aside li button.active{background:light-dark(#4f8cff1f,#4f8cff2e);color:var(--accent)}.logs aside li a{text-decoration:none;color:var(--muted)}.logs aside li a:hover{color:var(--accent)}.meta{color:var(--muted);font-size:12px}.viewer{flex:1;min-width:0}.viewer .toolbar{margin-bottom:8px}.viewer .toolbar strong{color:var(--text);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px}.viewer .toolbar input.filter{max-width:320px}.viewer pre{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 14px;overflow:auto;max-height:72vh;font-size:12px;line-height:1.5;margin:0}.schedule-card{margin-top:16px}.schedule-row{padding:10px 0;border-bottom:1px solid var(--border, #333)}.schedule-row:last-of-type{border-bottom:none}.schedule-head{display:flex;align-items:center;gap:16px;margin-bottom:6px}.schedule-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.schedule-controls input[type=time]{font:inherit;padding:2px 6px}.schedule-days{display:inline-flex;gap:8px}.schedule-days label{display:inline-flex;align-items:center;gap:2px}
