diff --git a/src/lib/components/ribbon/RibbonButton.svelte b/src/lib/components/ribbon/RibbonButton.svelte
index e93b525..6f35bca 100644
--- a/src/lib/components/ribbon/RibbonButton.svelte
+++ b/src/lib/components/ribbon/RibbonButton.svelte
@@ -34,17 +34,26 @@
} = $props();
const ICON_SIZE = { big: 28, small: 14, icon: 20 } as const;
+
+ // Nothing to split when the whole button opens the menu, so the caret joins the
+ // column under the label instead of sitting beside the icon.
+ let stackCaret = $derived(caret && !onCaret && variant === 'big');
{#snippet face(withLabel = true)}
{#if content}{@render content()}
{:else if icon}{/if}
- {#if caret && !onCaret}
+ {#if caret && !onCaret && !stackCaret}
{/if}
{#if withLabel && label && variant !== 'icon'}{label}{/if}
+
+ {#if variant === 'big' && !onCaret}
+ {#if caret}{/if}
+ {/if}
{/snippet}
{#if caret && onCaret}
@@ -67,7 +76,15 @@
{:else}
-