:root{--bg:#0d0f13;--panel:#15181e;--panel2:#1b1f26;--line:#262b34;--ink:#e9ecf1;--ink2:#a8b0bd;--ink3:#6f7885;--accent:#ff4d4f;--ok:#34d399;--warn:#fbbf24;--radius:14px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.6;-webkit-text-size-adjust:100%}a{color:inherit;text-decoration:none}.wrap{max-width:940px;margin:0 auto;padding:0 16px 48px}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:10;background:rgba(13,15,19,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.topbar-in{max-width:940px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:14px}.brand{font-weight:700;letter-spacing:.02em;white-space:nowrap}.nav{display:flex;gap:12px;overflow-x:auto;scrollbar-width:none;flex:1 1}.nav::-webkit-scrollbar{display:none}.nav a{font-size:14px;color:var(--ink2);padding:4px 2px;white-space:nowrap;border-bottom:2px solid transparent}.nav a:hover{color:var(--ink);border-bottom-color:var(--accent)}.spacer{flex:1 1}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-top:16px}.card h2{margin:0 0 12px;font-size:16px;letter-spacing:.02em}.card h3{margin:18px 0 8px;font-size:14px;color:var(--ink2);font-weight:600}.page-title{margin:22px 0 4px;font-size:20px;letter-spacing:.02em}.page-sub{margin:0}.muted,.page-sub{color:var(--ink3);font-size:13px}.mt0{margin-top:0}.mt8{margin-top:8px}.mt16{margin-top:16px}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:10px;gap:10px}.metric{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px}.metric .v{font-size:22px;font-weight:700;letter-spacing:-.01em}.metric .k{font-size:12px;color:var(--ink3);margin-top:2px}.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--ink2);background:var(--panel2);white-space:nowrap}.badge.ok{color:var(--ok);border-color:rgba(52,211,153,.35)}.badge.warn{color:var(--warn);border-color:rgba(251,191,36,.35)}.badge.bad{color:var(--accent);border-color:rgba(255,77,79,.4)}.chip{display:inline-block;font-size:12px;padding:2px 8px;border-radius:8px;background:var(--panel2);border:1px solid var(--line);color:var(--ink2);margin:2px 4px 2px 0}.chip.off{color:var(--ink3);text-decoration:line-through}.chip-on{color:var(--ink);border-color:var(--accent);background:rgba(255,77,79,.12)}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 5px;color:var(--ink2)}.rows{display:flex;flex-direction:column;gap:8px}.row{display:grid;grid-template-columns:1.1fr 2fr auto;grid-gap:10px;gap:10px;align-items:center;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.row .name{font-size:14px;font-weight:600}.row .meta{font-size:12px;color:var(--ink3)}.row .right{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.rowhead{display:grid;grid-template-columns:1.1fr 2fr auto;grid-gap:10px;gap:10px;padding:0 12px;font-size:12px;color:var(--ink3)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--ink2);font-size:13px;padding:6px 12px;border-radius:10px;cursor:pointer;font-family:inherit}.btn:hover{color:var(--ink);border-color:var(--ink3)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover{color:#fff;filter:brightness(1.06)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-danger{color:var(--accent);border-color:rgba(255,77,79,.4)}.field{display:flex;flex-direction:column;gap:4px;margin-top:10px}.field label{font-size:12px;color:var(--ink3)}input[type=text],select{background:var(--bg);border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:8px 10px;font-size:14px;font-family:inherit;width:100%}input[type=text]:focus,select:focus{outline:none;border-color:var(--ink3)}.hint{font-size:12px;color:var(--ink3)}.err{color:var(--accent);margin-top:8px;word-break:break-all}.err,.note{font-size:13px}.note{background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:10px;padding:10px 12px;color:var(--ink2);margin-top:12px;word-break:break-word}.note.warn{border-left-color:var(--warn)}pre.json{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px;font-size:12px;overflow-x:auto;color:var(--ink2)}details.editor{margin-top:10px}details.editor summary{cursor:pointer;font-size:13px;color:var(--ink2);list-style:none}details.editor summary::-webkit-details-marker{display:none}details.editor summary:before{content:" ";color:var(--ink3)}details.editor[open] summary:before{content:"▾ "}.trend{display:grid;grid-template-columns:86px 1fr auto;grid-gap:10px;gap:10px;align-items:center;font-size:13px}.trend-day{color:var(--ink3);font-size:12px}.trend-bar{display:block;height:10px;background:var(--bg);border:1px solid var(--line);border-radius:999px;overflow:hidden}.trend-fill{display:block;height:100%;background:linear-gradient(90deg,rgba(255,77,79,.55),var(--accent))}.trend-num{color:var(--ink2);white-space:nowrap;font-size:12px}.sparks{display:flex;flex-direction:column;gap:14px}.spark{display:grid;grid-template-columns:96px 1fr auto;grid-gap:10px;gap:10px;align-items:center;font-size:13px}.spark-name{color:var(--ink2);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spark-bars{display:flex;gap:2px;align-items:flex-end;height:28px;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:3px}.spark-bar{flex:1 1;border-radius:2px;min-width:2px}.spark-bar.on{background:linear-gradient(180deg,var(--accent),rgba(255,77,79,.45))}.spark-bar.none{height:100%;border:1px dashed var(--line);background:transparent}.spark-max{white-space:nowrap}.spark-axis,.spark-max{color:var(--ink3);font-size:12px}.spark-axis{display:flex;justify-content:space-between;margin:6px 0 0}.notes{margin:0;padding-left:18px;color:var(--ink2);font-size:13px}@media (max-width:640px){.row,.rowhead{grid-template-columns:1fr}.rowhead{display:none}.row .right{justify-content:flex-start}.metric .v{font-size:19px}.trend{grid-template-columns:74px 1fr}.trend-num{grid-column:1/-1}.spark{grid-template-columns:76px 1fr;row-gap:2px}.spark .spark-max{grid-column:2/-1}}