.canvas-toolbar{color:#807564;font-size:13px}.canvas-picker button,.canvas-template-dialog>button{border:1px solid #f0e6d8;border-radius:9px;padding:8px 12px;background:white;color:#8d7045;cursor:pointer}.canvas-toolbar [role=status]{font-size:12px}.canvas-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:32px;gap:12px;min-width:0;position:relative;isolation:isolate}
.canvas-grid:not(.canvas-editing){grid-auto-rows:auto;align-items:start}
.canvas-grid:not(.canvas-editing) .canvas-tile{height:auto}
.canvas-grid:not(.canvas-editing) .canvas-body{max-height:min(760px,calc(100vh - 140px));overflow:auto}.canvas-grid[data-empty=true]:after{content:'画布为空，点击“调整布局 → 添加模块”开始';grid-column:1/-1;padding:24px;color:#777}.canvas-grid.canvas-drop-target{outline:2px dashed #e2b46f;outline-offset:6px;background:#fefcf9}.canvas-tile{position:relative;min-height:0;min-width:0;display:flex;flex-direction:column;background:var(--module-bg,#fff);border-radius:var(--module-radius,16px);opacity:var(--module-opacity,1);box-shadow:0 0 0 1px #eee;overflow:hidden}
.canvas-tile[data-variant="soft"]{box-shadow:0 0 0 1px color-mix(in srgb,var(--module-accent,#e1b36d) 30%,#eee);background:color-mix(in srgb,var(--module-accent,#e1b36d) 7%,var(--module-bg,#fff))}
.canvas-tile[data-variant="glass"]{backdrop-filter:blur(12px);background:color-mix(in srgb,var(--module-bg,#fff) 72%,transparent)}
.canvas-tile[data-variant="outline"]{background:transparent;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--module-accent,#e1b36d) 45%,transparent)}
.canvas-tile[data-locked="true"] .canvas-controls [data-canvas-drag]{cursor:not-allowed;opacity:.55}
.canvas-tile[data-lockedsize="true"] .canvas-resize{opacity:.55;cursor:not-allowed}.canvas-tile[hidden]{display:none!important}.canvas-body{flex:1;overflow:auto;min-height:0;min-width:0}.canvas-body>*{margin:0!important;min-width:0!important;width:100%;height:100%;box-sizing:border-box}.canvas-controls{display:none;gap:4px;align-items:center;padding:6px;background:#fcf8f3;flex:none;font-size:12px}.canvas-controls span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.canvas-controls button{border:0;background:#fff;border-radius:5px;color:#ae8951;cursor:pointer;padding:5px}.canvas-controls [data-canvas-drag]{touch-action:none;cursor:grab;font-size:20px}.canvas-editing .canvas-controls{display:flex}.canvas-resize{display:none;position:absolute;bottom:0;right:0;width:30px;height:30px;border:0;border-radius:8px 0 0 0;background:#e2b46f;color:white;touch-action:none;cursor:nwse-resize}.canvas-editing .canvas-resize{display:block}.canvas-picker,.canvas-template-dialog{border:1px solid #ddd;border-radius:18px;padding:22px;max-width:94vw;max-height:90vh;overflow:auto}.canvas-picker{width:440px}.canvas-picker button{display:block;width:100%;margin:10px 0}.canvas-picker::backdrop,.canvas-template-dialog::backdrop{background:#17132a77}.canvas-template-dialog{width:1100px}.canvas-template-preview{padding:25px;background:#fdfbf7;color:#997f58}.canvas-toolbar button:disabled{opacity:.5;cursor:wait}@media(max-width:760px){.canvas-grid{gap:8px;grid-auto-rows:32px}.canvas-toolbar{gap:6px}.canvas-controls{flex-wrap:wrap}.canvas-controls span{min-width:30px}.canvas-body .identity-stats{grid-template-columns:1fr}}
/* 2026-11-09：工具箱画布的编辑控件与弹窗对齐身份模块页（module-canvas） */
.canvas-tile.module-tile { overflow: visible; }
.canvas-body.module-tile-content { height: 100%; padding: 0; }
.canvas-tile.is-editing .canvas-body.module-tile-content { padding-top: 42px; }
.canvas-tile .module-tile-content > * { margin: 0 !important; width: 100%; height: 100%; }
.canvas-picker,.canvas-template-dialog{border:1px solid #ddd;border-radius:18px;padding:22px;max-width:94vw;max-height:90vh;overflow:auto}.canvas-picker{width:440px}.canvas-picker button{display:block;width:100%;margin:10px 0}.canvas-picker::backdrop,.canvas-template-dialog::backdrop{background:#17132a77}.canvas-template-dialog{width:1100px}.canvas-template-preview{padding:25px;background:#fdfbf7;color:#997f58}.canvas-toolbar button:disabled{opacity:.5;cursor:wait}@media(max-width:760px){.canvas-grid{gap:8px;grid-auto-rows:32px}.canvas-toolbar{gap:6px}.canvas-controls{flex-wrap:wrap}.canvas-controls span{min-width:30px}.canvas-body .identity-stats{grid-template-columns:1fr}}
/* 2026-11-09：工具箱画布的编辑控件与弹窗对齐身份模块页（module-canvas） */
.canvas-tile{position:relative}
.canvas-controls{display:none;align-items:center;gap:5px;padding:0 2px 6px;background:transparent;font-size:12px;flex:none}
.canvas-editing .canvas-controls{display:flex}
.canvas-controls span{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 4px;color:#8b7e6d;font-size:12px}
.canvas-controls button{display:grid;place-items:center;width:30px;height:30px;flex:none;padding:0;border:1px solid #e6dccb;border-radius:8px;background:#fffdf9;color:#8b7e6d;line-height:1;cursor:pointer}
.canvas-controls button svg{width:15px;height:15px}
.canvas-controls button:hover{border-color:#d8c9b2;color:#b96a14;background:#fff}
.canvas-controls [data-canvas-drag]{touch-action:none;cursor:grab}
.canvas-picker,.canvas-template-dialog{border:1px solid #e6dccb;border-radius:18px;padding:22px;background:#fffdf9;box-shadow:0 24px 60px rgba(49,35,21,.18);max-width:94vw;max-height:90vh;overflow:auto}
.canvas-picker{width:420px}
.canvas-picker h2,.canvas-template-dialog h2{margin:0 0 6px;font-size:18px;color:#2a2119}
.canvas-picker button{display:block;width:100%;margin:8px 0;min-height:40px;padding:0 12px;border:1px solid #e6dccb;border-radius:10px;background:#fffdf9;color:#2a2119;font-size:13px;text-align:left;cursor:pointer}
.canvas-picker button:hover{border-color:#f99732;background:#fdf6ec;color:#b96a14}
.canvas-picker::backdrop,.canvas-template-dialog::backdrop{background:rgba(23,19,42,.47)}
[data-wb-theme="night"] .canvas-controls button,[data-wb-theme="night"] .canvas-picker,[data-wb-theme="night"] .canvas-picker button{background:var(--wb-surface,#221d19);border-color:var(--wb-line,#3a3129);color:var(--wb-ink,#f1e7da)}
.canvas-picker .canvas-picker-close { margin-top: 14px; text-align: center; color: #8b7e6d; background: #faf6ef; }
.canvas-picker .canvas-picker-close:hover { border-color: #d8c9b2; background: #f5eee3; color: #8b7e6d; }
