*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,Segoe UI,Microsoft YaHei,sans-serif;background:#f5f6f8;color:#1f2328}.center{height:100%;display:grid;place-items:center}.page{max-width:1100px;margin:0 auto;padding:32px 24px 64px}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.page-head h1{font-size:22px;margin:0}.page-actions{display:flex;gap:8px;align-items:center}.workbench{display:flex;height:100vh;overflow:hidden}.col-left{width:55%;border-right:1px solid #e5e7eb;display:flex;flex-direction:column;background:#eef0f3}.col-right{width:45%;display:flex;flex-direction:column;background:#fff;min-width:380px}.pane{display:flex;flex-direction:column;height:100%}.pane-toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #e5e7eb;font-size:12px}.pane-toolbar .hint{color:#8b949e;flex:1}.pane-toolbar .zoom{color:#1f2328;font-variant-numeric:tabular-nums}.pane-toolbar button{border:1px solid #d0d7de;background:#fff;border-radius:4px;padding:2px 8px;cursor:pointer;font-size:12px}.pane-toolbar button:hover{background:#f3f4f6}.pane-canvas{flex:1;overflow:hidden;display:grid;place-items:center;cursor:grab;-webkit-user-select:none;user-select:none}.pane-canvas:active{cursor:grabbing}.pane-canvas img{max-width:100%;max-height:100%;box-shadow:0 2px 16px #0000001f}.wb-head{display:flex;justify-content:space-between;align-items:flex-start;padding:12px 16px 8px;border-bottom:1px solid #f0f1f3}.wb-title{font-weight:600;font-size:14px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wb-sub{display:flex;gap:8px;align-items:center;margin-top:6px;font-size:12px}.timer{font-variant-numeric:tabular-nums;color:#1a7f37;font-weight:600}.timer.over{color:#cf222e}.target{color:#8b949e}.issue-list{margin:0;padding-left:18px;font-size:12px}.issue-list code{background:#fff5e6;padding:0 4px;border-radius:3px}.fields{flex:1;overflow-y:auto;padding:12px 16px}.field{padding:10px;border-radius:8px;border:1px solid transparent;margin-bottom:10px;cursor:pointer}.field:hover{background:#fafbfc}.field.current{border-color:#0969da;background:#f6f9fd}.field.bad{background:#fff8f8}.field.bad.current{border-color:#cf222e}.field-label{display:flex;align-items:center;gap:6px;font-size:12px;color:#57606a;margin-bottom:4px}.field.bad .field-label{color:#cf222e;font-weight:600}.evidence{margin-top:4px;font-size:11px;color:#8b949e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field-msg{margin-top:4px;font-size:11px;color:#cf222e}.wb-foot{border-top:1px solid #e5e7eb;padding:12px 16px;background:#fafbfc}.blocker{color:#cf222e;font-size:12px;margin-bottom:8px}.foot-actions{display:flex;gap:8px;justify-content:flex-end}.kbd-hint{margin-top:8px;font-size:11px;color:#8b949e;text-align:right}.shell{display:flex;flex-direction:column;min-height:100%}.shell-nav{display:flex;align-items:center;gap:28px;padding:0 24px;height:52px;background:#fff;border-bottom:1px solid #e5e7eb}.shell-nav .brand{font-weight:700;letter-spacing:.5px;color:#1f3864}.shell-nav nav{display:flex;gap:4px}.shell-nav nav a{padding:6px 12px;border-radius:6px;color:#57606a;text-decoration:none;font-size:14px}.shell-nav nav a:hover{background:#f3f4f6}.shell-nav nav a.active{background:#eef4ff;color:#1f3864;font-weight:600}.shell-main{flex:1}.page-desc{color:#8b949e;font-size:13px;margin:4px 0 16px}.page-sub{color:#8b949e;font-size:12px;margin-top:4px}.code-badge{font-size:13px;background:#eef4ff;color:#1f3864;padding:2px 8px;border-radius:4px;margin-left:8px;font-weight:600}.designer-meta{display:flex;gap:16px;margin-bottom:8px;flex-wrap:wrap}.designer-meta label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#57606a;flex:1;min-width:240px}.field-table{border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;background:#fff}.ft-head,.ft-row{display:grid;grid-template-columns:1.1fr 1.1fr .8fr .8fr 1.6fr 64px;gap:8px;padding:8px 12px;align-items:center}.ft-head{background:#fafbfc;font-size:12px;color:#57606a;border-bottom:1px solid #e5e7eb;font-weight:600}.ft-row{border-bottom:1px solid #f0f1f3}.ft-row:last-of-type{border-bottom:1px solid #e5e7eb}.field-table>.ant-btn{margin:12px;width:calc(100% - 24px)}.rule-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:8px}.rule-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;font-size:13px;cursor:pointer}.rule-item.off{opacity:.45;cursor:not-allowed;background:#fafbfc}.rule-id{font-family:ui-monospace,Consolas,monospace;font-size:12px;color:#1f3864}.rule-desc{flex:1;color:#57606a}.rule-need{font-size:11px;color:#cf222e}.shell-user{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:12px}.shell-user .tenant{color:#57606a;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.login-wrap{min-height:100vh;display:grid;place-items:center;background:#f5f6f8;padding:24px}.login-card{width:400px;box-shadow:0 4px 24px #0000000f}.login-form{display:flex;flex-direction:column;gap:12px;margin-top:16px}.login-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#57606a}.login-sep{text-align:center;color:#b6bcc4;font-size:12px;margin:18px 0 10px}.stat-hint{margin-top:6px;font-size:11px;color:#8b949e}.code-block{background:#0d1117;color:#c9d1d9;padding:14px 16px;border-radius:8px;font-size:12px;line-height:1.6;overflow-x:auto}
