:root{--bg: #f6f7f9;--panel: #ffffff;--text: #1f2328;--muted: #6a737d;--faint: #9aa4ae;--border: #dfe3e8;--border-strong: #c4cbd3;--accent: #2463eb;--accent-weak: #e8effd;--danger: #c62828;--ok: #1b7f3b;--warn: #b26a00;--inactive: #eceef1;--hover: #f0f4ff;--head-bg: #f3f5f8;--row-h: 24px;--font: Inter, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;font-family:var(--font);font-size:13px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0;font-weight:600}h1{font-size:17px}h2{font-size:15px}h3{font-size:13px}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid var(--border-strong);background:#fff;border-radius:4px;padding:3px 9px;cursor:pointer;line-height:18px;white-space:nowrap}button:hover:not(:disabled){background:var(--hover);border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:#1b4fc4}button.danger{color:var(--danger)}button.link{border:none;background:none;color:var(--accent);padding:0 2px}button.icon{padding:1px 5px;min-width:22px}input[type=text],input[type=password],input[type=date],input[type=month],input[type=search],input[type=number],select,textarea{border:1px solid var(--border-strong);border-radius:4px;padding:3px 6px;background:#fff;line-height:18px}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--accent-weak);border-color:var(--accent)}textarea{width:100%;font-family:var(--mono);font-size:12px}label{display:inline-flex;align-items:center;gap:4px}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:11px}.mono{font-family:var(--mono);font-size:12px}.num{text-align:right;font-variant-numeric:tabular-nums}.row{display:flex;align-items:center;gap:8px}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.stack{display:flex;flex-direction:column;gap:8px}.err{color:var(--danger)}.ok{color:var(--ok)}.warn{color:var(--warn)}.badge{display:inline-block;font-size:10px;line-height:14px;padding:0 5px;border-radius:8px;background:var(--inactive);color:var(--muted);white-space:nowrap;font-weight:500}.badge.warn{background:#fff4e0;color:var(--warn)}.badge.ok{background:#e5f5ea;color:var(--ok)}.badge.err{background:#fdecea;color:var(--danger)}.badge.accent{background:var(--accent-weak);color:var(--accent)}.swatch{display:inline-block;width:10px;height:10px;border-radius:2px;flex:none;border:1px solid rgba(0,0,0,.1)}.card{background:var(--panel);border:1px solid var(--border);border-radius:6px}.card-h{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--border)}.card-b{padding:10px}.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:4px;overflow:hidden}.seg button{border:none;border-radius:0;padding:3px 9px}.seg button+button{border-left:1px solid var(--border-strong)}.seg button.on{background:var(--accent);color:#fff}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border)}.tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;padding:6px 12px}.tabs button.on{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.chip{display:inline-flex;align-items:center;gap:3px;background:var(--accent-weak);color:#1d3f8f;border-radius:3px;padding:0 4px;font-size:11px;line-height:17px;max-width:360px;font-family:var(--mono)}.chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip button{border:none;background:none;padding:0 2px;color:inherit;line-height:1}table.plain{border-collapse:collapse;width:100%}table.plain th,table.plain td{padding:4px 8px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}table.plain th{background:var(--head-bg);font-weight:600;font-size:12px;position:sticky;top:0;z-index:1;white-space:nowrap}table.plain tr:hover td{background:#fafbfd}table.plain th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.page{padding:12px 16px 40px;display:flex;flex-direction:column;gap:12px;min-width:0}.empty{padding:24px;text-align:center;color:var(--muted)}.toast{position:fixed;bottom:16px;left:50%;transform:translate(-50%);background:#1f2328;color:#fff;padding:8px 14px;border-radius:6px;z-index:100;box-shadow:0 4px 16px #0003}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a40;z-index:50}.dialog{position:fixed;top:6vh;left:50%;transform:translate(-50%);width:min(880px,94vw);max-height:88vh;overflow:auto;background:#fff;border-radius:8px;z-index:51;box-shadow:0 10px 40px #00000040}.dialog .card-b{display:flex;flex-direction:column;gap:10px}.popover{position:absolute;z-index:30;background:#fff;border:1px solid var(--border-strong);border-radius:6px;box-shadow:0 6px 24px #00000026;padding:6px;min-width:220px;max-height:360px;overflow:auto}.spinner{display:inline-block;width:12px;height:12px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}table.plain.nowrap td{white-space:nowrap}table.plain td .ellipsis{display:inline-block;max-width:260px;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}table.plain th.num,table.plain td.num{text-align:right}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:14px;height:42px;padding:0 16px;background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:40}.topbar .brand{font-weight:700;letter-spacing:-.01em;white-space:nowrap}.topbar nav{display:flex;gap:2px;height:100%}.topbar nav a{display:flex;align-items:center;padding:0 10px;color:var(--muted);border-bottom:2px solid transparent;text-decoration:none}.topbar nav a.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.topbar nav a:hover{color:var(--text)}.mock-flag{background:#fff4e0;color:var(--warn);font-size:11px;padding:1px 6px;border-radius:3px;font-weight:600}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;background:#fff;border:1px solid var(--border);border-radius:6px;padding:7px 10px}.controls .ctl{display:inline-flex;align-items:center;gap:5px}.controls .ctl>.lbl{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.03em}.freshness{display:flex;gap:12px;align-items:center;color:var(--muted);font-size:12px;flex-wrap:wrap}.side-panel{position:fixed;top:0;right:0;bottom:0;width:min(760px,96vw);background:#fff;z-index:60;box-shadow:-8px 0 32px #0000002e;display:flex;flex-direction:column}.side-panel .sp-h{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border)}.side-panel .sp-b{flex:1;overflow:auto;padding:10px 14px;display:flex;flex-direction:column;gap:10px}.group-title{display:flex;align-items:center;gap:8px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login-card{width:min(380px,100%)}.login-card form{display:flex;flex-direction:column;gap:10px}.login-card input{width:100%}.topbar .user{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.mg-scroll{overflow:auto;position:relative;background:#fff;border:1px solid var(--border);border-radius:0 0 6px 6px}.mg-inner{position:relative}.mg-row{display:flex;height:var(--row-h)}.mg-head{position:sticky;top:0;z-index:3;background:var(--head-bg)}.mg-head .mg-row{height:auto}.mg-sticky{position:sticky;left:0;z-index:2;display:flex;background:inherit;box-shadow:1px 0 0 var(--border-strong)}.mg-head .mg-sticky{z-index:4;background:var(--head-bg)}.mg-body .mg-row{background:#fff}.mg-body .mg-row:hover,.mg-body .mg-row:hover .mg-sticky{background:#f7f9fc}.mg-c{flex:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 5px;height:100%;line-height:calc(var(--row-h) - 1px);border-right:1px solid #f0f2f4;border-bottom:1px solid #f0f2f4;font-variant-numeric:tabular-nums}.mg-c.num{text-align:right}.mg-c.block-end{border-right:1px solid var(--border-strong)}.mg-c.click{cursor:pointer}.mg-c.click:hover{outline:1px solid var(--accent);outline-offset:-1px}.mg-c.inactive{background:var(--inactive)!important;color:var(--faint)}.mg-c.hatch{background-image:repeating-linear-gradient(135deg,rgba(0,0,0,.05) 0 4px,transparent 4px 8px)}.mg-h{flex:none;padding:3px 5px;font-size:11px;font-weight:600;color:#3b434b;border-right:1px solid var(--border);border-bottom:1px solid var(--border-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mg-h.num{text-align:right}.mg-h.block-end{border-right:1px solid var(--border-strong)}.mg-ph{flex:none;padding:3px 6px;font-size:12px;font-weight:600;border-right:1px solid var(--border-strong);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;cursor:default}.mg-ph.hatch{background-image:repeating-linear-gradient(135deg,rgba(178,106,0,.12) 0 4px,transparent 4px 8px)}.mg-ph.latest{background:#e9eefb}.mg-ph .clickable{cursor:pointer}.mg-spacer{flex:none}.mg-label{font-weight:500}.mg-label.indent{padding-left:18px;color:var(--muted);font-weight:400}.mg-label.sub{color:var(--muted);font-weight:400;padding-left:12px}.mg-row.spacer-row{height:8px}.mg-row.spacer-row .mg-c{border-bottom:none}.mg-row.section-top .mg-c{border-top:1px solid var(--border-strong)}.note-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#e37400;flex:none;cursor:pointer}.kw-cell{display:flex;align-items:center;gap:5px;min-width:0}.kw-cell .kw{overflow:hidden;text-overflow:ellipsis;cursor:pointer}.kw-cell .kw:hover{color:var(--accent);text-decoration:underline}.kw-cell .pin{color:var(--muted);font-size:10px;font-family:var(--mono);overflow:hidden;text-overflow:ellipsis}.gbar{width:3px;align-self:stretch;flex:none;margin:3px 0;border-radius:2px}.delta{font-size:10px;margin-left:3px}.delta.pos{color:var(--ok)}.delta.neg{color:var(--danger)}.compact .mg-c{padding:0 3px}.legend{display:flex;gap:10px;align-items:center;font-size:11px;color:var(--muted);flex-wrap:wrap}.legend .sw{display:inline-block;width:12px;height:10px;border:1px solid rgba(0,0,0,.08);vertical-align:-1px;margin-right:3px}
