*{box-sizing:border-box}:root{color-scheme:light;--bg: #f7f8fb;--text: #0f172a;--text-muted: #475569;--text-subtle: #64748b;--surface: #ffffff;--surface-muted: #f8fafc;--surface-hover: #f1f5f9;--border: #e2e8f0;--accent: #2563eb;--accent-strong: #1d4ed8;--accent-soft: rgba(37, 99, 235, .12);--accent-contrast: #ffffff;--danger: #b91c1c;--danger-strong: #ef4444;--grid-line: #e2e8f0;--shadow-soft: rgba(15, 23, 42, .08);--shadow-medium: rgba(15, 23, 42, .12);--shadow-strong: rgba(15, 23, 42, .18);--focus-ring: rgba(37, 99, 235, .15);--accent-shadow: rgba(37, 99, 235, .2);--status-success-text: #166534;--status-success-bg: #dcfce7;--status-success-border: #bbf7d0;--status-warn-text: #92400e;--status-warn-bg: #fef3c7;--status-warn-border: #fde68a;--status-danger-text: #991b1b;--status-danger-bg: #fee2e2;--status-danger-border: #fecaca;--comment-meta: #64748b;--chip: #0f172a}[data-theme=dark]{color-scheme:dark;--bg: #0b1220;--text: #e2e8f0;--text-muted: #94a3b8;--text-subtle: #94a3b8;--surface: #111827;--surface-muted: #0f172a;--surface-hover: #1f2937;--border: #1f2937;--accent: #60a5fa;--accent-strong: #93c5fd;--accent-soft: rgba(96, 165, 250, .2);--accent-contrast: #0b1220;--danger: #f87171;--danger-strong: #f87171;--grid-line: #1f2937;--shadow-soft: rgba(0, 0, 0, .35);--shadow-medium: rgba(0, 0, 0, .5);--shadow-strong: rgba(0, 0, 0, .65);--focus-ring: rgba(96, 165, 250, .2);--accent-shadow: rgba(96, 165, 250, .3);--status-success-text: #86efac;--status-success-bg: rgba(16, 185, 129, .18);--status-success-border: rgba(16, 185, 129, .35);--status-warn-text: #facc15;--status-warn-bg: rgba(234, 179, 8, .2);--status-warn-border: rgba(234, 179, 8, .4);--status-danger-text: #fca5a5;--status-danger-bg: rgba(248, 113, 113, .2);--status-danger-border: rgba(248, 113, 113, .4);--comment-meta: #94a3b8;--chip: #e2e8f0}html,body,#root{margin:0;padding:0;height:100%;font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text)}.app-root{display:flex;flex-direction:column;height:100%}.app-body{flex:1;min-height:0}.top-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface)}.top-bar a{color:inherit;text-decoration:none}.top-bar-actions{display:flex;align-items:center;gap:12px}.theme-toggle svg{width:16px;height:16px}.board-layout{display:flex;height:calc(100vh - 56px)}.board-canvas{position:relative;flex:1;background:var(--surface-muted);display:flex;flex-direction:column}.board-toolbar{display:flex;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);flex-wrap:wrap;position:absolute;bottom:12px;left:12px;right:12px;z-index:10;box-shadow:0 6px 18px var(--shadow-soft)}.tool-group{display:flex;align-items:center;gap:8px}.tool-group-right{margin-left:auto}.shape-menu-wrapper{position:relative}.shape-menu{position:absolute;bottom:calc(100% + 8px);left:0;display:flex;gap:6px;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--surface);box-shadow:0 8px 20px var(--shadow-medium);z-index:20}.shape-option{width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);display:inline-flex;align-items:center;justify-content:center;padding:0}.shape-option.active{border-color:var(--accent);color:var(--accent)}.pen-palette,.pen-widths{display:flex;align-items:center;gap:6px}.text-controls{gap:10px}.text-controls select{min-width:88px}.text-palette{display:flex;align-items:center;gap:6px}.arrowhead-controls .tool-hint{margin-right:4px}.color-swatch{width:20px;height:20px;border-radius:999px;border:2px solid transparent;padding:0}.color-swatch.active{border-color:var(--text)}.width-chip{width:28px;height:28px;border-radius:10px;border:1px solid var(--border);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;padding:0}.width-chip span{display:inline-block;border-radius:999px;background:var(--chip)}.width-chip.active{border-color:var(--accent)}.tool-button{width:36px;height:36px;border:1px solid var(--border);background:var(--surface);border-radius:10px;color:var(--text);display:inline-flex;align-items:center;justify-content:center;padding:0}.tool-button svg{width:18px;height:18px}.tool-button.active{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.tool-hint{font-size:12px;color:var(--text-subtle)}.board-toolbar label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-muted)}.ws-status{margin-left:auto;font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--border);color:var(--text-muted);background:var(--surface-muted)}.ws-status.connected{color:var(--status-success-text);background:var(--status-success-bg);border-color:var(--status-success-border)}.ws-status.connecting{color:var(--status-warn-text);background:var(--status-warn-bg);border-color:var(--status-warn-border)}.ws-status.disconnected{color:var(--status-danger-text);background:var(--status-danger-bg);border-color:var(--status-danger-border)}.presence-strip{display:flex;align-items:center;gap:0;margin-left:8px}.presence-avatar{width:28px;height:28px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:600;border:2px solid var(--surface);box-shadow:0 2px 6px var(--shadow-soft);margin-left:-8px;position:relative}.presence-avatar.clickable{cursor:pointer}button.presence-avatar.clickable{padding:0;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit}button.presence-avatar.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.presence-avatar:first-child{margin-left:0}.presence-avatar.more{background:var(--border);color:var(--text)}.presence-label{font-size:12px;color:var(--text-muted);margin-left:8px}.canvas-container{position:relative;flex:1;min-height:0;background-color:var(--surface-muted);background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:40px 40px}.canvas-overlays{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:4}.context-menu{position:absolute;z-index:6;min-width:180px;padding:6px;border-radius:12px;background:var(--surface);border:1px solid var(--border);box-shadow:0 10px 25px var(--shadow-medium);display:flex;flex-direction:column;gap:2px}.context-menu button{border:none;background:transparent;padding:8px 10px;border-radius:8px;text-align:left;width:100%;font-size:13px;color:var(--text)}.context-menu button:hover:not(:disabled){background:var(--surface-hover)}.context-menu button:disabled{opacity:.45;cursor:not-allowed}.context-menu button.danger{color:var(--danger)}.context-menu-separator{height:1px;background:var(--border);margin:4px 0}.canvas-container.can-pan{cursor:grab}.canvas-container.panning{cursor:grabbing}.canvas-container.lasso,.canvas-container.eraser{cursor:crosshair}.comments-panel-wrapper{width:320px;border-left:1px solid var(--border);background:var(--surface);flex-shrink:0}.comments-panel{width:320px;background:var(--surface);display:flex;flex-direction:column;padding:16px;gap:12px;overflow-y:auto}.comments-panel-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.comments-panel-title{font-size:14px}.comments-panel-close{width:28px;height:28px;border-radius:8px;padding:0;border:1px solid var(--border);background:var(--surface);color:var(--text);display:inline-flex;align-items:center;justify-content:center}.comments-panel-close svg{width:14px;height:14px}.comments-toggle{margin-left:8px;position:relative;width:36px;height:36px;padding:0;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:var(--text)}.comments-toggle svg{width:18px;height:18px}.comments-toggle.active{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.comments-toggle-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--danger-strong);color:#fff;font-size:10px;line-height:16px;text-align:center;border:1px solid var(--surface)}.comment-card{border:1px solid var(--border);border-radius:12px;padding:12px;background:var(--surface)}.comment-meta{font-size:12px;color:var(--comment-meta);margin-bottom:6px}.comment-actions{display:flex;gap:8px;margin-top:8px;align-items:center;flex-wrap:wrap}.reaction-button{width:30px;height:30px;border-radius:999px;padding:0;display:inline-flex;align-items:center;justify-content:center}.reaction-summary{display:flex;gap:6px;flex-wrap:wrap}.reaction-pill{font-size:12px;padding:2px 6px;border-radius:999px;border:1px solid var(--border);background:var(--surface-muted)}.reaction-pill.mine{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.reaction-picker{display:flex;gap:6px;margin-top:6px}.reaction-emoji{width:32px;height:32px;border-radius:10px;padding:0;display:inline-flex;align-items:center;justify-content:center}.ghost-button{background:transparent;border-color:transparent;color:var(--text-subtle)}.comment-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.comment-marker{position:absolute;transform:translate(-50%,-50%);width:28px;height:28px;border-radius:50%;background:var(--surface);color:var(--text);border:1px solid var(--border);font-size:12px;display:flex;align-items:center;justify-content:center;pointer-events:auto;cursor:pointer;transition:transform .12s ease}.comment-marker.active{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent);transform:translate(-50%,-50%) scale(1.1)}.comment-marker svg{width:14px;height:14px}.node-editor{position:absolute;z-index:7;resize:none;border:1px solid var(--accent);border-radius:8px;padding:6px 8px;background:var(--surface);color:var(--text);text-align:center;line-height:1.4;overflow:hidden;box-shadow:0 6px 16px var(--accent-shadow)}.node-editor.node-editor-ellipse,.node-editor.node-editor-diamond{background:transparent;border:none;box-shadow:none}.edge-editor{position:absolute;z-index:7;transform:translate(-50%,-50%);border:1px solid var(--accent);border-radius:8px;padding:4px 8px;background:var(--surface);color:var(--text);text-align:center;line-height:1.4;box-shadow:0 6px 16px var(--accent-shadow)}.cursor-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.comments-panel-wrapper{position:relative;z-index:6}.board-toolbar{z-index:5}.cursor-item{position:absolute;transform:translate(-6px,-2px);display:flex;align-items:flex-start;gap:4px}.cursor-arrow{width:20px;height:20px;flex-shrink:0;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}.cursor-label{font-size:11px;padding:2px 6px;background:var(--surface);border:1px solid var(--border);border-radius:999px;color:var(--text);white-space:nowrap}.form-stack{display:flex;flex-direction:column;gap:8px}input,button,textarea{font:inherit}input,textarea,select{border:1px solid var(--border);border-radius:8px;padding:8px 10px;background:var(--surface);color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus-ring)}textarea{resize:vertical;min-height:60px}button{cursor:pointer;border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:8px 12px;transition:all .15s ease}button:hover{background:var(--surface-muted)}button.theme-toggle{width:32px;height:32px;border-radius:999px;padding:0;border:1px solid var(--border);background:var(--surface);color:var(--text);display:inline-flex;align-items:center;justify-content:center}button.theme-toggle:hover{background:var(--surface-hover)}.auth-card{max-width:420px;margin:48px auto;padding:24px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.board-list{max-width:800px;margin:32px auto;padding:0 16px;display:flex;flex-direction:column;gap:12px}.board-item{border:1px solid var(--border);border-radius:12px;padding:14px;display:flex;justify-content:space-between;align-items:center;background:var(--surface);transition:transform .15s ease,box-shadow .15s ease}.board-item:hover{background:var(--surface-muted)}
