diff --git a/src/lib/components/ImageUploadBox.svelte b/src/lib/components/ImageUploadBox.svelte
new file mode 100644
index 0000000..3e66872
--- /dev/null
+++ b/src/lib/components/ImageUploadBox.svelte
@@ -0,0 +1,190 @@
+
+
+
+
+ {#if imageSrc}
+

+ {:else}
+
Kein Bild
+ {/if}
+
+
+
+ {#if imagePath}
+
+ {/if}
+ {#if uploading}
+ Lade …
+ {/if}
+
+
+
+Max. 10 MB. JPG, PNG, WebP, GIF oder AVIF.
+
+
diff --git a/src/lib/components/RecipeEditor.svelte b/src/lib/components/RecipeEditor.svelte
index cc12717..7fa9977 100644
--- a/src/lib/components/RecipeEditor.svelte
+++ b/src/lib/components/RecipeEditor.svelte
@@ -1,10 +1,8 @@
-
+
Bild
-
-
- {#if imageSrc}
-

- {:else}
-
Kein Bild
- {/if}
-
-
-
- {#if imagePath}
-
- {/if}
- {#if uploading}
- Lade …
- {/if}
-
-
-
- Max. 10 MB. JPG, PNG, WebP, GIF oder AVIF.
+ onimagechange?.(p)}
+ />
@@ -396,67 +296,6 @@
border-radius: 12px;
padding: 1rem;
}
- .image-row {
- display: flex;
- gap: 1rem;
- align-items: flex-start;
- flex-wrap: wrap;
- }
- .image-preview {
- width: 160px;
- aspect-ratio: 16 / 10;
- border-radius: 10px;
- overflow: hidden;
- background: #eef3ef;
- border: 1px solid #e4eae7;
- flex-shrink: 0;
- }
- .image-preview img {
- width: 100%;
- height: 100%;
- object-fit: cover;
- display: block;
- }
- .image-preview.empty {
- display: grid;
- place-items: center;
- color: #999;
- font-size: 0.85rem;
- }
- .image-preview .placeholder {
- padding: 0 0.5rem;
- text-align: center;
- }
- .image-actions {
- display: flex;
- flex-wrap: wrap;
- gap: 0.5rem;
- align-items: center;
- }
- .image-actions .btn {
- display: inline-flex;
- align-items: center;
- gap: 0.4rem;
- padding: 0.55rem 0.85rem;
- min-height: 40px;
- font-size: 0.9rem;
- }
- .upload-status {
- color: #666;
- font-size: 0.9rem;
- }
- .file-input {
- position: absolute;
- width: 1px;
- height: 1px;
- opacity: 0;
- pointer-events: none;
- }
- .image-hint {
- margin: 0.6rem 0 0;
- color: #888;
- font-size: 0.8rem;
- }
.block h2 {
font-size: 1.05rem;
margin: 0 0 0.75rem;