:root{--bg:#f6f4ef;--ink:#1a1a1a;--ink-soft:#4a4a4a;--ink-faint:#8a8a8a;--line:#d8d4cc;--line-soft:#e8e4dc;--accent:#c0392b;--paper:#fbfaf6;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-serif:"Fraunces", Georgia, serif;--font-mono:"JetBrains Mono", monospace;--radius:8px;--radius-sm:6px}[data-theme=dark]{--bg:#1e1e1e;--ink:#e4e2dd;--ink-soft:#b0ada6;--ink-faint:#7a7770;--line:#3a3835;--line-soft:#2e2c29;--accent:#e74c3c;--paper:#272725}*,:before,:after{box-sizing:border-box}html,body{margin:0;overflow:hidden}body{font-family:var(--font-sans);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}#app{width:100%;height:100vh;position:relative}#board-view{z-index:1;flex-direction:column;display:flex;position:absolute;inset:0}#home-screen{background:var(--bg);z-index:200;justify-content:center;padding:60px 40px 40px;transition:opacity .15s;display:flex;position:absolute;inset:0;overflow-y:auto}#home-screen.hidden{opacity:0;pointer-events:none;visibility:hidden;transition:opacity .15s,visibility 0s linear .15s}#toolbar{background:var(--paper);border-bottom:1px solid var(--line);z-index:100;align-items:center;gap:16px;height:64px;padding:0 24px;display:flex}.back-bar{background:var(--bg);border-bottom:1px solid var(--line-soft);z-index:99;padding:6px 20px}.back-bar.hidden{display:none}.back-btn{font-family:var(--font-serif);color:var(--accent);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;gap:6px;padding:4px 10px;font-size:14px;transition:background .15s;display:inline-flex}.back-btn:hover{background:#c0392b14}.back-btn svg{flex-shrink:0}.toolbar-btn-icon{border-radius:var(--radius-sm);cursor:pointer;width:48px;height:48px;color:var(--ink-soft);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.toolbar-btn-icon:hover{background:var(--bg);color:var(--ink)}.toolbar-btn-icon:disabled{opacity:.3;cursor:default;pointer-events:none}.toolbar-btn-icon svg{stroke:currentColor;fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:24px;height:24px}.toolbar-title{font-family:var(--font-sans);color:var(--ink);cursor:pointer;font-size:20px;font-weight:600}.toolbar-sep{background:var(--line);width:1px;height:30px}.toolbar-btn{font-family:var(--font-sans);color:var(--ink-soft);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:0 0;padding:10px 22px;font-size:15px;font-weight:500;transition:background .15s,color .15s,border-color .15s}.toolbar-btn:hover{background:var(--bg);color:var(--ink);border-color:var(--ink-faint)}.toolbar-name-input{font-family:var(--font-sans);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);outline:none;width:240px;padding:4px 10px;font-size:20px;font-weight:600}.toolbar-zoom-group{border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:0;display:flex;overflow:hidden}.toolbar-btn-small{font-family:var(--font-sans);color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:10px 18px;font-size:18px;font-weight:500;line-height:1;transition:background .15s}.toolbar-btn-small:hover{background:var(--bg)}.toolbar-btn-small svg{stroke:currentColor;fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.toolbar-btn-small.zoom-label{letter-spacing:.02em;color:var(--ink-faint);text-align:center;min-width:66px;padding:10px 14px;font-size:15px;font-weight:500}#sidebar{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:101;flex-direction:column;align-items:center;gap:4px;width:60px;padding:8px 0;display:flex;position:fixed;top:80px;left:10px;box-shadow:0 2px 8px #0000000f}.sidebar-btn{border-radius:var(--radius-sm);cursor:pointer;width:48px;height:48px;color:var(--ink-soft);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;transition:background .15s,color .15s,border-color .15s;display:flex;position:relative}.sidebar-btn:hover{background:var(--bg);color:var(--ink);border-color:var(--line)}.sidebar-btn.active{color:var(--accent);border-color:var(--accent);background:#c0392b14}.sidebar-btn:after{content:attr(data-tooltip);background:var(--ink);color:var(--paper);font-family:var(--font-sans);border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;opacity:0;z-index:1000;padding:6px 12px;font-size:14px;font-weight:500;transition:opacity .15s .4s;position:absolute;top:50%;left:calc(100% + 10px);transform:translateY(-50%)}.sidebar-btn:hover:after{opacity:1}.sidebar-btn:has(.frame-preset-menu):after{transition:none;opacity:0!important}.sidebar-btn:has(.draw-menu):after{transition:none;opacity:0!important}.sidebar-btn svg{stroke:currentColor;fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:26px;height:26px}.sidebar-sep{background:var(--line);width:36px;height:1px;margin:4px 0}#status-bar{display:none}.shortcuts-popover{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:300;width:340px;margin-top:6px;padding:18px 22px;animation:.15s ease-out shortcutsIn;position:absolute;top:100%;right:0;box-shadow:0 8px 28px #00000024,0 2px 6px #0000000f}@keyframes shortcutsIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.shortcuts-popover-title{font-family:var(--font-sans);color:var(--ink);margin-bottom:12px;font-size:14px;font-weight:600}.shortcuts-grid{grid-template-columns:auto 1fr;align-items:center;gap:6px 16px;display:grid}.shortcut-key{font-family:var(--font-mono);letter-spacing:.03em;color:var(--ink-soft);background:var(--bg);border:1px solid var(--line-soft);text-align:center;white-space:nowrap;border-radius:3px;padding:2px 7px;font-size:14px}.shortcut-desc{font-family:var(--font-sans);color:var(--ink-soft);font-size:14px}#board-tabs{background:var(--paper);border-bottom:1px solid var(--line);align-items:stretch;gap:0;height:36px;padding:0 20px 0 60px;display:flex;overflow:auto hidden}.board-tab{font-family:var(--font-sans);color:var(--ink-faint);cursor:pointer;white-space:nowrap;border-bottom:2px solid #0000;flex-shrink:0;align-items:center;gap:6px;padding:0 16px;font-size:14px;font-weight:500;transition:color .15s,border-color .15s;display:flex}.board-tab:hover{color:var(--ink-soft)}.board-tab.active{color:var(--ink);border-bottom-color:var(--accent)}.board-tab-label{pointer-events:auto}.board-tab-input{font-family:var(--font-sans);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;width:120px;padding:2px 8px;font-size:14px}.board-tab-close{color:var(--ink-faint);cursor:pointer;opacity:0;background:0 0;border:none;padding:0 2px;font-size:14px;line-height:1;transition:opacity .15s,color .15s}.board-tab:hover .board-tab-close{opacity:1}.board-tab-close:hover{color:var(--accent)}.board-tab-add{font-family:var(--font-sans);color:var(--ink-faint);cursor:pointer;background:0 0;border:none;padding:0 14px;font-size:16px;transition:color .15s}.board-tab-add:hover{color:var(--accent)}#canvas{cursor:default;background-color:var(--bg);background-image:radial-gradient(circle, var(--line) 1px, transparent 1px);flex:1;margin-left:80px;position:relative;overflow:hidden}#canvas.space-held{cursor:grab}#canvas.panning{cursor:grabbing}#canvas.drop-active{outline:2px dashed var(--accent);outline-offset:-4px}.storage-warning{z-index:9999;color:#fff;font-family:var(--font-sans);background:#b71c1c;justify-content:center;align-items:center;gap:12px;padding:10px 20px;font-size:14px;line-height:1.4;display:flex;position:fixed;top:0;left:0;right:0}.storage-warning-close{color:#fff;cursor:pointer;opacity:.8;background:0 0;border:none;padding:2px 6px;font-size:16px}.storage-warning-close:hover{opacity:1}#canvas.connect-mode,#canvas.connect-mode .board-item{cursor:crosshair}#canvas-layer{position:absolute;inset:0}.link-preview-popup{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:15000;align-items:center;gap:8px;max-width:420px;padding:8px 10px;display:flex;position:fixed;box-shadow:0 4px 16px #0000001a,0 1px 4px #0000000f}.link-preview-favicon{border-radius:2px;flex-shrink:0;width:16px;height:16px}.link-preview-url{font-family:var(--font-sans);color:var(--accent);white-space:nowrap;text-overflow:ellipsis;max-width:240px;font-size:14px;text-decoration:none;overflow:hidden}.link-preview-url:hover{text-decoration:underline}.link-preview-sep{background:var(--line);flex-shrink:0;width:1px;height:16px}.link-preview-btn{border-radius:var(--radius-sm);cursor:pointer;width:28px;height:28px;color:var(--ink-faint);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;transition:color .12s,background .12s;display:flex}.link-preview-btn:hover{color:var(--ink);background:var(--bg)}.link-preview-btn svg{stroke:currentColor;fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.link-preview-btn-danger:hover{color:var(--accent);background:#c0392b0f}.board-search{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:200;align-items:center;gap:6px;padding:6px 10px;display:flex;position:absolute;top:12px;right:12px;box-shadow:0 4px 16px #0000001a,0 1px 4px #0000000f}.board-search-input{font-family:var(--font-sans);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;width:200px;padding:6px 10px;font-size:14px}.board-search-input:focus{border-color:var(--ink-faint)}.board-search-input::placeholder{color:var(--ink-faint)}.board-search-count{font-family:var(--font-mono);letter-spacing:.03em;color:var(--ink-faint);text-align:center;min-width:36px;font-size:12px}.board-search-btn{border-radius:var(--radius-sm);cursor:pointer;width:28px;height:28px;color:var(--ink-faint);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;font-size:14px;line-height:1;transition:background .12s,color .12s;display:flex}.board-search-btn:hover{background:var(--bg);color:var(--ink)}.board-search-select-all{width:auto;font-family:var(--font-mono);letter-spacing:.02em;white-space:nowrap;border:1px solid var(--line);padding:0 10px;font-size:12px}.board-search-select-all:hover{border-color:var(--accent);color:var(--accent)}.board-item.search-highlight{outline-offset:2px;outline:2px solid #f39c12}.import-preview-overlay{z-index:10000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.import-preview-modal{background:var(--paper);border-radius:8px;width:90vw;max-width:640px;max-height:85vh;padding:28px 32px;animation:.2s ease-out importModalIn;overflow-y:auto;box-shadow:0 20px 60px #00000040}@keyframes importModalIn{0%{opacity:0;transform:scale(.96)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.import-preview-title{font-family:var(--font-serif);color:var(--ink);margin:0 0 20px;font-size:18px;font-weight:500}.import-preview-info{margin-bottom:20px}.import-preview-name{font-family:var(--font-serif);color:var(--ink);margin-bottom:6px;font-size:22px;font-weight:600}.import-preview-count{font-family:var(--font-mono);color:var(--ink-faint);letter-spacing:.03em;margin-bottom:12px;font-size:13px}.import-preview-types{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.import-preview-type-badge{font-family:var(--font-mono);color:var(--ink-soft);background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:3px 8px;font-size:12px}.import-preview-tags-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:6px;font-size:11px}.import-preview-tags{flex-wrap:wrap;gap:4px;margin-bottom:12px;display:flex}.import-preview-tag{font-family:var(--font-mono);color:var(--ink-soft);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:2px 8px;font-size:12px}.import-preview-date{font-family:var(--font-mono);color:var(--ink-faint);font-size:12px}.import-preview-canvas{background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--radius);justify-content:center;align-items:center;min-height:120px;margin-bottom:24px;padding:12px;display:flex}.import-preview-canvas canvas{border:1px solid var(--line-soft);display:block}.import-preview-loading{font-family:var(--font-mono);color:var(--ink-faint);font-size:13px}.import-preview-buttons{justify-content:flex-end;gap:10px;display:flex}.import-preview-btn{font-family:var(--font-mono);border-radius:var(--radius);cursor:pointer;border:1px solid var(--line);padding:8px 20px;font-size:14px;transition:background .12s,color .12s}.import-preview-btn-cancel{color:var(--ink-soft);background:0 0}.import-preview-btn-cancel:hover{background:var(--bg);color:var(--ink)}.import-preview-btn-confirm{background:var(--accent);color:#fff;border-color:var(--accent)}.import-preview-btn-confirm:hover{background:#a93226}.export-dropdown-wrap{position:relative}.export-dropdown{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:200;min-width:200px;margin-top:6px;padding:4px 0;animation:.12s ease-out exportDropIn;position:absolute;top:100%;left:0;box-shadow:0 6px 20px #0000001f}@keyframes exportDropIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.export-dropdown-item{width:100%;font-family:var(--font-mono);color:var(--ink-soft);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:11px 20px;font-size:15px;transition:background .1s,color .1s;display:flex}.export-dropdown-item:hover{background:var(--bg);color:var(--ink)}.export-dropdown-item .export-ext{color:var(--ink-faint);margin-left:auto;font-size:13px}.export-dropdown-sep{background:var(--line-soft);height:1px;margin:4px 8px}.minimap{border:1px solid var(--line);border-radius:var(--radius);cursor:crosshair;z-index:50;opacity:.8;width:160px;height:120px;transition:opacity .2s;position:absolute;bottom:16px;right:12px;overflow:hidden;box-shadow:0 2px 8px #00000014}.minimap:hover{opacity:1}.minimap canvas{width:100%;height:100%;display:block}.lasso-rect{border:1px solid var(--accent);pointer-events:none;z-index:9999;background:#c0392b0f;position:absolute}#canvas.lasso-active{cursor:crosshair}.board-item{cursor:default;-webkit-user-select:none;user-select:none}.board-item:active{cursor:grabbing}.space-held .board-item{cursor:grab}.panning .board-item{cursor:grabbing}.board-item.selected{outline:2px solid var(--accent);outline-offset:1px}.board-item.locked{opacity:.85}.board-item.locked .resize-handle{display:none}.lock-indicator{z-index:6;pointer-events:none;background:#00000073;border-radius:2px;justify-content:center;align-items:center;width:18px;height:18px;display:flex;position:absolute;top:4px;left:4px}.lock-indicator svg{stroke:#fff;fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:10px;height:10px}.group-indicator{z-index:6;pointer-events:none;opacity:0;background:#00000059;border-radius:2px;justify-content:center;align-items:center;width:18px;height:18px;transition:opacity .15s;display:flex;position:absolute;top:4px;right:4px}.board-item:hover .group-indicator,.board-item.selected .group-indicator{opacity:1}.group-indicator svg{color:#fff;width:12px;height:12px}.item-text{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 4px #0000000d}.item-text .item-content{height:100%;padding:16px;overflow:hidden}.item-text p{color:var(--ink);word-break:break-word;margin:0;font-size:15px;line-height:1.6}.item-text p.placeholder{color:var(--ink-faint);font-style:italic}.item-text a,.item-note a{color:var(--accent);cursor:pointer;word-break:break-all;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;background:#c0392b0f;border-radius:3px;max-width:220px;padding:1px 5px;line-height:1.5;text-decoration:none;transition:background .12s;display:inline-block;overflow:hidden}.item-text a:hover,.item-note a:hover{background:#c0392b1f;text-decoration:underline}.item-content.editing a{cursor:text}.item-content.editing{cursor:text;outline:none}.item-content.editing:focus{outline:none}.edit-toolbar{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:10000;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:6px 8px;display:flex;position:fixed;box-shadow:0 4px 16px #0000001a,0 1px 4px #0000000f}.edit-toolbar-btn{font-family:var(--font-sans);color:var(--ink-soft);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;min-width:36px;height:36px;padding:7px 11px;font-size:15px;font-weight:500;line-height:1;transition:background .12s,color .12s,border-color .12s;display:flex}.edit-toolbar-btn:hover{background:var(--bg);color:var(--ink)}.edit-toolbar-btn.active{background:var(--bg);color:var(--accent);border-color:var(--line)}.edit-toolbar-btn svg{stroke:currentColor;fill:none;stroke-width:1.5px;stroke-linecap:round;width:18px;height:18px}.edit-toolbar-sep{background:var(--line);width:1px;height:24px;margin:0 6px}.edit-toolbar-size{font-family:var(--font-mono);color:var(--ink-faint);text-align:center;letter-spacing:.03em;min-width:36px;font-size:14px}.edit-toolbar-color-btn{position:relative}.color-indicator{border-radius:1px;width:16px;height:3px;position:absolute;bottom:4px;left:50%;transform:translate(-50%)}.edit-toolbar-bg-btn{position:relative}.bg-color-indicator{border-radius:1px;width:16px;height:3px;position:absolute;bottom:4px;left:50%;transform:translate(-50%)}.edit-toolbar-btn.transparent-active{background:var(--bg);color:var(--accent);border-color:var(--line)}.heading-presets-wrap{position:relative}.heading-presets-dropdown{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:10001;min-width:160px;padding:6px 0;animation:.12s ease-out headingDropIn;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000001f}@keyframes headingDropIn{0%{opacity:0;transform:translate(-50%)translateY(4px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.heading-preset-item{width:100%;font-family:var(--font-sans);color:var(--ink);cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:none;padding:8px 16px;font-weight:700;transition:background .1s;display:block}.heading-preset-item:hover{background:var(--bg)}.heading-preset-item[data-size="18"]{font-size:15px}.heading-preset-item[data-size="24"]{font-size:17px}.heading-preset-item[data-size="36"]{font-size:20px}.heading-presets-dropdown .heading-preset-sep{background:var(--line-soft);height:1px;margin:4px 8px}.heading-preset-item.normal{color:var(--ink-soft);font-size:14px;font-weight:400}[data-theme=dark] .heading-presets-dropdown{box-shadow:0 6px 24px #00000080,0 0 0 1px #ffffff0f}.item-image{border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 4px #0000000d}.item-image img{border-radius:var(--radius);width:100%;height:100%;display:block}.image-link-btn{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;width:32px;height:32px;color:var(--ink-faint);z-index:5;justify-content:center;align-items:center;transition:color .15s,border-color .15s;display:flex;position:absolute;top:8px;right:8px;box-shadow:0 2px 8px #0000001a}.image-link-btn:hover{color:var(--accent);border-color:var(--accent)}.image-link-btn.has-link{color:var(--accent)}.image-link-btn svg{stroke:currentColor;fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.item-frame{border:2px dashed var(--line);border-radius:var(--radius);overflow:visible}.item-frame-title{font-family:var(--font-sans);color:var(--ink-faint);letter-spacing:.03em;white-space:nowrap;text-overflow:ellipsis;border-radius:var(--radius-sm);-webkit-user-select:none;user-select:none;cursor:grab;max-width:100%;padding:2px 6px;font-size:13px;font-weight:600;position:absolute;top:-24px;left:0;overflow:hidden}.item-frame-title:active{cursor:grabbing}.item-frame{cursor:crosshair}#canvas.frame-draw-mode,#canvas.frame-draw-mode *{cursor:crosshair!important}.frame-draw-preview{border:2px dashed var(--accent);pointer-events:none;z-index:9999;border-radius:var(--radius);background:#c0392b0f;position:absolute}.frame-preset-menu{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:300;min-width:200px;padding:6px 0;animation:.12s ease-out frameMenuIn;position:absolute;top:0;left:calc(100% + 10px);box-shadow:0 6px 20px #0000001f}@keyframes frameMenuIn{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.frame-preset-item{width:100%;font-family:var(--font-mono);color:var(--ink-soft);cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:none;justify-content:space-between;align-items:center;padding:11px 18px;font-size:15px;transition:background .1s,color .1s;display:flex}.frame-preset-item:hover{background:var(--bg);color:var(--ink)}.frame-preset-dim{color:var(--ink-faint);margin-left:12px;font-size:14px}[data-theme=dark] .frame-preset-menu{box-shadow:0 8px 28px #00000080,0 0 0 1px #ffffff0f}.free-draw-mode{cursor:crosshair!important}.item-draw{pointer-events:all;box-shadow:none!important;background:0 0!important;border:none!important}.item-draw.selected{outline:2px dashed var(--accent);outline-offset:2px}.draw-menu{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:200;flex-direction:column;gap:10px;width:240px;padding:16px 18px;display:flex;position:absolute;bottom:0;left:calc(100% + 10px);box-shadow:0 4px 16px #0000001f}.draw-menu-label{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.5px;font-size:14px;font-weight:600}.draw-menu-colors{flex-wrap:wrap;gap:8px;display:flex}.draw-color-swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:34px;height:34px;padding:0;transition:transform .1s}.draw-color-swatch:hover{transform:scale(1.15)}.draw-color-swatch.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--paper), 0 0 0 4px var(--accent)}.draw-menu-widths{gap:6px;display:flex}.draw-width-btn{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;flex:1;justify-content:center;align-items:center;height:42px;padding:0 10px;transition:border-color .15s;display:flex}.draw-width-btn:hover{border-color:var(--ink-soft)}.draw-width-btn.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--bg))}.draw-width-line{background:var(--ink);border-radius:2px;width:100%}[data-theme=dark] .draw-menu{box-shadow:0 8px 28px #00000080,0 0 0 1px #ffffff0f}.item-note{border-radius:var(--radius);box-shadow:0 2px 8px #00000014}.item-note .item-content{height:100%;padding:14px;overflow:hidden}.item-note p{color:#000000bf;word-break:break-word;margin:0;font-size:14px;line-height:1.5}.item-note p.placeholder{color:#00000059;font-style:italic}.item-note a{color:#0009;cursor:pointer;text-decoration:underline}.item-color{border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;display:flex;box-shadow:0 1px 4px #0000000d}.item-swatch{border-radius:var(--radius) var(--radius) 0 0;flex:1;min-height:0}.item-color-label{height:28px;font-family:var(--font-mono);letter-spacing:.05em;color:var(--ink-soft);background:var(--paper);border-top:1px solid var(--line);-webkit-user-select:text;user-select:text;justify-content:center;align-items:center;font-size:12px;display:flex}.item-link{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;flex-direction:row;align-items:center;gap:12px;padding:12px 16px;display:flex;box-shadow:0 1px 4px #0000000d}.item-link-favicon{border-radius:var(--radius-sm);object-fit:contain;flex-shrink:0;width:32px;height:32px}.item-link-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.item-link-domain{font-family:var(--font-sans);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.item-link-url{font-family:var(--font-mono);letter-spacing:.02em;color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.item-board{background:var(--paper);border:2px dashed var(--line);border-radius:var(--radius);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:16px;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 1px 4px #0000000d}.item-board:hover{border-color:var(--accent);box-shadow:0 2px 12px #c0392b1a}.item-board-icon{color:var(--ink-faint);opacity:.7}.item-board:hover .item-board-icon{color:var(--accent);opacity:1}.item-board-label{font-family:var(--font-sans);color:var(--ink);text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:14px;font-weight:600;overflow:hidden}.item-board-hint{font-family:var(--font-mono);color:var(--ink-faint);letter-spacing:.02em;text-align:center;font-size:11px}.item-embed{background:var(--paper);border:2px solid var(--line);border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden;box-shadow:0 2px 8px #00000014}.embed-handle{background:var(--toolbar-bg);border-bottom:1px solid var(--line);cursor:grab;-webkit-user-select:none;user-select:none;align-items:center;height:28px;min-height:28px;padding:0 10px;display:flex}.embed-handle:active{cursor:grabbing}.embed-handle-title{font-family:var(--font-sans);color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:600;overflow:hidden}.embed-iframe{background:#fff;border:none;flex:1;width:100%}.item-embed.selected{border-color:var(--accent)}.embed-fullscreen-btn{cursor:pointer;color:var(--ink-faint);background:0 0;border:none;border-radius:4px;align-items:center;margin-left:auto;padding:2px 4px;transition:color .15s,background .15s;display:flex}.embed-fullscreen-btn:hover{color:var(--ink);background:#0000000f}.embed-fullscreen-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.embed-fullscreen-overlay{z-index:30000;background:#111;flex-direction:column;animation:.2s embed-fs-in;display:flex;position:fixed;inset:0}@keyframes embed-fs-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.embed-fullscreen-bar{background:#1a1a1a;border-bottom:1px solid #333;flex-shrink:0;align-items:center;gap:12px;height:40px;padding:0 16px;display:flex}.embed-fullscreen-title{font-family:var(--font-sans);color:#ccc;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;font-weight:600;overflow:hidden}.embed-fullscreen-close{cursor:pointer;color:#999;background:0 0;border:none;border-radius:6px;align-items:center;padding:6px;transition:color .15s,background .15s;display:flex}.embed-fullscreen-close:hover{color:#fff;background:#ffffff1a}.embed-fullscreen-close svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.embed-fullscreen-iframe{background:#fff;border:none;flex:1;width:100%}.item-tags{flex-wrap:wrap;gap:3px;padding-top:4px;display:flex;position:absolute;bottom:-2px;left:4px;right:4px;transform:translateY(100%)}.tag-chip{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ink-soft);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);white-space:nowrap;padding:2px 7px;font-size:9px}.tag-chip[data-tag]{cursor:pointer;transition:border-color .12s,background .12s}.tag-chip[data-tag]:hover{border-color:var(--accent);color:var(--accent)}.tag-dimmed{opacity:.15;pointer-events:none;transition:opacity .2s}.tag-filter-bar{z-index:500;background:var(--paper);border:1px solid var(--line);border-radius:6px;align-items:center;gap:8px;padding:6px 14px;display:flex;position:fixed;top:48px;left:50%;transform:translate(-50%);box-shadow:0 2px 12px #00000014}.tag-filter-label{font-family:var(--font-sans);color:var(--ink-faint);letter-spacing:.03em;font-size:13px}.tag-filter-chip{font-family:var(--font-mono);color:var(--accent);border-radius:var(--radius-sm);cursor:pointer;background:#c0392b14;border:1px solid #c0392b40;padding:2px 8px;font-size:11px;transition:background .12s}.tag-filter-chip:hover{background:#c0392b26;text-decoration:line-through}.tag-filter-clear{font-family:var(--font-sans);color:var(--ink-faint);cursor:pointer;background:0 0;border:none;margin-left:4px;padding:2px 6px;font-size:12px}.tag-filter-clear:hover{color:var(--accent)}.tag-editor{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:10000;flex-direction:column;gap:6px;min-width:200px;max-width:320px;padding:8px 10px;display:flex;position:fixed;box-shadow:0 4px 16px #0000001a,0 1px 4px #0000000f}.tag-editor-chips{flex-wrap:wrap;gap:4px;display:flex}.tag-chip-edit{align-items:center;gap:3px;display:flex}.tag-chip-remove{color:var(--ink-faint);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:13px;line-height:1}.tag-chip-remove:hover{color:var(--accent)}.tag-editor-input{font-family:var(--font-sans);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;flex:1;min-width:110px;padding:4px 10px;font-size:13px}.tag-editor-input::placeholder{color:var(--ink-faint)}.tag-suggestions{border-top:1px solid var(--line-soft);width:100%;max-height:140px;margin-top:4px;padding-top:4px;display:none;overflow-y:auto}.tag-suggestion-item{font-family:var(--font-mono);color:var(--ink-soft);border-radius:var(--radius-sm);cursor:pointer;padding:5px 8px;font-size:12px;transition:background .1s,color .1s}.tag-suggestion-item:hover,.tag-suggestion-item.active{background:var(--bg);color:var(--accent)}.resize-handle{background:var(--accent);border:2px solid var(--paper);z-index:10;transform-origin:50%;border-radius:2px;width:10px;height:10px;position:absolute}.resize-handle[data-corner=se]{cursor:se-resize;bottom:-5px;right:-5px}.resize-handle[data-corner=sw]{cursor:sw-resize;bottom:-5px;left:-5px}.resize-handle[data-corner=ne]{cursor:ne-resize;top:-5px;right:-5px}.resize-handle[data-corner=nw]{cursor:nw-resize;top:-5px;left:-5px}.resize-handle{scale:var(--inv-zoom,1)}.board-mention{color:var(--accent);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border-bottom:1px dashed var(--accent);background:#c0392b1a;padding:2px 8px;font-size:.92em;font-weight:600;text-decoration:none;display:inline}.board-mention:hover{background:#c0392b2e}.mention-dropdown{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:30000;width:260px;position:fixed;overflow:hidden;box-shadow:0 6px 24px #0000001f}.mention-search{border:none;border-bottom:1px solid var(--line-soft);background:var(--bg);width:100%;font-family:var(--font-serif);color:var(--ink);box-sizing:border-box;outline:none;padding:8px 12px;font-size:14px;display:block}.mention-search::placeholder{color:var(--ink-faint)}.mention-list{max-height:200px;padding:4px;overflow-y:auto}.mention-option{font-family:var(--font-serif);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;align-items:center;gap:8px;padding:7px 10px;font-size:14px;display:flex;overflow:hidden}.mention-option:hover{background:var(--bg)}.mention-option-icon{color:var(--accent);flex-shrink:0;font-size:15px}.mention-option-name{text-overflow:ellipsis;flex:1;overflow:hidden}.mention-option-count{color:var(--ink-faint);font-size:12px;font-family:var(--font-mono);flex-shrink:0}.mention-empty{color:var(--ink-faint);text-align:center;padding:12px 10px;font-size:13px}.context-menu{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:20000;min-width:200px;padding:4px;position:fixed;box-shadow:0 4px 20px #0000001f,0 1px 4px #0000000f}.context-menu-item{width:100%;font-family:var(--font-sans);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;text-align:left;background:0 0;border:none;padding:11px 18px;font-size:15px;font-weight:400;transition:background .1s;display:block}.context-menu-item:hover{background:var(--bg)}.context-menu-item.danger{color:var(--accent)}.context-menu-item.danger:hover{background:#c0392b0f}.context-menu-sep{background:var(--line-soft);height:1px;margin:4px 8px}.home-container{width:100%;max-width:900px}.home-header{justify-content:space-between;align-items:center;margin-bottom:32px;display:flex}.home-title{font-family:var(--font-serif);color:var(--ink);margin:0;font-size:28px;font-weight:400}.home-new-btn{font-family:var(--font-sans);color:#fff;background:var(--accent);border-radius:var(--radius);cursor:pointer;border:none;padding:10px 20px;font-size:14px;font-weight:500;transition:opacity .15s}.home-new-btn:hover{opacity:.9}.home-theme-btn{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;justify-content:center;align-items:center;width:36px;height:36px;transition:background .12s,border-color .12s;display:flex}.home-theme-btn:hover{background:var(--bg);border-color:var(--ink-faint)}.home-theme-btn svg{fill:none;width:18px;height:18px;stroke:var(--ink-soft);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.home-controls{margin-bottom:24px}.home-search{font-family:var(--font-sans);color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);outline:none;width:100%;max-width:320px;padding:10px 16px;font-size:14px;transition:border-color .15s}.home-search:focus{border-color:var(--ink-faint)}.home-search::placeholder{color:var(--ink-faint)}.home-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-bottom:32px;display:grid}.board-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;padding:20px;transition:border-color .15s,box-shadow .15s}.board-card:hover{border-color:var(--ink-faint);box-shadow:0 2px 12px #0000000f}.board-card-name{font-family:var(--font-sans);color:var(--ink);margin-bottom:6px;font-size:16px;font-weight:600}.board-card-desc{font-family:var(--font-sans);color:var(--ink-soft);margin-bottom:12px;font-size:14px;line-height:1.4}.board-card-desc.empty{color:var(--ink-faint);font-style:italic}.board-card-meta{font-family:var(--font-mono);letter-spacing:.03em;color:var(--ink-faint);gap:16px;font-size:12px;display:flex}.board-card-name-input,.board-card-desc-input{font-family:var(--font-sans);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;width:100%;padding:4px 10px;font-size:14px}.board-card-name-input{margin-bottom:6px;font-size:16px;font-weight:600}.board-card-desc-input{margin-bottom:12px}.board-card-desc-input::placeholder{color:var(--ink-faint)}.home-empty{font-family:var(--font-sans);color:var(--ink-faint);text-align:center;grid-column:1/-1;padding:40px 20px;font-size:15px}.home-archived-section{margin-top:16px}.home-archived-toggle{font-family:var(--font-sans);color:var(--ink-faint);cursor:pointer;background:0 0;border:none;margin-bottom:12px;padding:8px 0;font-size:14px;font-weight:500;transition:color .15s}.home-archived-toggle:hover{color:var(--ink-soft)}.slide-order-panel{background:var(--paper);border:1px solid var(--line);z-index:15000;border-radius:6px;flex-direction:column;width:260px;max-height:calc(100vh - 100px);margin-top:6px;display:flex;position:absolute;top:100%;right:0;overflow:hidden;box-shadow:0 4px 20px #0000001f}.slide-order-header{border-bottom:1px solid var(--line-soft);font-family:var(--font-sans);color:var(--ink);justify-content:space-between;align-items:center;padding:14px 16px;font-size:14px;font-weight:600;display:flex}.slide-order-close{cursor:pointer;color:var(--ink-faint);background:0 0;border:none;border-radius:2px;padding:2px 4px;font-size:14px}.slide-order-close:hover{color:var(--ink);background:var(--line-soft)}.slide-order-list{flex:1;padding:6px 0;overflow-y:auto}.slide-order-row{cursor:grab;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:8px 14px;transition:background .1s;display:flex}.slide-order-row:hover{background:var(--line-soft)}.slide-order-row.dragging{opacity:.4}.slide-order-row.drag-over{border-top:2px solid var(--accent)}.slide-order-grip{color:var(--ink-faint);cursor:grab;font-size:14px;line-height:1}.slide-order-num{font-family:var(--font-mono);color:var(--ink-faint);text-align:center;min-width:18px;font-size:12px}.slide-order-name{font-family:var(--font-sans);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14px;overflow:hidden}.slide-order-footer{border-top:1px solid var(--line-soft);padding:8px 14px}.slide-order-reset{cursor:pointer;font-family:var(--font-sans);color:var(--ink-faint);background:0 0;border:none;padding:4px 0;font-size:12px;transition:color .15s}.slide-order-reset:hover{color:var(--accent)}.present-hidden{display:none!important}.present-mask{z-index:199;pointer-events:auto;cursor:default;--fx:0px;--fy:0px;--fw:0px;--fh:0px;clip-path:polygon( 0% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 0%,  var(--fx) var(--fy), var(--fx) calc(var(--fy) + var(--fh)), calc(var(--fx) + var(--fw)) calc(var(--fy) + var(--fh)), calc(var(--fx) + var(--fw)) var(--fy), var(--fx) var(--fy));background:#000000d1;transition:clip-path .4s;position:fixed;inset:0}.present-overlay{z-index:20000;pointer-events:none;position:fixed;inset:0}.present-hud{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto;opacity:0;background:#000000a6;border-radius:8px;align-items:center;gap:12px;padding:8px 16px;transition:opacity .3s;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.present-overlay:hover .present-hud,.present-hud:focus-within{opacity:1}.present-nav-btn{color:#fff;cursor:pointer;opacity:.7;background:0 0;border:none;border-radius:4px;align-items:center;padding:4px;transition:opacity .15s;display:flex}.present-nav-btn:hover{opacity:1;background:#ffffff1a}.present-nav-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.present-info{font-family:var(--font-sans);color:#fff;white-space:nowrap;letter-spacing:.02em;text-align:center;min-width:100px;font-size:14px}.present-close-btn{color:#fff;cursor:pointer;opacity:.5;background:0 0;border:none;border-radius:4px;align-items:center;margin-left:8px;padding:4px;transition:opacity .15s;display:flex}.present-close-btn:hover{opacity:1;background:#ffffff1a}.present-close-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.present-embed-hint{z-index:20001;color:#fff;font-family:var(--font-sans);opacity:0;pointer-events:none;white-space:nowrap;background:#000000bf;border-radius:20px;padding:8px 18px;font-size:13px;transition:opacity .25s;position:fixed;bottom:72px;left:50%;transform:translate(-50%)}.present-embed-hint.visible{opacity:1}#login-screen{z-index:10000;position:fixed;inset:0}.login-wrapper{background:var(--bg);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.login-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;width:380px;padding:48px 40px;box-shadow:0 8px 32px #00000014}.login-title{font-family:var(--font-serif);color:var(--ink);margin:0 0 4px;font-size:32px;font-weight:400}.login-subtitle{font-family:var(--font-sans);color:var(--ink-faint);margin:0 0 32px;font-size:14px}.login-form{flex-direction:column;gap:6px;display:flex}.login-label{font-family:var(--font-sans);color:var(--ink-soft);margin-top:8px;font-size:12px;font-weight:600}.login-input{font-family:var(--font-sans);border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);color:var(--ink);outline:none;padding:10px 14px;font-size:15px;transition:border-color .15s}.login-input:focus{border-color:var(--accent)}.login-error{font-family:var(--font-sans);color:#e74c3c;min-height:20px;margin-top:4px;font-size:13px}.login-btn{font-family:var(--font-sans);color:#fff;background:var(--accent);border-radius:var(--radius);cursor:pointer;border:none;margin-top:8px;padding:12px;font-size:15px;font-weight:600;transition:opacity .15s}.login-btn:hover{opacity:.9}.login-btn:disabled{opacity:.5;cursor:default}.admin-wrapper{background:var(--bg);z-index:500;flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.admin-header{border-bottom:1px solid var(--line);background:var(--paper);justify-content:space-between;align-items:center;padding:20px 32px;display:flex}.admin-header h2{font-family:var(--font-serif);color:var(--ink);margin:0;font-size:22px;font-weight:400}.admin-close-btn{border:1px solid var(--line);border-radius:var(--radius-sm);width:36px;height:36px;color:var(--ink-soft);cursor:pointer;background:0 0;justify-content:center;align-items:center;font-size:22px;transition:background .15s;display:flex}.admin-close-btn:hover{background:var(--bg)}.admin-layout{flex:1;display:flex;overflow:hidden}.admin-sidebar{border-right:1px solid var(--line);flex-direction:column;gap:4px;width:300px;padding:16px;display:flex;overflow-y:auto}.admin-main{flex:1;padding:24px 32px;overflow-y:auto}.admin-add-btn{font-family:var(--font-sans);color:#fff;background:var(--accent);border-radius:var(--radius);cursor:pointer;border:none;margin-bottom:12px;padding:10px 16px;font-size:13px;font-weight:600;transition:opacity .15s}.admin-add-btn:hover{opacity:.9}.admin-user-item{border-radius:var(--radius);cursor:pointer;align-items:center;gap:10px;padding:10px 12px;transition:background .15s;display:flex}.admin-user-item:hover,.admin-user-item.active{background:var(--line-soft)}.admin-user-avatar{color:#fff;width:36px;height:36px;font-family:var(--font-sans);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex}.admin-user-info{min-width:0}.admin-user-name{font-family:var(--font-sans);color:var(--ink);align-items:center;gap:6px;font-size:14px;font-weight:500;display:flex}.admin-user-email{font-family:var(--font-sans);color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.admin-badge{text-transform:uppercase;background:var(--accent);color:#fff;border-radius:4px;padding:1px 6px;font-size:10px;font-weight:600}.admin-form{flex-direction:column;gap:6px;max-width:400px;display:flex}.admin-form h3{font-family:var(--font-serif);color:var(--ink);margin:0 0 12px;font-size:18px;font-weight:400}.admin-label{font-family:var(--font-sans);color:var(--ink-soft);margin-top:8px;font-size:12px;font-weight:600}.admin-input{font-family:var(--font-sans);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);outline:none;padding:8px 12px;font-size:14px}.admin-input:focus{border-color:var(--accent)}.admin-color-input{border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;background:var(--paper);width:48px;height:36px;padding:2px}.admin-error{font-family:var(--font-sans);color:#e74c3c;min-height:18px;font-size:13px}.admin-submit-btn{font-family:var(--font-sans);color:#fff;background:var(--accent);border-radius:var(--radius);cursor:pointer;border:none;align-self:flex-start;margin-top:8px;padding:10px 20px;font-size:14px;font-weight:600;transition:opacity .15s}.admin-submit-btn:hover{opacity:.9}.admin-submit-btn:disabled{opacity:.5;cursor:default}.admin-submit-btn.small{margin-top:0;padding:6px 14px;font-size:13px}.admin-detail{max-width:500px}.admin-detail-header{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.admin-detail-avatar{color:#fff;width:48px;height:48px;font-family:var(--font-sans);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:20px;font-weight:600;display:flex}.admin-board-list{flex-direction:column;gap:6px;margin-top:12px;display:flex}.admin-board-row{background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.admin-board-name{font-family:var(--font-sans);color:var(--ink);font-size:14px}.admin-role-select{font-family:var(--font-sans);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);padding:4px 8px;font-size:13px}.presence-avatars{align-items:center;gap:0;margin-left:auto;display:flex}.presence-avatar{color:#fff;width:32px;height:32px;font-family:var(--font-sans);cursor:pointer;border:2px solid var(--paper);background-position:50%;background-size:cover;border-radius:50%;justify-content:center;align-items:center;margin-left:-6px;font-size:13px;font-weight:600;transition:transform .15s,box-shadow .15s;display:flex;position:relative}.presence-avatar:first-child{margin-left:0}.presence-avatar:hover{z-index:1;transform:scale(1.15)}.presence-avatar.following{box-shadow:0 0 0 2px var(--accent)}.presence-avatar-tooltip{color:#fff;white-space:nowrap;pointer-events:none;opacity:0;background:#000c;border-radius:4px;padding:3px 8px;font-size:11px;font-weight:500;transition:opacity .15s;position:absolute;bottom:-28px;left:50%;transform:translate(-50%)}.presence-avatar:hover .presence-avatar-tooltip{opacity:1}.follow-banner{z-index:150;color:#fff;font-family:var(--font-sans);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000bf;border-radius:20px;align-items:center;gap:8px;padding:6px 16px;font-size:13px;display:flex;position:fixed;top:72px;left:50%;transform:translate(-50%)}.follow-banner button{color:#fff;cursor:pointer;background:#fff3;border:none;border-radius:4px;padding:2px 8px;font-size:12px}.follow-banner button:hover{background:#ffffff4d}#readonly-badge{background:var(--c-warning,#e67e22);color:#fff;z-index:9999;pointer-events:none;border-radius:20px;padding:6px 18px;font-size:13px;font-weight:600;position:fixed;bottom:48px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000040}.board-card-star{border-radius:var(--radius-sm);cursor:pointer;width:28px;height:28px;color:var(--ink-faint);opacity:0;z-index:2;background:0 0;border:none;justify-content:center;align-items:center;transition:opacity .15s,color .15s,transform .15s;display:flex;position:absolute;top:8px;right:8px}.board-card:hover .board-card-star,.board-card-star.active{opacity:1}.board-card-star.active{color:#f1c40f}.board-card-star.active svg{fill:#f1c40f;stroke:#f1c40f}.board-card-star:hover{transform:scale(1.2)}.board-card{position:relative}.comment-badge{background:var(--accent,#e74c3c);color:#fff;border:2px solid var(--paper);font-size:11px;font-weight:700;font-family:var(--font-sans);cursor:pointer;z-index:5;border-radius:12px;align-items:center;gap:3px;padding:2px 6px;line-height:1;transition:transform .12s;display:flex;position:absolute;top:-8px;right:-8px}.comment-badge svg{fill:#fff;stroke:none}.comment-badge:hover{transform:scale(1.15)}.comment-popover{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:15000;width:320px;max-height:420px;font-family:var(--font-sans);flex-direction:column;display:flex;position:fixed;box-shadow:0 8px 32px #00000026,0 2px 8px #00000014}.comment-popover-header{border-bottom:1px solid var(--line-soft);color:var(--ink);justify-content:space-between;align-items:center;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.comment-popover-close{border-radius:var(--radius-sm);cursor:pointer;width:24px;height:24px;color:var(--ink-faint);background:0 0;border:none;justify-content:center;align-items:center;font-size:16px;display:flex}.comment-popover-close:hover{background:var(--bg);color:var(--ink)}.comment-list{flex:1;max-height:280px;padding:8px 0;overflow-y:auto}.comment-list:empty:after{content:"Nenhum comentário ainda";text-align:center;color:var(--ink-faint);padding:24px 14px;font-size:13px;display:block}.comment-item{gap:8px;padding:8px 14px;display:flex;position:relative}.comment-item:hover .comment-delete{opacity:1}.comment-avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;font-weight:700;display:flex}.comment-body{flex:1;min-width:0}.comment-meta{align-items:baseline;gap:6px;margin-bottom:2px;display:flex}.comment-author{color:var(--ink);font-size:12px;font-weight:600}.comment-time{color:var(--ink-faint);font-size:11px}.comment-text{color:var(--ink);word-break:break-word;font-size:13px;line-height:1.4}.comment-delete{opacity:0;border-radius:var(--radius-sm);cursor:pointer;width:20px;height:20px;color:var(--ink-faint);background:0 0;border:none;justify-content:center;align-items:center;font-size:14px;transition:opacity .12s,color .12s;display:flex;position:absolute;top:8px;right:10px}.comment-delete:hover{color:var(--accent,#e74c3c);background:var(--bg)}.comment-compose{border-top:1px solid var(--line-soft);gap:8px;padding:10px 14px;display:flex}.comment-input{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--ink);font-family:var(--font-sans);resize:none;outline:none;flex:1;min-height:32px;max-height:80px;padding:6px 10px;font-size:13px}.comment-input:focus{border-color:var(--accent,#e74c3c)}.comment-send{background:var(--accent,#e74c3c);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;transition:opacity .12s;display:flex}.comment-send:hover{opacity:.85}.comment-send:disabled{opacity:.4;cursor:default}.comment-send svg{fill:#fff;stroke:none}.user-menu-btn{color:#fff;width:32px;height:32px;font-family:var(--font-sans);cursor:pointer;background-position:50%;background-size:cover;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.user-menu-dropdown{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);z-index:200;min-width:180px;padding:6px;position:absolute;top:56px;right:24px;box-shadow:0 8px 28px #0000001f}.user-menu-item{text-align:left;width:100%;font-family:var(--font-sans);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:8px 12px;font-size:13px;transition:background .15s;display:block}.user-menu-item:hover{background:var(--line-soft)}.user-menu-sep{background:var(--line-soft);height:1px;margin:4px 0}[data-theme=dark] .item-note p{color:#fffc}[data-theme=dark] .item-note p.placeholder{color:#ffffff4d}[data-theme=dark] .item-note a{color:#ffffff8c}[data-theme=dark] .item-note{box-shadow:0 1px 4px #0000004d}[data-theme=dark] .board-item.selected{outline-color:var(--accent)}[data-theme=dark] .home-hero-title{color:var(--ink)}[data-theme=dark] .board-card{border-color:var(--line-soft);box-shadow:0 2px 8px #0006,0 0 0 1px #ffffff0a}[data-theme=dark] .board-card:hover{border-color:var(--line);box-shadow:0 4px 16px #00000080,0 0 0 1px #ffffff12}[data-theme=dark] .context-menu{box-shadow:0 8px 32px #0000008c,0 0 0 1px #ffffff0f}[data-theme=dark] .export-dropdown{box-shadow:0 8px 28px #00000080,0 0 0 1px #ffffff0f}[data-theme=dark] .import-preview-modal{box-shadow:0 24px 64px #0009,0 0 0 1px #ffffff0d}[data-theme=dark] .tag-editor{box-shadow:0 8px 28px #00000080,0 0 0 1px #ffffff0f}[data-theme=dark] .link-preview-popup,[data-theme=dark] .board-search{box-shadow:0 6px 24px #00000080,0 0 0 1px #ffffff0f}[data-theme=dark] #toolbar{box-shadow:0 1px #ffffff08}[data-theme=dark] #sidebar{border-color:var(--line-soft);box-shadow:0 4px 16px #0006,0 0 0 1px #ffffff0a}[data-theme=dark] .edit-toolbar{border-color:var(--line-soft);box-shadow:0 8px 28px #00000080,0 0 0 1px #ffffff0f}[data-theme=dark] .item-text{border-color:var(--line-soft);box-shadow:0 2px 8px #0000004d,0 0 0 1px #ffffff08}[data-theme=dark] .item-image{border-color:var(--line-soft);box-shadow:0 2px 8px #00000059}[data-theme=dark] .item-frame{border-color:var(--line)}[data-theme=dark] .item-frame-title{color:var(--ink-faint)}[data-theme=dark] .item-embed{box-shadow:0 2px 8px #0000004d}[data-theme=dark] .shortcuts-popover{box-shadow:0 8px 32px #0000008c,0 0 0 1px #ffffff0f}[data-theme=dark] .slide-order-panel{box-shadow:0 8px 28px #00000080,0 0 0 1px #ffffff0f}[data-theme=dark] #canvas{background-image:radial-gradient(circle, var(--line) .8px, transparent .8px)}[data-theme=dark] .minimap{background:var(--paper);border-color:var(--line);box-shadow:0 4px 16px #0006}[data-theme=dark] .toolbar-btn-icon svg,[data-theme=dark] .toolbar-btn-small svg,[data-theme=dark] .sidebar-btn svg{stroke:var(--ink-soft)}[data-theme=dark] .toolbar-btn-icon:hover,[data-theme=dark] .sidebar-btn:hover,[data-theme=dark] .toolbar-btn:hover,[data-theme=dark] .toolbar-btn-small:hover{background:#ffffff0f}[data-theme=dark] .edit-toolbar-btn:hover{background:#ffffff14}.share-panel{background:var(--surface);border:1px solid var(--border);z-index:15000;border-radius:12px;width:420px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 32px #00000026}.share-panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;font-size:14px;font-weight:600;display:flex}.share-panel-content{padding:20px}.share-desc{color:var(--ink-soft);margin:0 0 16px;font-size:13px;line-height:1.5}.share-link-box{gap:8px;margin-bottom:16px;display:flex}.share-link-input{border:1px solid var(--border);background:var(--bg);color:var(--ink);font-size:12px;font-family:var(--font-mono,monospace);border-radius:6px;flex:1;padding:8px 10px}.share-copy-btn{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:8px 16px;font-size:13px;font-weight:500}.share-copy-btn:hover{opacity:.9}.share-enable-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;width:100%;padding:10px;font-size:13px;font-weight:500}.share-enable-btn:hover{opacity:.9}.share-disable-btn{border:1px solid var(--border);cursor:pointer;width:100%;color:var(--ink-soft);background:0 0;border-radius:6px;padding:8px;font-size:12px}.share-disable-btn:hover{border-color:var(--danger,#e53e3e);color:var(--danger,#e53e3e)}.remote-cursor{z-index:11000;pointer-events:none;transition:left 80ms linear,top 80ms linear;position:fixed}.remote-cursor svg{filter:drop-shadow(0 1px 2px #0000004d);display:block}.remote-cursor-label{color:#fff;white-space:nowrap;border-radius:3px;padding:2px 6px;font-size:11px;font-weight:500;position:absolute;top:14px;left:14px}.history-panel{background:var(--surface);border-left:1px solid var(--border);z-index:12000;flex-direction:column;width:320px;height:calc(100vh - 56px);display:flex;position:fixed;top:56px;right:0;box-shadow:-2px 0 12px #00000014}.history-panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px;font-size:14px;font-weight:600;display:flex}.history-panel-close{cursor:pointer;color:var(--ink-soft);background:0 0;border:none;padding:0 4px;font-size:20px;line-height:1}.history-panel-close:hover{color:var(--ink)}.history-save-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;margin:12px 16px;padding:8px 12px;font-size:13px;font-weight:500}.history-save-btn:hover{opacity:.9}.history-list{flex:1;padding:0 16px 16px;overflow-y:auto}.history-empty{text-align:center;color:var(--ink-soft);padding:32px 0;font-size:13px}.history-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 0;display:flex}.history-item:last-child{border-bottom:none}.history-item-info{flex:1;min-width:0}.history-item-label{color:var(--ink);font-size:13px;font-weight:500}.history-item-meta{color:var(--ink-soft);margin-top:2px;font-size:11px}.history-item-actions{flex-shrink:0;align-items:center;gap:6px;margin-left:8px;display:flex}.history-btn-restore{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:4px;padding:4px 10px;font-size:12px}.history-btn-restore:hover{opacity:.9}.history-btn-delete{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px;line-height:1}.history-btn-delete:hover{color:var(--danger,#e53e3e)}
