/* 4VB Office — canvas. Office palette: red #DF1F46, black #141414, green #00E85A, yellow #FFD500, ground #E9E9E9. */
.vbc-root { position: fixed; inset: 0; display: flex; flex-direction: column; background: #E9E9E9; font-family: 'Poppins', system-ui, sans-serif; color: #141414; overflow: hidden; -webkit-tap-highlight-color: transparent; }
.vbc-root svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.vbc-root button { font: inherit; }

/* top bar */
.vbc-top { height: 54px; flex: none; display: flex; align-items: center; gap: 10px; padding: 0 12px; background: #141414; color: #F4F4F4; border-bottom: 4px solid #DF1F46; z-index: 30; }
.vbc-ibtn { width: 38px; height: 38px; border-radius: 10px; border: 0; background: transparent; color: #00E85A; display: grid; place-items: center; cursor: pointer; flex: none; }
.vbc-ibtn:hover { background: #262626; }
.vbc-title { font-family: 'Russo One', system-ui, sans-serif; font-size: 18px; color: #00E85A; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 40vw; }
.vbc-crumb { font-size: 12px; color: #9a9a9a; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 22vw; }
.vbc-badge { font-family: 'Russo One', sans-serif; font-size: 11px; background: #FFD500; color: #141414; padding: 3px 8px; border-radius: 6px; flex: none; }
.vbc-flex { flex: 1; }
.vbc-peers { display: flex; gap: 4px; }
.vbc-peer { width: 28px; height: 28px; border-radius: 50%; background: #DF1F46; color: #fff; font: 600 11px 'Poppins', sans-serif; display: grid; place-items: center; border: 2px solid #141414; box-shadow: 0 0 0 2px #00E85A; }
.vbc-peer.me { background: #2b2b2b; box-shadow: 0 0 0 2px #5E6B63; }
.vbc-state { width: 10px; height: 10px; border-radius: 50%; background: #FFD500; flex: none; margin: 0 4px; }
.vbc-state--live { background: #00E85A; box-shadow: 0 0 8px #00E85A; }
.vbc-state--offline { background: #DF1F46; animation: vbc-blink 1s infinite; }
@keyframes vbc-blink { 50% { opacity: .3; } }

/* the board */
.vbc-vp { position: relative; flex: 1; overflow: hidden; touch-action: none; outline: none; cursor: default; user-select: none; -webkit-user-select: none;
  background-color: #E9E9E9; background-image: radial-gradient(circle, #c4c4c4 1.1px, transparent 1.3px); }
.vbc-vp.vbc-far { background-image: none; }
.vbc-vp.vbc-pan, .vbc-vp.vbc-panning { cursor: grab; } .vbc-vp.vbc-panning { cursor: grabbing; }
.vbc-vp.vbc-drop { box-shadow: inset 0 0 0 4px #00E85A; }
.vbc-world { position: absolute; left: 0; top: 0; width: 0; height: 0; transform-origin: 0 0; }
.vbc-edges { position: absolute; left: 0; top: 0; width: 1px !important; height: 1px !important; overflow: visible; z-index: 50000; pointer-events: none; }
.vbc-edges g { --ec: #5E6B63; }
.vbc-epath { stroke: var(--ec); stroke-width: 3; fill: none; }
.vbc-ehead { fill: var(--ec); stroke: var(--ec); stroke-width: 1; }
.vbc-ehit { stroke: transparent; stroke-width: 18; fill: none; pointer-events: stroke; cursor: pointer; }
.vbc-edges g.sel .vbc-epath { stroke-width: 5; filter: drop-shadow(0 0 4px #00E85A); }
.vbc-tmp { stroke: #00B347; stroke-width: 3; stroke-dasharray: 8 6; fill: none; }
.vbc-elabel { position: absolute; transform: translate(-50%, -50%); background: #F4F4F4; border: 2px solid #5E6B63; border-radius: 8px; padding: 2px 8px; font-size: 14px; white-space: nowrap; z-index: 60000; cursor: pointer; max-width: 320px; overflow: hidden; text-overflow: ellipsis; }
.vbc-elabel.sel { border-color: #00E85A; }
.vbc-marquee { position: absolute; display: none; border: 2px dashed #00B347; background: rgba(0, 232, 90, .08); pointer-events: none; z-index: 5; }
.vbc-empty { position: absolute; left: 50%; top: 45%; transform: translate(-50%, -50%); text-align: center; color: #8a8a8a; font-size: 15px; line-height: 1.6; pointer-events: none; }

/* cards */
.vbc-node { position: absolute; box-sizing: border-box; --nc: ; }
.vbc-body { position: absolute; inset: 0; border-radius: 12px; overflow: hidden; background: #FFFFFF; border: 2px solid #C9C9C9; box-shadow: 0 2px 0 rgba(20, 20, 20, .08); }
.vbc-node.colored .vbc-body { border-color: var(--nc); background: color-mix(in srgb, var(--nc) 10%, #ffffff); }
.vbc-node.sel .vbc-body { outline: 3px solid #00E85A; outline-offset: 2px; }
.vbc-node.target .vbc-body { outline: 3px dashed #00B347; outline-offset: 4px; }
.vbc-node.editing .vbc-body { outline: 3px solid #FFD500; overflow: visible; }
.vbc-text { position: absolute; inset: 0; padding: 12px 16px; overflow: auto; font-size: 16px; line-height: 1.45; word-wrap: break-word; outline: none; cursor: inherit; scrollbar-width: thin; }
.vbc-node.editing .vbc-text { cursor: text; user-select: text; -webkit-user-select: text; background: #fff; border-radius: 10px; }
.vbc-text > :first-child { margin-top: 0; } .vbc-text > :last-child { margin-bottom: 0; }
.vbc-text p { margin: 0 0 .5em; } .vbc-text h1 { font-size: 1.9em; margin: .2em 0 .4em; line-height: 1.15; } .vbc-text h2 { font-size: 1.5em; margin: .2em 0 .4em; line-height: 1.2; } .vbc-text h3 { font-size: 1.2em; margin: .2em 0 .4em; }
.vbc-text h1, .vbc-text h2, .vbc-text h3 { font-family: 'Russo One', 'Poppins', sans-serif; font-weight: 400; }
.vbc-text ul, .vbc-text ol { margin: .2em 0 .5em; padding-left: 1.4em; }
.vbc-text a { color: #1A7FD9; } .vbc-text code { background: #f1f1f1; padding: 0 4px; border-radius: 4px; font-size: .9em; } .vbc-text pre { background: #141414; color: #00E85A; padding: 10px; border-radius: 8px; overflow: auto; }
.vbc-text blockquote { border-left: 4px solid #DF1F46; margin: .4em 0; padding: 2px 10px; color: #444; } .vbc-text mark { background: #FFF27A; }
ul.vb-check { list-style: none; padding-left: 4px; }
ul.vb-check > li { position: relative; padding-left: 28px; }
ul.vb-check > li::before { content: ''; position: absolute; left: 0; top: .22em; width: 16px; height: 16px; border: 2px solid #141414; border-radius: 4px; background: #fff; cursor: pointer; }
ul.vb-check > li[data-checked="true"] { color: #8a8a8a; text-decoration: line-through; }
ul.vb-check > li[data-checked="true"]::before { background: #00E85A; border-color: #141414; box-shadow: inset 0 0 0 2px #fff; }

.vbc-t-group .vbc-body { background: rgba(255, 255, 255, .28); border: 3px solid #5E6B63; border-radius: 16px; box-shadow: none; }
.vbc-t-group.colored .vbc-body { border-color: var(--nc); background: color-mix(in srgb, var(--nc) 9%, transparent); }
.vbc-glabel { position: absolute; left: 4px; bottom: calc(100% + 6px); font-family: 'Russo One', sans-serif; font-size: 22px; background: #141414; color: #00E85A; padding: 4px 12px; border-radius: 8px; white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; outline: none; cursor: pointer; }
.vbc-t-group.colored .vbc-glabel { background: var(--nc); color: #fff; }
.vbc-glabel.empty { display: none; } .vbc-glabel[contenteditable="true"] { overflow: visible; text-overflow: clip; box-shadow: 0 0 0 3px #FFD500; cursor: text; }

.vbc-img { width: 100%; height: 100%; object-fit: cover; display: block; user-select: none; -webkit-user-drag: none; pointer-events: none; }
.vbc-video { width: 100%; height: 100%; background: #000; display: block; }
.vbc-audio { padding: 14px; } .vbc-audio audio { width: 100%; margin-top: 8px; }
.vbc-frame { position: absolute; inset: 34px 0 0 0; width: 100%; height: calc(100% - 34px); border: 0; background: #fff; }
.vbc-t-file .vbc-frame { inset: 0; height: 100%; }
.vbc-shield { position: absolute; inset: 34px 0 0 0; } .vbc-t-file .vbc-shield { inset: 0; }
.vbc-node.sel .vbc-shield { display: none; }
.vbc-lhead { height: 34px; display: flex; align-items: center; gap: 8px; padding: 0 6px 0 12px; background: #141414; color: #00E85A; font-size: 13px; }
.vbc-lhost { flex: 1; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.vbc-lopen { color: #00E85A; display: grid; place-items: center; width: 28px; height: 28px; }
.vbc-filecard { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 10px; text-align: center; }
.vbc-ficon { font-family: 'Russo One', sans-serif; background: #DF1F46; color: #fff; border-radius: 8px; padding: 10px 12px; font-size: 15px; }
.vbc-fname { font-size: 13px; word-break: break-all; max-height: 3.6em; overflow: hidden; }
.vbc-fdl { color: #141414; background: #00E85A; border-radius: 8px; padding: 4px 12px; font-size: 13px; text-decoration: none; font-weight: 600; }
.vbc-missing { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: #5E6B63; font-size: 13px; text-align: center; padding: 8px; word-break: break-all; }
.vbc-missing small { color: #DF1F46; }
.vbc-up { padding: 16px; } .vbc-upname { font-size: 13px; margin-bottom: 10px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.vbc-upbar { height: 10px; background: #eee; border-radius: 5px; overflow: hidden; } .vbc-upbar i { display: block; height: 100%; background: #00E85A; transition: width .2s; }
.vbc-nhead { height: 34px; line-height: 34px; padding: 0 12px; background: #DF1F46; color: #fff; font-family: 'Russo One', sans-serif; font-size: 14px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.vbc-nbody { top: 34px; }

/* handles + connection dots */
.vbc-h { position: absolute; width: 14px; height: 14px; background: #fff; border: 2px solid #00B347; border-radius: 4px; display: none; z-index: 3; touch-action: none; }
.vbc-node.sel .vbc-h { display: block; }
.vbc-root:not(.vbc-readonly) .vbc-node.sel:not(.locked) .vbc-h { display: block; }
.vbc-readonly .vbc-h, .vbc-readonly .vbc-dot, .vbc-node.locked .vbc-h, .vbc-node.editing .vbc-h { display: none !important; }
.vbc-h--nw { left: -9px; top: -9px; cursor: nwse-resize; } .vbc-h--n { left: calc(50% - 7px); top: -9px; cursor: ns-resize; } .vbc-h--ne { right: -9px; top: -9px; cursor: nesw-resize; }
.vbc-h--e { right: -9px; top: calc(50% - 7px); cursor: ew-resize; } .vbc-h--se { right: -9px; bottom: -9px; cursor: nwse-resize; } .vbc-h--s { left: calc(50% - 7px); bottom: -9px; cursor: ns-resize; }
.vbc-h--sw { left: -9px; bottom: -9px; cursor: nesw-resize; } .vbc-h--w { left: -9px; top: calc(50% - 7px); cursor: ew-resize; }
.vbc-dot { position: absolute; width: 16px; height: 16px; border-radius: 50%; background: #00E85A; border: 3px solid #141414; display: none; z-index: 4; cursor: crosshair; touch-action: none; }
.vbc-node.sel .vbc-dot { display: block; }   /* ROUND 10B: arrow dots only on a selected card, not on hover */
.vbc-node.editing .vbc-dot { display: none; }
.vbc-dot--top { left: calc(50% - 8px); top: -9px; } .vbc-dot--bottom { left: calc(50% - 8px); bottom: -9px; } .vbc-dot--left { left: -9px; top: calc(50% - 8px); } .vbc-dot--right { right: -9px; top: calc(50% - 8px); }
.vbc-node.locked .vbc-body { opacity: .55; filter: grayscale(.7); }
.vbc-lock { position: absolute; left: 0; top: -26px; font-size: 12px; background: #FFD500; color: #141414; border-radius: 6px; padding: 2px 8px; white-space: nowrap; display: none; font-weight: 600; }
.vbc-node.locked .vbc-lock { display: block; }

/* bottom tools */
.vbc-tools { position: absolute; left: 50%; bottom: 16px; transform: translateX(-50%); display: flex; align-items: center; gap: 2px; background: #141414; border-radius: 16px; padding: 6px; box-shadow: 0 6px 0 #5C343B, 0 10px 30px rgba(0,0,0,.25); z-index: 20; max-width: calc(100vw - 16px); overflow-x: auto; scrollbar-width: none; }
.vbc-tbtn { width: 42px; height: 42px; border: 0; border-radius: 11px; background: transparent; color: #00E85A; cursor: pointer; display: grid; place-items: center; flex: none; }
.vbc-tbtn:hover { background: #2a2a2a; } .vbc-tbtn:disabled { color: #4a4a4a; cursor: default; background: transparent; }
.vbc-tbtn svg { width: 22px; height: 22px; }
.vbc-zl { width: auto; min-width: 54px; font: 600 13px 'Poppins', sans-serif; color: #F4F4F4 !important; }
.vbc-tsep { width: 2px; height: 26px; background: #333; margin: 0 4px; flex: none; }

/* toolbar above the selection */
.vbc-selbar { position: absolute; z-index: 25; display: flex; align-items: center; gap: 2px; background: #141414; color: #00E85A; border-radius: 12px; padding: 4px; box-shadow: 0 4px 0 #5C343B, 0 8px 24px rgba(0,0,0,.25); }
.vbc-selbar--dock { left: 8px !important; right: 8px; top: 62px !important; overflow-x: auto; scrollbar-width: none; flex-wrap: nowrap; }
.vbc-sbtn { width: 36px; height: 36px; border: 0; border-radius: 9px; background: transparent; color: #00E85A; display: grid; place-items: center; cursor: pointer; flex: none; }
.vbc-sbtn:hover { background: #2a2a2a; } .vbc-sbtn.on { background: #00E85A; color: #141414; } .vbc-sbtn.danger { color: #ff6b85; }
.vbc-done { background: #00E85A !important; color: #141414 !important; margin-left: 4px; }
.vbc-ssep { width: 1px; height: 22px; background: #3a3a3a; margin: 0 3px; flex: none; }
.vbc-ssel { height: 32px; border-radius: 8px; border: 0; background: #262626; color: #F4F4F4; font: 13px 'Poppins', sans-serif; padding: 0 6px; flex: none; }
.vbc-snote { color: #FFD500; font-size: 13px; padding: 0 8px; white-space: nowrap; }

/* rich text toolbar (also used by notes) */
.vbr-bar { display: flex; align-items: center; gap: 2px; flex-wrap: nowrap; }
.vbr-btn { width: 34px; height: 34px; border: 0; border-radius: 8px; background: transparent; color: #F4F4F4; cursor: pointer; display: grid; place-items: center; font: 16px 'Poppins', sans-serif; flex: none; }
.vbr-btn:hover { background: #2a2a2a; } .vbr-btn.on { background: #00E85A; color: #141414; }
.vbr-btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.vbr-btn svg text { fill: currentColor; stroke: none; font: 700 7px sans-serif; } .vbr-btn svg circle { fill: currentColor; stroke: none; }
.vbr-select { height: 32px; border-radius: 8px; border: 0; background: #262626; color: #F4F4F4; font: 13px 'Poppins', sans-serif; padding: 0 4px; flex: none; max-width: 110px; }
.vbr-size { width: 64px; }
.vbr-sep { width: 1px; height: 22px; background: #3a3a3a; margin: 0 3px; flex: none; }
.vbr-a { border-bottom: 3px solid #DF1F46; line-height: 1; font-weight: 700; } .vbr-mark { background: #FFF27A; color: #141414; padding: 0 3px; border-radius: 3px; font-size: 13px; }
.vbr-pop, .vbc-pop { position: fixed; z-index: 100000; background: #141414; border-radius: 12px; padding: 8px; display: flex; flex-wrap: wrap; gap: 6px; width: 214px; box-shadow: 0 10px 30px rgba(0,0,0,.35); }
.vbr-swatch, .vbc-sw { width: 30px; height: 30px; border-radius: 8px; border: 2px solid #3a3a3a; cursor: pointer; padding: 0; }
.vbc-sw.on { border-color: #00E85A; box-shadow: 0 0 0 2px #00E85A; }
.vbr-custom, .vbc-ci { width: 64px; height: 30px; border: 0; background: none; padding: 0; cursor: pointer; }
.vbc-notes { flex-direction: column; flex-wrap: nowrap; width: 280px; max-height: 50vh; }
.vbc-pophead { font-family: 'Russo One', sans-serif; color: #00E85A; padding: 2px 4px 6px; }
.vbc-poplist { display: flex; flex-direction: column; gap: 4px; overflow: auto; color: #ccc; font-size: 13px; }
.vbc-popitem { text-align: left; border: 0; background: #262626; color: #F4F4F4; border-radius: 8px; padding: 9px 10px; cursor: pointer; font: 14px 'Poppins', sans-serif; }
.vbc-popitem:hover { background: #333; } .vbc-popnew { background: #00E85A; color: #141414; font-weight: 600; }

.vbc-menu { position: fixed; z-index: 100000; background: #141414; border-radius: 12px; padding: 6px; display: flex; flex-direction: column; min-width: 210px; box-shadow: 0 10px 30px rgba(0,0,0,.35); }
.vbc-mi { text-align: left; border: 0; background: transparent; color: #F4F4F4; padding: 10px 12px; border-radius: 8px; cursor: pointer; font: 14px 'Poppins', sans-serif; }
.vbc-mi:hover { background: #262626; color: #00E85A; } .vbc-mi.danger { color: #ff6b85; }

.vbc-toast { position: absolute; left: 50%; bottom: 84px; transform: translate(-50%, 20px); background: #141414; color: #FFD500; padding: 10px 18px; border-radius: 12px; font-size: 14px; opacity: 0; pointer-events: none; transition: .2s; z-index: 40; max-width: 90vw; text-align: center; }
.vbc-toast.on { opacity: 1; transform: translate(-50%, 0); }

.vbc-lightbox { position: fixed; inset: 0; z-index: 100001; background: rgba(10,10,10,.92); display: flex; align-items: center; justify-content: center; flex-direction: column; padding: 24px; box-sizing: border-box; }
.vbc-lightbox img, .vbc-lightbox video { max-width: 100%; max-height: calc(100% - 40px); border-radius: 8px; }
.vbc-lightbox iframe { width: min(1000px, 100%); height: calc(100% - 40px); border: 0; background: #fff; border-radius: 8px; }
.vbc-lbclose { position: absolute; right: 14px; top: 10px; width: 44px; height: 44px; border-radius: 50%; border: 0; background: #DF1F46; color: #fff; font-size: 28px; cursor: pointer; line-height: 1; }
.vbc-lbcap { color: #ccc; margin-top: 10px; font-size: 13px; }

@media (pointer: coarse) { .vbc-node.sel .vbc-dot { width: 24px; height: 24px; } .vbc-dot--top { left: calc(50% - 12px); top: -13px; } .vbc-dot--bottom { left: calc(50% - 12px); bottom: -13px; } .vbc-dot--left { left: -13px; top: calc(50% - 12px); } .vbc-dot--right { right: -13px; top: calc(50% - 12px); } .vbc-h { width: 20px; height: 20px; } }
@media (max-width: 700px) {
  .vbc-top { height: 50px; gap: 6px; padding: 0 6px; } .vbc-title { font-size: 15px; max-width: 46vw; } .vbc-crumb { display: none; }
  .vbc-tools { bottom: 10px; border-radius: 14px; } .vbc-tbtn { width: 40px; height: 40px; }
}

.vbc-boardcard { height: 100%; display: flex; flex-direction: column; } .vbc-bchead { background: #141414; color: #00E85A; font: 12px 'Russo One', sans-serif; letter-spacing: 1px; padding: 8px 12px; }
.vbc-bctitle { flex: 1; display: flex; align-items: center; justify-content: center; text-align: center; padding: 10px; font: 20px 'Russo One', sans-serif; color: #DF1F46; } .vbc-bchint { text-align: center; font-size: 12px; color: #8a8a8a; padding-bottom: 8px; }
.vbc-text a[href^="#"] { color: #DF1F46; font-weight: 600; cursor: pointer; }

/* the selected arrow's ends: grab and drop on a card to reconnect */
.vbc-eend { position: absolute; width: 18px; height: 18px; border-radius: 50%; background: #00E85A; border: 3px solid #141414; z-index: 60001; cursor: grab; box-shadow: 0 0 0 3px rgba(0,232,90,.35); touch-action: none; }
.vbc-eend:active { cursor: grabbing; }
.vbc-edges g:hover .vbc-epath { stroke-width: 4; }
.vbc-ehit { stroke-width: 22; }

/* the search box of Add an existing board / note */
.vbc-popsearch { width: 100%; height: 34px; border-radius: 8px; border: 0; background: #262626; color: #F4F4F4; padding: 0 10px; font: 14px 'Poppins', sans-serif; margin-bottom: 6px; box-sizing: border-box; }

/* ROUND 5: THE SIDE PANEL (the project's boards and notes, like Obsidian's file list) */
.vbside-btn.on { background: #00E85A; color: #141414; }
.vbside { position: absolute; left: 0; top: 54px; bottom: 0; width: 290px; z-index: 25; display: flex; flex-direction: column; background: #F4F4F4; color: #141414; border-right: 3px solid #141414; transform: translateX(-100%); transition: transform .22s ease; box-shadow: 4px 0 0 #DF1F46; }
.vbside-on .vbside { transform: none; }
.vbside-on .vbc-vp { margin-left: 293px; }
.vbc-vp { transition: margin-left .22s ease; }
.vbside-on .vbc-tools { left: calc(50% + 146px); }
.vbside-head { display: flex; align-items: center; gap: 8px; padding: 10px 10px 6px 14px; font: 15px 'Russo One', sans-serif; letter-spacing: .5px; text-transform: uppercase; }
.vbside-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vbside-x { width: 32px; height: 32px; border: 0; border-radius: 8px; background: transparent; color: inherit; font-size: 22px; cursor: pointer; }
.vbside-x:hover { background: rgba(0,0,0,.08); }
.vbside-q { margin: 0 10px 8px; padding: 8px 10px; border: 2px solid #141414; border-radius: 8px; font: 14px 'Poppins', system-ui, sans-serif; background: #fff; color: #141414; }
.vbside-tree { flex: 1; overflow: auto; padding: 2px 6px 12px; overscroll-behavior: contain; }
.vbside-row { display: flex; align-items: center; gap: 6px; min-height: 32px; padding: 2px 8px; border-radius: 7px; cursor: pointer; font-size: 14px; user-select: none; -webkit-user-select: none; outline: none; }
.vbside-row:hover, .vbside-row:focus-visible { background: rgba(0,0,0,.07); }
.vbside-row.cur { background: #00E85A; color: #141414; font-weight: 600; }
.vbside-folder { font-weight: 600; }
.vbside-t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vbside-where { opacity: .55; font-size: 11px; max-width: 90px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vbside-ico { display: grid; place-items: center; flex: none; opacity: .8; }
.vbside .vbside-ico svg, .vbside .vbside-fold svg { width: 16px; height: 16px; }
.vbside-fold { width: 18px; height: 18px; display: grid; place-items: center; flex: none; transition: transform .15s; border-radius: 4px; }
.vbside-fold.open { transform: rotate(90deg); } .vbside-fold.none { visibility: hidden; }
.vbside-fold:hover { background: rgba(0,0,0,.1); }
.vbside-empty { padding: 14px; opacity: .65; font-size: 13px; }
.vbside-tip { padding: 8px 14px 10px 64px; font-size: 11px; opacity: .55; border-top: 1px solid rgba(0,0,0,.08); }
.vbside-scrim { display: none; }
html[data-canvas="dark"] .vbside { background: #1b1b1b; color: #ddd; border-right-color: #000; }
html[data-canvas="dark"] .vbside-q { background: #262626; color: #eee; border-color: #000; }
html[data-canvas="dark"] .vbside-row:hover, html[data-canvas="dark"] .vbside-row:focus-visible, html[data-canvas="dark"] .vbside-x:hover, html[data-canvas="dark"] .vbside-fold:hover { background: rgba(255,255,255,.08); }
html[data-canvas="dark"] .vbside-row.cur { background: #00E85A; color: #111; }
html[data-canvas="dark"] .vbside-tip { border-top-color: rgba(255,255,255,.08); }
@media (max-width: 700px) {
  .vbside { top: 50px; width: min(86vw, 320px); box-shadow: 8px 0 30px rgba(0,0,0,.4); z-index: 40; }
  .vbside-on .vbc-vp { margin-left: 0; } .vbside-on .vbc-tools { left: 50%; }
  .vbside-on .vbside-scrim { display: block; position: absolute; inset: 50px 0 0 0; background: rgba(0,0,0,.35); z-index: 39; }
  .vbside-row { min-height: 42px; font-size: 15px; }
}

/* ROUND 5: LIVE CURSORS — a coloured arrow + the person's first letter; their selection outlined in their colour */
.vbcur-layer { position: absolute; left: 0; top: 0; width: 0; height: 0; pointer-events: none; z-index: 2147483000; --vbz: 1; }
.vbcur { position: absolute; transform: scale(var(--vbz)); transform-origin: 0 0; transition: left .08s linear, top .08s linear, opacity .4s; will-change: left, top; }
.vbcur.off, .vbcur.idle { opacity: 0; }
.vbcur-arrow { width: 22px !important; height: 22px !important; fill: var(--cc) !important; stroke: #fff !important; stroke-width: 1.6 !important; filter: drop-shadow(0 1px 2px rgba(0,0,0,.45)); display: block; }
.vbcur-tag { position: absolute; left: 17px; top: 15px; min-width: 22px; height: 22px; padding: 0 5px; box-sizing: border-box; border-radius: 11px; background: var(--cc); color: #fff; font: 700 12px/22px 'Poppins', system-ui, sans-serif; text-align: center; border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0,0,0,.4); pointer-events: auto; cursor: default; }
.vbc-node.vbcur-on { outline: 3px solid var(--cc); outline-offset: 3px; }
.vbcur-badges { position: absolute; right: -10px; top: -12px; display: flex; gap: 3px; z-index: 5; pointer-events: none; }
.vbcur-badge { min-width: 22px; height: 22px; padding: 0 5px; box-sizing: border-box; border-radius: 11px; background: var(--cc); color: #fff; font: 700 12px/18px 'Poppins', system-ui, sans-serif; text-align: center; border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0,0,0,.4); pointer-events: auto; }
.vbcur-badge.typing::after { content: '✎'; margin-left: 2px; font-size: 10px; }
.vbcur-peer { border: 2px solid var(--cc) !important; background: var(--cc) !important; color: #fff !important; cursor: pointer; font-weight: 700; padding: 0; }
.vbcur-peer.me { cursor: default; opacity: .85; }
.vbcur-peer:hover:not(.me) { transform: translateY(-1px); box-shadow: 0 2px 0 #000; }
.vbc-lock[style*="--cc"] { background: var(--cc); color: #fff; }
.vbn-paper { position: relative; }
.vbn-caret { position: absolute; width: 2px; height: 1.4em; background: var(--cc); pointer-events: none; transition: left .1s, top .1s, opacity .4s; z-index: 3; }
.vbn-caret .vbcur-tag { left: -2px; top: -24px; pointer-events: auto; }
.vbn-caret.off, .vbn-caret.idle { opacity: 0; }
.vbc-node.vbcur-on .vbc-lock { display: none; }

/* ROUND 5: ELEMENTS in text cards and notes (as in the old 4VB Delegates mention boards) */
.vb-el { position: relative; margin: 8px 0 10px; }
.vb-el-hand-off, .vb-el-event { display: flex; align-items: flex-start; gap: 8px; }
.vb-el-hand-off > div, .vb-el-event > div { flex: 1; min-width: 0; padding-top: 3px; }
.vb-el-plate { flex: none; font: 400 15px/1.3 'Russo One', sans-serif; letter-spacing: 1px; color: #111; padding: 4px 10px; border-radius: 6px; user-select: none; -webkit-user-select: none; }
.vb-el-hand-off .vb-el-plate { background: #FFE600; box-shadow: 3px 4px 0 #8a7a00; }
.vb-el-event .vb-el-plate { background: #ff8c1a; box-shadow: 3px 4px 0 #7a3d00; }
.vb-el-hand-off .vb-el-plate::after, .vb-el-event .vb-el-plate::after { content: ''; }
.vb-el-goal > div { font: 400 1.6em/1.35 'Russo One', sans-serif; letter-spacing: 2px; text-transform: uppercase; color: #fff; padding: 6px 8px 12px;
  text-shadow: 3px 0 0 #0B1E4A, -3px 0 0 #0B1E4A, 0 3px 0 #0B1E4A, 0 -3px 0 #0B1E4A, 2px 2px 0 #0B1E4A, -2px 2px 0 #0B1E4A, 2px -2px 0 #0B1E4A, -2px -2px 0 #0B1E4A, 0 7px 0 #050d22, 0 4px 12px rgba(30,144,255,.55); }
.vb-el-pre-req { background: #141414; border: 3px solid #F4F4F4; border-radius: 8px; box-shadow: 0 0 0 4px #00E85A, 5px 7px 0 4px #0b4d27; padding: 10px 14px; margin: 10px 6px 14px; color: #F4F4F4; }
.vb-el-pre-req .vb-el-plate { display: block; padding: 0 0 6px; color: #00E85A; background: none; box-shadow: none; }
.vb-el-pre-req ol { margin: 0; padding-left: 1.8em; } .vb-el-pre-req li::marker { color: #00E85A; font-family: 'Russo One', sans-serif; }
.vbc-node.vbc-cull { display: none !important; }
/* SPEED: zoomed far out, the words in cards are too small to read — they are not drawn (the cards, colours and pictures are) */
.vbc-vp.vbc-far .vbc-t-text > .vbc-body, .vbc-vp.vbc-far .vbc-t-file .vbc-nbody { content-visibility: hidden; }
.vbc-vp.vbc-far .vbc-dot, .vbc-vp.vbc-far .vbc-lock { display: none; }
.vbc-node > .vbc-body { content-visibility: auto; contain-intrinsic-size: auto 200px; }
.vbc-vp.vbc-far .vbc-node, .vbc-vp.vbc-far .vbc-body { box-shadow: none !important; }
.vbside-ask{min-width:240px}.vbside-askt{padding:8px 12px 4px;font:600 12px Poppins,sans-serif;opacity:.7;max-width:260px}
body.vb-dragging .vbc-node iframe { pointer-events: none; }
/* ROUND 9 — group names, dropping into groups, dragging from the toolbar */
.vbc-glabel.ph { background: transparent; color: #8A949A; border: 2px dashed #8A949A; font-size: 18px; cursor: text; padding: 2px 10px; }
.vbc-glabel.ph:hover { color: #00E85A; border-color: #00E85A; }
html[data-canvas="light"] .vbc-glabel.ph { color: #6B7378; border-color: #9AA3A8; }
.vbc-node.vbc-dropin > .vbc-body { border-color: #00E85A !important; box-shadow: 0 0 0 4px rgba(0, 232, 90, .35), inset 0 0 0 9999px rgba(0, 232, 90, .07) !important; }
.vbc-ghost { position: fixed; left: 0; top: 0; z-index: 100050; pointer-events: none; width: 52px; height: 52px; margin: -26px 0 0 -26px; border-radius: 13px; background: #141414; color: #00E85A; display: grid; place-items: center; opacity: .55; box-shadow: 0 10px 24px rgba(0,0,0,.4); transition: opacity .12s; }
.vbc-ghost.ok { opacity: 1; outline: 3px solid #00E85A; }
.vbc-ghost svg { width: 26px; height: 26px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
body.vbc-tooldrag, body.vbc-tooldrag * { cursor: grabbing !important; user-select: none !important; }
.vbc-node.vbc-t-group > .vbc-body { overflow: visible; content-visibility: visible; }   /* ROUND 9: the name sits above the frame — it was clipped away (that is why groups showed no names) */
.vbc-node.vbc-moving { will-change: transform; }
/* ROUND 10 — arrow dots keep their size on screen at any zoom, with a wider invisible catch area */
.vbc-dot { transform: scale(var(--iz, 1)); }
.vbc-node .vbc-dot--top { left: calc(50% - 8px); top: -15px; transform-origin: 50% 100%; }
.vbc-node .vbc-dot--bottom { left: calc(50% - 8px); bottom: -15px; top: auto; transform-origin: 50% 0; }
.vbc-node .vbc-dot--left { left: -15px; top: calc(50% - 8px); transform-origin: 100% 50%; }
.vbc-node .vbc-dot--right { right: -15px; left: auto; top: calc(50% - 8px); transform-origin: 0 50%; }   /* ROUND 10: outside the card's edge, growing outward — never over the card */
.vbc-dot:hover { background: #FFD500; }
.vbc-node.target > .vbc-body { outline: 4px solid #00E85A !important; outline-offset: 3px; }
.vbc-edges .vbc-ehit { stroke-width: calc(22px * var(--iz, 1)); }
/* the bottom toolbar: undo / redo / zoom behind ⋮ */
.vbc-textra { display: none; align-items: center; gap: 2px; }
.vbc-tools.is-open .vbc-textra { display: flex; }
.vbc-moretool.on { background: #262626; }
/* the alignment popover, the gather colours, objects */
.vbc-alpop { display: flex; gap: 2px; padding: 6px; }
.vbc-swrow { display: flex; flex-wrap: wrap; gap: 6px; max-width: 250px; }
.vbc-swn { position: relative; display: grid; place-items: center; font: 700 12px Poppins, sans-serif; color: #fff; text-shadow: 0 1px 2px #000; }
.vbc-popnote { color: #bbb; font-size: 13px; max-width: 240px; line-height: 1.4; padding: 4px; }
.vbc-colors { display: flex; flex-wrap: wrap; gap: 6px; max-width: 262px; }
.vbc-colors .vbc-pophead { flex-basis: 100%; }
.vbc-node.vbc-obj.vbc-media > .vbc-body { border-color: transparent; background: transparent; box-shadow: 0 0 14px 4px color-mix(in srgb, var(--nc) 25%, transparent) !important; }
.vbc-node.vbc-obj:not(.vbc-media) > .vbc-body::after { content: ''; position: absolute; right: 6px; top: 6px; width: 9px; height: 9px; border-radius: 2px; transform: rotate(45deg); background: var(--nc); opacity: .9; pointer-events: none; }
.vbc-colors .vbc-ci { width: 30px; height: 30px; padding: 0; border: 2px dashed #8A949A; border-radius: 8px; background: transparent; cursor: pointer; flex: none; }

/* ROUND 10B — the alignment pop-ups (outside the board, so they need their own icon style) */
.vbc-alpop svg, .vbr-alpop svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.vbc-alpop .vbc-sbtn { color: #00E85A; }
.vbc-alpop .vbc-sbtn.on, .vbr-alpop .vbr-btn.on { background: #00E85A; color: #141414; }
.vbr-alpop { display: flex; gap: 2px; padding: 6px; }
.vbc-pop.vbc-alpop, .vbr-pop.vbr-alpop { min-width: 0; width: auto; max-width: none; }
