diff --git a/bin/css/products.css b/bin/css/products.css
index d1af16b6421d8f68e6984be5dc30741296ee0689..5e062714a27bcc6b62fafa843250096e734ec279 100644
--- a/bin/css/products.css
+++ b/bin/css/products.css
@@ -904,13 +904,17 @@
 }
 
 .quiqqer-products-product .product-close-button {
-    font-size: 1.8em;
-    line-height: 30px;
-    margin-top: 2rem;
+    font-size: 24px;
+    line-height: 24px;
     text-align: right;
     width: 30px;
 }
 
+.quiqqer-products-product .product-close-button .fa {
+    font-size: inherit;
+    line-height: inherit;
+}
+
 .product-data .product-data-price .qui-products-price-display {
     text-align: left;
 }
@@ -1204,4 +1208,13 @@ li.product-data-more-tabs-tab.active {
 
 .product-productsList header h1 {
     font-size: 2rem;
+}
+
+/********************/
+/* Visited Products */
+/********************/
+.quiqqer-products-control-visitedProducts .quiqqer-bricks-children-slider-child,
+.product-similar-products .quiqqer-bricks-children-slider-child,
+.product-equipment-products .quiqqer-bricks-children-slider-child {
+    width: calc(100% / 3 + 3px);
 }
\ No newline at end of file
diff --git a/quiqqer/products/src/QUI/ERP/Products/Controls/Products/ProductVariant.html b/quiqqer/products/src/QUI/ERP/Products/Controls/Products/ProductVariant.html
new file mode 100644
index 0000000000000000000000000000000000000000..8696c714f55f284643838733264c7011a097b21d
--- /dev/null
+++ b/quiqqer/products/src/QUI/ERP/Products/Controls/Products/ProductVariant.html
@@ -0,0 +1,215 @@
+{* template settings *}
+{assign var=hideEmptyFields value=QUI::getRewrite()->getProject()->getConfig('templateCologne.settings.hideEmptyFields')}
+
+<article>
+    {template_event name="quiqqer::products::product::begin" Product=$Product}
+
+    {$jsonLd}
+
+    <div class="grid-50 mobile-grid-100 grid-parent product-gallery">
+        {$Gallery->create()}
+    </div>
+
+    <div class="grid-50 mobile-grid-100 grid-parent product-data">
+        <header class="page-content-header">
+            <h1>{$Product->getTitle()}</h1>
+            <p class="product-data-sku text-muted">{$Product->getFieldValue("FIELD_PRODUCT_NO")}</p>
+        </header>
+
+        <div class="page-content-header-description">
+            {$Product->getDescription()}
+        </div>
+
+        <div class="product-data-price">
+            {if $Site->getProject()->getConfig('templateCologne.settings.showRetailPrice')}
+                {if $Product->hasOfferPrice()}
+                    {*<!-- Offer price (Angebotspreis) -->*}
+                    <div class="product-data-price-retail text-muted">
+                        {$PriceOldDisplay->create()}
+                    </div>
+                {elseif $PriceRetailDisplay && $Price->getPrice() < $PriceRetail->getPrice()}
+                    {*<!-- Retail price (UVP) -->*}
+                    <div class="product-data-price-retail text-muted">
+                        {$PriceRetailDisplay->create()}
+                    </div>
+                {/if}
+            {/if}
+            <div class="product-data-price-main">
+                {$PriceDisplay->create()}
+            </div>
+        </div>
+
+        <div class="product-data-fields">
+            {foreach $fields as $Field}
+            <div class="grid-50 mobile-grid-50 grid-parent product-data-fields-title">
+                {$Field->getTitle()}:
+            </div>
+            <div class="grid-50 mobile-grid-50 grid-parent product-data-fields-value">
+                {$Field->getValue()}
+            </div>
+            {/foreach}
+        </div>
+
+        {if count($productAttributeGroups)}
+        <div class="product-data-fieldlist">
+            {foreach $productAttributeGroups as $Field}
+            {$Field->getView()->create()}
+            {/foreach}
+        </div>
+        {/if}
+
+        {if count($productAttributeList)}
+        <div class="product-data-fieldlist">
+            {foreach $productAttributeList as $Field}
+            {$Field->getView()->create()}
+            {/foreach}
+        </div>
+        {/if}
+
+        <div class="product-data-actionButtons">
+            {template_event name="quiqqer::products::product::buttons::begin" Product=$Product}
+            {$buttonsHtml}
+            {template_event name="quiqqer::products::product::buttons::end" Product=$Product}
+        </div>
+    </div>
+
+    {assign var=ContentField value=$Product->getField(6)}
+
+    <div class="product-data-more">
+        <div class="product-data-more-prev">
+            <span class="fa fa-angle-left"></span>
+        </div>
+        <div class="product-data-more-tabsContainer">
+            <ul class="product-data-more-tabs" role="tablist">
+                {if $ContentField}
+                <li class="product-data-more-tabs-tab active"
+                    aria-controls="panelDescription" role="tab" tabindex="0" aria-selected="true"
+                >
+                    <a href="#panelDescription">
+                        {$ContentField->getTitle()}
+                    </a>
+                </li>
+                {/if}
+
+                <li class="product-data-more-tabs-tab" aria-controls="panelDetails" role="tab" tabindex="-1">
+                    <a href="#panelDetails">
+                        {locale group="quiqqer/products" var="control.product.fields.details"}
+                    </a>
+                </li>
+
+                {if $Files}
+                <li class="product-data-more-tabs-tab" aria-controls="panelFiles" role="tab" tabindex="-1">
+                    <a href="#panelFiles">
+                        {locale group="quiqqer/products" var="control.product.fields.files"}
+                    </a>
+                </li>
+                {/if}
+
+                {foreach $detailFields as $Field}
+                <li class="product-data-more-tabs-tab"
+                    aria-controls="panelF{$Field->getId()}"
+                    role="tab"
+                    tabindex="-1"
+                >
+                    <a href="#panelF{$Field->getId()}">
+                        {$Field->getTitle()}
+                    </a>
+                </li>
+                {/foreach}
+            </ul>
+        </div>
+        <div class="product-data-more-next">
+            <span class="fa fa-angle-right"></span>
+        </div>
+
+        <div class="product-data-more-sheets">
+            {if $ContentField}
+            <section class="product-data-more-sheet" id="panelDescription" role="tabpanel"
+                     aria-labelledby="panelDescription" tabindex="0"
+            >
+                {$Product->getContent()}
+            </section>
+            {/if}
+
+            <section class="product-data-more-sheet hide" id="panelDetails" role="tabpanel"
+                     aria-labelledby="panelDetails" tabindex="0" aria-hidden="true"
+            >
+                <div class="product-data-more-details-description">
+                    {$Product->getDescription()}
+                </div>
+
+                {if count($details)}
+                <table class="product-data-more-details-table">
+                    {foreach $details as $Field}
+                    {if !empty($Field->getValue()) || is_numeric($Field->getValue())}
+                    <tr>
+                        <td>
+                            {$Field->getView()->create()}
+                        </td>
+                    </tr>
+                    {else}
+                    <tr>
+                        <td>
+                            <div class="quiqqer-product-field-title">
+                                {$Field->getTitle()}
+                            </div>
+                            <div class="quiqqer-product-field-value">
+                                ---
+                            </div>
+                        </td>
+                    </tr>
+                    {/if}
+                    {/foreach}
+                </table>
+                {/if}
+            </section>
+
+            {if $Files}
+            <section class="product-data-more-sheet hide" id="panelFiles" role="tabpanel"
+                     aria-labelledby="panelFiles" tabindex="0" aria-hidden="true"
+            >
+                {$Files->create()}
+            </section>
+            {/if}
+
+            {foreach $detailFields as $Field}
+            <section class="product-data-more-sheet hide" id="panelF{$Field->getId()}" role="tabpanel"
+                     aria-labelledby="panelF{$Field->getId()}" tabindex="0" aria-hidden="true"
+            >
+                {control control="QUI\ERP\Products\Controls\Products\ProductFieldDetails" Field=$Field Product=$Product}
+            </section>
+            {/foreach}
+        </div>
+    </div>
+
+    {template_event name="quiqqer::products::product::middle" Product=$Product}
+
+    {* Product Fields *}
+    {foreach $productFields as $fieldData}
+    <section class="product-fields-products">
+        <header>
+            <h3>
+                {$fieldData.Field->getTitle()}
+            </h3>
+        </header>
+        {assign var=t value=$fieldData.Slider->setAttribute('data-qui-options-usemobile', true)}
+        {$fieldData.Slider->create()}
+    </section>
+    {/foreach}
+
+    {template_event name="quiqqer::products::product::middle-2" Product=$Product}
+
+    {if isset($VisitedProducts)}
+    <section class="product-similar-products">
+        <header>
+            <h3>
+                {locale group="quiqqer/products" var="brick.control.VisitedProducts.title"}
+            </h3>
+        </header>
+        {assign var=t value=$VisitedProducts->getSlider()->setAttribute('data-qui-options-usemobile', true)}
+        {$VisitedProducts->create()}
+    </section>
+    {/if}
+
+    {template_event name="quiqqer::products::product::end" Product=$Product}
+</article>