:root{--radius: 8px;--radius-lg: 10px;--topbar-h: 56px;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", sans-serif;--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;--surface: #ffffff;--surface-hover: #f7f8f9;--surface-soft: #fbfbfc;--surface-softer: #f6f7f9;--input-bg: #fbfbfc;--stage-bg: #ecedf0;--hover-border: #bfc4cc;--active-border: #bcd7ee;--chip-border: #cfe2f3;--chip-hover: #dcebf9;--success: #2c6e49;--success-bg: #e8f5ec;--success-border: #cbe8d5;--toast-bg: #23272d;--toast-text: #ffffff;--shadow: rgba(20, 24, 30, .14)}:root[data-theme=night]{--bg: #0d1017;--panel: #171b22;--border: #262c36;--border-strong: #333b48;--text: #e8ebf0;--text-2: #98a2b3;--text-3: #667082;--primary: #4da3ff;--primary-hover: #6db5ff;--primary-soft: rgba(77, 163, 255, .14);--danger: #ff6b6b;--surface: #1c2129;--surface-hover: #222833;--surface-soft: #1a1f27;--surface-softer: #1e242d;--input-bg: #1c2129;--stage-bg: #0a0c11;--hover-border: #465061;--active-border: #4da3ff;--chip-border: rgba(77, 163, 255, .4);--chip-hover: rgba(77, 163, 255, .22);--success: #5fd29a;--success-bg: rgba(95, 210, 154, .14);--success-border: rgba(95, 210, 154, .35);--toast-bg: #2a3140;--toast-text: #e8ebf0;--shadow: rgba(0, 0, 0, .5)}:root[data-theme=tech]{--bg: #080d1f;--panel: #0f172e;--border: #1e2a45;--border-strong: #2a3a5f;--text: #dbe4ff;--text-2: #8ea0c4;--text-3: #5f7194;--primary: #38bdf8;--primary-hover: #5cc9fa;--primary-soft: rgba(56, 189, 248, .14);--danger: #ff7a7a;--surface: #131d38;--surface-hover: #182440;--surface-soft: #111a30;--surface-softer: #16213a;--input-bg: #131d38;--stage-bg: #060a16;--hover-border: #3a4c74;--active-border: #38bdf8;--chip-border: rgba(56, 189, 248, .4);--chip-hover: rgba(56, 189, 248, .22);--success: #54d8a0;--success-bg: rgba(84, 216, 160, .14);--success-border: rgba(84, 216, 160, .35);--toast-bg: #16213a;--toast-text: #dbe4ff;--shadow: rgba(0, 0, 0, .5)}*{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,textarea{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:var(--success);background:var(--success-bg);border:1px solid var(--success-border);border-radius:999px;padding:3px 10px;white-space:nowrap}.theme-select{height:30px;padding:0 8px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text-2);outline:none;cursor:pointer}.theme-select:focus{border-color:var(--primary)}.btn{height:30px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--hover-border)}.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:var(--surface);cursor:pointer;font-size:14px;line-height:1}.icon-btn:hover{background:var(--surface-hover)}.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}.quick-box{flex-shrink:0;display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface-soft)}.quick-box-head{font-size:12px;font-weight:500;color:var(--text-2)}.quick-box input{width:100%;height:32px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);outline:none}.quick-box input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.quick-box .btn{width:100%}.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:var(--input-bg);outline:none}.search-box input:focus{border-color:var(--primary);background:var(--surface);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:var(--surface-hover)}.candidate.is-active{background:var(--primary-soft);border-color:var(--active-border)}.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:var(--stage-bg);position:relative}.stage-paper{position:relative;margin:24px auto;width:max-content;background:#fff;box-shadow:0 1px 4px var(--shadow);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:var(--text-3)}.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:var(--surface);color:var(--text-2);font-size:14px;line-height:1;cursor:pointer}.page-btn:hover:not(:disabled){background:var(--surface-hover);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:var(--surface-soft)}.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:var(--surface);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:var(--surface-soft)}.tpl-row select{flex:1;min-width:0;height:28px;padding:0 8px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);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:var(--primary-soft)}.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:var(--surface);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:var(--surface);color:var(--text-2);font-size:12px;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.mode-btn:hover{background:var(--surface-hover)}.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:var(--surface-softer);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:var(--input-bg);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:var(--surface);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:var(--surface);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 var(--chip-border);border-radius:999px;padding:2px 8px;cursor:pointer}.var-chip:hover{background:var(--chip-hover)}.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:var(--surface-soft)}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%);background:var(--toast-bg);color:var(--toast-text);font-size:12px;padding:9px 16px;border-radius:999px;box-shadow:0 4px 14px var(--shadow);z-index:200;pointer-events:none}.fs-layer{position:fixed;inset:0;z-index:100;display:flex;overflow:auto;background:#101318}.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}.batch-overlay{position:fixed;inset:0;z-index:150;background:#0a0d1480;display:flex;align-items:center;justify-content:center;padding:24px}.batch-overlay[hidden]{display:none}.batch-dialog{width:min(560px,100%);max-height:90vh;display:flex;flex-direction:column;background:var(--panel);border-radius:12px;box-shadow:0 16px 48px var(--shadow);overflow:hidden}.batch-head{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}.batch-head h2{font-size:14px;font-weight:500}.batch-body{flex:1;min-height:0;overflow-y:auto;padding:16px}.batch-field{margin-bottom:14px}.batch-field label{display:block;margin-bottom:6px;font-size:12px;color:var(--text-2)}.batch-field textarea,.batch-field input{width:100%;padding:9px 10px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--input-bg);outline:none;resize:vertical;line-height:1.6}.batch-field textarea:focus,.batch-field input:focus{border-color:var(--primary);background:var(--surface);box-shadow:0 0 0 3px var(--primary-soft)}.batch-note{font-size:12px;color:var(--text-3);line-height:1.7;margin-bottom:14px}.batch-status{font-size:12px;color:var(--text-2);line-height:1.7;white-space:pre-wrap;word-break:break-all}.batch-status .ok{color:var(--success)}.batch-status .err{color:var(--danger)}.batch-foot{flex-shrink:0;display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border);background:var(--surface-soft)}
