diff --git a/src/templates/html/com_kunena/category/index.html b/src/html/com_kunena/category/index.html
similarity index 100%
rename from src/templates/html/com_kunena/category/index.html
rename to src/html/com_kunena/category/index.html
diff --git a/src/templates/html/com_kunena/category/default.php b/src/html/com_kunena/category/mobile.php
similarity index 100%
rename from src/templates/html/com_kunena/category/default.php
rename to src/html/com_kunena/category/mobile.php
diff --git a/src/templates/html/com_kunena/topic/index.html b/src/html/com_kunena/topic/index.html
similarity index 100%
rename from src/templates/html/com_kunena/topic/index.html
rename to src/html/com_kunena/topic/index.html
diff --git a/src/templates/html/com_osmembership/plan/index.html b/src/html/com_osmembership/plan/index.html
similarity index 100%
rename from src/templates/html/com_osmembership/plan/index.html
rename to src/html/com_osmembership/plan/index.html
diff --git a/src/templates/html/com_osmembership/plans/index.html b/src/html/com_osmembership/plans/index.html
similarity index 100%
rename from src/templates/html/com_osmembership/plans/index.html
rename to src/html/com_osmembership/plans/index.html
diff --git a/src/templates/html/com_osmembership/plans/default.php b/src/html/com_osmembership/plans/mobile.php
similarity index 100%
rename from src/templates/html/com_osmembership/plans/default.php
rename to src/html/com_osmembership/plans/mobile.php
diff --git a/src/templates/html/mod_acymailing/index.html b/src/html/mod_acymailing/index.html
similarity index 100%
rename from src/templates/html/mod_acymailing/index.html
rename to src/html/mod_acymailing/index.html
diff --git a/src/templates/html/mod_acymailing/default.php b/src/html/mod_acymailing/mobile.php
similarity index 100%
rename from src/templates/html/mod_acymailing/default.php
rename to src/html/mod_acymailing/mobile.php
diff --git a/src/templates/html/mod_articles_latest/index.html b/src/html/mod_cblogin/index.html
similarity index 100%
rename from src/templates/html/mod_articles_latest/index.html
rename to src/html/mod_cblogin/index.html
diff --git a/src/templates/html/mod_cblogin/default.php b/src/html/mod_cblogin/mobile.php
similarity index 97%
rename from src/templates/html/mod_cblogin/default.php
rename to src/html/mod_cblogin/mobile.php
index 568ee74..4011014 100644
--- a/src/templates/html/mod_cblogin/default.php
+++ b/src/html/mod_cblogin/mobile.php
@@ -11,8 +11,13 @@
defined('_JEXEC') or die;
+use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
+// Ensure module language file is loaded
+$lang = Factory::getLanguage();
+$lang->load('mod_cblogin', JPATH_SITE);
+
$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx', ''), ENT_COMPAT, 'UTF-8');
// Add responsive wrapper class
diff --git a/src/templates/html/mod_breadcrumbs/index.html b/src/html/mod_comprofilerOnline/index.html
similarity index 100%
rename from src/templates/html/mod_breadcrumbs/index.html
rename to src/html/mod_comprofilerOnline/index.html
diff --git a/src/templates/html/mod_comprofilerOnline/default.php b/src/html/mod_comprofilerOnline/mobile.php
similarity index 95%
rename from src/templates/html/mod_comprofilerOnline/default.php
rename to src/html/mod_comprofilerOnline/mobile.php
index f595861..dac596b 100644
--- a/src/templates/html/mod_comprofilerOnline/default.php
+++ b/src/html/mod_comprofilerOnline/mobile.php
@@ -11,8 +11,13 @@
defined('_JEXEC') or die;
+use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
+// Ensure module language file is loaded
+$lang = Factory::getLanguage();
+$lang->load('mod_comprofilerOnline', JPATH_SITE);
+
$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx', ''), ENT_COMPAT, 'UTF-8');
// Add responsive wrapper class
diff --git a/src/templates/html/mod_cblogin/index.html b/src/html/mod_hikashop_cart/index.html
similarity index 100%
rename from src/templates/html/mod_cblogin/index.html
rename to src/html/mod_hikashop_cart/index.html
diff --git a/src/templates/html/mod_hikashop_cart/default.php b/src/html/mod_hikashop_cart/mobile.php
similarity index 100%
rename from src/templates/html/mod_hikashop_cart/default.php
rename to src/html/mod_hikashop_cart/mobile.php
diff --git a/src/templates/html/mod_comprofilerOnline/index.html b/src/html/mod_k2_content/index.html
similarity index 100%
rename from src/templates/html/mod_comprofilerOnline/index.html
rename to src/html/mod_k2_content/index.html
diff --git a/src/templates/html/mod_k2_content/default.php b/src/html/mod_k2_content/mobile.php
similarity index 100%
rename from src/templates/html/mod_k2_content/default.php
rename to src/html/mod_k2_content/mobile.php
diff --git a/src/templates/html/mod_hikashop_cart/index.html b/src/html/mod_kunenalatest/index.html
similarity index 100%
rename from src/templates/html/mod_hikashop_cart/index.html
rename to src/html/mod_kunenalatest/index.html
diff --git a/src/templates/html/mod_kunenalatest/default.php b/src/html/mod_kunenalatest/mobile.php
similarity index 100%
rename from src/templates/html/mod_kunenalatest/default.php
rename to src/html/mod_kunenalatest/mobile.php
diff --git a/src/templates/html/mod_k2_content/index.html b/src/html/mod_kunenalogin/index.html
similarity index 100%
rename from src/templates/html/mod_k2_content/index.html
rename to src/html/mod_kunenalogin/index.html
diff --git a/src/templates/html/mod_kunenalogin/default.php b/src/html/mod_kunenalogin/mobile.php
similarity index 100%
rename from src/templates/html/mod_kunenalogin/default.php
rename to src/html/mod_kunenalogin/mobile.php
diff --git a/src/templates/html/mod_kunenalatest/index.html b/src/html/mod_kunenasearch/index.html
similarity index 100%
rename from src/templates/html/mod_kunenalatest/index.html
rename to src/html/mod_kunenasearch/index.html
diff --git a/src/templates/html/mod_kunenasearch/default.php b/src/html/mod_kunenasearch/mobile.php
similarity index 100%
rename from src/templates/html/mod_kunenasearch/default.php
rename to src/html/mod_kunenasearch/mobile.php
diff --git a/src/templates/html/mod_kunenalogin/index.html b/src/html/mod_kunenastats/index.html
similarity index 100%
rename from src/templates/html/mod_kunenalogin/index.html
rename to src/html/mod_kunenastats/index.html
diff --git a/src/templates/html/mod_kunenastats/default.php b/src/html/mod_kunenastats/mobile.php
similarity index 100%
rename from src/templates/html/mod_kunenastats/default.php
rename to src/html/mod_kunenastats/mobile.php
diff --git a/src/html/mod_menu/index.html b/src/html/mod_menu/index.html
new file mode 100644
index 0000000..a07609c
--- /dev/null
+++ b/src/html/mod_menu/index.html
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/html/mod_menu/mainmenu.php b/src/html/mod_menu/mainmenu.php
new file mode 100644
index 0000000..0c43bdd
--- /dev/null
+++ b/src/html/mod_menu/mainmenu.php
@@ -0,0 +1,104 @@
+
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ *
+ * Main Menu - Mobile responsive collapsible dropdown menu override
+ * Bootstrap 5 responsive navbar with hamburger menu
+ */
+
+defined('_JEXEC') or die;
+
+use Joomla\CMS\Helper\ModuleHelper;
+
+$id = '';
+
+if ($tagId = $params->get('tag_id', '')) {
+ $id = ' id="' . $tagId . '"';
+}
+
+// Get module class suffix
+$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx', ''), ENT_COMPAT, 'UTF-8');
+
+// The menu class is deprecated. Use mod-menu instead
+?>
+
diff --git a/src/html/mod_menu/mainmenu_component.php b/src/html/mod_menu/mainmenu_component.php
new file mode 100644
index 0000000..0707118
--- /dev/null
+++ b/src/html/mod_menu/mainmenu_component.php
@@ -0,0 +1,64 @@
+
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ *
+ * Main Menu - Component item layout
+ */
+
+defined('_JEXEC') or die;
+
+use Joomla\CMS\Filter\OutputFilter;
+use Joomla\CMS\HTML\HTMLHelper;
+
+$attributes = [];
+
+if ($item->anchor_title) {
+ $attributes['title'] = $item->anchor_title;
+}
+
+if ($item->anchor_css) {
+ $attributes['class'] = $item->anchor_css;
+}
+
+if ($item->anchor_rel) {
+ $attributes['rel'] = $item->anchor_rel;
+}
+
+$linktype = $item->title;
+
+if ($item->menu_icon) {
+ // The link is an icon
+ if ($itemParams->get('menu_text', 1)) {
+ // If the link text is to be displayed, the icon is added with aria-hidden
+ $linktype = '' . $item->title;
+ } else {
+ // If the icon itself is the link, it needs a visually hidden text
+ $linktype = '' . $item->title . '';
+ }
+}
+
+if ($item->browserNav == 1) {
+ $attributes['target'] = '_blank';
+ $attributes['rel'] = 'noopener noreferrer';
+} elseif ($item->browserNav == 2) {
+ $options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,' . $params->get('window_open');
+
+ $attributes['onclick'] = "window.open(this.href, 'targetWindow', '" . $options . "'); return false;";
+}
+
+// Add dropdown toggle for items with children
+$linkClass = 'nav-link mod-menu-main__link';
+if ($item->deeper) {
+ $linkClass .= ' dropdown-toggle';
+ $attributes['data-bs-toggle'] = 'dropdown';
+ $attributes['role'] = 'button';
+ $attributes['aria-expanded'] = 'false';
+}
+
+$attributes['class'] = $linkClass;
+
+echo HTMLHelper::_('link', OutputFilter::ampReplace(htmlspecialchars($item->flink, ENT_COMPAT, 'UTF-8', false)), $linktype, $attributes);
diff --git a/src/html/mod_menu/mainmenu_heading.php b/src/html/mod_menu/mainmenu_heading.php
new file mode 100644
index 0000000..0b92a44
--- /dev/null
+++ b/src/html/mod_menu/mainmenu_heading.php
@@ -0,0 +1,37 @@
+
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ *
+ * Main Menu - Heading item layout
+ */
+
+defined('_JEXEC') or die;
+
+$title = $item->anchor_title ? ' title="' . $item->anchor_title . '"' : '';
+$anchor_css = $item->anchor_css ?: '';
+
+$linktype = $item->title;
+
+if ($item->menu_icon) {
+ // The link is an icon
+ if ($itemParams->get('menu_text', 1)) {
+ // If the link text is to be displayed, the icon is added with aria-hidden
+ $linktype = '' . $item->title;
+ } else {
+ // If the icon itself is the link, it needs a visually hidden text
+ $linktype = '' . $item->title . '';
+ }
+}
+
+// Add dropdown toggle for items with children
+$headingClass = 'nav-link mod-menu-main__heading';
+if ($item->deeper) {
+ $headingClass .= ' dropdown-toggle';
+}
+
+?>
+>
diff --git a/src/html/mod_menu/mainmenu_separator.php b/src/html/mod_menu/mainmenu_separator.php
new file mode 100644
index 0000000..2523962
--- /dev/null
+++ b/src/html/mod_menu/mainmenu_separator.php
@@ -0,0 +1,31 @@
+
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ *
+ * Main Menu - Separator item layout
+ */
+
+defined('_JEXEC') or die;
+
+$title = $item->anchor_title ? ' title="' . $item->anchor_title . '"' : '';
+$anchor_css = $item->anchor_css ?: '';
+
+$linktype = $item->title;
+
+if ($item->menu_icon) {
+ // The link is an icon
+ if ($itemParams->get('menu_text', 1)) {
+ // If the link text is to be displayed, the icon is added with aria-hidden
+ $linktype = '' . $item->title;
+ } else {
+ // If the icon itself is the link, it needs a visually hidden text
+ $linktype = '' . $item->title . '';
+ }
+}
+
+?>
+>
diff --git a/src/html/mod_menu/mainmenu_url.php b/src/html/mod_menu/mainmenu_url.php
new file mode 100644
index 0000000..abad710
--- /dev/null
+++ b/src/html/mod_menu/mainmenu_url.php
@@ -0,0 +1,69 @@
+
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ *
+ * Main Menu - URL item layout
+ */
+
+defined('_JEXEC') or die;
+
+use Joomla\CMS\Filter\OutputFilter;
+use Joomla\CMS\HTML\HTMLHelper;
+
+$attributes = [];
+
+if ($item->anchor_title) {
+ $attributes['title'] = $item->anchor_title;
+}
+
+if ($item->anchor_css) {
+ $attributes['class'] = $item->anchor_css;
+}
+
+if ($item->anchor_rel) {
+ $attributes['rel'] = $item->anchor_rel;
+}
+
+$linktype = $item->title;
+
+if ($item->menu_icon) {
+ // The link is an icon
+ if ($itemParams->get('menu_text', 1)) {
+ // If the link text is to be displayed, the icon is added with aria-hidden
+ $linktype = '' . $item->title;
+ } else {
+ // If the icon itself is the link, it needs a visually hidden text
+ $linktype = '' . $item->title . '';
+ }
+}
+
+if ($item->browserNav == 1) {
+ $attributes['target'] = '_blank';
+ $attributes['rel'] = 'noopener noreferrer';
+} elseif ($item->browserNav == 2) {
+ $options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,' . $params->get('window_open');
+
+ $attributes['onclick'] = "window.open(this.href, 'targetWindow', '" . $options . "'); return false;";
+}
+
+// Add dropdown toggle for items with children
+$linkClass = 'nav-link mod-menu-main__link';
+if ($item->deeper) {
+ $linkClass .= ' dropdown-toggle';
+ $attributes['data-bs-toggle'] = 'dropdown';
+ $attributes['role'] = 'button';
+ $attributes['aria-expanded'] = 'false';
+}
+
+// Merge existing class with our class
+if (isset($attributes['class'])) {
+ $attributes['class'] .= ' ' . $linkClass;
+} else {
+ $attributes['class'] = $linkClass;
+}
+
+echo HTMLHelper::_('link', OutputFilter::ampReplace(htmlspecialchars($item->flink, ENT_COMPAT, 'UTF-8', false)), $linktype, $attributes);
diff --git a/src/templates/html/mod_kunenasearch/index.html b/src/html/mod_osmembership/index.html
similarity index 100%
rename from src/templates/html/mod_kunenasearch/index.html
rename to src/html/mod_osmembership/index.html
diff --git a/src/templates/html/mod_osmembership/default.php b/src/html/mod_osmembership/mobile.php
similarity index 100%
rename from src/templates/html/mod_osmembership/default.php
rename to src/html/mod_osmembership/mobile.php
diff --git a/src/templates/html/mod_kunenastats/index.html b/src/html/mod_virtuemart_cart/index.html
similarity index 100%
rename from src/templates/html/mod_kunenastats/index.html
rename to src/html/mod_virtuemart_cart/index.html
diff --git a/src/templates/html/mod_virtuemart_cart/default.php b/src/html/mod_virtuemart_cart/mobile.php
similarity index 100%
rename from src/templates/html/mod_virtuemart_cart/default.php
rename to src/html/mod_virtuemart_cart/mobile.php
diff --git a/src/templates/html/mod_login/index.html b/src/html/mod_virtuemart_category/index.html
similarity index 100%
rename from src/templates/html/mod_login/index.html
rename to src/html/mod_virtuemart_category/index.html
diff --git a/src/templates/html/mod_virtuemart_category/default.php b/src/html/mod_virtuemart_category/mobile.php
similarity index 100%
rename from src/templates/html/mod_virtuemart_category/default.php
rename to src/html/mod_virtuemart_category/mobile.php
diff --git a/src/templates/html/mod_menu/index.html b/src/html/mod_virtuemart_currencies/index.html
similarity index 100%
rename from src/templates/html/mod_menu/index.html
rename to src/html/mod_virtuemart_currencies/index.html
diff --git a/src/templates/html/mod_virtuemart_currencies/default.php b/src/html/mod_virtuemart_currencies/mobile.php
similarity index 100%
rename from src/templates/html/mod_virtuemart_currencies/default.php
rename to src/html/mod_virtuemart_currencies/mobile.php
diff --git a/src/templates/html/mod_osmembership/index.html b/src/html/mod_virtuemart_manufacturer/index.html
similarity index 100%
rename from src/templates/html/mod_osmembership/index.html
rename to src/html/mod_virtuemart_manufacturer/index.html
diff --git a/src/templates/html/mod_virtuemart_manufacturer/default.php b/src/html/mod_virtuemart_manufacturer/mobile.php
similarity index 100%
rename from src/templates/html/mod_virtuemart_manufacturer/default.php
rename to src/html/mod_virtuemart_manufacturer/mobile.php
diff --git a/src/templates/html/mod_search/index.html b/src/html/mod_virtuemart_product/index.html
similarity index 100%
rename from src/templates/html/mod_search/index.html
rename to src/html/mod_virtuemart_product/index.html
diff --git a/src/templates/html/mod_virtuemart_product/default.php b/src/html/mod_virtuemart_product/mobile.php
similarity index 100%
rename from src/templates/html/mod_virtuemart_product/default.php
rename to src/html/mod_virtuemart_product/mobile.php
diff --git a/src/templates/index.html b/src/index.html
similarity index 100%
rename from src/templates/index.html
rename to src/index.html
diff --git a/src/templates/index.php b/src/index.php
similarity index 93%
rename from src/templates/index.php
rename to src/index.php
index 795669a..e50086d 100644
--- a/src/templates/index.php
+++ b/src/index.php
@@ -45,9 +45,9 @@ $document = $app->getDocument();
$wa = $document->getWebAssetManager();
// Template params
-$params_LightColorName = (string) $this->params->get('colorLightName', 'colors_standard'); // colors_standard|colors_alternative|colors_custom
+$params_LightColorName = (string) $this->params->get('colorLightName', 'standard'); // standard|custom
-$params_DarkColorName = (string) $this->params->get('colorDarkName', 'colors_standard'); // colors_standard|colors_alternative|colors_custom
+$params_DarkColorName = (string) $this->params->get('colorDarkName', 'standard'); // standard|custom
$params_googletagmanager = $this->params->get('googletagmanager', false);
$params_googletagmanagerid = $this->params->get('googletagmanagerid', null);
@@ -88,36 +88,6 @@ $templatePath = 'media/templates/site/mokocassiopeia';
// Core template CSS
$wa->useStyle('template.base'); // css/template.css
-// Color theme (light + optional dark)
-$colorLightKey = strtolower(preg_replace('/[^a-z0-9_.-]/i', '', $params_LightColorName));
-$colorDarkKey = strtolower(preg_replace('/[^a-z0-9_.-]/i', '', $params_DarkColorName));
-$lightKey = 'template.light.' . $colorLightKey;
-$darkKey = 'template.dark.' . $colorDarkKey;
-
-try {
- $wa->useStyle('template.light.colors_standard');
-} catch (\Throwable $e) {
- $wa->registerAndUseStyle('template.light.colors_standard', $templatePath . '/css/colors/light/colors_standard.css');
-}
-
-try {
- $wa->useStyle('template.dark.colors_standard');
-} catch (\Throwable $e) {
- $wa->registerAndUseStyle('template.dark.colors_standard', $templatePath . '/css/colors/dark/colors_standard.css');
-}
-
-try {
- $wa->useStyle($lightKey);
-} catch (\Throwable $e) {
- $wa->registerAndUseStyle('template.light.dynamic', $templatePath . '/css/colors/light/' . $colorLightKey . '.css');
-}
-
-try {
- $wa->useStyle($darkKey);
-} catch (\Throwable $e) {
- $wa->registerAndUseStyle('template.dark.dynamic', $templatePath . '/css/colors/dark/' . $colorDarkKey . '.css');
-}
-
// Scripts
$wa->useScript('template.js');
@@ -149,8 +119,6 @@ $fontStyles = '';
if ($params_FontScheme) {
if (stripos($params_FontScheme, 'https://') === 0) {
- $this->getPreloadManager()->preconnect('https://fonts.googleapis.com/', ['crossorigin' => 'anonymous']);
- $this->getPreloadManager()->preconnect('https://fonts.gstatic.com/', ['crossorigin' => 'anonymous']);
$this->getPreloadManager()->preload($params_FontScheme, ['as' => 'style', 'crossorigin' => 'anonymous']);
$wa->registerAndUseStyle('fontscheme.current', $params_FontScheme, [], [
'media' => 'print',
@@ -259,7 +227,23 @@ if ($this->params->get('fA6KitCode')) {
$params_leftIcon = htmlspecialchars($this->params->get('drawerLeftIcon', 'fa-solid fa-chevron-left'), ENT_COMPAT, 'UTF-8');
$params_rightIcon = htmlspecialchars($this->params->get('drawerRightIcon', 'fa-solid fa-chevron-right'), ENT_COMPAT, 'UTF-8');
+// Load theme palette stylesheets based on configuration
+$wa->useStyle('template.light.standard'); // css/theme/light.standard.css
+$wa->useStyle('template.dark.standard'); // css/theme/dark.standard.css
+
+// Load custom palettes only if selected in template configuration AND files exist
+if ($params_LightColorName === 'custom' && file_exists(JPATH_ROOT . '/media/templates/site/mokocassiopeia/css/theme/light.custom.css'))
+{
+ $wa->useStyle('template.light.custom');
+}
+if ($params_DarkColorName === 'custom' && file_exists(JPATH_ROOT . '/media/templates/site/mokocassiopeia/css/theme/dark.custom.css'))
+{
+ $wa->useStyle('template.dark.custom');
+}
+
+// Load user assets last (after all other styles and scripts)
$wa->useStyle('template.user'); // css/user.css
+$wa->useScript('user.js'); // js/user.js
?>
diff --git a/src/templates/joomla.asset.json b/src/joomla.asset.json
similarity index 81%
rename from src/templates/joomla.asset.json
rename to src/joomla.asset.json
index a63c0a5..a305b51 100644
--- a/src/templates/joomla.asset.json
+++ b/src/joomla.asset.json
@@ -46,6 +46,18 @@
"uri": "media/templates/site/mokocassiopeia/css/user.min.css",
"attributes": {"media": "all"}
},
+ {
+ "name": "user.js",
+ "type": "script",
+ "uri": "media/templates/site/mokocassiopeia/js/user.js",
+ "attributes": {"defer": true}
+ },
+ {
+ "name": "user.js.min",
+ "type": "script",
+ "uri": "media/templates/site/mokocassiopeia/js/user.min.js",
+ "attributes": {"defer": true}
+ },
{
"name": "template.font.osaka",
"type": "style",
@@ -65,62 +77,51 @@
"attributes": {"media": "all"}
},
{
- "name": "template.light.colors_standard",
+ "name": "template.light.standard",
"type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/light/colors_standard.css",
+ "uri": "media/templates/site/mokocassiopeia/css/theme/light.standard.css",
"attributes": {"media": "all"}
},
{
- "name": "template.light.colors_standard.min",
+ "name": "template.light.standard.min",
"type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/light/colors_standard.min.css",
+ "uri": "media/templates/site/mokocassiopeia/css/theme/light.standard.min.css",
"attributes": {"media": "all"}
},
{
- "name": "template.light.colors_custom",
+ "name": "template.light.custom",
"type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/light/colors_custom.css",
+ "uri": "media/templates/site/mokocassiopeia/css/theme/light.custom.css",
"attributes": {"media": "all"}
},
{
- "name": "template.light.colors_custom.min",
+ "name": "template.light.custom.min",
"type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/light/colors_custom.min.css",
+ "uri": "media/templates/site/mokocassiopeia/css/theme/light.custom.min.css",
"attributes": {"media": "all"}
},
{
- "name": "template.dark.colors_standard",
+ "name": "template.dark.standard",
"type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/dark/colors_standard.css",
+ "uri": "media/templates/site/mokocassiopeia/css/theme/dark.standard.css",
"attributes": {"media": "all"}
},
{
- "name": "template.dark.colors_standard.min",
+ "name": "template.dark.standard.min",
"type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/dark/colors_standard.min.css",
+ "uri": "media/templates/site/mokocassiopeia/css/theme/dark.standard.min.css",
"attributes": {"media": "all"}
},
{
- "name": "template.dark.colors_alternative",
+ "name": "template.dark.custom",
"type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/dark/colors_alternative.css",
+ "uri": "media/templates/site/mokocassiopeia/css/theme/dark.custom.css",
"attributes": {"media": "all"}
},
{
- "name": "template.dark.colors_alternative.min",
+ "name": "template.dark.custom.min",
"type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/dark/colors_alternative.min.css"
- },
- {
- "name": "template.dark.colors_custom",
- "type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/dark/colors_custom.css",
- "attributes": {"media": "all"}
- },
- {
- "name": "template.dark.colors_custom.min",
- "type": "style",
- "uri": "media/templates/site/mokocassiopeia/css/colors/dark/colors_custom.min.css",
+ "uri": "media/templates/site/mokocassiopeia/css/theme/dark.custom.min.css",
"attributes": {"media": "all"}
},
{
diff --git a/src/language/en-GB/tpl_mokocassiopeia.ini b/src/language/en-GB/tpl_mokocassiopeia.ini
index 0eb9c00..d3ae6ce 100644
--- a/src/language/en-GB/tpl_mokocassiopeia.ini
+++ b/src/language/en-GB/tpl_mokocassiopeia.ini
@@ -11,9 +11,7 @@
; VERSION: 03.06.02
; BRIEF: English (GB) language strings for the MokoCassiopeia Joomla template
;
-; ===== Template meta =====
-MOKOCASSIOPEIA="MokoCassiopeia Site template"
-TPL_MOKOCASSIOPEIA_XML_DESCRIPTION="
MokoCassiopeia Template Description
MokoCassiopeia 3.0 continues Joomla’s tradition of space-themed default templates— building on the legacy of Solarflare (Joomla 1.0), Milkyway (Joomla 1.5), and Protostar (Joomla 3.0).
This template is a customized fork of the Cassiopeia template introduced in Joomla 4, preserving its modern, accessible, and mobile-first foundation while introducing new stylistic enhancements and structural refinements specifically tailored for use by Moko Consulting.
Code Attribution
This template is based on the original Cassiopeia template developed by the Joomla! Project and released under the GNU General Public License.
Modifications and enhancements have been made by Moko Consulting in accordance with open-source licensing standards.
It includes integration with Bootstrap TOC, an open-source table of contents generator by A. Feld, licensed under the MIT License.
All third-party libraries and assets remain the property of their respective authors and are credited within their source files where applicable.
"
+; Note: Template metadata strings (name, description) are in tpl_mokocassiopeia.sys.ini
; ===== System / layout =====
TPL_MOKOCASSIOPEIA_DEVELOPMENTMODE_LABEL="Development Mode"
@@ -77,9 +75,9 @@ TPL_MOKOCASSIOPEIA_COLOR_NAME_STANDARD="Standard"
TPL_MOKOCASSIOPEIA_COLOR_NAME_CUSTOM="Custom"
; New labels for Theme tab dropdowns
TPL_MOKOCASSIOPEIA_COLOR_LIGHT_NAME_LABEL="Light colour palette"
-TPL_MOKOCASSIOPEIA_COLOR_LIGHT_NAME_DESC="Select a colour palette for light mode. Standard uses the default blue theme with comprehensive styling for all components. Custom allows you to create your own colour scheme - copy the template file from templates/colors_custom.css to media/templates/site/mokocassiopeia/css/colors/light/colors_custom.css and customise the CSS variables to match your brand."
+TPL_MOKOCASSIOPEIA_COLOR_LIGHT_NAME_DESC="Select a colour palette for light mode. Standard uses the default blue theme with comprehensive styling for all components. Custom allows you to create your own colour scheme - copy the template file from templates/theme_custom_light.css to media/templates/site/mokocassiopeia/css/theme/light.custom.css and customise the CSS variables to match your brand."
TPL_MOKOCASSIOPEIA_COLOR_DARK_NAME_LABEL="Dark colour palette"
-TPL_MOKOCASSIOPEIA_COLOR_DARK_NAME_DESC="Select a colour palette for dark mode. Standard uses the default blue theme optimised for dark backgrounds with proper contrast. Custom allows you to create your own colour scheme - copy the template file from templates/colors_custom.css to media/templates/site/mokocassiopeia/css/colors/dark/colors_custom.css and customise the CSS variables to match your brand."
+TPL_MOKOCASSIOPEIA_COLOR_DARK_NAME_DESC="Select a colour palette for dark mode. Standard uses the default blue theme optimised for dark backgrounds with proper contrast. Custom allows you to create your own colour scheme - copy the template file from templates/theme_custom_dark.css to media/templates/site/mokocassiopeia/css/theme/dark.custom.css and customise the CSS variables to match your brand."
; ===== Theme tab (core feature strings) =====
TPL_MOKO_THEME_FIELDSET="Theme"
diff --git a/src/administrator/language/en-GB/tpl_mokocassiopeia.sys.ini b/src/language/en-GB/tpl_mokocassiopeia.sys.ini
similarity index 62%
rename from src/administrator/language/en-GB/tpl_mokocassiopeia.sys.ini
rename to src/language/en-GB/tpl_mokocassiopeia.sys.ini
index 069405c..17019a0 100644
--- a/src/administrator/language/en-GB/tpl_mokocassiopeia.sys.ini
+++ b/src/language/en-GB/tpl_mokocassiopeia.sys.ini
@@ -34,4 +34,4 @@ TPL_MOKOCASSIOPEIA_POSITION_TOP_B="Top-b"
TPL_MOKOCASSIOPEIA_POSITION_TOPBAR="Top Bar"
TPL_MOKOCASSIOPEIA_POSITION_DRAWER_LEFT="Drawer-Left"
TPL_MOKOCASSIOPEIA_POSITION_DRAWER_RIGHT="Drawer-Right"
-TPL_MOKOCASSIOPEIA_XML_DESCRIPTION="
MokoCassiopeia Template Description
MokoCassiopeia 3.0 continues Joomla’s tradition of space-themed default templates— building on the legacy of Solarflare (Joomla 1.0), Milkyway (Joomla 1.5), and Protostar (Joomla 3.0).
This template is a customized fork of the Cassiopeia template introduced in Joomla 4, preserving its modern, accessible, and mobile-first foundation while introducing new stylistic enhancements and structural refinements specifically tailored for use by Moko Consulting.
Custom Colour Themes
To create a custom colour scheme, copy the template file templates/colors_custom.css to either media/templates/site/mokocassiopeia/css/colors/light/colors_custom.css or media/templates/site/mokocassiopeia/css/colors/dark/colors_custom.css. Customise the CSS variables to match your brand, then activate it in System → Site Templates → MokoCassiopeia → Theme tab by selecting "Custom" for the Light or Dark Mode Palette. For comprehensive documentation on all available CSS variables, see docs/CSS_VARIABLES.md.
Code Attribution
This template is based on the original Cassiopeia template developed by the Joomla! Project and released under the GNU General Public License.
Modifications and enhancements have been made by Moko Consulting in accordance with open-source licensing standards.
It includes integration with Bootstrap TOC, an open-source table of contents generator by A. Feld, licensed under the MIT License.
All third-party libraries and assets remain the property of their respective authors and are credited within their source files where applicable.
"
+TPL_MOKOCASSIOPEIA_XML_DESCRIPTION="
MokoCassiopeia Template Description
MokoCassiopeia 3.0 continues Joomla’s tradition of space-themed default templates— building on the legacy of Solarflare (Joomla 1.0), Milkyway (Joomla 1.5), and Protostar (Joomla 3.0).
This template is a customized fork of the Cassiopeia template introduced in Joomla 4, preserving its modern, accessible, and mobile-first foundation while introducing new stylistic enhancements and structural refinements specifically tailored for use by Moko Consulting.
Custom Colour Themes
To create a custom colour scheme, copy the template file templates/theme_custom_light.css to media/templates/site/mokocassiopeia/css/theme/light.custom.css or media/templates/site/mokocassiopeia/css/theme/dark.custom.css. Customise the CSS variables to match your brand, then activate it in System → Site Templates → MokoCassiopeia → Theme tab by selecting "Custom" for the Light or Dark Mode Palette. For comprehensive documentation on all available CSS variables, see docs/CSS_VARIABLES.md.
Code Attribution
This template is based on the original Cassiopeia template developed by the Joomla! Project and released under the GNU General Public License.
Modifications and enhancements have been made by Moko Consulting in accordance with open-source licensing standards.
It includes integration with Bootstrap TOC, an open-source table of contents generator by A. Feld, licensed under the MIT License.
All third-party libraries and assets remain the property of their respective authors and are credited within their source files where applicable.
"
diff --git a/src/language/en-US/tpl_mokocassiopeia.ini b/src/language/en-US/tpl_mokocassiopeia.ini
index 4c12993..82aa2bb 100644
--- a/src/language/en-US/tpl_mokocassiopeia.ini
+++ b/src/language/en-US/tpl_mokocassiopeia.ini
@@ -11,9 +11,7 @@
; VERSION: 03.06.02
; BRIEF: English (US) language strings for the MokoCassiopeia Joomla template
;
-; ===== Template meta =====
-MOKOCASSIOPEIA="MokoCassiopeia Site template"
-TPL_MOKOCASSIOPEIA_XML_DESCRIPTION="
MokoCassiopeia Template Description
MokoCassiopeia 3.0 continues Joomla’s tradition of space-themed default templates— building on the legacy of Solarflare (Joomla 1.0), Milkyway (Joomla 1.5), and Protostar (Joomla 3.0).
This template is a customized fork of the Cassiopeia template introduced in Joomla 4, preserving its modern, accessible, and mobile-first foundation while introducing new stylistic enhancements and structural refinements specifically tailored for use by Moko Consulting.
Code Attribution
This template is based on the original Cassiopeia template developed by the Joomla! Project and released under the GNU General Public License.
Modifications and enhancements have been made by Moko Consulting in accordance with open-source licensing standards.
It includes integration with Bootstrap TOC, an open-source table of contents generator by A. Feld, licensed under the MIT License.
All third-party libraries and assets remain the property of their respective authors and are credited within their source files where applicable.
"
+; Note: Template metadata strings (name, description) are in tpl_mokocassiopeia.sys.ini
; ===== System / layout =====
TPL_MOKOCASSIOPEIA_DEVELOPMENTMODE_LABEL="Development Mode"
@@ -77,9 +75,9 @@ TPL_MOKOCASSIOPEIA_COLOR_NAME_STANDARD="Standard"
TPL_MOKOCASSIOPEIA_COLOR_NAME_CUSTOM="Custom"
; New labels for Theme tab dropdowns
TPL_MOKOCASSIOPEIA_COLOR_LIGHT_NAME_LABEL="Light color palette"
-TPL_MOKOCASSIOPEIA_COLOR_LIGHT_NAME_DESC="Select a color palette for light mode. Standard uses the default blue theme with comprehensive styling for all components. Custom allows you to create your own color scheme - copy the template file from templates/colors_custom.css to media/templates/site/mokocassiopeia/css/colors/light/colors_custom.css and customize the CSS variables to match your brand."
+TPL_MOKOCASSIOPEIA_COLOR_LIGHT_NAME_DESC="Select a color palette for light mode. Standard uses the default blue theme with comprehensive styling for all components. Custom allows you to create your own color scheme - copy the template file from templates/theme_custom_light.css to media/templates/site/mokocassiopeia/css/theme/light.custom.css and customize the CSS variables to match your brand."
TPL_MOKOCASSIOPEIA_COLOR_DARK_NAME_LABEL="Dark color palette"
-TPL_MOKOCASSIOPEIA_COLOR_DARK_NAME_DESC="Select a color palette for dark mode. Standard uses the default blue theme optimized for dark backgrounds with proper contrast. Custom allows you to create your own color scheme - copy the template file from templates/colors_custom.css to media/templates/site/mokocassiopeia/css/colors/dark/colors_custom.css and customize the CSS variables to match your brand."
+TPL_MOKOCASSIOPEIA_COLOR_DARK_NAME_DESC="Select a color palette for dark mode. Standard uses the default blue theme optimized for dark backgrounds with proper contrast. Custom allows you to create your own color scheme - copy the template file from templates/theme_custom_dark.css to media/templates/site/mokocassiopeia/css/theme/dark.custom.css and customize the CSS variables to match your brand."
; ===== Theme tab (core feature strings) =====
TPL_MOKO_THEME_FIELDSET="Theme"
diff --git a/src/administrator/language/en-US/tpl_mokocassiopeia.sys.ini b/src/language/en-US/tpl_mokocassiopeia.sys.ini
similarity index 62%
rename from src/administrator/language/en-US/tpl_mokocassiopeia.sys.ini
rename to src/language/en-US/tpl_mokocassiopeia.sys.ini
index 2942d9b..af98009 100644
--- a/src/administrator/language/en-US/tpl_mokocassiopeia.sys.ini
+++ b/src/language/en-US/tpl_mokocassiopeia.sys.ini
@@ -34,4 +34,4 @@ TPL_MOKOCASSIOPEIA_POSITION_TOP_B="Top-b"
TPL_MOKOCASSIOPEIA_POSITION_TOPBAR="Top Bar"
TPL_MOKOCASSIOPEIA_POSITION_DRAWER_LEFT="Drawer-Left"
TPL_MOKOCASSIOPEIA_POSITION_DRAWER_RIGHT="Drawer-Right"
-TPL_MOKOCASSIOPEIA_XML_DESCRIPTION="
MokoCassiopeia Template Description
MokoCassiopeia 3.0 continues Joomla’s tradition of space-themed default templates— building on the legacy of Solarflare (Joomla 1.0), Milkyway (Joomla 1.5), and Protostar (Joomla 3.0).
This template is a customized fork of the Cassiopeia template introduced in Joomla 4, preserving its modern, accessible, and mobile-first foundation while introducing new stylistic enhancements and structural refinements specifically tailored for use by Moko Consulting.
Custom Color Themes
To create a custom color scheme, copy the template file templates/colors_custom.css to either media/templates/site/mokocassiopeia/css/colors/light/colors_custom.css or media/templates/site/mokocassiopeia/css/colors/dark/colors_custom.css. Customize the CSS variables to match your brand, then activate it in System → Site Templates → MokoCassiopeia → Theme tab by selecting "Custom" for the Light or Dark Mode Palette. For comprehensive documentation on all available CSS variables, see docs/CSS_VARIABLES.md.
Code Attribution
This template is based on the original Cassiopeia template developed by the Joomla! Project and released under the GNU General Public License.
Modifications and enhancements have been made by Moko Consulting in accordance with open-source licensing standards.
It includes integration with Bootstrap TOC, an open-source table of contents generator by A. Feld, licensed under the MIT License.
All third-party libraries and assets remain the property of their respective authors and are credited within their source files where applicable.
"
+TPL_MOKOCASSIOPEIA_XML_DESCRIPTION="
MokoCassiopeia Template Description
MokoCassiopeia 3.0 continues Joomla’s tradition of space-themed default templates— building on the legacy of Solarflare (Joomla 1.0), Milkyway (Joomla 1.5), and Protostar (Joomla 3.0).
This template is a customized fork of the Cassiopeia template introduced in Joomla 4, preserving its modern, accessible, and mobile-first foundation while introducing new stylistic enhancements and structural refinements specifically tailored for use by Moko Consulting.
Custom Color Themes
To create a custom color scheme, copy the template file templates/theme_custom_light.css to media/templates/site/mokocassiopeia/css/theme/light.custom.css or media/templates/site/mokocassiopeia/css/theme/dark.custom.css. Customize the CSS variables to match your brand, then activate it in System → Site Templates → MokoCassiopeia → Theme tab by selecting "Custom" for the Light or Dark Mode Palette. For comprehensive documentation on all available CSS variables, see docs/CSS_VARIABLES.md.
Code Attribution
This template is based on the original Cassiopeia template developed by the Joomla! Project and released under the GNU General Public License.
Modifications and enhancements have been made by Moko Consulting in accordance with open-source licensing standards.
It includes integration with Bootstrap TOC, an open-source table of contents generator by A. Feld, licensed under the MIT License.
All third-party libraries and assets remain the property of their respective authors and are credited within their source files where applicable.
diff --git a/src/templates/templateDetails.xml b/src/templateDetails.xml
similarity index 77%
rename from src/templates/templateDetails.xml
rename to src/templateDetails.xml
index 646857b..5b81628 100644
--- a/src/templates/templateDetails.xml
+++ b/src/templateDetails.xml
@@ -25,23 +25,23 @@
DEFGROUP: Joomla
INGROUP: MokoCassiopeia
PATH: templates/mokocassiopeia/templateDetails.xml
- VERSION: 03.06.03
+ VERSION: 03.08.04
BRIEF: Template manifest XML file for MokoCassiopeia
=========================================================================
-->
- https://mokoconsulting.tech/index.php?option=com_ars&view=update&task=stream&format=xml&id=1
+ https://raw.githubusercontent.com/mokoconsulting-tech/MokoCassiopeia/main/updates.xml
MokoCassiopeia
- 03.06.03
- 2026-01-30
+ 03.09.00
+ 2026-03-08Jonathan Miller || Moko Consultinghello@mokoconsulting.tech(C)GNU General Public License Version 3 - 2026 Moko Consulting
- TPL_MOKOCASSIOPEIA_XML_DESCRIPTION
+ MokoCassiopeia Template Description
MokoCassiopeia continues Joomla's tradition of space-themed default templates— building on the legacy of Solarflare (Joomla 1.0), Milkyway (Joomla 1.5), and Protostar (Joomla 3.0).
This template is a customized fork of the Cassiopeia template introduced in Joomla 4, preserving its modern, accessible, and mobile-first foundation while introducing new stylistic enhancements and structural refinements specifically tailored for use by Moko Consulting.
Custom Colour Themes
To create a custom colour scheme, copy the template file templates/light.custom.css to media/templates/site/mokocassiopeia/css/theme/light.custom.css or templates/dark.custom.css to media/templates/site/mokocassiopeia/css/theme/dark.custom.css. Customise the CSS variables to match your brand, then activate it in System → Site Templates → MokoCassiopeia → Theme tab by selecting "Custom" for the Light or Dark Mode Palette. For comprehensive documentation on all available CSS variables, see docs/CSS_VARIABLES.md.
Code Attribution
This template is based on the original Cassiopeia template developed by the Joomla! Project and released under the GNU General Public License.
Modifications and enhancements have been made by Moko Consulting in accordance with open-source licensing standards.
It includes integration with Bootstrap TOC, an open-source table of contents generator by A. Feld, licensed under the MIT License.
All third-party libraries and assets remain the property of their respective authors and are credited within their source files where applicable.
]]>1component.php
@@ -51,6 +51,7 @@
offline.phptemplateDetails.xmlhtml
+ languagemedia/templates/site/mokocassiopeia/css/editor.css
@@ -86,14 +87,11 @@
drawer-leftdrawer-right
-
- en-GB/tpl_mokocassiopeia.ini
- en-US/tpl_mokocassiopeia.ini
-
-
-
- en-GB/tpl_mokocassiopeia.sys.ini
- en-US/tpl_mokocassiopeia.sys.ini
+
+ language/en-GB/tpl_mokocassiopeia.ini
+ language/en-GB/tpl_mokocassiopeia.sys.ini
+ language/en-US/tpl_mokocassiopeia.ini
+ language/en-US/tpl_mokocassiopeia.sys.ini
@@ -189,25 +187,23 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
-
-
-
-
+
+
+
diff --git a/src/templates/component.php b/src/templates/component.php
deleted file mode 100644
index 9eeb946..0000000
--- a/src/templates/component.php
+++ /dev/null
@@ -1,210 +0,0 @@
-
-
- This file is part of a Moko Consulting project.
-
- SPDX-License-Identifier: GPL-3.0-or-later
-
-
-
- # FILE INFORMATION
- DEFGROUP: Joomla.Template.Site
- INGROUP: MokoCassiopeia
- REPO: https://github.com/mokoconsulting-tech/MokoCassiopeia
- PATH: ./templates/mokocassiopeia/component.php
- VERSION: 03.06.02
- BRIEF: Main template index file for MokoCassiopeia rendering site layout
- */
-
-
-defined('_JEXEC') or die;
-
-use Joomla\CMS\Factory;
-use Joomla\CMS\HTML\HTMLHelper;
-use Joomla\CMS\Language\Text;
-use Joomla\CMS\Uri\Uri;
-use Joomla\CMS\Component\ComponentHelper;
-
-/** @var Joomla\CMS\Document\HtmlDocument $this */
-
-$app = Factory::getApplication();
-$input = $app->getInput();
-$document = $app->getDocument();
-$wa = $document->getWebAssetManager();
-
-// Template params
-$params_LightColorName = (string) $this->params->get('colorLightName', 'colors_standard'); // colors_standard|colors_alternative|colors_custom
-
-$params_DarkColorName = (string) $this->params->get('colorDarkName', 'colors_standard'); // colors_standard|colors_alternative|colors_custom
-
-$params_googletagmanager = $this->params->get('googletagmanager', false);
-$params_googletagmanagerid = $this->params->get('googletagmanagerid', null);
-$params_googleanalytics = $this->params->get('googleanalytics', false);
-$params_googleanalyticsid = $this->params->get('googleanalyticsid', null);
-$params_custom_head_start = $this->params->get('custom_head_start', null);
-$params_custom_head_end = $this->params->get('custom_head_end', null);
-$params_developmentmode = $this->params->get('developmentmode', false);
-
-// Detecting Active Variables
-$option = $input->getCmd('option', '');
-$view = $input->getCmd('view', '');
-$layout = $input->getCmd('layout', '');
-$task = $input->getCmd('task', '');
-$itemid = $input->getCmd('Itemid', '');
-$sitenameR = $app->get('sitename'); // raw for title composition
-$sitename = htmlspecialchars($sitenameR, ENT_QUOTES, 'UTF-8');
-$menu = $app->getMenu()->getActive();
-$pageclass = $menu !== null ? $menu->getParams()->get('pageclass_sfx', '') : '';
-
-// Respect “Site Name in Page Titles” (0:none, 1:before, 2:after)
-$mode = (int) $app->get('sitename_pagetitles', 0);
-$pageTitle = trim($this->getTitle());
-$final = $pageTitle !== ''
- ? ($mode === 1 ? $sitenameR . ' - ' . $pageTitle
- : ($mode === 2 ? $pageTitle . ' - ' . $sitenameR : $pageTitle))
- : $sitenameR;
-$this->setTitle($final);
-
-// Template/Media path
-$templatePath = 'media/templates/site/mokocassiopeia';
-
-// Core template CSS
-$wa->useStyle('template.base'); // css/template.css
-
-// Color theme (light + optional dark)
-$colorLightKey = strtolower(preg_replace('/[^a-z0-9_.-]/i', '', $params_LightColorName));
-$colorDarkKey = strtolower(preg_replace('/[^a-z0-9_.-]/i', '', $params_DarkColorName));
-$lightKey = 'template.light.' . $colorLightKey;
-$darkKey = 'template.dark.' . $colorDarkKey;
-try {
- $wa->useStyle('template.light.colors_standard');
-} catch (\Throwable $e) {
- $wa->registerAndUseStyle('template.light.colors_standard', $templatePath . '/css/colors/light/colors_standard.css');
-}
-try {
- $wa->useStyle('template.dark.colors_standard');
-} catch (\Throwable $e) {
- $wa->registerAndUseStyle('template.dark.colors_standard', $templatePath . '/css/colors/dark/colors_standard.css');
-}
-try {
- $wa->useStyle($lightKey);
-} catch (\Throwable $e) {
- $wa->registerAndUseStyle('template.light.dynamic', $templatePath . '/css/colors/light/' . $colorLightKey . '.css');
-}
-try {
- $wa->useStyle($darkKey);
-} catch (\Throwable $e) {
- $wa->registerAndUseStyle('template.dark.dynamic', $templatePath . '/css/colors/dark/' . $colorDarkKey . '.css');
-}
-
-// Scripts
-$wa->useScript('template.js');
-
-// Load Osaka font for site title
-$wa->useStyle('template.font.osaka');
-
-/**
- * VirtueMart detection:
- * - Component must exist and be enabled
- */
-$isVirtueMartActive = ComponentHelper::isEnabled('com_virtuemart', true);
-
-if ($isVirtueMartActive) {
- /**
- * Load a VirtueMart-specific stylesheet defined in your template manifest.
- * This assumes you defined an asset named "template.virtuemart".
- */
- $wa->useStyle('vendor.vm');
-}
-
-// Font scheme (external or local) + CSS custom properties
-$params_FontScheme = $this->params->get('useFontScheme', false);
-$fontStyles = '';
-
-if ($params_FontScheme) {
- if (stripos($params_FontScheme, 'https://') === 0) {
- $this->getPreloadManager()->preconnect('https://fonts.googleapis.com/', ['crossorigin' => 'anonymous']);
- $this->getPreloadManager()->preconnect('https://fonts.gstatic.com/', ['crossorigin' => 'anonymous']);
- $this->getPreloadManager()->preload($params_FontScheme, ['as' => 'style', 'crossorigin' => 'anonymous']);
- $wa->registerAndUseStyle('fontscheme.current', $params_FontScheme, [], [
- 'media' => 'print',
- 'rel' => 'lazy-stylesheet',
- 'onload' => 'this.media=\'all\'',
- 'crossorigin' => 'anonymous'
- ]);
-
- if (preg_match_all('/family=([^?:]*):/i', $params_FontScheme, $matches) > 0) {
- $fontStyles = '--font-family-body: "' . str_replace('+', ' ', $matches[1][0]) . '", sans-serif;' . "\n";
- $fontStyles .= '--font-family-headings: "' . str_replace('+', ' ', isset($matches[1][1]) ? $matches[1][1] : $matches[1][0]) . '", sans-serif;' . "\n";
- $fontStyles .= '--font-weight-normal: 400;' . "\n";
- $fontStyles .= '--font-weight-headings: 700;';
- }
- } else {
- $wa->registerAndUseStyle('fontscheme.current', $params_FontScheme, ['version' => 'auto'], [
- 'media' => 'print',
- 'rel' => 'lazy-stylesheet',
- 'onload' => 'this.media=\'all\''
- ]);
- $this->getPreloadManager()->preload(
- $wa->getAsset('style', 'fontscheme.current')->getUri() . '?' . $this->getMediaVersion(),
- ['as' => 'style']
- );
- }
-}
-
-// Meta
-$this->setMetaData('viewport', 'width=device-width, initial-scale=1');
-
-if ($this->params->get('faKitCode')) {
- $faKit = "https://kit.fontawesome.com/" . $this->params->get('faKitCode') . ".js";
- HTMLHelper::_('script', $faKit, ['crossorigin' => 'anonymous']);
-} else {
- try {
- if($params_developmentmode){
- $wa->useStyle('vendor.fa7free.all');
- $wa->useStyle('vendor.fa7free.brands');
- $wa->useStyle('vendor.fa7free.fontawesome');
- $wa->useStyle('vendor.fa7free.regular');
- $wa->useStyle('vendor.fa7free.solid');
- } else {
- $wa->useStyle('vendor.fa7free.all.min');
- $wa->useStyle('vendor.fa7free.brands.min');
- $wa->useStyle('vendor.fa7free.fontawesome.min');
- $wa->useStyle('vendor.fa7free.regular.min');
- $wa->useStyle('vendor.fa7free.solid.min');
- }
- } catch (\Throwable $e) {
- if($params_developmentmode){
- $wa->registerAndUseStyle('vendor.fa7free.all.dynamic', $templatePath . '/vendor/fa7free/css/all.css');
- $wa->registerAndUseStyle('vendor.fa7free.brands.dynamic', $templatePath . '/vendor/fa7free/css/brands.css');
- $wa->registerAndUseStyle('vendor.fa7free.fontawesome.dynamic', $templatePath . '/vendor/fa7free/css/fontawesome.css');
- $wa->registerAndUseStyle('vendor.fa7free.regular.dynamic', $templatePath . '/vendor/fa7free/css/regular.css');
- $wa->registerAndUseStyle('vendor.fa7free.solid.dynamic', $templatePath . '/vendor/fa7free/css/solid.css');
- } else {
- $wa->registerAndUseStyle('vendor.fa7free.all.min.dynamic', $templatePath . '/vendor/fa7free/css/all.min.css');
- $wa->registerAndUseStyle('vendor.fa7free.brands.min.dynamic', $templatePath . '/vendor/fa7free/css/brands.min.css');
- $wa->registerAndUseStyle('vendor.fa7free.fontawesome.min.dynamic', $templatePath . '/vendor/fa7free/css/fontawesome.min.css');
- $wa->registerAndUseStyle('vendor.fa7free.regular.min.dynamic', $templatePath . '/vendor/fa7free/css/regular.min.css');
- $wa->registerAndUseStyle('vendor.fa7free.solid.min.dynamic', $templatePath . '/vendor/fa7free/css/solid.min.css');
- }
-
- }
-}
-$params_leftIcon = htmlspecialchars($this->params->get('drawerLeftIcon', 'fa-solid fa-chevron-left'), ENT_COMPAT, 'UTF-8');
-$params_rightIcon = htmlspecialchars($this->params->get('drawerRightIcon', 'fa-solid fa-chevron-right'), ENT_COMPAT, 'UTF-8');
-
-$wa->useStyle('template.user'); // css/user.css
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/templates/html/INDUSTRY_MODULES_README.md b/src/templates/html/INDUSTRY_MODULES_README.md
deleted file mode 100644
index fcb8452..0000000
--- a/src/templates/html/INDUSTRY_MODULES_README.md
+++ /dev/null
@@ -1,306 +0,0 @@
-# Industry Extension Module Mobile Responsive Overrides
-
-## Overview
-This directory contains mobile-responsive overrides for popular industry Joomla extensions, designed specifically for the MokoCassiopeia template.
-
-## Industry Extension Modules
-
-### 1. mod_k2_content (K2)
-K2 content display module featuring:
-- Responsive article/content cards
-- Optional images with hover effects
-- Metadata display (author, date, category, hits)
-- Introtext support
-- Read more links
-- Custom link support
-- Touch-friendly interactions
-
-### 2. mod_acymailing (AcyMailing)
-AcyMailing newsletter subscription module with:
-- Mobile-responsive form inputs
-- Touch-friendly form controls (48px on mobile)
-- 16px input font (prevents iOS zoom)
-- Intro and outro text support
-- Custom form styling that overrides inline styles
-- Accessible form structure
-
-### 3. mod_hikashop_cart (HikaShop)
-HikaShop shopping cart module offering:
-- Product list with images
-- Cart summary with item count and total
-- Touch-friendly remove buttons
-- Mobile-optimized cart display
-- Flexible action buttons layout
-- Empty cart state
-
-### 4. mod_kunenalatest (Kunena Forum)
-Kunena latest posts module with:
-- User avatars
-- Post metadata (author, date, category, hits, replies)
-- Post excerpts
-- Forum navigation links
-- Responsive card layouts
-- Touch-friendly post links
-
-### 5. mod_kunenalogin (Kunena Forum)
-Kunena login module featuring:
-- Login and logout states
-- User profile with avatar
-- Post count and karma display
-- Profile and private messages links
-- Touch-friendly form controls
-- Password recovery links
-
-### 6. mod_kunenasearch (Kunena Forum)
-Kunena forum search module with:
-- Configurable button positions (top/right/bottom/left)
-- Touch-friendly search input (48px on mobile)
-- 16px input font (prevents iOS zoom)
-- Icon-only or text button options
-- Accessible search form
-
-### 7. mod_kunenastats (Kunena Forum)
-Kunena statistics module offering:
-- Member count with icon
-- Latest member display
-- Message and topic counts
-- Today/yesterday topic counts
-- Responsive grid layout (1-3 columns)
-- Visual stat cards with icons
-
-### 8. mod_osmembership (OS Membership Pro)
-Membership Pro plans module with:
-- Responsive pricing cards
-- Plan images and descriptions
-- Feature lists with checkmarks
-- Pricing display with periods
-- Free plan highlighting
-- Touch-friendly subscribe buttons
-- Grid layout (1-3 columns)
-
-## Component Overrides
-
-### com_kunena (Kunena Forum)
-- Category list view with responsive cards
-- Mobile-optimized forum navigation
-- Touch-friendly category links
-
-### com_osmembership (OS Membership Pro)
-- Plans list with pricing table layout
-- Featured plan highlighting
-- Responsive grid (1-4 columns)
-- Touch-friendly subscription buttons
-
-## Mobile Responsive Features
-
-### Touch Target Sizes (WCAG 2.1 Compliant)
-- **Mobile (< 576px):** 48px minimum height
-- **Desktop (≥ 768px):** 44px minimum height
-
-### Font Sizes (iOS Zoom Prevention)
-- **Mobile:** 16px base font for inputs (prevents auto-zoom)
-- **Desktop:** 1rem (16px typically)
-
-### Responsive Breakpoints
-Using Bootstrap-aligned breakpoints:
-- `< 576px` - Mobile (xs)
-- `576px - 767px` - Tablet (sm-md)
-- `768px+` - Desktop (md+)
-
-### Layout Adaptations
-
-#### Mobile (< 576px)
-- Stacked content layouts
-- Full-width images
-- Vertical metadata lists
-- Larger touch targets (48px)
-- Stacked action buttons
-
-#### Desktop (≥ 768px)
-- Horizontal layouts where appropriate
-- Side-by-side image and content
-- Inline metadata
-- Enhanced hover effects
-- Horizontal button groups
-
-## CSS Architecture
-
-### BEM Naming Convention
-All modules use Block-Element-Modifier naming:
-
-```css
-.mod-k2-content /* Block */
-.mod-k2-content__title /* Element */
-.mod-k2-content__item--featured /* Modifier */
-```
-
-### CSS Variables Integration
-Styles integrate with template's color system:
-
-```css
---body-color
---link-color
---color-primary
---secondary-bg
---border-color
---border-radius
---gray-600
---success
---danger
-```
-
-## Accessibility Features
-
-All modules include:
-- ✅ Semantic HTML5 elements
-- ✅ ARIA labels and landmarks
-- ✅ Proper heading hierarchy
-- ✅ Keyboard navigation support
-- ✅ Screen reader friendly
-- ✅ Focus indicators
-- ✅ Touch-optimized controls
-- ✅ Alternative text for images
-
-## Browser Compatibility
-
-- ✅ Modern browsers (Chrome, Firefox, Safari, Edge)
-- ✅ iOS Safari (no zoom on input focus)
-- ✅ Android browsers
-- ✅ Touch and mouse input
-- ✅ All screen sizes (320px+)
-- ✅ Portrait and landscape orientations
-
-## File Structure
-
-```
-src/templates/html/
-├── mod_k2_content/
-│ ├── default.php
-│ └── index.html
-├── mod_acymailing/
-│ ├── default.php
-│ └── index.html
-├── mod_hikashop_cart/
-│ ├── default.php
-│ └── index.html
-└── mod_kunenalatest/
- ├── default.php
- └── index.html
-```
-
-## Usage
-
-These overrides are automatically used when:
-1. The MokoCassiopeia template is active
-2. The respective extensions are installed
-3. The modules are published
-
-No additional configuration required beyond standard module settings.
-
-## Extension Parameters
-
-All standard extension module parameters are fully supported. Each override respects the module's configuration options.
-
-## Customization
-
-### Override CSS Variables
-```css
-:root {
- --border-radius: 0.5rem;
- --color-primary: #your-color;
-}
-```
-
-### Add Custom Styles
-```css
-.mod-k2-content-responsive {
- max-width: 800px;
- margin: 0 auto;
-}
-```
-
-### Modify Templates
-Each PHP file can be modified to adjust HTML structure while maintaining mobile responsiveness.
-
-## Security
-
-- ✅ index.html security files in all directories
-- ✅ Proper input escaping with `htmlspecialchars()`
-- ✅ XSS prevention
-- ✅ Joomla security best practices (`_JEXEC` check)
-- ✅ No SQL injection vectors
-
-## Extension Compatibility
-
-### K2
-- Compatible with K2 2.x and 3.x
-- Supports all K2 module parameters
-- Image handling for various sizes
-- BBCode/HTML content support
-
-### AcyMailing
-- Compatible with AcyMailing 6.x+
-- Form styling overrides inline styles
-- Supports custom form layouts
-- Newsletter list integration
-
-### HikaShop
-- Compatible with HikaShop 4.x and 5.x
-- Product image display
-- Price formatting support
-- Tax calculations
-- Cart operations via AJAX
-
-### Kunena
-- Compatible with Kunena 5.x and 6.x
-- Avatar integration
-- BBCode parsing
-- Forum routing support
-- User profile links
-
-## Testing Checklist
-
-### General Testing
-- [ ] Test on mobile device (< 576px)
-- [ ] Test on tablet (576px - 767px)
-- [ ] Test on desktop (≥ 768px)
-- [ ] Verify touch targets are adequate
-- [ ] Test with screen reader
-- [ ] Check keyboard navigation
-- [ ] Verify ARIA labels
-
-### Extension-Specific Testing
-- [ ] K2: Test with/without images, various metadata options
-- [ ] AcyMailing: Test form submission, validation
-- [ ] HikaShop: Test add/remove items, cart update
-- [ ] Kunena: Test avatar display, post links, forum navigation
-
-## Documentation
-
-Each module follows the same pattern established by:
-- mod_search override
-- VirtueMart module overrides
-- Standard Joomla module overrides
-- Mobile-first responsive design
-- BEM naming convention
-
-## Related Documentation
-
-- `STANDARD_MODULES_README.md` - Standard Joomla module overrides
-- `VIRTUEMART_MODULES_README.md` - VirtueMart module overrides
-- `docs/CSS_VARIABLES.md` - Complete CSS variables reference
-- `docs/ROADMAP.md` - Template development roadmap
-
-## License
-
-Copyright (C) 2025 Moko Consulting
-Licensed under GNU General Public License version 2 or later
-
-## Support
-
-For issues or questions:
-- Review extension-specific documentation
-- Check CSS variables documentation
-- Consult extension and Joomla documentation
-- Verify module configuration in Joomla admin
-- Check extension compatibility versions
diff --git a/src/templates/html/STANDARD_MODULES_README.md b/src/templates/html/STANDARD_MODULES_README.md
deleted file mode 100644
index 508c8ec..0000000
--- a/src/templates/html/STANDARD_MODULES_README.md
+++ /dev/null
@@ -1,253 +0,0 @@
-# Standard Joomla & Community Builder Module Mobile Responsive Overrides
-
-## Overview
-This directory contains mobile-responsive overrides for standard Joomla and Community Builder modules, designed specifically for the MokoCassiopeia template.
-
-## Standard Joomla Modules
-
-### 1. mod_menu
-Main navigation menu module with:
-- Responsive navigation structure
-- BEM naming for easy styling
-- Support for all menu types
-- Semantic HTML5 nav element
-- Accessibility-friendly with ARIA labels
-
-### 2. mod_breadcrumbs
-Breadcrumb navigation module featuring:
-- Schema.org structured data
-- Responsive breadcrumb trail
-- Home icon support
-- Active page highlighting
-- Touch-friendly links
-
-### 3. mod_login
-User login form module with:
-- Login and logout states
-- Two-factor authentication support
-- Remember me functionality
-- Password recovery links
-- User registration links
-- Touch-friendly form inputs (48px on mobile)
-- 16px input font (prevents iOS zoom)
-
-### 4. mod_articles_latest
-Latest articles display module offering:
-- Responsive article cards
-- Optional metadata display (author, date, category, hits)
-- Schema.org Article markup
-- Introtext support
-- Read more links
-- Touch-friendly interactions
-
-## Community Builder Modules
-
-### 5. mod_cblogin
-Community Builder login module with:
-- Avatar display in logged-in state
-- Profile link button
-- Touch-friendly form controls
-- Remember me checkbox
-- Password/username recovery links
-- Registration link
-- Pre/post text support
-
-### 6. mod_comprofilerOnline
-Community Builder online users module featuring:
-- Online user count display
-- Members vs. guests breakdown
-- User list with avatars
-- Profile links
-- Online status indicators
-- Responsive card layouts
-
-## Mobile Responsive Features
-
-### Touch Target Sizes (WCAG 2.1 Compliant)
-- **Mobile (< 576px):** 48px minimum height
-- **Desktop (≥ 768px):** 44px minimum height
-
-### Font Sizes (iOS Zoom Prevention)
-- **Mobile:** 16px base font for inputs (prevents auto-zoom)
-- **Desktop:** 1rem (16px typically)
-
-### Responsive Breakpoints
-Using Bootstrap-aligned breakpoints:
-- `< 576px` - Mobile (xs)
-- `576px - 767px` - Tablet (sm-md)
-- `768px+` - Desktop (md+)
-
-### Layout Adaptations
-
-#### Mobile (< 576px)
-- Stacked form layouts
-- Full-width buttons
-- Larger touch targets (48px)
-- 16px input font size
-- Vertical link lists
-
-#### Tablet & Desktop (≥ 768px)
-- Inline button layouts where appropriate
-- Horizontal action groups
-- Enhanced hover effects
-- Optimized spacing
-
-## CSS Architecture
-
-### BEM Naming Convention
-All modules use Block-Element-Modifier naming:
-
-```css
-.mod-login /* Block */
-.mod-login__input /* Element */
-.mod-login__btn--submit /* Modifier */
-```
-
-### CSS Variables Integration
-Styles integrate with template's color system:
-
-```css
---body-color
---link-color
---link-hover-color
---color-primary
---secondary-bg
---border-color
---border-radius
---gray-600
---success
-```
-
-## Accessibility Features
-
-All modules include:
-- ✅ Semantic HTML5 elements
-- ✅ ARIA labels and landmarks
-- ✅ Proper form labeling
-- ✅ Keyboard navigation support
-- ✅ Screen reader friendly
-- ✅ Focus indicators
-- ✅ Touch-optimized controls
-- ✅ Schema.org structured data (where applicable)
-
-## Browser Compatibility
-
-- ✅ Modern browsers (Chrome, Firefox, Safari, Edge)
-- ✅ iOS Safari (no zoom on input focus)
-- ✅ Android browsers
-- ✅ Touch and mouse input
-- ✅ All screen sizes (320px+)
-- ✅ Portrait and landscape orientations
-
-## File Structure
-
-```
-src/templates/html/
-├── mod_menu/
-│ ├── default.php
-│ ├── default_url.php
-│ ├── default_component.php
-│ └── index.html
-├── mod_breadcrumbs/
-│ ├── default.php
-│ └── index.html
-├── mod_login/
-│ ├── default.php
-│ └── index.html
-├── mod_articles_latest/
-│ ├── default.php
-│ └── index.html
-├── mod_cblogin/
-│ ├── default.php
-│ └── index.html
-└── mod_comprofilerOnline/
- ├── default.php
- └── index.html
-```
-
-## Usage
-
-These overrides are automatically used when:
-1. The MokoCassiopeia template is active
-2. The respective modules are published
-3. No additional configuration required beyond standard module settings
-
-## Module Parameters
-
-All standard Joomla and Community Builder module parameters are fully supported. Each override respects the module's configuration options.
-
-## Customization
-
-### Override CSS Variables
-```css
-:root {
- --border-radius: 0.5rem;
- --color-primary: #your-color;
-}
-```
-
-### Add Custom Styles
-```css
-.mod-login-responsive {
- max-width: 400px;
- margin: 0 auto;
-}
-```
-
-### Modify Templates
-Each PHP file can be modified to adjust HTML structure while maintaining mobile responsiveness.
-
-## Security
-
-- ✅ index.html security files in all directories
-- ✅ Proper input escaping with `htmlspecialchars()`
-- ✅ XSS prevention
-- ✅ Joomla security best practices (`_JEXEC` check)
-- ✅ Form token validation
-
-## Testing Checklist
-
-### General Testing
-- [ ] Test on mobile device (< 576px)
-- [ ] Test on tablet (576px - 767px)
-- [ ] Test on desktop (≥ 768px)
-- [ ] Verify touch targets are adequate
-- [ ] Test with screen reader
-- [ ] Check keyboard navigation
-- [ ] Verify ARIA labels
-
-### Module-Specific Testing
-- [ ] mod_menu: Test menu types and levels
-- [ ] mod_breadcrumbs: Verify breadcrumb trail accuracy
-- [ ] mod_login: Test login/logout flows, 2FA
-- [ ] mod_articles_latest: Check various parameter combinations
-- [ ] mod_cblogin: Test CB login/logout with avatar
-- [ ] mod_comprofilerOnline: Verify user list display
-
-## Documentation
-
-Each module follows the same pattern established by:
-- mod_search override
-- VirtueMart module overrides
-- Comprehensive documentation
-- BEM naming convention
-- Mobile-first responsive design
-
-## Related Documentation
-
-- `VIRTUEMART_MODULES_README.md` - VirtueMart module overrides
-- `docs/CSS_VARIABLES.md` - Complete CSS variables reference
-- `docs/ROADMAP.md` - Template development roadmap
-
-## License
-
-Copyright (C) 2025 Moko Consulting
-Licensed under GNU General Public License version 2 or later
-
-## Support
-
-For issues or questions:
-- Review module-specific parameters
-- Check CSS variables documentation
-- Consult Joomla and Community Builder documentation
-- Verify module configuration in Joomla admin
diff --git a/src/templates/html/VIRTUEMART_MODULES_README.md b/src/templates/html/VIRTUEMART_MODULES_README.md
deleted file mode 100644
index 5dbf40b..0000000
--- a/src/templates/html/VIRTUEMART_MODULES_README.md
+++ /dev/null
@@ -1,228 +0,0 @@
-# VirtueMart Module Mobile Responsive Overrides
-
-## Overview
-This directory contains mobile-responsive overrides for VirtueMart e-commerce modules, designed specifically for the MokoCassiopeia template.
-
-## Modules Included
-
-### 1. mod_virtuemart_cart
-Shopping cart display module with:
-- Responsive product list with images
-- Touch-friendly remove buttons
-- Mobile-optimized cart summary
-- Flexible action buttons layout
-
-### 2. mod_virtuemart_product
-Product display module featuring:
-- Grid/list layout options
-- Responsive product cards
-- Mobile-optimized images
-- Touch-friendly action buttons
-
-### 3. mod_virtuemart_currencies
-Currency selector module with:
-- Custom styled select dropdown
-- Mobile-friendly touch targets
-- Accessible form controls
-- Icon indicators
-
-### 4. mod_virtuemart_category
-Category navigation module offering:
-- Hierarchical category display
-- Optional product counts
-- Image support for categories
-- Active state highlighting
-
-### 5. mod_virtuemart_manufacturer
-Manufacturer display module with:
-- Grid and list display modes
-- Logo/image display
-- Responsive card layouts
-- Hover effects
-
-## Mobile Responsive Features
-
-### Touch Targets
-- **Mobile (< 576px):** 48px minimum height
-- **Desktop (≥ 768px):** 44px minimum height
-- WCAG 2.1 AA compliant
-
-### Font Sizes
-- **Mobile:** 16px base (prevents iOS auto-zoom)
-- **Desktop:** 1rem (16px typically)
-
-### Responsive Breakpoints
-Using Bootstrap-aligned breakpoints:
-- `< 576px` - Mobile (xs)
-- `576px` - Small (sm)
-- `768px` - Medium (md)
-- `992px` - Large (lg)
-- `1200px` - Extra Large (xl)
-- `1400px` - Extra Extra Large (xxl)
-
-### Layout Adaptations
-
-#### Mobile (< 576px)
-- Single column layouts
-- Stacked action buttons
-- Full-width elements
-- Larger touch targets (48px)
-
-#### Tablet (576px - 767px)
-- 2-column grids for products/manufacturers
-- Inline action buttons where appropriate
-- 44px touch targets
-
-#### Desktop (≥ 768px)
-- 3-4 column grids
-- Horizontal button layouts
-- Optimized spacing
-- Enhanced hover effects
-
-## CSS Architecture
-
-### CSS Variables Integration
-All styles integrate with template's VirtueMart CSS variables:
-
-```css
-/* Surfaces & Colors */
---vm-surface
---vm-surface-2
---vm-text
---vm-text-strong
---vm-text-muted
---vm-border
---vm-price-color
-
-/* Layout */
---vm-block-radius
---vm-block-shadow
---vm-section-gap
-
-/* Buttons */
---vm-btn-primary-bg
---vm-btn-primary-text
---vm-btn-secondary-bg
---vm-btn-secondary-text
-```
-
-### BEM Naming Convention
-All modules use Block-Element-Modifier naming:
-
-```css
-.mod-vm-cart /* Block */
-.mod-vm-cart__header /* Element */
-.mod-vm-cart__item--active /* Modifier */
-```
-
-## Accessibility Features
-
-All modules include:
-- ✅ ARIA labels on interactive elements
-- ✅ Semantic HTML5 structure
-- ✅ Proper heading hierarchy
-- ✅ Keyboard navigation support
-- ✅ Screen reader friendly
-- ✅ Focus indicators
-- ✅ Touch-optimized controls
-
-## Browser Compatibility
-
-- ✅ Modern browsers with flexbox/grid support
-- ✅ iOS Safari (no auto-zoom issues)
-- ✅ Android browsers
-- ✅ Chrome, Firefox, Safari, Edge
-- ✅ Responsive on all device sizes
-- ✅ Touch and mouse input
-
-## File Structure
-
-```
-src/templates/html/
-├── mod_virtuemart_cart/
-│ ├── default.php
-│ ├── index.html
-│ └── README.md
-├── mod_virtuemart_product/
-│ ├── default.php
-│ ├── index.html
-│ └── README.md
-├── mod_virtuemart_currencies/
-│ ├── default.php
-│ ├── index.html
-│ └── README.md
-├── mod_virtuemart_category/
-│ ├── default.php
-│ ├── index.html
-│ └── README.md
-└── mod_virtuemart_manufacturer/
- ├── default.php
- ├── index.html
- └── README.md
-```
-
-## Usage
-
-These overrides are automatically used when:
-1. The MokoCassiopeia template is active
-2. VirtueMart is installed and configured
-3. The respective modules are published
-
-No additional configuration is required beyond standard VirtueMart module settings.
-
-## Customization
-
-To customize the appearance, you can:
-
-1. **Override CSS variables** in `user.css`:
-```css
-:root {
- --vm-btn-primary-bg: #your-color;
- --vm-block-radius: 0.5rem;
-}
-```
-
-2. **Add custom styles** targeting module classes:
-```css
-.mod-vm-cart-responsive {
- max-width: 400px;
-}
-```
-
-3. **Modify PHP templates** in the respective module directories
-
-## Testing
-
-All overrides have been designed to work across:
-- Mobile devices (320px+)
-- Tablets (768px+)
-- Desktop screens (1200px+)
-- Touch and click interactions
-- Portrait and landscape orientations
-
-## Security
-
-- ✅ index.html security files included
-- ✅ Proper input escaping in PHP
-- ✅ XSS prevention
-- ✅ Follows Joomla security best practices
-
-## Documentation
-
-Each module directory contains a detailed README.md with:
-- Module-specific features
-- Configuration options
-- Customization examples
-- Usage guidelines
-
-## License
-
-Copyright (C) 2025 Moko Consulting
-Licensed under GNU General Public License version 2 or later
-
-## Support
-
-For issues or questions:
-- Check individual module README files
-- Review CSS_VARIABLES.md for available CSS variables
-- Consult VirtueMart and Joomla documentation
diff --git a/src/templates/html/mod_articles_latest/default.php b/src/templates/html/mod_articles_latest/default.php
deleted file mode 100644
index a570677..0000000
--- a/src/templates/html/mod_articles_latest/default.php
+++ /dev/null
@@ -1,100 +0,0 @@
-
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- *
- * Mobile responsive override for mod_articles_latest module
- */
-
-defined('_JEXEC') or die;
-
-use Joomla\CMS\HTML\HTMLHelper;
-use Joomla\CMS\Language\Text;
-
-$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx', ''), ENT_COMPAT, 'UTF-8');
-
-// Add responsive wrapper class
-$wrapperClass = 'mod-articles-latest mod-articles-latest-responsive ' . $moduleclass_sfx;
-?>
-
-