:root{--bg: #f4f5f7;--panel: #ffffff;--border: #e4e6ea;--border-strong: #d3d6dc;--text: #1c1f23;--text-2: #5d6470;--text-3: #8b919c;--primary: #185fa5;--primary-hover: #134c86;--primary-soft: #e9f1fa;--danger: #c0392b;--radius: 8px;--radius-lg: 10px;--topbar-h: 56px;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--sans);font-size:13px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2{margin:0;font-weight:500}button,input,select{font-family:inherit;font-size:inherit;color:inherit}.app{display:flex;flex-direction:column;height:100vh}.topbar{height:var(--topbar-h);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-mark{color:var(--primary);flex-shrink:0}.brand-text{display:flex;flex-direction:column;gap:1px;min-width:0}.brand-text strong{font-size:14px;font-weight:500}.brand-text span{font-size:12px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.privacy-badge{font-size:12px;color:#2c6e49;background:#e8f5ec;border:1px solid #cbe8d5;border-radius:999px;padding:3px 10px;white-space:nowrap}.btn{height:30px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fff;color:var(--text);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:#f7f8f9;border-color:#bfc4cc}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-sm{height:26px;padding:0 9px;font-size:12px}.btn-block{width:100%}.icon-btn{width:26px;height:26px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fff;cursor:pointer;font-size:14px;line-height:1}.icon-btn:hover{background:#f7f8f9}.layout{flex:1;min-height:0;display:grid;grid-template-columns:264px minmax(0,1fr) 320px;gap:12px;padding:12px}.panel{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.panel-head{height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 14px;border-bottom:1px solid var(--border)}.panel-head h2{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hint{font-size:12px;color:var(--text-3);white-space:nowrap}.panel-placeholder{flex:1;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center;font-size:12px;color:var(--text-3);line-height:1.7}.panel-placeholder[hidden]{display:none}.search-box{flex-shrink:0;padding:10px 12px;border-bottom:1px solid var(--border)}.search-box input{width:100%;height:32px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fbfbfc;outline:none}.search-box input:focus{border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px var(--primary-soft)}.candidate-list{flex:1;min-height:0;margin:0;padding:6px;list-style:none;overflow-y:auto}.candidate{display:flex;align-items:center;gap:8px;padding:8px 9px;border-radius:var(--radius);cursor:pointer;border:1px solid transparent}.candidate:hover{background:#f5f6f8}.candidate.is-active{background:var(--primary-soft);border-color:#bcd7ee}.candidate-main{flex:1;min-width:0}.candidate-name{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.candidate-name em{font-style:normal;color:var(--primary);font-weight:500}.candidate-meta{font-size:11px;color:var(--text-3);margin-top:2px}.candidate-tag{flex-shrink:0;font-size:10px;letter-spacing:.3px;text-transform:uppercase;color:var(--text-3);border:1px solid var(--border-strong);border-radius:4px;padding:1px 4px}.zoom-controls{display:flex;align-items:center;gap:6px}.zoom-label{min-width:44px;text-align:center;font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums}.stage{flex:1;min-height:0;overflow:auto;background:#ecedf0;position:relative}.stage-paper{position:relative;margin:24px auto;width:max-content;background:#fff;box-shadow:0 1px 4px #14181e24;line-height:0}.stage-paper canvas{display:block;cursor:default}.stage-paper canvas.is-draggable{cursor:move}.stage-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--text-3);pointer-events:none}.stage-empty p{margin:0;font-size:13px}.stage-empty-sub{font-size:12px;color:#a2a8b2}.stage-empty[hidden]{display:none}.stage-foot{height:30px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;border-top:1px solid var(--border);font-size:12px;color:var(--text-3)}.stage-foot-tip{color:var(--primary)}.page-nav{display:flex;align-items:center;gap:8px}.page-nav[hidden]{display:none}.page-nav #pageLabel{font-variant-numeric:tabular-nums;color:var(--text-2)}.page-btn{width:22px;height:22px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);border-radius:5px;background:#fff;color:var(--text-2);font-size:14px;line-height:1;cursor:pointer}.page-btn:hover:not(:disabled){background:#f4f5f7;color:var(--text)}.page-btn:disabled{opacity:.4;cursor:not-allowed}.usage-row{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);background:#fbfbfc}.usage-row label{flex-shrink:0;font-size:12px;color:var(--text-2)}.usage-row input{flex:1;min-width:0;height:28px;padding:0 9px;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fff;outline:none}.usage-row input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.tpl-row{flex-shrink:0;display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--border);background:#fbfbfc}.tpl-row select{flex:1;min-width:0;height:28px;padding:0 8px;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fff;outline:none}.tpl-row select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.tpl-name-row{flex-shrink:0;display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--border);background:#eef4fb}.tpl-name-row[hidden]{display:none}.tpl-name-row input{flex:1;min-width:0;height:28px;padding:0 9px;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fff;outline:none}.tpl-name-row input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.row-label{flex-shrink:0;font-size:12px;color:var(--text-2);margin-right:2px}.wm-mode-row{flex-shrink:0;display:flex;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid var(--border)}.mode-btn{flex:1;height:30px;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fff;color:var(--text-2);font-size:12px;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.mode-btn:hover{background:#f7f8f9}.mode-btn .tick{color:var(--primary);opacity:0;font-size:12px;line-height:1}.mode-btn.is-on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.mode-btn.is-on .tick{opacity:1}.wm-scroll{flex:1;min-height:0;overflow-y:auto}.config-hint{margin-top:14px;padding:9px 10px;border-radius:var(--radius);background:#f6f7f9;font-size:12px;color:var(--text-3);line-height:1.6}.config-subhead{margin-top:16px;padding-top:12px;border-top:1px solid var(--border);font-size:12px;font-weight:500;color:var(--text-2)}.config-body{padding:4px 12px 14px}.config-empty{padding:16px 4px;font-size:12px;color:var(--text-3);text-align:center}.field{margin-top:12px}.field-label{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;font-size:12px;color:var(--text-2)}.field-value{font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}.field input[type=text],.field textarea,.field select{width:100%;padding:7px 9px;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fbfbfc;outline:none;resize:vertical}.field textarea{min-height:56px;line-height:1.6}.field input[type=text]:focus,.field textarea:focus,.field select:focus{border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px var(--primary-soft)}.field input[type=range]{width:100%;accent-color:var(--primary)}.field input[type=color]{width:100%;height:30px;padding:2px;border:1px solid var(--border-strong);border-radius:var(--radius);background:#fff;cursor:pointer}.field-row{display:flex;gap:8px}.field-row>*{flex:1;min-width:0}.var-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}.var-chip{font-size:11px;color:var(--primary);background:var(--primary-soft);border:1px solid #cfe2f3;border-radius:999px;padding:2px 8px;cursor:pointer}.var-chip:hover{background:#dcebf9}.checkbox-row{display:flex;align-items:center;gap:7px;margin-top:12px;font-size:12px;color:var(--text-2);cursor:pointer}.checkbox-row input{accent-color:var(--primary)}.panel-foot{flex-shrink:0;display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-top:1px solid var(--border);background:#fcfcfd}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%);background:#23272d;color:#fff;font-size:12px;padding:9px 16px;border-radius:999px;box-shadow:0 4px 14px #0000002e;z-index:200;pointer-events:none}.fs-layer{position:fixed;inset:0;z-index:100;display:flex;overflow:auto;background:#17191c}.fs-layer[hidden]{display:none}.fs-layer canvas{margin:auto;cursor:default}.fs-layer canvas.is-draggable{cursor:move}.fs-toolbar{position:fixed;top:16px;right:16px;z-index:101;display:flex;gap:6px}.fs-btn{height:32px;min-width:34px;padding:0 11px;border:1px solid rgba(255,255,255,.24);border-radius:var(--radius);background:#ffffff1a;color:#eef0f3;font-size:12px;cursor:pointer;transition:background .12s,border-color .12s}.fs-btn:hover{background:#ffffff38;border-color:#fff6}.fs-hint{position:fixed;left:50%;bottom:18px;transform:translate(-50%);z-index:101;font-size:12px;color:#ffffff80;pointer-events:none}
