:root { color-scheme: light dark; --bg:#f9f9f7; --surface:#fcfcfb; --text:#0b0b0b; --text2:#52514e; --muted:#898781; --grid:#e1e0d9; --axis:#c3c2b7; --border:rgba(11,11,11,.12); --accent:#2a78d6; --series-1:#2a78d6; --ok:#006300; --bad:#d03b3b; --panel2:#f0efec; }
@media (prefers-color-scheme: dark) { :root { --bg:#0d0d0d; --surface:#1a1a19; --text:#fff; --text2:#c3c2b7; --grid:#2c2c2a; --axis:#383835; --border:rgba(255,255,255,.12); --accent:#3987e5; --series-1:#3987e5; --ok:#0ca30c; --panel2:#262624; } }
* { box-sizing:border-box; }
body { margin:0; display:flex; min-height:100vh; background:var(--bg); color:var(--text); font:14px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif; }
aside { width:220px; flex:none; background:var(--surface); border-right:1px solid var(--border); padding:16px 12px; }
.brand { font-weight:800; letter-spacing:2px; margin:0 8px 14px; } .brand span { display:block; font-size:11px; font-weight:400; color:var(--accent); letter-spacing:3px; }
nav { display:flex; flex-direction:column; gap:2px; }
nav a, button.link { color:var(--text2); text-decoration:none; padding:7px 10px; border-radius:8px; background:none; border:0; font:inherit; text-align:left; cursor:pointer; width:100%; }
nav a:hover, button.link:hover { background:var(--panel2); color:var(--text); } nav a.active { background:var(--panel2); color:var(--accent); font-weight:600; }
main { flex:1; min-width:0; padding:24px 28px; max-width:1100px; }
h1 { margin:0 0 16px; font-size:22px; } h2 { font-size:16px; margin:24px 0 8px; }
.muted { color:var(--muted); } .small { font-size:12px; }
.flash { padding:10px 14px; border-radius:8px; margin-bottom:14px; border:1px solid var(--border); } .flash.ok { color:var(--ok); } .flash.err { color:var(--bad); }
.tablewrap { overflow-x:auto; } table { border-collapse:collapse; width:100%; background:var(--surface); border:1px solid var(--border); border-radius:10px; }
th, td { text-align:left; padding:8px 12px; border-bottom:1px solid var(--grid); vertical-align:top; } th { color:var(--text2); font-weight:600; font-size:12px; }
.cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:12px; margin-bottom:16px; }
.card { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:14px 16px; } .card .v { font-size:24px; font-weight:700; } .card .l { color:var(--text2); font-size:12px; }
.panel { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:16px; margin-bottom:16px; max-width:640px; }
label { display:block; margin:10px 0 4px; color:var(--text2); font-size:13px; }
input[type=text], input[type=password], input[type=number], input[type=url], select, textarea { width:100%; padding:8px 10px; background:var(--bg); color:var(--text); border:1px solid var(--axis); border-radius:8px; font:inherit; }
textarea { min-height:90px; resize:vertical; } label.check { display:flex; gap:8px; align-items:center; color:var(--text); }
button, .btn { font:inherit; padding:7px 14px; border-radius:8px; border:1px solid var(--axis); background:var(--surface); color:var(--text); cursor:pointer; text-decoration:none; display:inline-block; }
button.primary, .btn.primary { background:var(--accent); border-color:var(--accent); color:#fff; font-weight:600; } button.danger { color:var(--bad); }
.row { display:flex; gap:8px; margin-top:14px; flex-wrap:wrap; } .inline { display:inline; }
.toolbar { display:flex; gap:8px; margin-bottom:12px; flex-wrap:wrap; align-items:center; } .toolbar form { display:flex; gap:8px; }
.chart { margin:0 0 16px; background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:14px 16px; }
.chart figcaption { display:flex; justify-content:space-between; margin-bottom:6px; } .chart svg { width:100%; height:auto; display:block; }
.chart .bar { fill:var(--series-1); } .chart .hit { fill:transparent; } .chart g:hover .hit { fill:var(--panel2); }
.chart .grid { stroke:var(--grid); } .chart .axis { stroke:var(--axis); } .chart .tick { fill:var(--muted); font-size:11px; }
.chart details { margin-top:6px; } .chart table { border:0; font-size:12px; max-width:320px; }
.charts { display:grid; grid-template-columns:repeat(auto-fit,minmax(420px,1fr)); gap:0 16px; }
.badge { font-size:11px; padding:2px 8px; border-radius:99px; background:var(--panel2); color:var(--text2); } .badge.ok { color:var(--ok); } .badge.bad { color:var(--bad); }
code, .mono { font-family:Consolas,monospace; font-size:12px; word-break:break-all; }
.login { margin:10vh auto; max-width:380px; width:100%; } .login h1 { text-align:center; }
@media (max-width:760px) { body { flex-direction:column; } aside { width:auto; } nav { flex-direction:row; flex-wrap:wrap; } }
