:root{--bg:#f7f7f8;--surface:#fff;--subtle:#f2f3f5;--hover:#f7f8fa;--border:#e4e5e9;--divider:#eeeff2;--border-strong:#d1d3d8;--text-1:#16181d;--text-2:#4b5060;--text-3:#6b7080;--accent:#2f5bd3;--accent-hover:#2850bc;--neg:#c23b32;--pos:#1f8a4c;--warn:#b26a00;--neg-soft:#fbedec;--pos-soft:#e9f5ee;--warn-soft:#fbf1e3;--pop-shadow:0 8px 24px #1018281f;--s1:#3370ff;--s2:#eb6834;--s3:#1baf7a;--s4:#eda100;--grid:#eef0f3;--axis:#d0d3d9;--nav-w:208px;--as-w:clamp(320px, 25vw, 380px)}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text-1);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;margin:0;font-family:Inter,PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,Noto Sans SC,WenQuanYi Zen Hei,sans-serif;font-size:14px;line-height:1.6}a{color:var(--accent);cursor:pointer;border-radius:4px;text-decoration:none}a:hover{text-underline-offset:2px;text-decoration:underline}button,textarea,input,select{font-variant-numeric:tabular-nums;font-family:inherit}:focus{outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ico{vertical-align:-3px;flex:none;width:16px;height:16px;display:inline-block}.app{grid-template-columns:var(--nav-w) minmax(0, 1fr);height:100vh;display:grid}.app.with-assistant{grid-template-columns:var(--nav-w) minmax(0, 1fr) var(--as-w)}nav{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:2px;min-width:0;padding:16px 12px;display:flex;overflow:auto}.logo{align-items:center;gap:8px;padding:4px 8px;display:flex}.logo-mark{background:var(--text-1);color:#fff;border-radius:6px;flex:none;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;font-weight:600;line-height:1;display:flex}.logo b{font-size:14px;font-weight:600}.store-pick{margin:4px 0 16px;position:relative}.store-pick select{appearance:none;border:1px solid var(--border);background:var(--surface);width:100%;height:32px;color:var(--text-1);cursor:pointer;border-radius:6px;padding:0 28px 0 10px;font-size:13px}.store-pick select:hover{border-color:var(--border-strong)}.store-pick:after{content:"";border-right:1.5px solid var(--text-3);border-bottom:1.5px solid var(--text-3);pointer-events:none;width:6px;height:6px;position:absolute;top:12px;right:12px;transform:rotate(45deg)}.store-one{color:var(--text-3);margin-top:-2px;padding:0 8px 16px 40px;font-size:12px}.nav-item{height:32px;color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:0 8px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.nav-item:hover{background:var(--hover);color:var(--text-1);text-decoration:none}.nav-item.active{background:var(--subtle);color:var(--accent)}.nav-sub{padding-left:20px;font-size:13px}.nav-sub.disabled{color:var(--text-3);cursor:default;font-weight:400}.nav-sub.disabled:hover{color:var(--text-3);background:0 0}.soon{color:var(--text-3);font-size:12px;font-weight:400}.badge{color:var(--text-2);background:var(--subtle);border-radius:4px;padding:0 6px;font-size:12px;font-weight:500;line-height:18px}.nav-item.active .badge{background:var(--surface);color:var(--accent)}.nav-group{color:var(--text-3);padding:16px 8px 4px;font-size:12px;font-weight:500}.nav-sep{height:12px}.nav-bottom{color:var(--text-3);border-top:1px solid var(--divider);margin-top:auto;padding:12px 8px 4px;font-size:12px;line-height:1.6}.nav-bottom .who{justify-content:space-between;align-items:center;margin-top:8px;display:flex}main{min-width:0;padding:28px 32px 48px;overflow:auto}.page{max-width:1120px;margin:0 auto}h1{margin:0;font-size:20px;font-weight:600;line-height:1.25}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.page-sub{color:var(--text-3);margin-top:4px;font-size:13px}.loading,.error-box{color:var(--text-3);text-align:center;padding:48px 0;font-size:13px}.error-box{color:var(--neg)}.tabs{border-bottom:1px solid var(--divider);gap:20px;padding:0 20px;display:flex}.tab{cursor:pointer;color:var(--text-2);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:12px 0;font-size:14px;font-weight:500;line-height:1.25}.tab:hover{color:var(--text-1)}.tab.active{color:var(--text-1);border-color:var(--text-1)}.tab .cnt{color:var(--text-3);margin-left:4px;font-weight:400}.seg{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:2px;display:inline-flex}.seg button{height:28px;color:var(--text-2);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0 12px;font-size:13px}.seg button:hover{color:var(--text-1)}.seg button.on{background:var(--subtle);color:var(--text-1);font-weight:500}.kpis{background:var(--surface);border:1px solid var(--border);border-radius:8px;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;margin-bottom:24px;display:grid}.kpi{border-left:1px solid var(--divider);min-width:0;padding:16px 20px}.kpi:first-child{border-left:none}.kpi.ctx-kpi{border-left-color:var(--border-strong)}.kpi .k{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;font-size:13px;line-height:1.25;overflow:hidden}.kpi .v{white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.01em;margin:8px 0 4px;font-size:28px;font-weight:600;line-height:1.25;overflow:hidden}.kpi .v .u{color:var(--text-2);margin:0 1px;font-size:20px;font-weight:500}.kpi .d,.kpi .x{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;font-size:12px;line-height:1.25;overflow:hidden}.kpi .x{margin-top:4px}.chg{color:var(--text-2);margin-right:4px;font-weight:500}.chg.bad{color:var(--neg)}.chg.ok{color:var(--pos)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;min-width:0;margin-bottom:16px;padding:16px 20px}.panel.flush{padding:0}.panel-title{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;font-size:14px;font-weight:600;line-height:1.25;display:flex}.panel-title span{color:var(--text-3);font-size:12px;font-weight:400}.flush>.panel-title{padding:16px 20px 0}.section-title{margin:24px 0 12px;font-size:16px;font-weight:600;line-height:1.25}.grid2{grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:0 16px;display:grid}.placeholder{color:var(--text-3);font-size:12px;line-height:1.6}.footnote{color:var(--text-3);margin-top:8px;font-size:12px;line-height:1.6}.notice{background:var(--warn-soft);color:var(--warn);border-radius:8px;margin-bottom:16px;padding:10px 16px;font-size:13px}.sg{border-top:1px solid var(--divider);align-items:flex-start;gap:24px;min-width:0;padding:16px 20px;display:flex}.sg:first-child{border-top:none}.sg:hover{background:var(--hover)}.sg:last-child{border-radius:0 0 8px 8px}.sg-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.sg-head{min-width:0;color:var(--text-3);align-items:center;gap:8px;font-size:12px;line-height:1.25;display:flex}.sg-head>*{flex:none}.sg-head .obj{white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;overflow:hidden}.pri,.state-txt{white-space:nowrap;color:var(--text-2);align-items:center;gap:6px;font-size:12px;font-weight:500;display:inline-flex}.pri:before,.state-txt:before{content:"";background:var(--text-3);border-radius:50%;width:6px;height:6px}.pri.high:before{background:var(--neg)}.pri.mid:before{background:var(--warn)}.state-txt.adopted:before{background:var(--pos)}.dot-sep{color:var(--border-strong)}.idw{color:var(--text-3);font-size:.92em}.sg-title{color:var(--text-1);margin-top:4px;font-size:15px;font-weight:600;line-height:1.5}.sg-title a{color:inherit}.sg-ctx{color:var(--text-3);font-size:12px}.sg-actions{flex-wrap:wrap;align-items:center;gap:4px;margin-top:8px;display:flex}.sg-side{text-align:right;flex:none;width:168px;padding-top:2px}.obs-v{white-space:nowrap;font-size:16px;font-weight:600;line-height:1.25}.obs-k{color:var(--text-3);margin-top:4px;font-size:12px;line-height:1.5}.result{color:var(--text-2);margin-top:4px;font-size:13px;line-height:1.6}.result .time{color:var(--text-3);margin-right:8px}.empty{color:var(--text-3);text-align:center;padding:40px 20px 32px;font-size:13px}.empty b{color:var(--text-1);margin-bottom:4px;font-size:15px;font-weight:600;display:block}.checkup{border-top:1px solid var(--divider);padding:16px 20px 8px}.checkup-title{margin-bottom:4px;font-size:13px;font-weight:600}.checkup-sub{color:var(--text-3);margin-bottom:4px;font-size:12px}.btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;height:32px;color:var(--text-1);white-space:nowrap;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;line-height:1;display:inline-flex}.btn:hover{background:var(--hover);border-color:var(--border-strong)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn.text{color:var(--text-2);background:0 0;border-color:#0000;padding:0 8px}.btn.text:hover{background:var(--subtle);color:var(--text-1)}.btn.sm{height:28px;padding:0 10px;font-size:12px}.btn:disabled{opacity:.5;cursor:default}.btn.icon{width:32px;padding:0}.link-btn{color:var(--accent);cursor:pointer;font-size:inherit;background:0 0;border:none;padding:0}.link-btn:hover{text-decoration:underline}.back{color:var(--text-2);cursor:pointer;align-items:center;gap:4px;margin-bottom:16px;font-size:13px;display:inline-flex}.back:hover{color:var(--text-1);text-decoration:none}.detail-head{background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:flex-start;gap:24px;padding:20px;display:flex}.detail-head .sg-title{margin-top:8px;font-size:18px;line-height:1.45}.ctx-line{color:var(--text-3);margin-top:4px;font-size:13px}.detail-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.detail-actions .hint{color:var(--text-3);margin-left:8px;font-size:12px}.proposal{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:20px}.proposal ol{margin:0;padding-left:20px;line-height:1.6}.proposal li+li{margin-top:16px}.proposal li::marker{color:var(--text-3)}.objs{flex-direction:column;gap:6px;margin-top:8px;display:flex}.obj-row{grid-template-columns:4em minmax(0,1fr);gap:8px;font-size:13px;display:grid}.obj-row>span:first-child{color:var(--text-3)}.terms{flex-wrap:wrap;gap:4px 6px;display:flex}.term{background:var(--subtle);color:var(--text-1);border-radius:4px;padding:0 6px;font-size:12px;line-height:22px}.md{background:var(--surface);border:1px solid var(--border);overflow-wrap:anywhere;border-radius:8px;padding:4px 24px;line-height:1.75}.md p,.md ul,.md ol{margin:12px 0}.md ul,.md ol{padding-left:20px}.md li+li{margin-top:4px}.md strong{font-weight:600}.md h1,.md h2,.md h3{margin:20px 0 8px;font-size:15px}.md table{border-collapse:collapse;margin:12px 0;font-size:13px}.md th,.md td{border-bottom:1px solid var(--divider);text-align:left;padding:6px 12px 6px 0}.md code{background:var(--subtle);border-radius:4px;padding:0 4px;font-size:.92em}.tbl-wrap{min-width:0;overflow-x:auto}table.bd{border-collapse:collapse;width:100%;font-size:13px}table.bd th{text-align:left;color:var(--text-3);border-bottom:1px solid var(--border);white-space:nowrap;vertical-align:middle;height:36px;padding:0 12px;font-size:12px;font-weight:500;line-height:1.25}table.bd td{border-bottom:1px solid var(--divider);vertical-align:top;overflow-wrap:break-word;padding:10px 12px;line-height:1.5}table.bd th:first-child,table.bd td:first-child{padding-left:0}table.bd th:last-child,table.bd td:last-child{padding-right:0}table.bd tbody tr:hover td{background:var(--hover)}table.bd tbody tr:last-child td{border-bottom:none}table.bd th.num,table.bd td.num{text-align:right;white-space:nowrap}table.bd td.name{max-width:360px}table.bd .clip{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}table.bd .subtxt{color:var(--text-3);margin-top:2px;font-size:12px;display:block}.more-row td{color:var(--accent);cursor:pointer;font-size:13px}.state{white-space:nowrap;color:var(--text-2);align-items:center;gap:6px;font-size:13px;display:inline-flex}.state:before{content:"";background:var(--border-strong);border-radius:50%;width:6px;height:6px}.state.on:before{background:var(--pos)}.state.off{color:var(--text-3)}.chart{position:relative}.chart svg{display:block;overflow:visible}.chart svg text{font-variant-numeric:tabular-nums;font-family:inherit}.chart+.chart{margin-top:12px}.chart-head{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:2px;font-size:12px;display:flex}.lg{align-items:center;gap:6px;display:inline-flex}.lkey{border-radius:1px;width:12px;height:2px;display:inline-block}.tip{z-index:5;pointer-events:none;background:var(--surface);border:1px solid var(--border);box-shadow:var(--pop-shadow);white-space:nowrap;border-radius:8px;padding:8px 12px;font-size:12px;line-height:1.6;position:absolute}.tip-x{color:var(--text-3)}.form-row{border-top:1px solid var(--divider);grid-template-columns:160px minmax(0,1fr);align-items:start;gap:16px;padding:12px 0;display:grid}.panel-title+.form-row{border-top:none;padding-top:0}.form-row:last-child{padding-bottom:0}.form-row>span:first-child{color:var(--text-2)}.form-row .val{overflow-wrap:anywhere;min-width:0;line-height:1.6}.status-tag{background:var(--warn-soft);color:var(--warn);white-space:nowrap;border-radius:4px;margin-right:8px;padding:1px 6px;font-size:12px;font-weight:500}table.mini{border-collapse:collapse;margin-bottom:4px;font-size:13px}table.mini td{vertical-align:top;padding:4px 16px 4px 0}table.mini td.num{white-space:nowrap;text-align:right;font-weight:600}table.mini td.why{color:var(--text-3);font-size:12px}aside{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;min-width:0;display:flex;overflow:hidden}.as-head{border-bottom:1px solid var(--border);flex:none;justify-content:space-between;align-items:center;gap:8px;height:48px;padding:0 8px 0 16px;display:flex}.as-head b{font-size:14px;font-weight:600}.as-body{color:var(--text-2);flex:1;padding:16px;font-size:13px;line-height:1.7;overflow:auto}.as-body b{color:var(--text-1);margin-bottom:8px;font-size:14px;display:block}.as-body ul{margin:8px 0 0;padding-left:18px}.as-foot{border-top:1px solid var(--border);flex:none;padding:12px}.composer{border:1px solid var(--border);background:var(--subtle);color:var(--text-3);border-radius:8px;min-height:60px;padding:8px 12px;font-size:13px}.as-toggle{box-shadow:var(--pop-shadow);position:fixed;bottom:20px;right:20px}.toast{background:var(--text-1);color:#fff;z-index:60;box-shadow:var(--pop-shadow);border-radius:6px;padding:8px 16px;font-size:13px;position:fixed;top:20px;left:50%;transform:translate(-50%)}.toast.err{background:var(--neg)}.modal-mask{z-index:70;background:#10182852;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);width:min(480px,92vw);box-shadow:var(--pop-shadow);border-radius:12px;padding:20px 24px 24px}.modal-title{font-size:16px;font-weight:600;line-height:1.25}.modal-sub{color:var(--text-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:8px 0 16px;font-size:13px;line-height:1.6;display:-webkit-box;overflow:hidden}.modal textarea{border:1px solid var(--border);resize:vertical;width:100%;min-height:64px;color:var(--text-1);border-radius:6px;padding:8px 12px;font-size:13px;line-height:1.6}.modal textarea:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2f5bd31f}.reason-list{flex-direction:column;gap:2px;margin:0 -8px 12px;display:flex}.reason-opt{cursor:pointer;border-radius:6px;align-items:flex-start;gap:8px;padding:6px 8px;font-size:13px;line-height:1.6;display:flex}.reason-opt:hover{background:var(--hover)}.reason-opt input{accent-color:var(--accent);flex:none;margin:4px 0 0}.modal-hint{color:var(--text-3);margin-top:8px;font-size:12px;line-height:1.5}.modal-btns{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.login{justify-content:center;align-items:center;min-height:100%;padding:24px;display:flex}.login form{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:min(360px,100%);padding:28px 28px 24px}.login .logo{padding:0 0 20px}.login label{color:var(--text-2);margin:12px 0 6px;font-size:13px;display:block}.login input{border:1px solid var(--border);width:100%;height:36px;color:var(--text-1);border-radius:6px;padding:0 12px;font-size:14px}.login input:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2f5bd31f}.login .btn{width:100%;height:36px;margin-top:20px}.login .err{color:var(--neg);margin-top:12px;font-size:13px}
