:root{color-scheme:light dark;--bg: #f5f7fa;--surface: #ffffff;--surface-2: #eef1f5;--text: #16202b;--muted: #5d6b7a;--border: #d9dee5;--accent: #1558c0;--accent-text: #ffffff;--good: #0f6b3c;--bad: #b71c1c;--warn: #7d5200;--good-bg: #e2f5ea;--bad-bg: #fde8e8;--warn-bg: #fff2d6;--info-bg: #e3eefc;--info: #1f5fbf;--danger-text: #ffffff;--radius: 12px}@media (prefers-color-scheme: dark){:root{--bg: #0b0f14;--surface: #131a22;--surface-2: #1b242e;--text: #e6edf3;--muted: #93a1b0;--border: #26313d;--accent: #4c8dff;--accent-text: #08111f;--good: #3ecf8e;--bad: #ff6b6b;--warn: #f2b84b;--good-bg: #12301f;--bad-bg: #3a1717;--warn-bg: #3a2b0c;--info-bg: #152a47;--info: #7db0ff;--danger-text: #1a0505}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);overflow-x:hidden}body{font:15px/1.5 -apple-system,BlinkMacSystemFont,PingFang SC,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;-webkit-text-size-adjust:100%}#root{min-height:100vh}h1{font-size:20px;margin:0 0 4px}h2{font-size:16px;margin:0}h3{font-size:13px;margin:12px 0 4px;color:var(--muted);font-weight:600}p{margin:4px 0;overflow-wrap:anywhere}a{color:var(--accent)}.muted{color:var(--muted)}.small{font-size:13px}.big{font-size:24px;font-weight:700;margin:0 0 8px}.pos{color:var(--good)}.neg{color:var(--bad)}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.shell{display:flex;flex-direction:column;min-height:100vh;max-width:720px;margin:0 auto}.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--border)}.brand{font-weight:700}.topbar-right{display:flex;align-items:center;gap:10px;min-width:0}.content{flex:1;padding:12px 12px 84px;min-width:0}.tabs{position:fixed;bottom:0;left:0;right:0;z-index:5;display:grid;grid-template-columns:repeat(6,1fr);max-width:720px;margin:0 auto;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tab{text-align:center;padding:15px 2px;min-height:48px;color:var(--muted);text-decoration:none;font-size:13px}.tab.active{color:var(--accent);font-weight:700;box-shadow:inset 0 2px 0 var(--accent)}.page-title{margin:4px 0 10px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;margin:0 0 12px;min-width:0}.card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.row{display:flex;gap:8px;align-items:center;min-width:0}.between{justify-content:space-between}.list{list-style:none;margin:0;padding:0}.list.plain>li{list-style:none}.list-item{padding:10px 0;border-top:1px solid var(--border);min-width:0}.list-item:first-child{border-top:0}.list.compact>li{padding:4px 0}.list-link{display:block;color:inherit;text-decoration:none}.kvs{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin:8px 0}.kv{min-width:0}.kv dt{font-size:12px;color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.bullets{margin:4px 0;padding-left:18px}.bullets li{overflow-wrap:anywhere;margin:2px 0}.opinion{border-top:1px solid var(--border);padding:10px 0}.opinion:first-child{border-top:0;padding-top:0}details{margin:8px 0}summary{cursor:pointer;color:var(--accent);font-size:13px;padding:12px 0}.json{background:var(--surface-2);padding:8px;border-radius:8px;overflow:auto;max-height:320px;font-size:12px;max-width:100%;white-space:pre-wrap;overflow-wrap:anywhere}.position{margin-top:8px;padding:8px;background:var(--surface-2);border-radius:8px}.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;line-height:20px;background:var(--surface-2);color:var(--text);overflow-wrap:anywhere}.badge-good{background:var(--good-bg);color:var(--good)}.badge-bad{background:var(--bad-bg);color:var(--bad)}.badge-warn{background:var(--warn-bg);color:var(--warn)}.badge-info{background:var(--info-bg);color:var(--info)}.banner{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:var(--radius);margin:0 0 12px;border:1px solid var(--border)}.banner-body{min-width:0;flex:1}.banner-body p{margin:2px 0}.banner-bad{background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}.banner-warn{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}.banner-info{background:var(--info-bg);border-color:var(--info);color:var(--info)}.banner-good{background:var(--good-bg);border-color:var(--good);color:var(--good)}.state{text-align:center;padding:18px 8px}.state-title{font-weight:700;margin-bottom:4px}.state-error .state-title{color:var(--bad)}.skeleton{height:14px;border-radius:6px;margin:8px 0;background:linear-gradient(90deg,var(--surface-2),var(--border),var(--surface-2));background-size:200% 100%;animation:shimmer 1.2s infinite linear}.skeleton.short{width:60%;margin-left:auto;margin-right:auto}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.skeleton{animation:none}}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:10px 16px;border-radius:10px;font:inherit;cursor:pointer;min-height:44px;min-width:44px}.btn.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent);font-weight:600}.btn.danger{background:var(--bad);color:var(--danger-text);border-color:var(--bad)}.btn:disabled{opacity:.5;cursor:not-allowed}.link-btn{background:none;border:0;color:var(--accent);font:inherit;cursor:pointer;padding:4px 8px;min-height:44px;min-width:44px}.field{display:block;margin:0 0 10px;min-width:0}.field>span{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}input[type=text],input[type=email],input[type=password],select{width:100%;max-width:100%;padding:10px 12px;font:inherit;font-size:16px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:10px;min-height:44px}input[aria-invalid=true]{border-color:var(--bad)}.field-error,.form-error{color:var(--bad);font-size:13px;margin:4px 0 0}.filters{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:8px}.role{border:1px solid var(--border);border-radius:10px;margin:0 0 10px;padding:8px 10px;min-width:0}.role legend{padding:0 6px;font-weight:600}.check{display:flex;gap:8px;align-items:center;margin-bottom:8px;min-height:44px}.check input{width:22px;height:22px}.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.seg-item{text-align:center;padding:12px 4px;min-height:44px;border:1px solid var(--border);border-radius:10px;cursor:pointer}.seg-item.on{border-color:var(--accent);background:var(--info-bg);color:var(--info);font-weight:600}.seg-item input{position:absolute;opacity:0;pointer-events:none}.sticky-actions{display:flex;gap:10px;align-items:center;padding:8px 0 16px}.table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:14px}.table th,.table td{text-align:left;padding:6px 4px;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.chart{margin:0}.chart svg{width:100%;height:140px;background:var(--surface-2);border-radius:8px}.chart-line{stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke}.chart-dot{fill:var(--accent)}.chart-axis{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:4px}.center-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.center-page>.card,.center-page>.state{width:100%;max-width:380px}.login{display:block}.login .btn{width:100%;margin-top:8px}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.seg-item:focus-within{outline:3px solid var(--accent);outline-offset:2px}input:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.meter{width:100%;height:10px;accent-color:var(--accent)}.list-link{min-height:44px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 12px}.chip{min-height:36px;padding:4px 12px;border-radius:18px;border:1px solid var(--border, #444);background:transparent;color:inherit;font:inherit;cursor:pointer}.chip.on{background:var(--accent, #2563eb);border-color:var(--accent, #2563eb);color:var(--accent-text)}.hints{padding-left:18px}
