/* Content: image node */ .tiptap-image-placeholder { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border: 1px dashed var(--color-zinc-700); border-radius: 0.5rem; color: var(--color-zinc-500); font-size: 0.875rem; cursor: pointer; transition: background-color 0.15s, border-color 0.15s; } .tiptap-image-placeholder:hover { background-color: var(--color-zinc-800); border-color: var(--color-zinc-600); color: var(--color-zinc-400); } .tiptap-image-placeholder-close { margin-left: auto; display: flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 0.25rem; color: var(--color-zinc-500); transition: color 0.1s, background-color 0.1s; } .tiptap-image-placeholder-close:hover { color: #ef4444; background-color: rgba(239, 68, 68, 0.1); } .tiptap-image-container { position: relative; display: inline-block; max-width: 100%; } .tiptap-image { display: block; max-width: 100%; height: auto; border-radius: 0.5rem; transition: opacity 0.2s ease; } .tiptap-image-container.is-selected .tiptap-image { outline: none; box-shadow: none; } .tiptap-image-container.is-loading { display: inline-block; } .tiptap-image-container.is-loading .tiptap-image { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; pointer-events: none; } .tiptap-image-load-skeleton { position: absolute; inset: 0; width: 100%; height: 100%; } .tiptap-image-uploading { position: relative; display: inline-block; max-width: 100%; border-radius: 0.5rem; overflow: hidden; background-color: var(--color-zinc-900); } .tiptap-image-uploading-preview { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0.55; filter: blur(2px); } .tiptap-image-uploading-skeleton { position: absolute; inset: 0; width: 100%; height: 100%; } .tiptap-image-uploading-label { position: absolute; bottom: 10px; left: 10px; padding: 4px 10px; background-color: rgba(39, 39, 42, 0.85); color: var(--color-zinc-100); font-size: 0.75rem; font-weight: 500; border-radius: 0.25rem; letter-spacing: 0.01em; } .tiptap-image-container.is-errored { display: inline-block; } .tiptap-image-container.is-errored .tiptap-image { display: none; } .tiptap-image-error { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 14px 16px; border: 1px dashed var(--color-zinc-700); border-radius: 0.5rem; color: var(--color-zinc-500); font-size: 0.875rem; font-weight: 500; } /* Overlay: image resize handles */ .tiptap-image-resize-handle { position: absolute; top: 50%; transform: translateY(-50%); width: 5px; height: 56px; max-height: 50%; border-radius: 3px; background-color: var(--color-accent-500); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); cursor: ew-resize; touch-action: none; opacity: 0; transition: opacity 0.15s, background-color 0.15s; } .tiptap-image-resize-handle.left { left: 8px; } .tiptap-image-resize-handle.right { right: 8px; } .tiptap-image-container:hover .tiptap-image-resize-handle, .tiptap-image-container.is-selected .tiptap-image-resize-handle { opacity: 1; } .tiptap-image-resize-handle:hover { background-color: var(--color-accent-400); } .tiptap-image-alt { margin-top: 0.25rem; font-size: 0.8125rem; line-height: 1.4; color: var(--color-gray-500); text-align: left; } .tiptap-image-node--align-left { text-align: left; } .tiptap-image-node--align-center { text-align: center; } .tiptap-image-node--align-right { text-align: right; }