:root{--bg: #ecebe6;--paper: #f7f6f2;--ink: #1c1b18;--muted: #6a6760;--line: #d4d0c8;--line-strong: #b7b2a8;--warn-bg: #f3ead6;--warn-ink: #6a4b12;--bad-bg: #f3e2de;--bad-ink: #7a2e24;--ok-bg: #e2ebe4;--ok-ink: #215338;--info-bg: #e7ecec;--info-ink: #2c4a4a;--accent: #2c4a4a;--sans: "Segoe UI", system-ui, -apple-system, "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Noto Sans Mono", monospace}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font:13px/1.45 var(--sans)}h1,h2,h3,h4{margin:0;font-weight:600}h1{font-size:18px;letter-spacing:.01em}h2{font-size:12px;text-transform:none;letter-spacing:.04em}h3,h4{font-size:12px;margin:10px 0 6px}a{color:var(--accent);text-decoration:none}code{font-family:var(--mono);font-size:12px}button,input,select{font:inherit;color:inherit}button{background:var(--ink);color:var(--paper);border:1px solid var(--ink);padding:6px 10px;cursor:pointer}button.secondary,button:disabled{background:transparent;color:var(--ink);border-color:var(--line-strong)}button:disabled{color:var(--muted);cursor:not-allowed}input,select{width:100%;background:#fff;border:1px solid var(--line-strong);padding:6px 8px}input:focus,select:focus,button:focus{outline:1px solid var(--accent);outline-offset:1px}.shell{min-height:100vh}.top{display:flex;justify-content:space-between;gap:16px;padding:12px 16px 8px;border-bottom:1px solid var(--line);background:var(--paper);flex-wrap:wrap}.kicker{margin:0 0 2px;color:var(--muted);font-size:11px;letter-spacing:.08em}.status-strip{display:flex;gap:18px;margin:0;flex-wrap:wrap}.status-strip dt{color:var(--muted);font-size:11px}.status-strip dd{margin:0}.token-bar{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px 10px;align-items:end;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--paper)}.token-bar label{display:grid;gap:4px;font-size:12px;color:var(--muted)}.token-bar .hint,.form .hint,.hint{grid-column:1 / -1;margin:0;color:var(--muted);font-size:12px}.body{display:grid;grid-template-columns:148px minmax(0,1fr);min-height:calc(100vh - 140px)}.nav{display:flex;flex-direction:column;gap:2px;padding:12px 8px;border-right:1px solid var(--line);background:var(--paper)}.nav a{padding:7px 8px;color:var(--ink)}.nav a.active{background:var(--info-bg);box-shadow:inset 3px 0 0 var(--accent)}.main{padding:12px 16px 32px;min-width:0}.stack{display:flex;flex-direction:column;gap:14px}.stack.tight{gap:8px}.split{display:grid;grid-template-columns:1fr 1fr;gap:16px}.section{background:var(--paper);border:1px solid var(--line);padding:10px 12px 12px}.section-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:8px;border-bottom:1px solid var(--line);padding-bottom:6px}.banner{border:1px solid var(--line);padding:8px 10px}.banner.info{background:var(--info-bg);color:var(--info-ink)}.banner.warn{background:var(--warn-bg);color:var(--warn-ink)}.banner.bad{background:var(--bad-bg);color:var(--bad-ink)}.banner.ok{background:var(--ok-bg);color:var(--ok-ink)}.banner ul,.plain-list{margin:6px 0 0;padding-left:18px}.banner-action{margin-left:10px}.missing,.muted,.null{color:var(--muted)}.null,.mono,.bool{font-family:var(--mono);font-size:12px}.wrap{overflow-wrap:anywhere;word-break:break-word}.bool.true{color:var(--ok-ink)}.bool.false{color:var(--muted)}table.kv,table.grid{width:100%;border-collapse:collapse}table.kv th,table.grid th,table.kv td,table.grid td{text-align:left;vertical-align:top;padding:4px 8px 4px 0;border-bottom:1px solid var(--line)}table.kv th{width:220px;color:var(--muted);font-weight:500}table.kv.nested{margin:2px 0}table.grid th{color:var(--muted);font-weight:500;white-space:nowrap}.table-wrap{overflow-x:auto}.warn-row th,.warn-row td{background:var(--warn-bg)}.form{display:grid;gap:10px;max-width:720px}.form label{display:grid;gap:4px;color:var(--muted);font-size:12px}.form-actions{display:flex;gap:10px;align-items:center}@media(max-width:800px){.body{grid-template-columns:1fr}.nav{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line)}.nav a{white-space:nowrap}.token-bar,.split{grid-template-columns:1fr}table.kv th{width:36%}}
