:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#24332d;background:#f3f5f2;font-synthesis:none;font-variant-numeric:tabular-nums;--muted:#69756e;--line:#dfe5df;--green:#28634b;--soft:#e9f1eb}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select,summary{outline-offset:4px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--green)}[hidden]{display:none!important}header{height:76px;padding:0 max(24px,4vw);display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fafcf9;border-bottom:1px solid var(--line)}.brand{color:#233f30;text-decoration:none;font-size:19px;font-weight:650;letter-spacing:-.03em;display:flex;align-items:center;gap:16px}.brand:before{content:'↗';display:grid;place-items:center;width:34px;height:34px;background:var(--green);color:white;border-radius:9px;font-size:24px;font-weight:400}.brand span{border-left:1px solid var(--line);padding-left:16px;color:var(--muted);font-size:12px;font-weight:400;letter-spacing:0}#account{display:flex;align-items:center;gap:12px;font-size:12px}#account>span{color:var(--muted)}main{max-width:1440px;padding:44px 40px 64px;margin:auto}.eyebrow{font-size:11px;letter-spacing:.13em;font-weight:600;color:var(--green);margin:0 0 12px}h1,h2,h3,p{overflow-wrap:anywhere}h1{font-size:32px;line-height:1.25;letter-spacing:-.04em;font-weight:600;margin:0}h2{font-size:20px;font-weight:600;margin:0 0 24px;letter-spacing:-.02em}.muted{color:var(--muted);font-size:13px;line-height:1.7}.title-row{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px}.title-row .muted{margin:10px 0 0}.summary{display:grid;grid-template-columns:1fr 1fr 1fr 1.3fr;background:#fbfcfa;border:1px solid var(--line);border-radius:12px;margin-bottom:32px;overflow:hidden}.summary>div{padding:22px 26px;border-right:1px solid var(--line)}.summary>div:last-child{border:0}.summary span{font-size:12px;color:var(--muted)}.summary strong{font-size:32px;display:block;margin-top:12px;font-weight:550;letter-spacing:-.04em}.summary>div:nth-child(2) strong{color:var(--green)}.instructions p{font-size:12px;line-height:1.9;margin:10px 0 0}code{font:12px ui-monospace,SFMono-Regular,monospace;background:var(--soft);padding:3px 6px;border-radius:4px}.toolbar{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:24px}label{display:block;font-size:12px;font-weight:550;margin-bottom:18px;color:#46554b}input,select{width:100%;padding:11px 12px;border:1px solid #cfd8cf;border-radius:7px;background:white;color:#24332d;font-size:13px;margin-top:8px;min-width:0}input::placeholder{color:#89928c}input:focus,select:focus{outline:2px solid #80a58d;outline-offset:1px;border-color:var(--green)}.search{width:min(360px,100%);margin:0}button{cursor:pointer;border:1px solid transparent;border-radius:7px;padding:10px 15px;font-size:12px;font-weight:550;white-space:nowrap;transition:background .16s,border-color .16s,transform .16s}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:default}.primary{color:#fff;background:var(--green)}.primary:hover{background:#1e503c}.secondary{color:#384d3e;background:#fff;border-color:#d3dcd3}.secondary:hover{background:#edf2ec;border-color:#aebfaf}.quiet{background:transparent;color:#66716a;padding:8px}.quiet:hover{background:#e8eee7;color:#243f30}.flow-action{color:#265d43;background:#edf3ed;border-color:#d4e3d6}.flow-action:hover{background:#dae9dc}.list-heading{display:flex;align-items:center;gap:12px;margin-bottom:14px}.list-heading h2{font-size:15px;margin:0}.list-heading span{font-size:11px}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px}table{border-collapse:collapse;width:100%;white-space:nowrap}th{background:#f8faf7;color:#738075;text-align:left;font-size:11px;font-weight:500}td,th{padding:17px 16px;border-bottom:1px solid #e9eee7}td{font-size:12px}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fcfdfb}.user-id{display:block;font:600 13px ui-monospace,SFMono-Regular,monospace}.user-label{display:block;color:var(--muted);font-size:11px;margin-top:6px}.badge{color:#356449;background:#edf4ec;padding:4px 8px;border-radius:5px;font-size:11px}.badge:before{content:'';display:inline-block;width:5px;height:5px;background:currentColor;border-radius:50%;margin-right:6px;vertical-align:2px}.badge.off{color:#797b73;background:#f0f1ed}.actions{display:flex;gap:6px}.actions button{font-size:11px;padding:7px 9px}.footnote,.help{color:var(--muted);font-size:12px;line-height:1.8}.footnote{margin-top:18px}.error{color:#a43d32;font-size:13px;line-height:1.6}.error:empty,#notice:empty{display:none}#notice{font-size:13px;color:var(--green)}#notice.error{color:#a43d32}.empty{text-align:center;padding:52px 20px;color:var(--muted);font-size:13px}.empty h2{margin-bottom:10px;color:#435448;font-size:18px}.empty p{margin:0}.login-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:10%;align-items:center;min-height:70dvh;max-width:1000px;margin:auto}.intro h1{font-size:48px;line-height:1.25}.intro>p:not(.eyebrow){max-width:340px;color:var(--muted);font-size:14px;line-height:1.9;margin-top:24px}.connection-note{font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:20px;margin-top:36px}.panel{background:#fff;padding:32px;border:1px solid var(--line);border-radius:14px}.panel>.primary{width:100%;margin-top:4px}dialog{border:1px solid var(--line);border-radius:14px;background:#fff;padding:28px;width:min(520px,calc(100vw - 32px));max-height:90dvh;color:#24332d;box-shadow:0 24px 90px #1e352321}dialog::backdrop{background:#233a304d;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:start;justify-content:space-between;gap:20px}.dialog-head h2{margin-bottom:24px}.dialog-head .quiet{margin-top:-5px}.password-row{display:flex;align-items:end;gap:8px}.password-actions{display:flex;gap:8px;margin-top:-8px}.file-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;border-bottom:1px solid var(--line);font-size:12px}.file-row a{color:var(--green)}.file-row span{color:var(--muted)}.source-list{padding:14px;background:#f3f6f0;border-radius:7px;font-size:12px;line-height:1.8;margin:16px 0}.skip-link{position:fixed;top:-60px;left:20px;padding:12px;background:#fff;color:var(--green);z-index:2}.skip-link:focus{top:10px}
/* Flow inspector keeps connection summaries aligned and payloads separate. */
#flow-dialog{width:min(1240px,calc(100vw - 40px));padding:0;max-height:94dvh}#flow-dialog>.dialog-head{position:sticky;top:0;z-index:1;padding:24px 28px 18px;background:#f8faf6;border-bottom:1px solid var(--line)}#flow-dialog h2{margin:0;font-size:22px}#flow-dialog .eyebrow{margin-bottom:7px}.flow-controls{display:flex;justify-content:space-between;align-items:end;gap:20px;padding:20px 28px 16px}.flow-controls label{margin:0;width:260px}.flow-page-actions{display:flex;gap:8px}.flow-filter{display:flex;align-items:end;justify-content:space-between;gap:16px;padding:0 28px}.flow-filter label{flex:1;max-width:400px;margin:0}.flow-filter input{background:#f8faf6}.flow-filter>span{font:12px ui-monospace,monospace;color:var(--muted);padding-bottom:12px;white-space:nowrap}#flow-status{font-size:12px;line-height:1.6;color:var(--muted);padding:12px 28px;margin:0}#flow-rows{border-top:1px solid var(--line)}#flow-rows[aria-busy=true]{opacity:.45}.flow-record{border-bottom:1px solid var(--line)}.flow-record>summary{list-style:none;display:grid;grid-template-columns:54px 42px minmax(0,1fr) 128px;gap:12px;align-items:center;padding:17px 28px;cursor:pointer;position:relative}.flow-record>summary::-webkit-details-marker{display:none}.flow-record>summary:after{content:'›';position:absolute;right:12px;color:#7c8b7e;font-size:18px}.flow-record[open]>summary:after{transform:rotate(90deg)}.flow-record>summary:hover,.flow-record[open]>summary{background:#f1f6ef}.method{font:600 11px ui-monospace,monospace;color:#456348}.status-code{font:12px ui-monospace,monospace;color:#32694b;background:#e7f0e5;border-radius:4px;padding:4px 5px;text-align:center}.status-code.failed{background:#f9ebe5;color:#a44b38}.flow-address{min-width:0;display:grid;gap:5px}.flow-host{font-size:13px;font-weight:550;overflow-wrap:anywhere}.flow-path{font:11px ui-monospace,SFMono-Regular,monospace;color:#758175;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.flow-time{color:#788377;font-size:10px;line-height:1.6;text-align:right}.flow-content{padding:0 28px 24px;background:#f8faf6}.flow-connection{font:11px/1.7 ui-monospace,monospace;color:#657464;padding:16px 0;margin:0;overflow-wrap:anywhere}.message-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.message-panel{min-width:0;background:white;border:1px solid var(--line);border-radius:8px;padding:18px}.message-panel h3{font-size:14px;margin:0 0 6px}.message-meta{font-size:11px;color:var(--muted);margin:0 0 20px}.message-panel h4{font-size:11px;color:#63745f;font-weight:500;margin:18px 0 8px}.message-panel pre{font:11px/1.75 ui-monospace,SFMono-Regular,monospace;white-space:pre-wrap;overflow-wrap:anywhere;max-height:280px;overflow:auto;background:#f4f6f1;padding:12px;border-radius:5px;margin:0;color:#43523e}.flow-help{padding:16px 28px;color:#7a8475;font-size:10px;line-height:1.8;margin:0}.flow-record summary:focus-visible{outline:2px solid var(--green);outline-offset:-3px}
@media(max-width:1100px){.brand span{display:none}.summary>div{padding:20px}.table-wrap{overflow:visible}table,tbody{display:block}thead{display:none}tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:20px;gap:20px;border-bottom:1px solid var(--line)}td{display:block;padding:0;border:0;white-space:normal}td:first-child{grid-column:1/3}td:last-child{grid-column:1/-1}.actions{border-top:1px solid var(--line);padding-top:14px;flex-wrap:wrap}td:nth-child(3)::before{content:'来源 IP'}td:nth-child(4)::before{content:'最近访问'}td:nth-child(5)::before{content:'流量条数'}td:nth-child(n+3):nth-child(-n+5)::before{display:block;color:var(--muted);font-size:10px;margin-bottom:7px}.message-grid{grid-template-columns:1fr}}
@media(max-width:600px){header{height:66px;padding:0 18px}.brand{font-size:16px;gap:8px}.brand:before{width:28px;height:28px;font-size:20px}#account{gap:2px}#account>span{display:none}#account button{font-size:10px;padding:6px}main{padding:28px 18px 40px}.title-row{align-items:start;gap:12px}h1{font-size:26px}.title-row .muted{font-size:12px}.title-row .primary{padding:9px 10px;font-size:11px}.summary{grid-template-columns:1fr 1fr;margin-bottom:26px}.summary>div{padding:18px}.summary>div:nth-child(2){border-right:0}.summary>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.summary strong{font-size:28px}.summary .instructions p{font-size:11px}tbody tr{grid-template-columns:1fr 1fr;gap:18px}td:first-child{grid-column:auto}td:nth-child(2){text-align:right}.actions{gap:4px}.actions button{font-size:11px;padding:7px}.login-layout{grid-template-columns:1fr;gap:30px;min-height:0}.intro h1{font-size:36px}.intro>p:not(.eyebrow){margin-top:18px}.connection-note{margin-top:20px}.panel{padding:24px}#flow-dialog{width:100vw;max-width:100vw;max-height:100dvh;border-radius:0}#flow-dialog>.dialog-head{position:sticky;top:0;z-index:1;padding:20px 18px 16px}#flow-dialog h2{font-size:20px}.flow-controls{padding:16px 18px;flex-wrap:wrap;gap:12px}.flow-controls label{width:100%}.flow-page-actions{width:100%;justify-content:flex-end}.flow-filter{padding:0 18px}#flow-status{padding:12px 18px}.flow-record>summary{padding:16px 26px 16px 18px;grid-template-columns:44px 35px minmax(0,1fr);gap:8px}.flow-time{grid-column:3;text-align:left;font-size:10px}.flow-content{padding:0 18px 18px}.flow-help{padding:14px 18px}.message-panel{padding:14px}dialog{padding:22px}.toolbar{gap:12px}.flow-host{font-size:12px}}
@media(prefers-reduced-motion:reduce){button{transition:none}}
#questions-dialog{width:min(1000px,calc(100vw - 32px))}.question-row{display:flex;align-items:baseline;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.question-row .badge{flex:none}.question-row button{text-align:left;line-height:1.65}#questions-list{margin:18px 0}#question-detail{width:min(1200px,calc(100vw - 32px));padding:0}#question-detail>.dialog-head{position:sticky;top:0;background:#fff;padding:24px 28px 16px;border-bottom:1px solid var(--line);z-index:1}#question-detail h2{margin:0}#question-detail-status{margin:0;padding:0 28px}#question-detail-status:not(:empty){padding:16px 28px}.question-detail-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.question-detail-grid>section{min-width:0;padding:24px 28px}.question-detail-grid h3{margin:0 0 16px;font-size:15px}.question-answer-panel{background:#f3f7f1;border-left:1px solid var(--line)}.question-provenance{padding:18px 28px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.question-provenance summary{cursor:pointer}.question-row button{white-space:normal;overflow-wrap:anywhere}.question-row{flex-wrap:wrap}@media(max-width:760px){.question-detail-grid{grid-template-columns:1fr}.question-answer-panel{border-left:0;border-top:1px solid var(--line)}.question-detail-grid>section{padding:20px}#question-detail>.dialog-head{padding:20px}#question-detail h2{font-size:18px}}#question-detail pre{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.8 system-ui,sans-serif}#questions-dialog .flow-controls{padding:12px 0}

.page-nav{display:flex;gap:28px;padding:0 max(24px,4vw);background:#fafcf9;border-bottom:1px solid var(--line)}.page-nav a{padding:17px 0;color:var(--muted);text-decoration:none;font-size:14px;border-bottom:3px solid transparent}.page-nav a[aria-current=page]{color:var(--green);border-color:var(--green);font-weight:600}#questions-page .flow-controls{padding:16px 0}#questions-page #questions-status{font-size:13px;color:var(--muted);line-height:1.8}#questions-page #questions-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.question-card{min-width:0;background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px;display:flex;flex-direction:column;gap:14px}.question-card-meta{display:flex;gap:8px}.question-card-title{text-align:left;white-space:normal;font-size:15px;line-height:1.65;padding:0;color:#24332d;background:none;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}.question-card-title:hover{color:var(--green);text-decoration:underline}.question-card-material,.question-card-reason{font-size:13px;line-height:1.75;margin:0;color:var(--muted);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.question-card-answer{margin-top:auto;border-top:1px solid var(--line);padding-top:14px;color:var(--green);font-size:15px;font-weight:600;line-height:1.65;overflow-wrap:anywhere}.question-card-reason{-webkit-line-clamp:2}#questions-page>.flow-page-actions{justify-content:flex-end;align-items:center;margin-top:24px}@media(max-width:800px){#questions-page #questions-list{grid-template-columns:1fr}.page-nav{padding:0 18px}.question-card{padding:18px}}

#questions-page .flow-controls{justify-content:flex-start;flex-wrap:wrap}#questions-page .flow-controls label{flex:1;min-width:200px;max-width:420px}

#question-content{display:block;width:100%;height:65vh;min-height:360px;border:1px solid var(--line);border-radius:6px;background:#fff}.flow-filter{flex-wrap:wrap}.flow-filter label{min-width:160px}.flow-filter #flow-scope{min-width:160px}
/* Question archive previews */
.question-card-meta{align-items:center;flex-wrap:wrap}.question-number{font-size:13px;font-weight:600;margin-right:4px}.question-card-actions{display:flex;gap:8px;margin-left:auto}.question-card-actions button{padding:7px 10px;font-size:12px}.question-delete{background:transparent;color:#a13d35;border:1px solid #e5c8c4}.question-delete:hover{background:#fff1ef}.question-card-preview{display:block;width:100%;height:330px;border:1px solid var(--line);border-radius:8px;background:#fff}.question-card-answer{margin-top:0;display:flex;align-items:baseline;gap:14px}.answer-label{display:block;font-size:12px;font-weight:500;color:var(--muted);flex:none}.answer-value{font-size:22px;white-space:pre-wrap;overflow-wrap:anywhere}.question-card-explanation{font-size:14px;line-height:1.8;overflow-wrap:anywhere}.reason-preview{margin:6px 0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;white-space:pre-wrap}.reason-details summary{cursor:pointer;color:var(--green);font-size:12px;padding:5px 0}.reason-full{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.85;margin:12px 0}.question-card-explanation:has(details[open])>.reason-preview{display:none}#question-answer{padding:0 0 22px;border-top:0;border-bottom:1px solid var(--line);margin-bottom:24px}#question-solution h3{font-size:13px;color:var(--muted)}@media(max-width:520px){.question-card-actions{width:100%;margin-left:0;justify-content:flex-end}.question-card-preview{height:300px}.question-card{padding:14px}}

.question-card-preview[hidden]{display:none}.answer-option-text{font-size:14px;font-weight:400;color:#24332d;overflow-wrap:anywhere;white-space:pre-wrap}.question-card-answer{flex-wrap:wrap}.answer-option-text{flex-basis:100%}

/* 身份上报与窗口绑定（identity_bind）：服务端作用域 + 上报结果分开显示。 */
.bind-panel{margin:0 0 32px;padding:22px 26px;background:#fbfcfa;border:1px solid var(--line);border-radius:12px}
.bind-panel.push-inline{margin:0 0 20px;padding:0 18px 18px}
.bind-panel.push-inline>summary{cursor:pointer;padding:16px 0;font-size:14px;font-weight:600}
.bind-panel.push-inline>summary .muted{font-weight:400}
.bind-panel.push-inline .help{margin:0 0 14px}
.bind-cards button{align-self:center;margin:0 12px}
.bind-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.bind-head h2,.bind-head h3{margin:0;font-size:16px}
.bind-head .muted{margin-left:auto;text-align:right}
.bind-head button{margin-left:12px;flex:none}
.bind-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
.bind-cards>div{padding:16px 18px;border-right:1px solid var(--line);min-width:0}
.bind-cards>div:last-child{border-right:0}
.bind-cards span{display:block;font-size:10px;letter-spacing:.06em;color:var(--muted);margin-bottom:8px}
.bind-cards strong{display:block;font-size:14px;font-weight:600;overflow-wrap:anywhere}
.bind-events{margin-top:22px}
.bind-events .table-wrap{background:#fff;border:1px solid var(--line);border-radius:10px;padding:0 4px}
.bind-events td:last-child{font-size:12px;color:var(--muted)}
@media(max-width:1100px){.bind-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.bind-cards>div:nth-child(3n){border-right:0}.bind-cards>div:nth-child(-n+3){border-bottom:1px solid var(--line)}}
@media(max-width:600px){.bind-panel{padding:18px}.bind-cards{grid-template-columns:1fr 1fr}.bind-cards>div{border-right:0;border-bottom:1px solid var(--line)}.bind-head{flex-wrap:wrap}.bind-head .muted{margin-left:0;text-align:left;flex-basis:100%;order:3}}

/* 「认证绑定」列 + 顶部面板的运维卡片 */
.quiet-badge{background:#eef2ee;color:#41564a}
.bind-cards{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1100px){.bind-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.bind-cards>div:nth-child(3n){border-right:1px solid var(--line)}.bind-cards>div:nth-child(2n){border-right:0}.bind-cards>div:nth-child(-n+2){border-bottom:1px solid var(--line)}
/* 用户表多了一列：小屏按序贴上标签 */
tbody tr{grid-template-columns:repeat(3,minmax(0,1fr))}
td:nth-child(3)::before{content:'认证绑定'}
td:nth-child(4)::before{content:'来源 IP'}
td:nth-child(5)::before{content:'最近访问'}
td:nth-child(6)::before{content:'流量条数'}
td:nth-child(n+3):nth-child(-n+6)::before{display:block;color:var(--muted);font-size:10px;margin-bottom:7px}}
@media(max-width:600px){.bind-cards{grid-template-columns:1fr 1fr}tbody tr{grid-template-columns:1fr 1fr}}

/* 「考试账号」列 */
.account-value{font:600 13px ui-monospace,SFMono-Regular,monospace;overflow-wrap:anywhere;letter-spacing:-.01em}
@media(max-width:1100px){
tbody tr{grid-template-columns:repeat(2,minmax(0,1fr))}
td:nth-child(3)::before{content:'考试账号'}
td:nth-child(4)::before{content:'认证绑定'}
td:nth-child(5)::before{content:'来源 IP'}
td:nth-child(6)::before{content:'最近访问'}
td:nth-child(7)::before{content:'流量条数'}
td:nth-child(n+3):nth-child(-n+7)::before{display:block;color:var(--muted);font-size:10px;margin-bottom:7px}}
.bind-cards strong.warn{color:#a1500f}
