.connectivity-dot{cursor:pointer;box-sizing:border-box;border:none;border-radius:50%;width:12px;height:12px;padding:0;display:inline-block}.connectivity-dot:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.connectivity-dot--both{background:var(--color-success)}.connectivity-dot--server{box-shadow:inset 0 0 0 3px var(--color-success);background:0 0}.connectivity-dot--p2p{background:radial-gradient(circle at center, var(--color-success) 0 3.7px, transparent 4px)}.connectivity-dot--none{background:var(--color-text-muted)}.connectivity-panel{top:var(--conn-panel-top,0px);left:var(--conn-panel-left,0px);z-index:var(--z-popover,40);background:var(--color-surface);border:1px solid var(--color-border);min-width:240px;box-shadow:var(--shadow-tooltip,0 4px 16px #00000026);border-radius:8px;padding:10px 12px;position:fixed}.connectivity-panel__row{align-items:center;gap:8px;padding:4px 0;display:flex}.connectivity-panel__icon{color:var(--color-text-muted);flex:none}.connectivity-panel__label{color:var(--color-text-muted);flex:none;font-size:13px}.connectivity-panel__value{text-align:right;color:var(--color-text);flex:auto;font-size:13px;font-weight:500}.connectivity-panel__foot{border-top:1px solid var(--color-border);color:var(--color-text-muted);margin-top:6px;padding-top:6px;font-size:12px}.connectivity-indicator{display:inline-block;position:relative}.cf-history-chart{flex-direction:column;gap:6px;margin-top:6px;display:flex}.cf-history-chart__switcher{flex-wrap:wrap;gap:2px;display:flex}.cf-history-chart__view-btn{border:1px solid var(--color-border,#d0d0d0);background:var(--color-surface,#fff);color:var(--color-text-secondary,#666);cursor:pointer;border-radius:4px;padding:2px 6px;font-size:11px;line-height:1.2}.cf-history-chart__view-btn:hover{background:var(--color-surface-hover,#f2f2f2)}.cf-history-chart__view-btn--active{background:var(--color-accent,#3b82f6);border-color:var(--color-accent,#3b82f6);color:#fff}.cf-history-chart__body{min-height:0}.cf-history-chart__svg{width:100%;max-width:240px;height:auto;display:block}:root{--exec-neutral:var(--color-text-muted,#a0aec0);--exec-info:var(--color-primary,#3182ce);--exec-progress:var(--color-warning,#d69e2e);--exec-success:var(--color-success,#38a169);--exec-danger:var(--color-danger,#e53e3e)}@keyframes exec-spin{to{transform:rotate(360deg)}}@keyframes exec-pulse{0%,to{opacity:1}50%{opacity:.3}}@keyframes exec-halo-pulse{0%,to{box-shadow:0 0 #e53e3e80}50%{box-shadow:0 0 0 3px #e53e3e2e}}.card-exec-indicator{--execution-ring-color-queued:var(--exec-neutral,#a0aec0);--execution-ring-color-dispatched:var(--exec-info,#3182ce);--execution-ring-color-running:var(--exec-progress,#d69e2e);--execution-ring-color-paused:var(--exec-neutral,#a0aec0);--execution-ring-color-blocked:var(--exec-danger,#e53e3e);--exec-ring-color:var(--exec-neutral,#a0aec0);flex-shrink:0;justify-content:center;align-items:center;gap:3px;line-height:1;display:inline-flex}.card-exec-indicator--halo .card-exec-indicator__ring{border-radius:50%}.card-exec-indicator--halo .card-exec-indicator__ring:not(.card-exec-indicator__ring--pulse):not(.card-exec-indicator__ring--static),.card-exec-indicator--halo.card-exec-indicator--around-avatar .card-exec-indicator__ring:not(.card-exec-indicator__ring--pulse):not(.card-exec-indicator__ring--static){animation:1.6s ease-in-out infinite exec-halo-pulse,.8s linear infinite exec-spin}.card-exec-indicator--halo .card-exec-indicator__ring--pulse,.card-exec-indicator--halo.card-exec-indicator--around-avatar .card-exec-indicator__ring--pulse{animation:1.6s ease-in-out infinite exec-halo-pulse,1.8s ease-in-out infinite exec-pulse}.card-exec-indicator--halo .card-exec-indicator__ring--static,.card-exec-indicator--halo.card-exec-indicator--around-avatar .card-exec-indicator__ring--static{animation:1.6s ease-in-out infinite exec-halo-pulse}.card-exec-indicator__ring{border:2px solid #0000;border-color:var(--exec-ring-color);border-top-color:#0000;border-radius:50%;width:12px;height:12px;display:inline-block}.card-exec-indicator__ring--spin{animation:.8s linear infinite exec-spin}.card-exec-indicator__ring--pulse{border-top-color:var(--exec-ring-color);animation:1.8s ease-in-out infinite exec-pulse}.card-exec-indicator__ring--static{border-top-color:var(--exec-ring-color);animation:none}.card-exec-indicator__ring--crossed{border-top-color:var(--exec-ring-color);animation:none;position:relative}.card-exec-indicator__ring--crossed:after{content:"";background:linear-gradient(135deg, transparent calc(50% - 1px), var(--exec-ring-color) calc(50% - 1px), var(--exec-ring-color) calc(50% + 1px), transparent calc(50% + 1px));border-radius:50%;position:absolute;inset:1px}.card-exec-indicator--queued .card-exec-indicator__ring:not([class*=--spin]):not([class*=--pulse]):not([class*=--static]){border-color:var(--execution-ring-color-queued);border-top-color:#0000;animation:1.4s linear infinite exec-spin}.card-exec-indicator--dispatched .card-exec-indicator__ring:not([class*=--spin]):not([class*=--pulse]):not([class*=--static]){border-color:var(--execution-ring-color-dispatched);border-top-color:#0000;animation:.9s linear infinite exec-spin}.card-exec-indicator--running .card-exec-indicator__ring:not([class*=--spin]):not([class*=--pulse]):not([class*=--static]){border-color:var(--execution-ring-color-running);border-top-color:#0000;animation:.7s linear infinite exec-spin}.card-exec-indicator--paused .card-exec-indicator__ring:not([class*=--spin]):not([class*=--pulse]):not([class*=--static]){border-color:var(--execution-ring-color-paused);border-top-color:var(--execution-ring-color-paused);animation:1.8s ease-in-out infinite exec-pulse}.card-exec-indicator__glyph{color:var(--exec-ring-color,var(--execution-ring-color-blocked));-webkit-user-select:none;user-select:none;font-size:11px;line-height:1}.card-exec-indicator__dot{background-color:var(--exec-ring-color);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.card-exec-indicator__label{letter-spacing:.02em;color:var(--color-text-muted,#718096);font-size:9px;font-weight:600;line-height:1}.card-exec-indicator--around-avatar{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:relative}.card-exec-indicator--around-avatar .card-exec-indicator__avatar-slot{z-index:0;justify-content:center;align-items:center;display:inline-flex;position:relative}.card-exec-indicator--around-avatar .card-exec-indicator__ring{z-index:1;pointer-events:none;border-width:2px;width:auto;height:auto;position:absolute;inset:-4px}@media (prefers-reduced-motion:reduce){.card-exec-indicator__ring,.card-exec-indicator__ring--spin,.card-exec-indicator__ring--pulse,.card-exec-indicator--halo .card-exec-indicator__ring,.card-exec-indicator--halo .card-exec-indicator__ring--pulse,.card-exec-indicator--halo .card-exec-indicator__ring--static{animation:none!important}.card-exec-indicator__ring--spin{border-top-color:var(--exec-ring-color)}.card-exec-indicator--halo .card-exec-indicator__ring,.card-exec-indicator--halo .card-exec-indicator__ring--pulse,.card-exec-indicator--halo .card-exec-indicator__ring--static{box-shadow:0 0 0 1px #e53e3e57!important}.card-exec-indicator--running .card-exec-indicator__ring:not([class*=--spin]):not([class*=--pulse]):not([class*=--static]),.card-exec-indicator--dispatched .card-exec-indicator__ring:not([class*=--spin]):not([class*=--pulse]):not([class*=--static]),.card-exec-indicator--queued .card-exec-indicator__ring:not([class*=--spin]):not([class*=--pulse]):not([class*=--static]){border-top-color:inherit;animation:none!important}}.canvas-editor{--color-primary-subtle:color-mix(in srgb, var(--color-primary) 16%, transparent);--color-primary-strong:var(--color-primary-dark);--color-on-primary:white;contain:layout size;background:var(--color-surface);max-height:100%;position:absolute;inset:0;overflow:hidden}.canvas-editor__top-bar{top:var(--space-4);align-items:center;gap:var(--space-2);height:40px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);z-index:20;display:inline-flex;position:absolute}.canvas-editor__top-bar--left{left:var(--space-4);max-width:40%}.canvas-editor__top-bar--right{right:var(--space-4);box-shadow:none;background:0 0;border:none;border-radius:0;padding:0}.canvas-editor__right-cluster{align-items:center;gap:var(--space-2);height:40px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);display:inline-flex}.canvas-editor__top-bar-sep{width:1px;height:18px;margin:0 var(--space-2,8px);background:var(--color-border,#0000001f);flex-shrink:0;display:inline-block}.canvas-editor__cluster-sep{width:1px;height:18px;margin:0 var(--space-1,4px);background:var(--color-border,#0000001f);flex-shrink:0;display:inline-block}.canvas-editor__back-btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-md,var(--radius-lg));width:28px;height:28px;color:var(--color-text-primary);font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;padding:0;font-weight:500;line-height:1.2;display:inline-flex}.canvas-editor__back-btn:hover{background:var(--color-surface-alt)}.canvas-editor__back-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-editor__name{padding:0 var(--space-2);font-size:var(--text-md);color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;max-width:320px;margin:0;font-weight:600;overflow:hidden}.canvas-editor__anon-badge{color:var(--color-text-secondary);opacity:.75;flex-shrink:0;align-items:center;margin-left:6px;display:inline-flex}.canvas-editor__header-spacer{flex-shrink:0;min-width:64px}.canvas-editor__surface-area{contain:layout size;background:var(--color-surface-alt);max-height:100%;position:absolute;inset:0;overflow:hidden}.canvas-editor__empty-hint{max-width:480px;padding:var(--space-3) var(--space-5);text-align:center;font-size:var(--text-md);color:var(--color-text-muted,var(--color-text-secondary,var(--color-text-primary)));opacity:.6;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:5;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.canvas-editor__toolbar{align-items:center;gap:var(--space-2);flex-shrink:0;display:inline-flex}.canvas-editor__tool-btn{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);align-items:center;font-weight:500;display:inline-flex}.canvas-editor__tool-btn:hover{background:var(--color-surface-alt);border-color:var(--color-border-strong,var(--color-border))}.canvas-editor__tool-btn[data-active=true],.canvas-editor__tool-btn[aria-pressed=true]{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary-dark,var(--color-primary))}.canvas-editor__tool-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-editor__place-hint{top:var(--space-3);padding:var(--space-2) var(--space-4);border:1px solid var(--color-primary);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-primary-light);color:var(--color-primary-dark,var(--color-primary));font-size:var(--text-sm,var(--text-md));pointer-events:none;-webkit-user-select:none;user-select:none;z-index:5;position:absolute;left:50%;transform:translate(-50%)}.canvas-editor__surface-area[data-place-mode=true]{cursor:crosshair}.canvas-editor__surface-area[data-eraser-mode=true],.canvas-editor__surface-area[data-eraser-drawing=true]{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><circle cx='8' cy='8' r='6' fill='none' stroke='black' stroke-width='1.5'/><circle cx='8' cy='8' r='6' fill='none' stroke='white' stroke-width='0.5'/></svg>") 8 8,cell}.canvas-editor__loading,.canvas-editor__error{font-size:var(--text-md);color:var(--color-text-secondary,var(--color-text-primary));padding:var(--space-6);flex:auto;justify-content:center;align-items:center;display:flex}.canvas-editor__error{color:var(--color-text-primary)}.canvas-editor__icon-btn{border-radius:var(--radius-md,var(--radius-lg));width:28px;height:28px;color:var(--color-text-primary);cursor:pointer;transition:background var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.canvas-editor__icon-btn:hover{background:var(--color-surface-alt)}.canvas-editor__icon-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-editor__icon-btn--active{background:var(--color-primary-muted,color-mix(in srgb, var(--color-primary) 15%, transparent));color:var(--color-primary)}.canvas-export-dialog-overlay{z-index:1000;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.canvas-export-dialog{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);gap:var(--space-4);flex-direction:column;min-width:320px;max-width:480px;display:flex;box-shadow:0 10px 30px #00000040}.canvas-export-dialog__title{font-size:var(--text-lg);margin:0;font-weight:600}.canvas-export-dialog__options{gap:var(--space-2);flex-direction:column;display:flex}.canvas-export-dialog__group-label{font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:calc(-1 * var(--space-2));font-weight:600}.canvas-export-dialog__option{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md,var(--radius-lg));cursor:pointer;font-size:var(--text-md);display:inline-flex}.canvas-export-dialog__option:hover{background:var(--color-surface-alt)}.canvas-export-dialog__actions{justify-content:flex-end;gap:var(--space-2);display:flex}.canvas-export-dialog__btn{padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);font-weight:500}.canvas-export-dialog__btn:hover{background:var(--color-surface-alt)}.canvas-export-dialog__btn--confirm{background:var(--color-primary);color:var(--color-on-primary,var(--color-surface));border-color:var(--color-primary)}.canvas-export-dialog__btn--confirm:hover{background:var(--color-primary-dark,var(--color-primary))}.canvas-export-dialog__btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media (width<=639px){.canvas-editor__surface-area,.canvas-editor__surface-area svg{touch-action:manipulation}}.canvas-toolbox{top:var(--space-3);top:calc(var(--space-4) + 40px + var(--space-3));left:var(--space-3);gap:var(--space-2);padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-md);z-index:10;flex-direction:column;display:flex;position:absolute}@media (width<=639px){.canvas-toolbox{display:none}}.canvas-toolbox__btn{border-radius:var(--radius-md,var(--radius-lg));width:36px;height:36px;color:var(--color-text-primary);cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease), color var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.canvas-toolbox__btn:hover:not(:disabled){background:var(--color-surface-alt);border-color:var(--color-border)}.canvas-toolbox__btn:disabled{opacity:.4;cursor:not-allowed}.canvas-toolbox__btn[data-active=true],.canvas-toolbox__btn[aria-pressed=true]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary,var(--color-surface))}.canvas-toolbox__btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-toolbox__btn svg{display:block}.canvas-toolbox__action-group{gap:var(--space-2);flex-direction:column;display:flex}.canvas-toolbox__divider{height:1px;margin:var(--space-1) 0;background:var(--color-border)}.canvas-toolbox__flyout-wrap{position:relative}.canvas-toolbox__flyout{left:calc(100% + var(--space-2));z-index:200;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);background:var(--color-surface);border:1px solid var(--color-border);flex-direction:column;display:flex;position:absolute;top:0}.canvas-toolbox__emoji-wrap{position:relative}.canvas-toolbox__emoji-popover{left:calc(100% + var(--space-2));z-index:200;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);background:var(--color-surface);border:1px solid var(--color-border);position:absolute;top:0;overflow:hidden}.canvas-toolbox__emoji-loading{justify-content:center;align-items:center;width:260px;height:200px;display:flex}.canvas-zoom-controls{bottom:var(--space-4);right:var(--space-4);align-items:center;gap:var(--space-1);height:40px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);z-index:20;display:inline-flex;position:absolute}@media (width<=639px){.canvas-zoom-controls{display:none}}.canvas-zoom-controls__btn{border-radius:var(--radius-md,var(--radius-lg));width:28px;height:28px;color:var(--color-text-primary);font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease), color var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.canvas-zoom-controls__btn:hover:not(:disabled){background:var(--color-surface-alt)}.canvas-zoom-controls__btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-zoom-controls__btn:disabled{color:var(--color-text-secondary,var(--color-text-muted,var(--color-text-primary)));opacity:.5;cursor:not-allowed}.canvas-zoom-controls__level{width:52px;height:28px;padding:0 var(--space-1);border-radius:var(--radius-md,var(--radius-lg));color:var(--color-text-primary);font-size:var(--text-sm,var(--text-md));font-variant-numeric:tabular-nums;text-align:center;cursor:text;-moz-appearance:textfield;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;font-weight:500}.canvas-zoom-controls__level:hover{background:var(--color-surface-alt)}.canvas-zoom-controls__level:focus,.canvas-zoom-controls__level:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-color:var(--color-border);background:var(--color-surface)}.canvas-zoom-controls__divider{background:var(--color-border);width:1px;height:20px;margin:0 var(--space-1);display:inline-block}.canvas-grid-toggle{margin-left:var(--space-1);padding-left:var(--space-1);border-left:1px solid var(--color-border);justify-content:center;align-items:center;display:inline-flex}.canvas-grid-toggle__btn{border-radius:var(--radius-md,var(--radius-lg));width:28px;height:28px;color:var(--color-text-primary);font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease), color var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.canvas-grid-toggle__btn:hover{background:var(--color-surface-alt)}.canvas-grid-toggle__btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-task-picker__toggle-btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);font-weight:500;line-height:1.2;display:inline-flex}.canvas-task-picker__toggle-btn:hover{background:var(--color-surface-alt);border-color:var(--color-border-strong,var(--color-border))}.canvas-task-picker__toggle-btn[data-active=true],.canvas-task-picker__toggle-btn[aria-pressed=true]{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary-dark,var(--color-primary))}.canvas-task-picker__toggle-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-task-picker__toggle-btn svg{display:block}.canvas-task-picker__drawer{top:var(--space-3);right:var(--space-3);bottom:var(--space-3);width:280px;max-width:calc(100% - var(--space-6));border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-md);z-index:11;flex-direction:column;display:flex;position:absolute;overflow:hidden}.canvas-task-picker__header{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;display:flex}.canvas-task-picker__title{font-size:var(--text-md);color:var(--color-text-primary);margin:0;font-weight:600;line-height:1.2}.canvas-task-picker__close-btn{border-radius:var(--radius-md,var(--radius-lg));width:28px;height:28px;color:var(--color-text-secondary,var(--color-text-primary));font-size:var(--text-lg,var(--text-md));cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.canvas-task-picker__close-btn:hover{background:var(--color-surface-alt);border-color:var(--color-border)}.canvas-task-picker__close-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-task-picker__search-row{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0}.canvas-task-picker__search-input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-md);line-height:1.2}.canvas-task-picker__search-input:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-color:var(--color-primary)}.canvas-task-picker__body{padding:var(--space-2);flex:auto;overflow-y:auto}.canvas-task-picker__loading,.canvas-task-picker__error,.canvas-task-picker__empty,.canvas-task-picker__no-results{padding:var(--space-3);color:var(--color-text-secondary,var(--color-text-primary));font-size:var(--text-md);text-align:center}.canvas-task-picker__error{color:var(--color-danger,var(--color-text-primary))}.canvas-task-picker__list{gap:var(--space-1);flex-direction:column;display:flex}.canvas-task-picker__row{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-md);cursor:grab;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);line-height:1.2;display:flex}.canvas-task-picker__row:hover{background:var(--color-surface-alt);border-color:var(--color-border-strong,var(--color-border))}.canvas-task-picker__row:active{cursor:grabbing}.canvas-task-picker__row-title{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.canvas-task-picker__row-status{padding:2px var(--space-2);border:1px solid var(--color-border);background:var(--color-surface-alt);color:var(--color-text-secondary,var(--color-text-primary));font-size:var(--text-sm,var(--text-md));border-radius:999px;flex:none;line-height:1.2}.canvas-sticky-toolbar{transform:translate(-50%, calc(-100% - var(--canvas-sticky-toolbar-gap,12px)));align-items:center;gap:var(--space-xs,6px);height:var(--canvas-sticky-toolbar-height,44px);padding:0 var(--space-sm,8px);background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);box-shadow:var(--shadow-md,0 4px 12px #00000026);z-index:30;pointer-events:auto;-webkit-user-select:none;user-select:none;font-family:var(--font-family-base,system-ui);color:var(--color-text-primary,#111);display:inline-flex}.canvas-sticky-toolbar__divider{background:var(--color-border,#0000001f);width:1px;height:24px;margin:0 var(--space-xs,4px);flex-shrink:0}.canvas-sticky-toolbar__btn{appearance:none;border-radius:var(--radius-sm,4px);font-size:var(--text-md,14px);cursor:pointer;color:var(--color-text-primary,#111);background:0 0;border:1px solid #0000;flex-shrink:0;padding:4px 8px;line-height:1;transition:background-color .12s,border-color .12s}.canvas-sticky-toolbar__btn:hover{background:var(--color-surface-alt,#0000000a)}.canvas-sticky-toolbar__btn:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-sticky-toolbar__btn[data-pressed=true],.canvas-sticky-toolbar__btn[aria-pressed=true]{background:var(--color-surface-alt,#00000014);border-color:var(--color-border-strong,#0003);color:var(--color-text-primary,#111)}.canvas-sticky-toolbar__btn--bold strong{font-weight:700}.canvas-sticky-toolbar__btn--italic em{font-family:serif;font-style:italic}.canvas-sticky-toolbar__btn--strikethrough span{text-decoration:line-through}.canvas-sticky-toolbar__font-size-combobox{align-items:center;gap:2px;display:inline-flex;position:relative}.canvas-sticky-toolbar__font-size-input{appearance:none;background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-sm,4px);width:34px;font-size:var(--text-sm,12px);color:var(--color-text-primary,#111);padding:4px 4px 4px 6px}.canvas-sticky-toolbar__font-size-input:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-sticky-toolbar__font-size-toggle{background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:0 var(--radius-sm,4px) var(--radius-sm,4px) 0;width:16px;height:24px;color:var(--color-text-muted,#555);cursor:pointer;border-left:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.canvas-sticky-toolbar__font-size-listbox{z-index:40;background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-sm,4px);width:132px;max-height:220px;box-shadow:var(--shadow-md,0 4px 12px #00000026);grid-template-columns:repeat(3,1fr);gap:2px;margin:0;padding:6px;list-style:none;display:grid;position:absolute;top:calc(100% + 4px);left:0;overflow-y:auto}.canvas-sticky-toolbar__font-size-option{text-align:center;font-size:var(--text-sm,12px);color:var(--color-text-primary,#111);border-radius:var(--radius-sm,4px);cursor:pointer;padding:4px 0}.canvas-sticky-toolbar__font-size-option:hover,.canvas-sticky-toolbar__font-size-option[data-active=true]{background:var(--color-surface-hover,#0000000f)}.canvas-sticky-toolbar__color-row{align-items:center;gap:4px;display:inline-flex}.canvas-sticky-toolbar__swatch{appearance:none;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;width:20px;height:20px;padding:0;box-shadow:inset 0 0 0 1px #0000001f}.canvas-sticky-toolbar__swatch:focus-visible{box-shadow:inset 0 0 0 1px #0000001f, var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-sticky-toolbar__fill-row{align-items:center;gap:4px;display:inline-flex}.canvas-sticky-toolbar__align-group{align-items:center;gap:2px;display:inline-flex}.canvas-sticky-toolbar__fill-btn{align-items:center;gap:4px;padding:4px 6px;display:inline-flex}.canvas-sticky-toolbar__fill-chip{border-radius:var(--radius-sm,4px);border:1px solid var(--color-border,#0003);flex-shrink:0;width:16px;height:16px;display:inline-block}.canvas-sticky-toolbar__fill-label{font-size:var(--text-sm,12px);color:var(--color-text-primary,#111);white-space:nowrap}.canvas-sticky-toolbar__caret{color:var(--color-text-muted,#555);font-size:10px;line-height:1}.canvas-sticky-toolbar__fill-wrapper{align-items:center;display:inline-flex;position:relative}.canvas-sticky-toolbar__text-color-btn{border-radius:var(--radius-sm,4px);justify-content:center;align-items:center;width:28px;height:28px;padding:0;display:inline-flex}.canvas-sticky-toolbar__text-color-dot{border:1px solid var(--color-border,#0003);border-radius:50%;flex-shrink:0;width:16px;height:16px;display:inline-block}.canvas-sticky-toolbar__text-color-wrapper{align-items:center;display:inline-flex;position:relative}.canvas-sticky-toolbar__popover{z-index:40;background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);box-shadow:var(--shadow-md,0 4px 12px #00000026);padding:var(--space-sm,8px);pointer-events:auto;position:absolute;top:calc(100% + 6px);left:0}.canvas-sticky-toolbar__fill-popover .canvas-color-palette{grid-template-columns:repeat(6,20px);gap:4px;display:grid}.canvas-sticky-toolbar__fill-popover>.canvas-sticky-toolbar__text-color-grid{margin-top:4px}.canvas-sticky-toolbar__fill-popover .canvas-color-palette__swatch{cursor:pointer;appearance:none;border:none;border-radius:50%;flex-shrink:0;width:20px;height:20px;padding:0;box-shadow:inset 0 0 0 1px #0000001f}.canvas-sticky-toolbar__fill-popover .canvas-color-palette__swatch:focus-visible{box-shadow:inset 0 0 0 1px #0000001f, var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-sticky-toolbar__text-color-swatch-row{align-items:center;gap:4px;display:inline-flex}.canvas-sticky-toolbar__text-color-grid{grid-template-columns:repeat(6,20px);gap:4px;display:grid}.canvas-sticky-toolbar__advanced-trigger{align-items:center;gap:var(--space-xs,6px);width:100%;margin-top:var(--space-xs,6px);appearance:none;border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-sm,4px);cursor:pointer;color:var(--color-text-primary,#111);font-size:var(--text-sm,12px);text-align:left;background:0 0;padding:4px 6px;transition:background-color .12s;display:flex}.canvas-sticky-toolbar__advanced-trigger:hover{background:var(--color-surface-alt,#0000000a)}.canvas-sticky-toolbar__advanced-trigger:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-sticky-toolbar__advanced-trigger-label{white-space:nowrap;flex:1}.canvas-sticky-toolbar__color-wheel{background:conic-gradient(from 90deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:50%;flex-shrink:0;width:20px;height:20px;display:inline-block;box-shadow:inset 0 0 0 1px #0000001f}.canvas-sticky-toolbar__text-color-popover{max-width:256px}.canvas-sticky-toolbar__align-btn{justify-content:center;align-items:center;padding:4px 6px;display:inline-flex}.canvas-sticky-toolbar__align-btn svg{display:block}.canvas-sticky-toolbar__react-group{align-items:center;gap:2px;display:inline-flex}.canvas-sticky-toolbar__react-wrapper{align-items:center;display:inline-flex;position:relative}.canvas-sticky-toolbar__react-btn,.canvas-sticky-toolbar__vote-btn{justify-content:center;align-items:center;padding:4px 6px;display:inline-flex}.canvas-sticky-toolbar__react-btn svg,.canvas-sticky-toolbar__vote-btn svg{display:block}.canvas-sticky-toolbar__react-popover-wrapper{z-index:40;position:absolute;top:calc(100% + 6px);left:0}.canvas-sticky-toolbar__more-wrapper{align-items:center;display:inline-flex;position:relative}.canvas-sticky-toolbar__more-menu{z-index:40;background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);min-width:180px;box-shadow:var(--shadow-md,0 4px 12px #00000026);padding:var(--space-xs,4px) 0;pointer-events:auto;position:absolute;top:calc(100% + 6px);right:0}.canvas-sticky-toolbar__menu-item{justify-content:space-between;align-items:center;gap:var(--space-sm,8px);width:100%;padding:7px var(--space-sm,12px);font-size:var(--text-md,14px);color:var(--color-text-primary,#111);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:0;transition:background-color .12s;display:flex}.canvas-sticky-toolbar__menu-item:hover,.canvas-sticky-toolbar__menu-item:focus-visible{background:var(--color-surface-alt,#0000000a);outline:none}.canvas-sticky-toolbar__menu-item:focus-visible{box-shadow:inset 0 0 0 2px var(--focus-ring-color,#007aff66)}.canvas-sticky-toolbar__menu-item--danger{color:var(--color-danger,#d32f2f)}.canvas-sticky-toolbar__menu-item--danger:hover,.canvas-sticky-toolbar__menu-item--danger:focus-visible{background:var(--color-danger-surface,#d32f2f0d)}.canvas-sticky-toolbar__menu-label{white-space:nowrap;flex:1}.canvas-sticky-toolbar__menu-hint{font-size:var(--text-sm,12px);color:var(--color-text-muted,#888);white-space:nowrap;flex-shrink:0}.canvas-sticky-toolbar__menu-divider{background:var(--color-border,#00000014);height:1px;margin:var(--space-xs,4px) 0}.canvas-sticky-toolbar__shape-wrapper{align-items:center;display:inline-flex;position:relative}.canvas-sticky-toolbar__shape-btn{align-items:center;gap:4px;padding:4px 6px;display:inline-flex}.canvas-sticky-toolbar__shape-icon{color:var(--color-text-primary,#111);flex-shrink:0}.canvas-sticky-toolbar__shape-popover{min-width:140px}.canvas-sticky-toolbar__shape-options{gap:var(--space-xs,6px);flex-direction:column;display:flex}.canvas-sticky-toolbar__shape-option{align-items:center;gap:var(--space-sm,8px);border-radius:var(--radius-sm,4px);cursor:pointer;width:100%;color:var(--color-text-primary,#111);font-size:var(--text-sm,12px);text-align:left;background:0 0;border:1px solid #0000;padding:6px 8px;transition:background-color .12s;display:flex}.canvas-sticky-toolbar__shape-option:hover{background:var(--color-surface-alt,#0000000a)}.canvas-sticky-toolbar__shape-option:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-sticky-toolbar__shape-option[data-selected=true],.canvas-sticky-toolbar__shape-option[aria-checked=true]{background:var(--color-surface-alt,#0000000f);border-color:var(--color-border-strong,#0003)}.canvas-sticky-toolbar__shape-label{white-space:nowrap;flex:1}.canvas-sticky-toolbar__text-cluster{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.canvas-sticky-toolbar__text-flyout-wrapper{flex-shrink:0;align-items:center;display:inline-flex;position:relative}.canvas-sticky-toolbar__text-flyout-trigger{letter-spacing:-.02em;min-width:32px;padding:0 6px;font-size:12px;font-weight:600}.canvas-sticky-toolbar__text-flyout-popover{background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);box-shadow:var(--shadow-md,0 4px 12px #00000026);white-space:nowrap;z-index:10;align-items:center;gap:4px;padding:4px 8px;display:inline-flex;position:absolute;bottom:calc(100% + 8px);left:0;overflow:visible}@media (prefers-reduced-motion:reduce){.canvas-sticky-toolbar__btn,.canvas-sticky-toolbar__menu-item,.canvas-sticky-toolbar__shape-option,.canvas-sticky-toolbar__advanced-trigger{transition:none}}.canvas-selection-stack{transform:translate(-50%, calc(-100% - var(--canvas-selection-stack-gap,12px)));align-items:center;gap:var(--canvas-selection-stack-row-gap,8px);z-index:30;pointer-events:none;flex-direction:column-reverse;display:flex}.canvas-selection-stack>.canvas-sticky-toolbar,.canvas-selection-stack>.canvas-shape-style-toolbar,.canvas-selection-stack>.canvas-alignment-toolbar,.canvas-selection-stack>.canvas-selection-actions-toolbar{pointer-events:auto;position:static;top:auto;left:auto;transform:none}.canvas-selection-stack--unified{align-items:center;gap:var(--space-xs,6px);background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);max-width:calc(100% - 40px);box-shadow:var(--shadow-md,0 4px 12px #00000026);z-index:35;pointer-events:auto;flex-flow:row;padding:4px 8px;overflow:clip visible}.canvas-selection-stack--unified>.canvas-sticky-toolbar,.canvas-selection-stack--unified>.canvas-shape-style-toolbar,.canvas-selection-stack--unified>.canvas-alignment-toolbar,.canvas-selection-stack--unified>.canvas-selection-actions-toolbar,.canvas-selection-stack--unified>.canvas-node-toolbar__switch-row{box-shadow:none;background:0 0;border:none;border-radius:0;height:auto;margin:0;padding:0}.canvas-selection-stack--unified>.canvas-node-toolbar__switch-row{order:0}.canvas-selection-stack--unified>.canvas-sticky-toolbar{order:1;min-width:0}.canvas-selection-stack--unified>.canvas-sticky-toolbar .canvas-sticky-toolbar__fill-label,.canvas-selection-stack--unified>.canvas-sticky-toolbar .canvas-sticky-toolbar__fill-btn .canvas-sticky-toolbar__caret,.canvas-selection-stack--unified>.canvas-sticky-toolbar .canvas-sticky-toolbar__shape-btn .canvas-sticky-toolbar__caret{display:none}.canvas-selection-stack--unified>.canvas-shape-style-toolbar{order:2}.canvas-selection-stack--unified>.canvas-mst-toolbar{--mst-floor-trigger:36px;--mst-floor-action:34px;--mst-floor-gap:2px;min-width:calc((2 * var(--mst-floor-trigger)) + (3 * var(--mst-floor-action)) + (4 * var(--mst-floor-gap)));flex:1 1 0;order:2;overflow:visible}.canvas-selection-stack--unified>.canvas-alignment-toolbar{order:3}.canvas-selection-stack--unified>.canvas-selection-actions-toolbar{padding-left:var(--space-xs,6px);order:4;margin-left:auto;position:relative}.canvas-selection-stack--unified>.canvas-selection-actions-toolbar:before{content:"";background:var(--color-border,#0000001f);width:1px;height:22px;position:absolute;top:50%;left:-3px;transform:translateY(-50%)}.canvas-selection-stack--unified .canvas-node-toolbar__popover{z-index:40;background:var(--color-surface,#fff)}.canvas-mindmap-add-branch{z-index:31;border:2px solid var(--surface-1,#fff);background:var(--color-primary,#3182c6);color:#fff;cursor:pointer;width:22px;height:22px;box-shadow:var(--shadow-sm,0 1px 3px #0003);-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:15px;font-weight:700;line-height:1;display:flex}.canvas-mindmap-add-branch:hover{filter:brightness(1.08)}.canvas-mindmap-add-branch:focus-visible{outline:2px solid var(--focus-ring,#2563eb);outline-offset:2px}.canvas-search-bar{top:var(--space-4);right:calc(var(--space-4) + 40px + var(--space-2));align-items:center;gap:var(--space-1);height:40px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);z-index:20;display:inline-flex;position:absolute}.canvas-search-bar__input{width:180px;height:28px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-sm);line-height:1}.canvas-search-bar__input:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.canvas-search-bar__input::-webkit-search-cancel-button{appearance:none}.canvas-search-bar__count{min-width:56px;padding:0 var(--space-1);color:var(--color-text-secondary);font-size:var(--text-xs);text-align:center;white-space:nowrap}.canvas-search-bar__btn{border-radius:var(--radius-md,var(--radius-lg));width:28px;height:28px;color:var(--color-text-primary);font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease), color var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.canvas-search-bar__btn:hover{background:var(--color-surface-alt)}.canvas-search-bar__btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-search-bar__btn:disabled{opacity:.4;cursor:default}.canvas-search-bar__close{font-size:var(--text-lg)}[data-search-match=true]{outline:none}.canvas-search-match-outline{fill:none;stroke:var(--color-warning,#d97706);stroke-width:2px;stroke-dasharray:6 4;pointer-events:none}.canvas-connector-toolbar{transform:translate(-50%, calc(-100% - var(--canvas-connector-toolbar-gap,12px)));align-items:center;gap:var(--space-xs,6px);height:var(--canvas-connector-toolbar-height,44px);padding:0 var(--space-sm,8px);background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);box-shadow:var(--shadow-md,0 4px 12px #00000026);z-index:30;pointer-events:auto;-webkit-user-select:none;user-select:none;font-family:var(--font-family-base,system-ui);color:var(--color-text-primary,#111);display:inline-flex}.canvas-connector-toolbar__divider{background:var(--color-border,#0000001f);width:1px;height:24px;margin:0 var(--space-xs,4px);flex-shrink:0}.canvas-connector-toolbar__btn{appearance:none;border-radius:var(--radius-sm,4px);font-size:var(--text-md,14px);cursor:pointer;color:var(--color-text-primary,#111);white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:4px 8px;line-height:1;display:inline-flex}.canvas-connector-toolbar__btn:hover{background:var(--color-surface-hover,#0000000f);border-color:var(--color-border,#0000001f)}.canvas-connector-toolbar__btn:focus-visible{outline:2px solid var(--color-primary,#3182ce);outline-offset:1px}.canvas-connector-toolbar__color-dot{border:1.5px solid var(--color-border-strong,#cbd5e1);border-radius:50%;flex-shrink:0;width:14px;height:14px;display:inline-block}.canvas-connector-toolbar__popover-wrapper{position:relative}.canvas-connector-toolbar__popover{background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-md,8px);box-shadow:var(--shadow-md,0 4px 12px #00000026);padding:var(--space-sm,8px);z-index:31;min-width:120px;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.canvas-connector-toolbar__swatch-grid{grid-template-columns:repeat(4,24px);gap:6px;display:grid}.canvas-connector-toolbar__swatch{border-radius:var(--radius-sm,4px);cursor:pointer;border:2px solid #0000;width:24px;height:24px;padding:0}.canvas-connector-toolbar__swatch:hover{border-color:var(--color-border-strong,#94a3b8)}.canvas-connector-toolbar__swatch[aria-checked=true]{box-shadow:var(--focus-ring,0 0 0 2px #3182ce);border-color:#0000}.canvas-connector-toolbar__menu-list{flex-direction:column;gap:2px;display:flex}.canvas-connector-toolbar__menu-item{border-radius:var(--radius-sm,4px);cursor:pointer;width:100%;font-size:var(--text-md,14px);color:var(--color-text-primary,#111);text-align:left;white-space:nowrap;background:0 0;border:none;align-items:center;gap:8px;padding:6px 8px;display:flex}.canvas-connector-toolbar__menu-item:hover{background:var(--color-surface-hover,#0000000f)}.canvas-connector-toolbar__menu-item[aria-pressed=true],.canvas-connector-toolbar__menu-item[data-active=true]{background:var(--color-primary-subtle,#3182ce1a);color:var(--color-primary,#3182ce)}.canvas-connector-toolbar__preview-svg{flex-shrink:0}.canvas-connector-toolbar__arrow-grid{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.canvas-connector-toolbar__arrow-grid-item{border-radius:var(--radius-sm,4px);cursor:pointer;color:var(--color-text-primary,#111);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:6px;line-height:1;display:flex}.canvas-connector-toolbar__arrow-grid-item:hover{background:var(--color-surface-hover,#0000000f);border-color:var(--color-border,#0000001f)}.canvas-connector-toolbar__arrow-grid-item:focus-visible{outline:2px solid var(--color-primary,#3182ce);outline-offset:1px}.canvas-connector-toolbar__arrow-grid-item[aria-pressed=true],.canvas-connector-toolbar__arrow-grid-item[data-active=true]{background:var(--color-primary-subtle,#3182ce1a);border-color:var(--color-primary,#3182ce);color:var(--color-primary,#3182ce)}@media (prefers-reduced-motion:reduce){.canvas-connector-toolbar,.canvas-connector-toolbar__popover{transition:none}}.canvas-layers-panel{top:calc(var(--canvas-topbar-height,48px) + 8px);width:224px;max-height:calc(100% - var(--canvas-topbar-height,48px) - 24px);background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);box-shadow:var(--shadow-md,0 4px 12px #00000026);z-index:25;pointer-events:auto;-webkit-user-select:none;user-select:none;font-family:var(--font-family-base,system-ui);color:var(--color-text-primary,#111);font-size:var(--text-sm,12px);flex-direction:column;display:flex;position:absolute;right:8px;overflow:hidden}.canvas-layers-panel__header{border-bottom:1px solid var(--color-border,#00000014);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 10px 8px 12px;display:flex}.canvas-layers-panel__title{font-size:var(--text-sm,12px);letter-spacing:.02em;color:var(--color-text-secondary,#555);text-transform:uppercase;font-weight:600}.canvas-layers-panel__close{appearance:none;border-radius:var(--radius-sm,4px);cursor:pointer;width:24px;height:24px;color:var(--color-text-secondary,#555);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;display:flex}.canvas-layers-panel__close:hover{background:var(--color-hover,#0000000f);color:var(--color-text-primary,#111)}.canvas-layers-panel__close:focus-visible{outline:2px solid var(--color-focus,#07f);outline-offset:1px}.canvas-layers-panel__list{overscroll-behavior:contain;flex:1;padding:4px 0;overflow-y:auto}.canvas-layers-panel__list::-webkit-scrollbar{width:4px}.canvas-layers-panel__list::-webkit-scrollbar-thumb{background:var(--color-border,#00000026);border-radius:2px}.canvas-layers-panel__row{cursor:pointer;align-items:center;gap:4px;height:32px;padding:0 8px 0 10px;transition:background .1s;display:flex}.canvas-layers-panel__row:hover{background:var(--color-hover,#0000000a)}.canvas-layers-panel__row--selected{background:var(--color-selected-bg,#0064ff14)}.canvas-layers-panel__row--selected .canvas-layers-panel__row-label{color:var(--color-primary,#05c);font-weight:600}.canvas-layers-panel__row-icon{width:16px;height:16px;color:var(--color-text-secondary,#777);flex-shrink:0;justify-content:center;align-items:center;display:flex}.canvas-layers-panel__row-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--text-sm,12px);color:var(--color-text-primary,#111);flex:1;line-height:1.3;overflow:hidden}.canvas-layers-panel__row-lock{width:14px;height:14px;color:var(--color-text-secondary,#888);flex-shrink:0;justify-content:center;align-items:center;display:flex}.canvas-layers-panel__row-actions{opacity:0;flex-shrink:0;gap:2px;transition:opacity .1s;display:flex}.canvas-layers-panel__row:hover .canvas-layers-panel__row-actions,.canvas-layers-panel__row--selected .canvas-layers-panel__row-actions{opacity:1}.canvas-layers-panel__row-btn{appearance:none;border-radius:var(--radius-sm,4px);cursor:pointer;width:22px;height:22px;color:var(--color-text-secondary,#555);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;font-size:12px;line-height:1;display:flex}.canvas-layers-panel__row-btn:hover{background:var(--color-hover,#00000014);color:var(--color-text-primary,#111)}.canvas-layers-panel__row-btn:focus-visible{outline:2px solid var(--color-focus,#07f);outline-offset:1px}.canvas-layers-panel__row-btn:disabled{opacity:.35;cursor:default}.canvas-layer-filter{display:inline-flex;position:relative}.canvas-layer-filter__popover{z-index:120;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-md,8px);min-width:160px;box-shadow:var(--shadow-lg,0 4px 16px #0000002e);padding:var(--space-2,8px) 0;flex-direction:column;gap:0;display:flex;position:absolute;top:calc(100% + 6px);right:0}.canvas-layer-filter__header{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted,#888);padding:0 var(--space-3,12px) var(--space-1,4px);-webkit-user-select:none;user-select:none;font-size:11px;font-weight:600}.canvas-layer-filter__row{align-items:center;gap:var(--space-2,8px);padding:var(--space-1,4px) var(--space-3,12px);display:flex}.canvas-layer-filter__row-label{color:var(--color-text,#1a1a1a);-webkit-user-select:none;user-select:none;flex:1;font-size:13px}.canvas-layer-filter__row-label--hidden{opacity:.45}.canvas-layer-filter__eye-btn{appearance:none;cursor:pointer;color:var(--color-text,#1a1a1a);border-radius:var(--radius-sm,4px);opacity:.6;background:0 0;border:none;justify-content:center;align-items:center;padding:2px;transition:opacity .1s,background .1s;display:inline-flex}.canvas-layer-filter__eye-btn:hover{opacity:1;background:var(--color-surface-hover,#0000000f)}.canvas-layer-filter__eye-btn--hidden{opacity:.3}.canvas-layer-filter__eye-btn--hidden:hover{opacity:.6}@keyframes canvas-laser-fade{0%{opacity:1;transform:scale(1)}80%{opacity:.4;transform:scale(.7)}to{opacity:0;transform:scale(.3)}}.canvas-laser-dot{pointer-events:none;will-change:opacity, transform;background:#ff2d2d;border-radius:50%;width:12px;height:12px;animation:.5s ease-out forwards canvas-laser-fade;position:absolute;box-shadow:0 0 6px 2px #ff2d2db3}.canvas-presence-strip{flex-direction:row;align-items:center;gap:0;margin-right:4px;display:inline-flex}.canvas-presence-avatar{border:1.5px solid var(--color-surface,#fff);color:#fff;cursor:default;-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.canvas-presence-overflow{border:1.5px solid var(--color-surface,#fff);background:var(--color-border,#cbd5e1);width:24px;height:24px;color:var(--color-text-primary,#1e293b);cursor:default;-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;font-size:9px;font-weight:700;line-height:1;display:inline-flex}.canvas-viewport-bar{bottom:calc(56px + env(safe-area-inset-bottom,0px) + 80px);left:var(--space-4,16px);align-items:center;gap:var(--space-1,4px);padding:var(--space-1,4px);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-md);z-index:20;display:none;position:absolute}@media (width<=639px){.canvas-viewport-bar{display:inline-flex}}.canvas-viewport-bar__btn{border-radius:var(--radius-md,var(--radius-lg));width:36px;height:36px;color:var(--color-text-primary);font-size:var(--text-lg,18px);cursor:pointer;touch-action:manipulation;transition:background var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.canvas-viewport-bar__btn:hover:not(:disabled),.canvas-viewport-bar__btn:active:not(:disabled){background:var(--color-surface-alt)}.canvas-viewport-bar__btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-viewport-bar__btn--fit{font-size:var(--text-md,14px)}.canvas-mode-toggle{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-alt,var(--color-surface));align-items:center;gap:2px;height:32px;padding:2px;display:none}@media (width<=639px){.canvas-mode-toggle{display:inline-flex}}.canvas-mode-toggle__btn{height:28px;padding:0 var(--space-2,8px);border-radius:calc(var(--radius-lg) - 2px);color:var(--color-text-secondary,var(--color-text-primary));font-size:var(--text-sm,13px);cursor:pointer;touch-action:manipulation;transition:background var(--transition-fast,.12s ease), color var(--transition-fast,.12s ease);white-space:nowrap;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;font-weight:500;line-height:1;display:inline-flex}.canvas-mode-toggle__btn--active{background:var(--color-surface);color:var(--color-text-primary);border-color:var(--color-border);box-shadow:var(--shadow-xs,var(--shadow-sm));cursor:default}.canvas-mode-toggle__btn:not(.canvas-mode-toggle__btn--active):hover{color:var(--color-text-primary)}.canvas-mode-toggle__btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-delete-confirm-overlay{background:var(--color-overlay,#00000073);z-index:1000;padding:var(--space-4);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.canvas-delete-confirm{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg,var(--radius-md));box-shadow:var(--shadow-lg,var(--shadow-sm));padding:var(--space-4) var(--space-5,var(--space-4));gap:var(--space-3);flex-direction:column;width:100%;max-width:420px;display:flex}.canvas-delete-confirm__title{font-size:var(--text-lg);color:var(--color-text-primary);margin:0;font-weight:600}.canvas-delete-confirm__message{font-size:var(--text-md);color:var(--color-text-secondary,var(--color-text-primary));margin:0;line-height:1.5}.canvas-delete-confirm__actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2);display:flex}.canvas-delete-confirm__btn{appearance:none;font:inherit;cursor:pointer;padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface-alt);color:var(--color-text-primary);min-width:88px;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease)}.canvas-delete-confirm__btn:hover{background:var(--color-hover,var(--color-surface-alt))}.canvas-delete-confirm__btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.canvas-delete-confirm__btn--confirm{border-color:var(--color-danger);background:var(--color-danger);color:var(--color-on-danger,var(--color-bg))}.canvas-delete-confirm__btn--confirm:hover{background:var(--color-danger-hover,var(--color-danger-dark,var(--color-danger)))}.canvas-comment-pin{cursor:pointer}.canvas-comment-pin__bubble{fill:var(--color-accent,#2563eb);stroke:var(--color-surface,#fff);stroke-width:1.5px;filter:drop-shadow(0 1px 2px #0000004d)}.canvas-comment-pin[data-resolved=true] .canvas-comment-pin__bubble{fill:var(--color-text-muted,#9ca3af);opacity:.7}.canvas-comment-pin__count{fill:var(--color-on-accent,#fff);text-anchor:middle;dominant-baseline:central;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:11px;font-weight:600}.canvas-comment-popover{z-index:30;border:1px solid var(--color-border);border-radius:var(--radius-lg,8px);background:var(--color-surface,#fff);width:280px;max-height:360px;box-shadow:var(--shadow-lg,0 8px 24px #0000002e);flex-direction:column;display:flex;position:absolute;overflow:hidden}.canvas-comment-popover__list{padding:var(--space-2,8px);gap:var(--space-2,8px);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.canvas-comment-popover__footer{border-top:1px solid var(--color-border);padding:var(--space-2,8px);gap:var(--space-2,8px);flex-direction:column;flex:none;display:flex}.canvas-comments-sidebar{z-index:12;border-left:1px solid var(--color-border);background:var(--color-surface,#fff);width:320px;box-shadow:var(--shadow-md,-2px 0 8px #00000014);flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0}.canvas-comments-sidebar__header{justify-content:space-between;align-items:center;gap:var(--space-2,8px);padding:var(--space-3,12px);border-bottom:1px solid var(--color-border);flex:none;font-weight:600;display:flex}.canvas-comments-sidebar__close{cursor:pointer;color:var(--color-text-muted,#6b7280);padding:var(--space-1,4px);border-radius:var(--radius-sm,4px);background:0 0;border:none;font-size:18px;line-height:1}.canvas-comments-sidebar__close:hover{background:var(--color-surface-hover,#f3f4f6)}.canvas-comments-sidebar__body{padding:var(--space-2,8px);gap:var(--space-3,12px);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.canvas-comments-sidebar__empty{color:var(--color-text-muted,#6b7280);text-align:center;padding:var(--space-4,16px);font-size:13px}.canvas-comments-thread{border:1px solid var(--color-border);border-radius:var(--radius-md,6px);padding:var(--space-2,8px);gap:var(--space-2,8px);cursor:pointer;flex-direction:column;display:flex}.canvas-comments-thread[data-resolved=true]{opacity:.6}.canvas-comment-message{flex-direction:column;gap:2px;font-size:13px;display:flex}.canvas-comment-message__meta{align-items:baseline;gap:var(--space-2,8px);color:var(--color-text-muted,#6b7280);font-size:11px;display:flex}.canvas-comment-message__author{color:var(--color-text,#111827);font-weight:600}.canvas-comment-message__edited{font-style:italic}.canvas-comment-message__body{white-space:pre-wrap;word-break:break-word;color:var(--color-text,#111827)}.canvas-comment-message__body[data-deleted=true]{color:var(--color-text-muted,#9ca3af);font-style:italic}.canvas-comment-message__actions{gap:var(--space-2,8px);margin-top:2px;display:flex}.canvas-comment-message__action{cursor:pointer;color:var(--color-accent,#2563eb);background:0 0;border:none;padding:0;font-size:11px}.canvas-comment-message__action:hover{text-decoration:underline}.canvas-comment-composer{gap:var(--space-1,4px);flex-direction:column;display:flex}.canvas-comment-composer__input{resize:vertical;border:1px solid var(--color-border);border-radius:var(--radius-sm,4px);width:100%;min-height:48px;padding:var(--space-2,8px);font:inherit;box-sizing:border-box;font-size:13px}.canvas-comment-composer__row{justify-content:flex-end;gap:var(--space-2,8px);display:flex}.canvas-comment-composer__btn{border:1px solid var(--color-border);background:var(--color-accent,#2563eb);color:var(--color-on-accent,#fff);cursor:pointer;padding:var(--space-1,4px) var(--space-3,12px);border-radius:var(--radius-sm,4px);font-size:12px}.canvas-comment-composer__btn[disabled]{opacity:.5;cursor:default}.canvas-comment-composer__btn--ghost{color:var(--color-text,#111827);background:0 0}.canvas-action-bar__btn{appearance:none;justify-content:center;align-items:center;gap:var(--space-xs,4px);border-radius:var(--radius-sm,4px);min-width:28px;height:28px;padding:0 var(--space-xs,4px);cursor:pointer;color:var(--color-text-primary,#111);background:0 0;border:1px solid #0000;line-height:1;transition:background-color .12s,border-color .12s;display:inline-flex}.canvas-action-bar__btn:hover{background:var(--color-surface-alt,#0000000a)}.canvas-action-bar__btn:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-action-bar__btn--active{background:var(--color-surface-alt,#0000000f);border-color:var(--color-border,#0000001f)}.canvas-action-bar__btn svg{width:18px;height:18px;display:block}.canvas-action-bar__presence{align-items:center;display:inline-flex}.canvas-action-bar__presence:empty{display:none}.canvas-action-bar__share-btn{font-family:inherit;font-size:var(--font-size-sm,13px);font-weight:500}.canvas-action-bar__share-label{white-space:nowrap}.canvas-action-bar__share-wrap{display:inline-flex;position:relative}.canvas-action-bar__share-popover{top:calc(100% + var(--space-xs,6px));z-index:40;gap:var(--space-xs,6px);width:260px;padding:var(--space-sm,10px);background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);box-shadow:var(--shadow-lg,0 8px 24px #0000002e);flex-direction:column;display:flex;position:absolute;right:0}.canvas-action-bar__share-title{font-size:var(--font-size-sm,13px);color:var(--color-text-primary,#111);font-weight:600}.canvas-action-bar__share-input{appearance:none;box-sizing:border-box;width:100%;padding:var(--space-xs,6px) var(--space-sm,8px);font-family:var(--font-family-mono,ui-monospace, monospace);font-size:var(--font-size-xs,12px);color:var(--color-text-primary,#111);background:var(--color-surface-alt,#0000000a);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-sm,4px)}.canvas-action-bar__share-copy{appearance:none;padding:var(--space-xs,6px) var(--space-md,12px);font-family:inherit;font-size:var(--font-size-sm,13px);cursor:pointer;color:var(--color-on-accent,#fff);background:var(--color-accent,#2563eb);border-radius:var(--radius-sm,4px);border:1px solid #0000;align-self:flex-end;font-weight:500;transition:filter .12s}.canvas-action-bar__share-copy:hover{filter:brightness(1.05)}.canvas-action-bar__share-copy:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-toolbox__flyout--shapes{min-width:11rem}.canvas-toolbox__shape-entry{justify-content:flex-start;gap:var(--space-2);width:100%;padding-inline:var(--space-2);flex-direction:row}.canvas-toolbox__shape-entry-label{font-size:var(--font-size-sm);color:var(--color-text);white-space:nowrap}.canvas-toolbox__flyout--sticky-palette{align-items:stretch;min-width:12rem}.canvas-toolbox__flyout--sticky-palette .canvas-color-palette{gap:var(--space-2);grid-template-columns:repeat(6,1.5rem);justify-content:center;display:grid}.canvas-toolbox__flyout--sticky-palette .canvas-color-palette__swatch{cursor:pointer;appearance:none;border-radius:50%;flex-shrink:0;width:1.5rem;height:1.5rem;padding:0}.canvas-toolbox__flyout--sticky-palette .canvas-color-palette__swatch:focus-visible{box-shadow:var(--focus-ring);outline:none}.canvas-toolbox__sticky-stack-btn{margin-top:var(--space-1);padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);cursor:pointer;text-align:center}.canvas-toolbox__sticky-stack-btn:hover:not(:disabled){background:var(--color-surface-hover,var(--color-surface));border-color:var(--color-border-strong,var(--color-border))}.canvas-toolbox__sticky-stack-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.canvas-toolbox__sticky-stack-btn:disabled{opacity:.5;cursor:default}.canvas-grid-settings-panel{top:calc(100% + var(--space-2));z-index:30;min-width:200px;padding:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);gap:var(--space-3);flex-direction:column;display:flex;position:absolute;right:0}.canvas-grid-settings-panel__title{font-size:var(--text-sm);color:var(--color-text-secondary);margin:0 0 var(--space-1);font-weight:600}.canvas-grid-settings-panel__mode-group{gap:var(--space-1);flex-direction:column;display:flex}.canvas-grid-settings-panel__mode-label{font-size:var(--text-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-1);font-weight:500}.canvas-grid-settings-panel__mode-btn{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-1-5) var(--space-2);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--text-sm);text-align:left;cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;display:flex}.canvas-grid-settings-panel__mode-btn:hover{background:var(--color-surface-alt)}.canvas-grid-settings-panel__mode-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.canvas-grid-settings-panel__mode-btn[aria-pressed=true]{background:var(--color-surface-alt);border-color:var(--color-primary);color:var(--color-primary);font-weight:500}.canvas-grid-settings-panel__brightness-section{gap:var(--space-1-5);flex-direction:column;display:flex}.canvas-grid-settings-panel__brightness-header{justify-content:space-between;align-items:center;display:flex}.canvas-grid-settings-panel__brightness-label{font-size:var(--text-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;font-weight:500}.canvas-grid-settings-panel__brightness-value{font-size:var(--text-xs);color:var(--color-text-tertiary,var(--color-text-secondary));text-align:right;min-width:2.5ch}.canvas-grid-settings-panel__brightness-slider{width:100%;accent-color:var(--color-primary);cursor:pointer}.canvas-grid-toggle__settings-btn{width:22px;height:28px;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm,var(--radius-md));transition:color var(--transition-fast,.12s ease), background var(--transition-fast,.12s ease);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.canvas-grid-toggle__settings-btn:hover{color:var(--color-text-primary);background:var(--color-surface-alt)}.canvas-grid-toggle__settings-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-grid-toggle__settings-btn--active{color:var(--color-primary)}.canvas-grid-settings-panel__anon-section{border-top:1px solid var(--color-border-subtle,#e5e7eb);justify-content:space-between;align-items:center;padding:8px 0 4px;display:flex}.canvas-grid-settings-panel__anon-label{color:var(--color-text-secondary,#6b7280);-webkit-user-select:none;user-select:none;font-size:12px}.canvas-color-picker{gap:var(--space-sm,8px);width:240px;padding:var(--space-sm,8px);background:var(--color-surface,#fff);color:var(--color-text-primary,#111);font-family:var(--font-family-base,system-ui);flex-direction:column;display:flex}.canvas-color-picker__sv{border-radius:var(--radius-sm,4px);border:1px solid var(--color-border,#0000001f);cursor:crosshair;touch-action:none;width:200px;height:200px;display:block}.canvas-color-picker__sv:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-color-picker__hue{appearance:none;border:1px solid var(--color-border,#0000001f);cursor:pointer;background:linear-gradient(90deg,red 0%,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);border-radius:8px;width:200px;height:16px}.canvas-color-picker__opacity{appearance:none;border:1px solid var(--color-border,#0000001f);cursor:pointer;background-image:linear-gradient(to right, rgba(var(--cp-opacity-rgb,0, 0, 0), 0) 0%, rgba(var(--cp-opacity-rgb,0, 0, 0), 1) 100%), linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%), linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%);background-position:0 0,0 0,6px 6px;background-size:100% 100%,12px 12px,12px 12px;border-radius:8px;width:200px;height:16px}.canvas-color-picker__hue::-webkit-slider-thumb{appearance:none;background:var(--color-surface,#fff);border:2px solid var(--color-text-primary,#111);cursor:pointer;border-radius:50%;width:14px;height:14px}.canvas-color-picker__opacity::-webkit-slider-thumb{appearance:none;background:var(--color-surface,#fff);border:2px solid var(--color-text-primary,#111);cursor:pointer;border-radius:50%;width:14px;height:14px}.canvas-color-picker__hue::-moz-range-thumb{background:var(--color-surface,#fff);border:2px solid var(--color-text-primary,#111);cursor:pointer;border-radius:50%;width:14px;height:14px}.canvas-color-picker__opacity::-moz-range-thumb{background:var(--color-surface,#fff);border:2px solid var(--color-text-primary,#111);cursor:pointer;border-radius:50%;width:14px;height:14px}.canvas-color-picker__hue:focus-visible,.canvas-color-picker__opacity:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-color-picker__hex-row{align-items:center;gap:var(--space-sm,8px);display:flex}.canvas-color-picker__preview{border-radius:var(--radius-sm,4px);border:1px solid var(--color-border,#0003);flex-shrink:0;width:32px;height:32px;display:inline-block}.canvas-color-picker__hex-field{border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-sm,4px);flex:1;align-items:center;gap:2px;padding:2px 6px;display:inline-flex}.canvas-color-picker__hex-hash{color:var(--color-text-muted,#555);font-size:var(--text-sm,12px)}.canvas-color-picker__hex-input{min-width:0;font-family:var(--font-family-mono,monospace);font-size:var(--text-sm,12px);color:var(--color-text-primary,#111);text-transform:uppercase;background:0 0;border:none;flex:1}.canvas-color-picker__hex-input:focus-visible{outline:none}.canvas-color-picker__rgb-row{gap:var(--space-xs,6px);display:flex}.canvas-color-picker__rgb-field{align-items:center;gap:4px;width:52px;display:inline-flex}.canvas-color-picker__rgb-label{font-size:var(--text-sm,12px);color:var(--color-text-muted,#555);width:12px}.canvas-color-picker__rgb-input{border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-sm,4px);width:100%;min-width:0;font-size:var(--text-sm,12px);color:var(--color-text-primary,#111);background:var(--color-surface,#fff);padding:2px 4px}.canvas-color-picker__rgb-input:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-color-picker__recent{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.canvas-color-picker__recent-swatch{appearance:none;border:1px solid var(--color-border,#0003);cursor:pointer;border-radius:50%;flex-shrink:0;width:16px;height:16px;padding:0}.canvas-color-picker__recent-swatch:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-color-picker__actions{justify-content:flex-end;gap:var(--space-sm,8px);display:flex}.canvas-color-picker__btn{appearance:none;border-radius:var(--radius-sm,4px);border:1px solid var(--color-border,#0000001f);height:28px;font-size:var(--text-sm,12px);cursor:pointer;background:var(--color-surface,#fff);color:var(--color-text-primary,#111);padding:0 12px}.canvas-color-picker__btn--apply{background:var(--color-accent,#1e88e5);border-color:var(--color-accent,#1e88e5);color:#fff}.canvas-color-picker__btn:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-color-picker__visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.canvas-layer-control{border-radius:var(--radius-sm,4px);background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);-webkit-user-select:none;user-select:none;align-items:center;gap:2px;height:32px;padding:0 4px;display:inline-flex}.canvas-layer-control__label{color:var(--color-text-secondary,#666);white-space:nowrap;padding-right:2px;font-size:11px;font-weight:500}.canvas-layer-control__btn{border-radius:var(--radius-xs,3px);width:20px;height:22px;color:var(--color-text,#111);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:background 80ms;display:inline-flex}.canvas-layer-control__btn:hover:not(:disabled){background:var(--color-hover,#0000000f)}.canvas-layer-control__btn:disabled{opacity:.35;cursor:default}.canvas-layer-control__input{border-radius:var(--radius-xs,3px);background:var(--color-input-bg,#0000000a);width:28px;height:22px;color:var(--color-text,#111);text-align:center;border:none;outline:none;padding:0 2px;font-size:12px;font-weight:600}.canvas-layer-control__input:focus{background:var(--color-input-focus-bg,#3182ce14);box-shadow:0 0 0 2px var(--color-focus-ring,#3182ce)}.canvas-layer-control__input::placeholder{color:var(--color-text-tertiary,#aaa);font-weight:400}.canvas-alignment-toolbar{transform:translate(-100%, calc(-100% - var(--canvas-alignment-toolbar-gap,10px)));align-items:center;gap:var(--space-xs,4px);height:var(--canvas-alignment-toolbar-height,40px);padding:0 var(--space-sm,8px);background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);box-shadow:var(--shadow-md,0 4px 12px #00000026);z-index:30;pointer-events:auto;-webkit-user-select:none;user-select:none;font-family:var(--font-family-base,system-ui);color:var(--color-text-primary,#111);display:inline-flex}.canvas-alignment-toolbar__btn{appearance:none;border-radius:var(--radius-sm,4px);cursor:pointer;width:28px;height:28px;color:var(--color-text-primary,#111);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;transition:background-color .12s,border-color .12s;display:inline-flex}.canvas-alignment-toolbar__btn:hover{background:var(--color-surface-alt,#0000000a)}.canvas-alignment-toolbar__btn:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-alignment-toolbar__btn:disabled{opacity:.4;cursor:not-allowed}.canvas-alignment-toolbar__btn svg{width:18px;height:18px;display:block}.canvas-alignment-toolbar__divider{background:var(--color-border,#0000001f);width:1px;height:22px;margin:0 var(--space-xs,4px)}.canvas-selection-actions-toolbar{transform:translate(-100%, calc(-100% - var(--canvas-alignment-toolbar-gap,10px) - var(--canvas-selection-actions-stack,48px)));align-items:center;gap:var(--space-xs,4px);height:var(--canvas-alignment-toolbar-height,40px);padding:0 var(--space-sm,8px);background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:var(--radius-lg,10px);box-shadow:var(--shadow-md,0 4px 12px #00000026);z-index:30;pointer-events:auto;-webkit-user-select:none;user-select:none;font-family:var(--font-family-base,system-ui);color:var(--color-text-primary,#111);display:inline-flex}.canvas-selection-actions-toolbar__btn{appearance:none;border-radius:var(--radius-sm,4px);cursor:pointer;width:28px;height:28px;color:var(--color-text-primary,#111);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;transition:background-color .12s,border-color .12s;display:inline-flex}.canvas-selection-actions-toolbar__btn:hover{background:var(--color-surface-alt,#0000000a)}.canvas-selection-actions-toolbar__btn:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #007aff66);outline:none}.canvas-selection-actions-toolbar__btn:disabled{opacity:.4;cursor:not-allowed}.canvas-selection-actions-toolbar__btn--active{background:var(--color-surface-alt,#0000000f);border-color:var(--color-border,#0000001f)}.canvas-selection-actions-toolbar__btn svg{width:18px;height:18px;display:block}.canvas-selection-actions-toolbar__divider{background:var(--color-border,#0000001f);width:1px;height:22px;margin:0 var(--space-xs,4px)}.canvas-mst-toolbar{flex-flow:row;align-items:center;gap:2px;min-width:0;display:flex;overflow:visible}.canvas-mst-toolbar__ctrl-wrapper{align-items:center;display:flex;position:relative}.canvas-mst-toolbar__btn{height:28px;color:var(--color-text-primary,#111);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;gap:4px;padding:0 8px;font-size:13px;transition:background-color .1s;display:flex}.canvas-mst-toolbar__btn:hover:not(:disabled){background:var(--color-surface-hover,#0000000f)}.canvas-mst-toolbar__btn:active:not(:disabled){background:var(--color-surface-active,#0000001f)}.canvas-mst-toolbar__btn:disabled{opacity:.35;cursor:default}.canvas-mst-toolbar__btn--active,.canvas-mst-toolbar__btn[aria-pressed=true],.canvas-mst-toolbar__btn[data-pressed=true]{background:var(--color-accent-subtle,#2563eb1f);color:var(--color-accent,#2563eb)}.canvas-mst-toolbar__style-group{flex-direction:row;gap:2px;padding:2px 0;display:flex}.canvas-mst-toolbar__style-btn{width:32px}.canvas-mst-toolbar__stepper{min-width:48px}.canvas-mst-toolbar__stepper-value{font-variant-numeric:tabular-nums;text-align:right;min-width:28px;font-size:12px}.canvas-mst-toolbar__label{font-size:12px;font-weight:500}.canvas-mst-toolbar__caret{opacity:.6;font-size:8px}.canvas-mst-toolbar__border-chip{border:2px solid;border-radius:2px;flex-shrink:0;width:14px;height:14px;display:inline-block}.canvas-mst-toolbar__divider{background:var(--color-border,#0000001f);flex-shrink:0;width:1px;height:20px;margin:0 4px}.canvas-mst-toolbar__actions{flex-direction:row;flex-shrink:0;align-items:center;gap:2px;margin-left:auto;display:flex}.canvas-mst-toolbar__overflow-trigger{letter-spacing:1px;min-width:32px;padding:0 6px;font-size:11px}.canvas-mst-toolbar__popover{z-index:200;background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:8px;flex-direction:column;gap:8px;min-width:200px;padding:10px;display:flex;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 4px 16px #00000029}.canvas-mst-toolbar__popover--mini{min-width:160px;padding:8px}.canvas-mst-toolbar__popover--submenu{top:0;left:100%}.canvas-mst-toolbar__color-grid{grid-template-columns:repeat(6,22px);gap:4px;display:grid}.canvas-mst-toolbar__swatch{cursor:pointer;appearance:none;border:1.5px solid #00000014;border-radius:4px;width:22px;height:22px;padding:0;transition:transform 80ms,box-shadow 80ms}.canvas-mst-toolbar__swatch:hover{transform:scale(1.15)}.canvas-mst-toolbar__swatch[data-selected=true]{outline:2px solid var(--color-accent,#2563eb);outline-offset:1px}.canvas-mst-toolbar__advanced-trigger{border:1px dashed var(--color-border,#0003);cursor:pointer;height:26px;color:var(--color-text-secondary,#555);background:0 0;border-radius:4px;align-items:center;gap:6px;padding:0 6px;font-size:12px;display:flex}.canvas-mst-toolbar__advanced-trigger:hover{background:var(--color-surface-hover,#0000000a)}.canvas-mst-toolbar__color-wheel{background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:50%;flex-shrink:0;width:16px;height:16px;display:inline-block}.canvas-mst-toolbar__popover-divider{background:var(--color-border,#00000014);height:1px;margin:2px 0}.canvas-mst-toolbar__field{align-items:center;gap:6px;min-width:0;display:flex}.canvas-mst-toolbar__field-label{color:var(--color-text-secondary,#666);white-space:nowrap;flex-shrink:0;min-width:42px;font-size:11px}.canvas-mst-toolbar__range{min-width:60px;accent-color:var(--color-accent,#2563eb);flex:1}.canvas-mst-toolbar__range-value{font-variant-numeric:tabular-nums;text-align:right;min-width:24px;color:var(--color-text-secondary,#666);font-size:11px}.canvas-mst-toolbar__select{border:1px solid var(--color-border,#00000026);background:var(--color-surface,#fff);height:26px;color:var(--color-text-primary,#111);cursor:pointer;border-radius:4px;flex:1;padding:0 4px;font-size:12px}.canvas-mst-toolbar__overflow-menu{z-index:201;background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:8px;flex-direction:column;gap:2px;min-width:160px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 16px #00000029}.canvas-mst-toolbar__menu-item-wrapper{position:relative}.canvas-mst-toolbar__menu-item{height:32px;color:var(--color-text-primary,#111);cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;width:100%;padding:0 10px;font-size:13px;display:flex}.canvas-mst-toolbar__menu-item:hover{background:var(--color-surface-hover,#0000000f)}.canvas-mst-toolbar__menu-item--flyout{justify-content:space-between}.canvas-mst-toolbar__menu-item-label{text-align:left;flex:1}.canvas-mst-toolbar__text-flyout{z-index:202;background:var(--color-surface,#fff);border:1px solid var(--color-border,#0000001f);border-radius:8px;flex-direction:column;gap:8px;min-width:200px;padding:10px;display:flex;position:absolute;top:0;left:100%;box-shadow:0 4px 16px #00000029}.canvas-mst-toolbar__text-row{flex-direction:row;gap:2px;display:flex}.canvas-mst-toolbar__group{flex-direction:row;flex-shrink:0;align-items:center;gap:2px;display:flex;position:relative}.canvas-mst-toolbar__text-inline{flex-direction:row;align-items:center;gap:4px;display:flex}.canvas-mst-toolbar__text-inline .canvas-mst-toolbar__field{gap:4px}.canvas-mst-toolbar__text-inline .canvas-mst-toolbar__field-label{display:none}.canvas-mst-toolbar__text-inline .canvas-mst-toolbar__select{max-width:96px}.canvas-mst-toolbar__align-buttons{flex-direction:row;align-items:center;gap:2px;display:flex}.canvas-mst-toolbar__text-trigger,.canvas-mst-toolbar__alignment-trigger{min-width:36px}.canvas-mst-toolbar__ctrl-wrapper>.canvas-mst-toolbar__text-flyout{top:calc(100% + 6px);left:0}.canvas-mst-toolbar__alignment-flyout{flex-direction:row;align-items:center;gap:2px;min-width:0}.canvas-selection-stack>.canvas-node-toolbar__switch-row{pointer-events:auto;position:static;top:auto;left:auto;transform:none}.canvas-node-toolbar__switch-row{background:var(--surface-1,#fff);box-shadow:var(--shadow-sm,0 1px 4px #0000002e);border-radius:8px;align-items:center;gap:4px;padding:4px;display:flex}.canvas-node-toolbar__btn{min-width:28px;height:28px;color:var(--color-text-primary,#1a1a1a);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;gap:2px;padding:0 6px;line-height:1;display:inline-flex}.canvas-node-toolbar__btn:hover{background:var(--surface-2,#0000000f)}.canvas-node-toolbar__btn:focus-visible{outline:2px solid var(--focus-ring,#2563eb);outline-offset:1px}.canvas-node-toolbar__caret{opacity:.6;font-size:9px}.canvas-node-toolbar__switch-wrapper{position:relative}.canvas-node-toolbar__popover{background:var(--surface-1,#fff);min-width:180px;box-shadow:var(--shadow-md,0 4px 16px #0000002e);z-index:1;border-radius:8px;padding:10px 12px;position:absolute;top:calc(100% + 6px);left:0}.canvas-node-toolbar__popover--up{top:auto;bottom:calc(100% + 6px)}.canvas-node-toolbar__popover-title{color:var(--color-text-primary,#1a1a1a);margin-bottom:4px;font-size:13px;font-weight:600}.canvas-node-toolbar__popover-hint{color:var(--color-text-secondary,#6b7280);font-size:12px}.canvas-switch-type-grid{grid-template-columns:repeat(3,1fr);gap:4px;margin-top:6px;display:grid}.canvas-switch-type-grid__cell{width:40px;height:40px;color:var(--color-text-primary,#1a1a1a);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.canvas-switch-type-grid__cell:hover{background:var(--surface-2,#0000000f)}.canvas-switch-type-grid__cell:focus-visible{outline:2px solid var(--focus-ring,#2563eb);outline-offset:1px}.canvas-switch-type-grid__cell[data-active=true]{border-color:var(--color-primary,#2563eb);background:var(--surface-2,#2563eb1a)}.canvas-switch-type-grid__all-shapes{border:1px solid var(--color-border,#d1d5db);width:100%;color:var(--color-text-primary,#1a1a1a);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;margin-top:8px;padding:6px 8px;font-size:12px;display:inline-flex}.canvas-switch-type-grid__all-shapes:hover{background:var(--surface-2,#0000000f)}.canvas-switch-type-grid__all-shapes:focus-visible{outline:2px solid var(--focus-ring,#2563eb);outline-offset:1px}.canvas-switch-type-grid__all-shapes-panel{border-top:1px dashed var(--color-border,#d1d5db);color:var(--color-text-secondary,#6b7280);margin-top:6px;padding-top:6px;font-size:12px}.canvas-minimap{bottom:calc(var(--space-4) + 40px + var(--space-2));right:var(--space-4);z-index:20;flex-direction:column;align-items:flex-end;gap:0;display:flex;position:absolute}.canvas-minimap--collapsed .canvas-minimap__surface{display:none}.canvas-minimap__panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.canvas-minimap__toggle{z-index:1;border-radius:var(--radius-md,var(--radius-lg));width:20px;height:20px;color:var(--color-text-secondary,var(--color-text-primary));font-size:var(--text-sm,var(--text-md));cursor:pointer;transition:background var(--transition-fast,.12s ease);background:#ffffff8c;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:2px;right:2px}.canvas-minimap__toggle:hover{background:#fffc}.canvas-minimap__toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-minimap--collapsed .canvas-minimap__toggle{border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:var(--radius-lg);width:28px;height:28px;position:static}.canvas-minimap__surface{background:var(--color-surface-alt,var(--color-surface));display:block}.canvas-facilitation-panel{top:calc(var(--space-4) + 40px + var(--space-2));right:var(--space-4);z-index:30;flex-direction:column;align-items:flex-end;min-width:220px;max-width:300px;display:flex;position:absolute}.canvas-facilitation-panel__card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);width:100%;overflow:hidden}.canvas-facilitation-panel__header{padding:var(--space-1) var(--space-2);justify-content:space-between;align-items:center;gap:var(--space-2);border-bottom:1px solid var(--color-border);min-height:32px;display:flex}.canvas-facilitation-panel__header--collapsed{border-bottom:none}.canvas-facilitation-panel__title{font-size:var(--text-sm);color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:600;overflow:hidden}.canvas-facilitation-panel__toggle{border-radius:var(--radius-md,var(--radius-lg));width:24px;height:24px;color:var(--color-text-secondary,var(--color-text-primary));font-size:var(--text-sm);cursor:pointer;transition:background var(--transition-fast,.12s ease);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.canvas-facilitation-panel__toggle:hover{background:var(--color-surface-alt)}.canvas-facilitation-panel__toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-facilitation-panel__body{padding:var(--space-2);gap:var(--space-2);flex-direction:column;display:flex}.canvas-facilitation-panel--collapsed .canvas-facilitation-panel__body{display:none}.canvas-facilitation-panel__empty{font-size:var(--text-sm);color:var(--color-text-secondary);text-align:center;padding:var(--space-2) 0;font-style:italic}.canvas-facilitation-panel__section{gap:var(--space-1);flex-direction:column;display:flex}.canvas-facilitation-panel__section-title{font-size:var(--text-xs,var(--text-sm));color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.canvas-templates-panel{top:calc(var(--space-4) + 40px + var(--space-3));left:calc(var(--space-3) + 56px);gap:var(--space-2);width:264px;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-lg);z-index:12;flex-direction:column;display:flex;position:absolute}.canvas-templates-panel__header{justify-content:space-between;align-items:center;display:flex}.canvas-templates-panel__title{font-weight:var(--font-weight-semibold,600);font-size:var(--font-size-sm);color:var(--color-text)}.canvas-templates-panel__close{border-radius:var(--radius-md);width:24px;height:24px;color:var(--color-text-muted);font-size:var(--font-size-lg);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}.canvas-templates-panel__close:hover{background:var(--color-surface-hover,var(--color-border));color:var(--color-text)}.canvas-templates-panel__close:focus-visible{outline:2px solid var(--focus-ring,var(--color-primary));outline-offset:1px}.canvas-templates-panel__gallery{gap:var(--space-2);flex-direction:column;display:flex}.canvas-templates-panel__card{align-items:flex-start;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);text-align:left;cursor:pointer;transition:border-color .12s,background .12s;display:flex}.canvas-templates-panel__card:hover{border-color:var(--color-primary);background:var(--color-surface-hover,var(--color-surface))}.canvas-templates-panel__card:focus-visible{outline:2px solid var(--focus-ring,var(--color-primary));outline-offset:1px}.canvas-templates-panel__card-icon{color:var(--color-primary);flex:none;display:inline-flex}.canvas-templates-panel__card-body{flex-direction:column;gap:2px;min-width:0;display:flex}.canvas-templates-panel__card-title{font-weight:var(--font-weight-medium,500);font-size:var(--font-size-sm);color:var(--color-text)}.canvas-templates-panel__card-desc{font-size:var(--font-size-xs);color:var(--color-text-muted);line-height:1.35}.canvas-mindmap-add-child{cursor:pointer}.canvas-mobile-fab{display:none}@media (width<=639px){.canvas-mobile-fab{bottom:calc(var(--canvas-viewport-bar-h,48px) + var(--space-3,12px));right:var(--space-4,16px);background:var(--color-accent,#2563eb);width:52px;height:52px;color:var(--color-on-accent,#fff);cursor:pointer;box-shadow:var(--shadow-lg,0 4px 16px #00000038);z-index:200;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .14s,transform .1s;display:flex;position:absolute}.canvas-mobile-fab:active{transform:scale(.93)}.canvas-mobile-fab__icon{pointer-events:none;width:24px;height:24px}}.canvas-mobile-fab-toolbar{gap:var(--space-1,4px);flex-direction:column;display:flex}.canvas-mobile-fab-toolbar__title{font-size:var(--font-size-sm,13px);font-weight:var(--font-weight-medium,500);color:var(--color-text-muted,#6b7280);text-transform:uppercase;letter-spacing:.05em;padding:0 0 var(--space-2,8px);margin:0}.canvas-mobile-fab-toolbar__grid{gap:var(--space-2,8px);grid-template-columns:repeat(4,1fr);display:grid}.canvas-mobile-fab-toolbar__btn{justify-content:center;align-items:center;gap:var(--space-1,4px);padding:var(--space-3,12px) var(--space-1,4px);border:1.5px solid var(--color-border,#e5e7eb);border-radius:var(--radius-md,8px);background:var(--color-surface,#fff);cursor:pointer;font-size:var(--font-size-xs,11px);color:var(--color-text,#111827);-webkit-tap-highlight-color:transparent;touch-action:manipulation;flex-direction:column;min-height:64px;transition:background .1s,border-color .1s;display:flex}.canvas-mobile-fab-toolbar__btn:active,.canvas-mobile-fab-toolbar__btn--active{background:var(--color-accent-subtle,#eff6ff);border-color:var(--color-accent,#2563eb);color:var(--color-accent,#2563eb)}.canvas-mobile-fab-toolbar__btn-icon{pointer-events:none;width:24px;height:24px}.canvas-mobile-fab-toolbar__btn-label{text-align:center;line-height:1.2}.canvas-bottom-sheet-backdrop{z-index:600;pointer-events:none;background:0 0;justify-content:stretch;align-items:flex-end;display:flex;position:fixed;inset:0}.canvas-bottom-sheet-backdrop--open{pointer-events:all;background:#0006}.canvas-bottom-sheet{background:var(--color-surface);border-radius:var(--radius-xl,16px) var(--radius-xl,16px) 0 0;width:100%;max-height:70vh;box-shadow:var(--shadow-xl,0 -4px 24px #0000002e);overscroll-behavior:contain;padding-bottom:env(safe-area-inset-bottom,0px);will-change:transform;transition:transform .22s cubic-bezier(.32,.72,0,1);position:relative;overflow-y:auto;transform:translateY(100%)}.canvas-bottom-sheet-backdrop--open .canvas-bottom-sheet{transform:translateY(0)}.canvas-bottom-sheet__handle{background:var(--color-border,#d0d0d0);border-radius:2px;flex-shrink:0;width:40px;height:4px;margin:10px auto 0}.canvas-bottom-sheet__content{padding:var(--space-4,16px)}.canvas-screen{flex-direction:column;height:100%;min-height:0;max-height:100%;display:flex;position:relative;overflow:hidden}.canvas-screen__header{align-items:center;gap:var(--space-3);padding:var(--space-5) var(--space-6) var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;display:flex}.canvas-screen__title{font-size:var(--text-xxl,var(--text-2xl,var(--text-xl)));color:var(--color-text-primary);letter-spacing:-.01em;margin:0;font-weight:700;line-height:1.2}.canvas-screen__body{padding:var(--space-4) var(--space-6);flex:auto;overflow:auto}.canvas-list{width:100%}.canvas-list-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));max-width:1440px;margin:0 auto;padding:0;display:grid}.canvas-tile{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);cursor:pointer;text-align:left;color:inherit;font:inherit;flex-direction:column;padding:0;transition:box-shadow .15s,border-color .15s,transform .15s;display:flex;position:relative;overflow:hidden}.canvas-tile:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-strong,var(--color-border))}@media (prefers-reduced-motion:no-preference){.canvas-tile:hover{transform:scale(1.02)}}.canvas-tile:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-tile-cover{aspect-ratio:16/10;background-image:linear-gradient(135deg, var(--color-canvas-cover-grad-from), var(--color-canvas-cover-grad-to));border-bottom:1px solid var(--color-border-muted);padding:var(--space-4);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.canvas-tile-cover-text{letter-spacing:-.02em;color:var(--color-text-primary);opacity:.14;text-align:center;word-break:break-word;overflow-wrap:break-word;pointer-events:none;-webkit-line-clamp:3;-webkit-box-orient:vertical;max-width:100%;font-size:clamp(24px,4.5vw,56px);font-weight:700;line-height:1.1;display:-webkit-box;overflow:hidden}.canvas-tile-name{font-size:var(--text-md);color:var(--color-text-primary);padding:var(--space-3) var(--space-3) var(--space-1) var(--space-3);white-space:nowrap;text-overflow:ellipsis;font-weight:500;line-height:1.3;overflow:hidden}.canvas-tile-time{font-size:var(--text-sm);color:var(--color-text-muted,var(--color-text-secondary,var(--color-text-primary)));padding:var(--space-1) var(--space-3) var(--space-3) var(--space-3);line-height:1.3}.canvas-list-search{flex:auto;align-items:center;min-width:280px;max-width:420px;display:flex;position:relative}.canvas-list-search__icon{left:var(--space-3);width:16px;height:16px;color:var(--color-text-muted,var(--color-text-secondary,var(--color-text-primary)));pointer-events:none;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.canvas-list-search__input{width:100%;padding:10px calc(var(--space-3) + 20px) 10px calc(var(--space-3) + 16px + var(--space-2));border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-md);box-shadow:var(--shadow-sm);transition:border-color var(--transition-fast,.12s ease), box-shadow var(--transition-fast,.12s ease);appearance:none;line-height:1.4}.canvas-list-search__input::placeholder{color:var(--color-text-placeholder,var(--color-text-muted));opacity:1}.canvas-list-search__input::-webkit-search-decoration{display:none}.canvas-list-search__input::-webkit-search-cancel-button{display:none}.canvas-list-search__input::-webkit-search-results-button{display:none}.canvas-list-search__input::-webkit-search-results-decoration{display:none}.canvas-list-search__input:hover{border-color:var(--color-border-muted,var(--color-border))}.canvas-list-search__input:focus-visible,.canvas-list-search__input:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring,0 0 0 2px #3182ce40);outline:none}.canvas-list-search__clear{right:var(--space-2);width:20px;height:20px;color:var(--color-text-secondary,var(--color-text-primary));font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.canvas-list-search__clear:hover{background:var(--color-surface-alt);color:var(--color-text-primary)}.canvas-list-search__clear:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.canvas-no-results{justify-content:center;align-items:center;gap:var(--space-4);min-height:40vh;padding:var(--space-8) var(--space-6);text-align:center;flex-direction:column;display:flex}.canvas-no-results__title{font-size:var(--text-lg);color:var(--color-text-primary);max-width:32rem;margin:0;font-weight:500;line-height:1.4}.canvas-no-results__clear{padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);justify-content:center;align-items:center;font-weight:500;display:inline-flex}.canvas-no-results__clear:hover{background:var(--color-surface-alt);border-color:var(--color-border-strong,var(--color-border))}.canvas-no-results__clear:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-list-empty{padding:var(--space-10) var(--space-6);color:var(--color-text-secondary,var(--color-text-primary));font-size:var(--text-lg);justify-content:center;align-items:center;display:flex}.canvas-list-header{justify-content:space-between;align-items:center;gap:var(--space-3);max-width:1440px;margin:0 auto var(--space-3) auto;padding:var(--space-2) 0;display:flex;position:relative}.canvas-list-new-btn{justify-content:center;align-items:center;gap:var(--space-2);padding:10px var(--space-5);border:1px solid var(--color-primary);border-radius:var(--radius-lg);background:var(--color-primary);color:#fff;font-size:var(--text-md);cursor:pointer;box-shadow:var(--shadow-sm);transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease), box-shadow var(--transition-fast,.12s ease);white-space:nowrap;font-weight:500;display:inline-flex}.canvas-list-new-btn:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark);box-shadow:var(--shadow-md)}.canvas-list-new-btn:focus-visible{box-shadow:var(--focus-ring,0 0 0 2px #3182ce40), var(--shadow-sm);outline:none}.canvas-list-new-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.canvas-new-prompt{z-index:50;margin-top:var(--space-2);gap:var(--space-2);min-width:320px;padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-direction:column;display:flex;position:absolute;top:100%;right:0}.canvas-new-prompt__input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-md);line-height:1.4}.canvas-new-prompt__input:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px;border-color:var(--color-primary)}.canvas-new-prompt__warning{font-size:var(--text-sm);color:var(--color-danger,var(--color-text-secondary))}.canvas-new-prompt__actions{gap:var(--space-2);justify-content:flex-end;display:flex}.canvas-new-prompt__submit,.canvas-new-prompt__cancel{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md,var(--radius-lg));font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);justify-content:center;align-items:center;font-weight:500;display:inline-flex}.canvas-new-prompt__submit{border:1px solid var(--color-primary);background:var(--color-primary);color:#fff}.canvas-new-prompt__submit:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.canvas-new-prompt__submit:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-new-prompt__submit:disabled{opacity:.6;cursor:not-allowed}.canvas-new-prompt__cancel{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-primary)}.canvas-new-prompt__cancel:hover:not(:disabled){background:var(--color-surface-alt)}.canvas-new-prompt__cancel:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-new-prompt__cancel:disabled{opacity:.6;cursor:not-allowed}.canvas-empty-state{justify-content:center;align-items:center;gap:var(--space-4);min-height:60vh;padding:var(--space-8) var(--space-6);text-align:center;flex-direction:column;display:flex}.canvas-empty-state-icon{width:120px;height:120px;margin-bottom:var(--space-2);color:var(--color-text-muted,var(--color-text-secondary,var(--color-text-primary)));opacity:.5;justify-content:center;align-items:center;display:flex}.canvas-empty-state-icon__fallback{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.canvas-empty-state-title{font-size:var(--text-xl);color:var(--color-text-primary);letter-spacing:-.01em;max-width:32rem;margin:0;font-weight:600;line-height:1.3}.canvas-empty-state-subtitle{font-size:var(--text-md);color:var(--color-text-muted,var(--color-text-secondary,var(--color-text-primary)));max-width:32rem;margin:0;font-weight:400;line-height:1.5}.canvas-empty-state-cta{padding:var(--space-2) var(--space-5);border:1px solid var(--color-primary);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-primary);color:#fff;font-size:var(--text-md);cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);justify-content:center;align-items:center;font-weight:500;display:inline-flex}.canvas-empty-state-cta:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.canvas-empty-state-cta:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-empty-state-cta:disabled{opacity:.6;cursor:not-allowed}.canvas-tile-kebab{top:var(--space-2);right:var(--space-2);z-index:2;opacity:0;pointer-events:none;transition:opacity var(--transition-fast,.12s ease);position:absolute;bottom:auto;left:auto}.canvas-tile:hover .canvas-tile-kebab,.canvas-tile:focus-within .canvas-tile-kebab,.canvas-tile-kebab--open{opacity:1;pointer-events:auto}.canvas-tile-kebab__btn{border:1px solid var(--color-border);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);width:28px;height:28px;color:var(--color-text-primary);font-size:var(--text-lg);cursor:pointer;transition:background var(--transition-fast,.12s ease), border-color var(--transition-fast,.12s ease);justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.canvas-tile-kebab__btn:hover{background:var(--color-surface-alt);border-color:var(--color-border-strong,var(--color-border))}.canvas-tile-kebab__btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-tile-kebab__menu{top:calc(100% + var(--space-1));z-index:60;min-width:180px;padding:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-direction:column;display:flex;position:absolute;right:0}.canvas-tile-kebab__item{width:100%;padding:var(--space-2) var(--space-3);color:var(--color-text-primary);font-size:var(--text-md);text-align:left;cursor:pointer;border-radius:var(--radius-md,var(--radius-lg));transition:background var(--transition-fast,.12s ease);background:0 0;border:none;align-items:center;display:flex}.canvas-tile-kebab__item:hover:not(:disabled){background:var(--color-surface-alt)}.canvas-tile-kebab__item:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.canvas-tile-kebab__item--disabled,.canvas-tile-kebab__item:disabled{color:var(--color-text-secondary,var(--color-text-muted,var(--color-text-primary)));opacity:.6;cursor:not-allowed}.canvas-tile-rename-input{width:calc(100% - var(--space-3) - var(--space-3));margin:0 var(--space-3);padding:var(--space-1) var(--space-2);border:1px solid var(--color-primary);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-md);font-weight:600;line-height:1.4;display:block}.canvas-tile-rename-input:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.canvas-tile-rename-input--invalid{border-color:var(--color-danger,var(--color-primary))}.canvas-timer-widget{gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md,var(--radius-lg));background:var(--color-surface-alt,var(--color-surface));border:2px solid #0000;flex-direction:column;transition:border-color .2s;display:flex}.canvas-timer-widget--warning{border-color:var(--color-danger,#e53e3e)}.canvas-timer-display{font-variant-numeric:tabular-nums;letter-spacing:.04em;text-align:center;color:var(--color-text-primary);font-size:1.75rem;font-weight:700;line-height:1.1}.canvas-timer-widget--warning .canvas-timer-display{color:var(--color-danger,#e53e3e)}.canvas-timer-expired{font-size:var(--text-sm);color:var(--color-danger,#e53e3e);text-align:center;padding:var(--space-1) 0;font-weight:600}.canvas-timer-inputs{justify-content:center;align-items:center;gap:var(--space-2);display:flex}.canvas-timer-input-group{flex-direction:column;align-items:center;gap:2px;display:flex}.canvas-timer-input-label{font-size:var(--text-xs,.7rem);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em}.canvas-timer-input{text-align:center;width:3rem;font-size:var(--text-sm);font-variant-numeric:tabular-nums;border:1px solid var(--color-border);border-radius:var(--radius-md,4px);background:var(--color-surface);color:var(--color-text-primary);padding:2px 4px;font-weight:600}.canvas-timer-input:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.canvas-timer-sep{font-size:var(--text-sm);color:var(--color-text-secondary);padding-bottom:12px;font-weight:700}.canvas-timer-controls{justify-content:center;align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.canvas-timer-btn{border:1px solid var(--color-border);border-radius:var(--radius-md,4px);background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-sm);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast,.12s ease);justify-content:center;align-items:center;padding:4px 10px;font-weight:500;display:inline-flex}.canvas-timer-btn:hover{background:var(--color-surface-alt)}.canvas-timer-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.canvas-timer-btn--primary{background:var(--color-primary,#3182ce);color:var(--color-on-primary,#fff);border-color:#0000}.canvas-timer-btn--primary:hover{background:var(--color-primary-hover,#2b6cb0)}
