v02.01.05 #3

Merged
jmiller-moko merged 2 commits from dev into main 2025-09-05 01:09:02 +00:00
38 changed files with 283 additions and 1724 deletions

View File

@@ -23,14 +23,22 @@
DEFGROUP: Joomla
INGROUP: Moko-Cassiopeia
PATH: CHANGELOG.md
VERSION: 02.00
VERSION: 02.01.05
BRIEF: Changelog file documenting version history of Moko-Cassiopeia
=========================================================================
-->
Changelog — Moko-Cassiopeia
# Version 2.0 (2025-08-30)
# Version 02.01.05 (2025-09-04)
**Minor Release**
## Fixed
- Removed vmbasic.css
- Repaired temaplte.css and colors_standard.css
# Version 02.00.00 (2025-08-30)
**Major Release** — introduces the long-awaited **Dark Mode Toggle**, streamlining accessibility and usability enhancements.
@@ -70,7 +78,7 @@ Changelog — Moko-Cassiopeia
#Previous Versions
## 1.0
## 01.00.00
* **Initial Public Release** with:

View File

@@ -23,7 +23,7 @@
DEFGROUP: Joomla
INGROUP: Moko-Cassiopeia
PATH: CODE_OF_CONDUCT.md
VERSION: 02.00
VERSION: 02.01.05
BRIEF: Contributor Code of Conduct for Moko-Cassiopeia project
=========================================================================
-->

View File

@@ -23,7 +23,7 @@
DEFGROUP: Joomla
INGROUP: Moko-Cassiopeia
PATH: CONTRIBUTING.md
VERSION: 02.00
VERSION: 02.01.05
BRIEF: Contribution guidelines for the Moko-Cassiopeia project
=========================================================================
-->

375
README.md
View File

@@ -1,304 +1,169 @@
<!--
=========================================================================
Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
========================================================================
Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
This file is part of a Moko Consulting project.
This file is part of a Moko Consulting project.
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: GPL-3.0-or-later
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/ .
=========================================================================
FILE INFORMATION
DEFGROUP: Joomla
INGROUP: Moko-Cassiopeia
PATH: README.md
VERSION: 02.00
BRIEF: Project readme for Moko-Cassiopeia, including features, setup, and usage
=========================================================================
You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/ .
========================================================================
FILE INFORMATION
INGROUP: Template
FILE: README.md
VERSION: 02.01.05
BRIEF: Documentation for Moko-Cassiopeia template
PATH: /templates/moko-cassiopeia/
NOTE: Includes Dark Mode and Soft Offline Mode
VARIABLES: None
-->
# Moko-Cassiopeia (v02.01.05)
# Moko-Cassiopeia v02.00 — README
A modern, lightweight enhancement layer for Joomla's Cassiopeia
template.
Moko-Cassiopeia adds **Font Awesome 6**, **Bootstrap 5** helpers, an
automatic **Table of Contents (TOC)** utility, and optional **Moko
Expansions** including **Google Tag Manager** and **Google Analytics
(GA4)** hooks---all while keeping core template overrides minimal and
upgrade-friendly.
> Joomla! site template by **Moko Consulting**
> License: **GPL-3.0-or-later**
> Compatibility: **Joomla 4.4+ / 5.x** (PHP 8.1+)
------------------------------------------------------------------------
---
## Table of Contents
## Overview
- [Features](#features)\
- [Requirements](#requirements)\
- [Quick Start](#quick-start)\
- [Installation](#installation)\
- [Configuration](#configuration)
- [Global Params](#global-params)\
- [Font Awesome 6](#font-awesome-6)\
- [Bootstrap 5 Helpers](#bootstrap-5-helpers)\
- [Table of Contents](#table-of-contents)\
- [Dark Mode Toggle](#dark-mode-toggle)\
- [Soft Offline Mode](#soft-offline-mode)\
- [Changelog](#changelog)\
- [Roadmap](#roadmap)
Moko-Cassiopeia is a streamlined, Bootstrap-friendly Joomla template with a tokenized color system, Google Tag Manager / Analytics hooks, and performance-minded assets.
* **v02.00 (2025-08-30)** introduces **Dark Mode** with OS auto-detection **and** an optional **Dark Mode Toggle** (ID **25**) so users can manually switch themes; their preference persists.
* **v01.00** was the initial public release (FA6, BS5, TOC, GTM/GA hooks).
Public roadmap: **[https://mokoconsulting.tech/support/joomla-cms/moko-cassiopeia-roadmap](https://mokoconsulting.tech/support/joomla-cms/moko-cassiopeia-roadmap)**
---
## Whats New in v02.00
* **Dark Mode** with `prefers-color-scheme` auto-detect.
* **Dark Mode Toggle** (Template param **ID 25**) with positions **Header / Navbar / Footer**.
* Persists choice to `localStorage` (key: `moko.theme`).
* Keyboard- and screen-reader-friendly; focus ring uses theme tokens.
* Admin option **“Show Theme Toggle”** (`On/Off`).
* CSS refactor to **variables**: light tokens in `:root`, dark overrides in `[data-theme="dark"]`.
* Lowered CSS specificity, `rem` units for scalable typography/spacing.
* Stabilized WebAsset registrations (LTR/RTL presets).
---
------------------------------------------------------------------------
## Features
* **Dark Mode + Toggle**
Auto-detect plus manual switch; persistent per user.
### Core Enhancements
* **Bootstrap-friendly CSS**
Low specificity, variable-driven utilities for buttons, alerts, typography, spacing.
- Built on top of Joomla's default **Cassiopeia** template.\
- **Font Awesome 6** integration.\
- **Bootstrap 5** helpers (grid, utility classes).\
- **Automatic TOC** insertion for articles (activated via layout
`toc-left` or `toc-right`).
* **GTM / GA Hooks**
Clean injection points for Google Tag Manager and optional direct GA4 tag.
### Added in 2.0
* **LTR / RTL Presets**
Stable asset registration pattern for palette and template styles.
- **Dark Mode Toggle**
- User-facing switch in the header.\
- Persists preference with local storage.\
- Admins can override default mode in template settings.
- **Improved Template Params**
- Configure logo, GTM container ID, and dark mode defaults
directly from template settings.
* **A11y & Performance**
Clear focus styling and balanced contrast; minified bundles in production.
### New in 2.1.5 (In Development)
---
- **Soft Offline Mode**
- Keeps articles in specific categories available when the site is
offline.\
- Example: legal or policy documents remain publicly viewable even
during maintenance.\
- Admin can configure which categories remain accessible.
------------------------------------------------------------------------
## Requirements
* Joomla **4.4+** / **5.x**
* PHP **8.1+**
* Modern evergreen browsers (graceful fallback if `prefers-color-scheme` isnt available)
- Joomla **4.4.x** or **5.x**\
- PHP **8.0+**\
- MySQL/MariaDB compatible database
---
------------------------------------------------------------------------
## Quick Start
1. Install `moko-cassiopeia.zip` via Joomla's Template Installer.\
2. Set **Moko-Cassiopeia** as your default template.\
3. Configure template options under **System → Site Templates →
Moko-Cassiopeia**.
------------------------------------------------------------------------
## Installation
1. **Install** via *Extensions → Manage → Install* (upload the template `.zip`).
2. **Set as default** in *System → Templates → Site Templates*.
3. **Clear caches**: *System → Clear Cache* and hard-reload your browser.
Upload and install through Joomla's extension manager.\
If upgrading from a prior version, Joomla will safely overwrite files
--- no manual uninstall required.
---
------------------------------------------------------------------------
## Template Options (high-level)
## Configuration
**Theme**
### Global Params
* **Force Theme**: `Auto` (default) | `Light` | `Dark`
* **Show Theme Toggle** (ID **25**): `On` | `Off`
* **Toggle Position**: `Header` | `Navbar` | `Footer`
* **Default Theme** (when not using Auto): `Light`
- **Logo**: Upload a custom site logo.\
- **Color Scheme**: Toggle light/dark defaults.\
- **Analytics/GTM**: Enable/disable optional expansions.
**GTM / Analytics**
### Font Awesome 6
* **GTM Container ID** (e.g., `GTM-XXXXXXX`)
* **Analytics Tag ID** (optional GA4 if not using GTM)
- Fully integrated into Joomla's asset manager.\
- No extra scripts required.
**Performance**
### Bootstrap 5 Helpers
* **Development Mode**
- Adds extended utility classes and responsive tweaks.
* `Off``.min.css` / `.min.js` bundles
* `On` → unminified sources for debugging
### Table of Contents
---
- Select `toc-left` or `toc-right` in article **Options → Layout** to
insert TOC automatically.
## Dark Mode — Tokens & Toggle
### Dark Mode Toggle
**Color tokens**
- User-facing switch in the header.\
- Remembers preference via local storage.\
- Default behavior can be set in template settings.
```css
:root {
--color-bg: #ffffff;
--color-surface: #f8f9fa;
--color-text: #1d2125;
--color-text-muted: #6c757d;
--color-border: #dee2e6;
### Soft Offline Mode
--color-primary: #0d6efd;
--color-primary-contrast: #ffffff;
- Introduced in **2.1.5**.\
- Allows articles in selected categories to remain viewable during
offline/maintenance mode.\
- Useful for compliance, legal, or policy content.
--color-link: var(--color-primary);
--color-link-hover: #0b5ed7;
------------------------------------------------------------------------
--focus-ring: 0 0 0 .2rem rgba(13,110,253,.25);
}
## Changelog
[data-theme="dark"] {
--color-bg: #0e1116;
--color-surface: #151922;
--color-text: #e7eaf0;
--color-text-muted: #a4acb9;
--color-border: #2a3240;
See the [CHANGELOG.md](./CHANGELOG.md) for detailed version history.
--color-primary: #66b2ff;
--color-primary-contrast: #0d1117;
--color-link: var(--color-primary);
--color-link-hover: #99ccff;
--focus-ring: 0 0 0 .2rem rgba(102,178,255,.35);
}
```
**Programmatic switch (optional)**
```js
// Apply and persist a choice
document.documentElement.dataset.theme = 'dark'; // or 'light'
localStorage.setItem('moko.theme', 'dark'); // namespaced key
```
---
## CSS Architecture
* **`template.css`** = structure/layout and component scaffolding
* **No hard-coded hex** in core selectors; all colors reference tokens
* **Units**: `rem` (replacing `em`) for scalable typography/spacing
* **Low specificity** to play nicely with Bootstrap and content plugins
---
## GTM / Analytics Integration
* Enter **GTM Container ID** in Template Options to inject the GTM snippet.
* Optionally add a **GA4 Measurement ID** if not routing GA via GTM.
* Output uses Joomla rendering events to avoid duplication.
> Verify tags with DevTools / Tag Assistant.
---
## RTL / LTR Assets (WebAsset JSON)
Minimal pattern:
```json
{
"$schema": "https://developer.joomla.org/schemas/json/schema_web_assets.json",
"name": "template.moko-cassiopeia",
"assets": [
{ "name": "template.moko-cassiopeia.styles", "type": "style", "uri": "templates/moko-cassiopeia/css/template.min.css" },
{ "name": "template.moko-cassiopeia.palette", "type": "style", "uri": "templates/moko-cassiopeia/css/colors_standard.min.css" },
{ "name": "template.moko-cassiopeia", "type": "preset", "dependencies": ["template.moko-cassiopeia.styles","template.moko-cassiopeia.palette"] }
]
}
```
In `index.php`:
```php
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->getWebAssetManager();
$wa->usePreset('template.moko-cassiopeia');
```
---
## Upgrade Notes
**1.0 → 2.0**
* Clear Joomla + browser caches.
* Convert any hard-coded colors in overrides to **tokens** (e.g., `var(--color-text-muted)`).
* Review spacing/typography where `rem` replaces `em`.
* Verify asset names if you referenced WebAsset handles directly.
* If you previously added a custom dark-mode toggle, remove it and enable **Show Theme Toggle** (ID **25**).
---
## Accessibility
* Improved contrast targets across light/dark.
* Visible, consistent focus indicators.
* Toggle is keyboard-navigable and labeled for assistive tech.
---
## Troubleshooting
* **Toggle not visible** → Ensure “Show Theme Toggle” is on and placed in a visible position.
* **Preference not persisting** → Check `localStorage` availability and console for JS errors.
* **Asset dependency warnings** → Confirm preset/asset names match your `joomla.asset.json`.
---
## Feature Rundown & Comparison
### Moko-Cassiopeia v01.00 — Initial public release
* **Font Awesome 6** integrated; **Bootstrap 5** helpers.
* **TOC utility** hooks for article table of contents.
* **GTM/GA hooks** with safe injection points.
* Minimal, upgrade-friendly overrides; variable-ready CSS.
### Moko-Cassiopeia v02.00 — Dark Mode + Toggle (ID 25)
* **Dark Mode** with OS auto-detect.
* **Optional Dark Mode Toggle** (ID 25) in Header / Navbar / Footer; persisted per user.
* **Tokenized palette** (`:root` + `[data-theme="dark"]`).
* **CSS refactor**: low specificity; `rem` units; Bootstrap-friendly utilities.
* Stabilized **Web Asset** registrations (LTR/RTL presets).
### Baseline: Cassiopeia (Joomla 4.4 / 5.x)
* Responsive, accessible core site template with Bootstrap-friendly markup.
* Template options for color preset, layout width, sticky header, and module menu layouts.
* Web Asset Manager integration (`joomla.asset.json`, `$this->getWebAssetManager()`).
---
------------------------------------------------------------------------
## Roadmap
Public roadmap: **[https://mokoconsulting.tech/support/joomla-cms/moko-cassiopeia-roadmap](https://mokoconsulting.tech/support/joomla-cms/moko-cassiopeia-roadmap)**
---
## Changelog (1.0 → 2.0)
### 02.00 — 2025-08-30 — “Dark Mode”
**Added**
* Dark Mode with OS auto-detection (`prefers-color-scheme`).
* **Dark Mode Toggle** (param **ID 25**) with positions Header / Navbar / Footer; persists choice via `localStorage` (`moko.theme`); accessible markup and focus styling.
* Tokenized CSS palette with `[data-theme="dark"]` overrides.
* Admin override to force Light/Dark/Auto.
* Bootstrap-friendly utility hooks mapped to tokens.
**Changed**
* `template.css` now structure/layout only; colors via tokens.
* `em``rem`; reduced specificity; standardized focus indicators.
**Fixed**
* WebAsset registrations (LTR/RTL/preset deps) and dark-theme link/muted contrast.
**Removed / Deprecated**
* Hard-coded color declarations and legacy hex-based helper classes.
---
### 01.00 — Initial public release
* **FA6**, **BS5**, **TOC**, **GTM/GA** hooks.
- **2.2 (Planned)**
- Lazy load media for performance.\
- Expanded template overrides for more layout control.
- **Future Considerations**
- Multi-tenancy support.\
- Visual layout builder for drag-and-drop template positions.

View File

@@ -1,30 +1,30 @@
# =========================================================================
# Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
#
# This file is part of a Moko Consulting project.
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see https://www.gnu.org/licenses/ .
# =========================================================================
# FILE INFORMATION
# DEFGROUP: Joomla
# INGROUP: Moko-Cassiopeia
# PATH: language/en-GB/tpl_moko-cassiopeia.ini
# VERSION: 02.00
# BRIEF: English (GB) language strings for the Moko-Cassiopeia Joomla template
# =========================================================================
; =========================================================================
; Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
;
; This file is part of a Moko Consulting project.
;
; SPDX-License-Identifier: GPL-3.0-or-later
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 3 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see https://www.gnu.org/licenses/ .
; =========================================================================
; FILE INFORMATION
; DEFGROUP: Joomla
; INGROUP: Moko-Cassiopeia
; PATH: language/en-GB/tpl_moko-cassiopeia.ini
; VERSION: 02.01.05
; BRIEF: English (GB) language strings for the Moko-Cassiopeia Joomla template
; =========================================================================
; ===== Template meta =====
MOKO-CASSIOPEIA="MOKO-CASSIOPEIA Site template"

View File

@@ -1,30 +1,30 @@
# =========================================================================
# Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
#
# This file is part of a Moko Consulting project.
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see https://www.gnu.org/licenses/ .
# =========================================================================
# FILE INFORMATION
# DEFGROUP: Joomla
# INGROUP: Moko-Cassiopeia
# PATH: language/en-GB/tpl_moko-cassiopeia.sys.ini
# VERSION: 02.00
# BRIEF: English (GB) system language strings for template metadata and installer
# =========================================================================
; =========================================================================
; Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
;
; This file is part of a Moko Consulting project.
;
; SPDX-License-Identifier: GPL-3.0-or-later
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 3 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see https://www.gnu.org/licenses/ .
; =========================================================================
; FILE INFORMATION
; DEFGROUP: Joomla
; INGROUP: Moko-Cassiopeia
; PATH: language/en-GB/tpl_moko-cassiopeia.sys.ini
; VERSION: 02.01.05
; BRIEF: English (GB) system language strings for template metadata and installer
; =========================================================================
TPL_MOKO-CASSIOPEIA="Moko-Cassiopeia Site template"
TPL_MOKO-CASSIOPEIA_MOD_MENU_LAYOUT_COLLAPSE-METISMENU="Collapsible Dropdown"

View File

@@ -1,30 +1,30 @@
# =========================================================================
# Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
#
# This file is part of a Moko Consulting project.
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see https://www.gnu.org/licenses/ .
# =========================================================================
# FILE INFORMATION
# DEFGROUP: Joomla
# INGROUP: Moko-Cassiopeia
# PATH: language/en-US/tpl_moko-cassiopeia.ini
# VERSION: 02.00
# BRIEF: English (US) language strings for the Moko-Cassiopeia Joomla template
# =========================================================================
; =========================================================================
; Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
;
; This file is part of a Moko Consulting project.
;
; SPDX-License-Identifier: GPL-3.0-or-later
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 3 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see https://www.gnu.org/licenses/ .
; =========================================================================
; FILE INFORMATION
; DEFGROUP: Joomla
; INGROUP: Moko-Cassiopeia
; PATH: language/en-US/tpl_moko-cassiopeia.ini
; VERSION: 02.01.05
; BRIEF: English (US) language strings for the Moko-Cassiopeia Joomla template
; =========================================================================
; ===== Template meta =====
MOKO-CASSIOPEIA="MOKO-CASSIOPEIA Site template"

View File

@@ -1,30 +1,30 @@
# =========================================================================
# Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
#
# This file is part of a Moko Consulting project.
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see https://www.gnu.org/licenses/ .
# =========================================================================
# FILE INFORMATION
# DEFGROUP: Joomla
# INGROUP: Moko-Cassiopeia
# PATH: language/en-US/tpl_moko-cassiopeia.sys.ini
# VERSION: 02.00
# BRIEF: English (US) system language strings for template metadata and installer
# =========================================================================
; =========================================================================
; Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
;
; This file is part of a Moko Consulting project.
;
; SPDX-License-Identifier: GPL-3.0-or-later
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 3 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see https://www.gnu.org/licenses/ .
; =========================================================================
; FILE INFORMATION
; DEFGROUP: Joomla
; INGROUP: Moko-Cassiopeia
; PATH: language/en-US/tpl_moko-cassiopeia.sys.ini
; VERSION: 02.01.05
; BRIEF: English (US) system language strings for template metadata and installer
; =========================================================================
TPL_MOKO-CASSIOPEIA="Moko-Cassiopeia Site template"
TPL_MOKO-CASSIOPEIA_MOD_MENU_LAYOUT_COLLAPSE-METISMENU="Collapsible Dropdown"

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/editor.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Stylesheet for Joomla editor content within Moko-Cassiopeia template
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/gable.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Stylesheet providing gable-specific layout and design rules for Moko-Cassiopeia
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/global/dark/colors_alternative.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Alternative dark mode color definitions for Moko-Cassiopeia template
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/global/dark/colors_standard.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Standard dark mode color definitions for Moko-Cassiopeia template
* =========================================================================
*/
@@ -43,8 +43,9 @@
--mainmenu-nav-link-color: #fff;
--color-link: #224FAA;
--color-hover: #224FAA;
--color-link: white;
--color-hover: gray;
--color-active: var(--mainmenu-nav-link-color);
/* Header background (kept same image; works over dark bg) */
--header-background-image: url('../../../../../../media/templates/site/moko-cassiopeia/images/bg.svg'); --header-background-attachment: fixed;
@@ -110,8 +111,8 @@
--container-bottom-b-border-radius: ;
/* Nav & accents */
--nav-text-color: var(--mainmenu-nav-link-color);
--nav-bg-color: var(--color-link);
--nav-text-color: gray;
--nav-bg-color: var(--color-primary);
--border: 5px;
--muted-color: #6d757e;
@@ -348,7 +349,7 @@
/* Links as buttons */
.btn-link {
--btn-font-weight: 400;
--btn-color: var(--link-color);
--btn-color: var(--color-link);
--btn-bg: transparent;
--btn-border-color: transparent;
--btn-hover-color: var(--link-hover-color);
@@ -363,6 +364,6 @@
}
.btn-secondary {
--btn-color: var(--nav-text-color);
--btn-color: var(--color-hover);
--btn-bg: var(--nav-bg-color);
}

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/global/fonts-local_roboto.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Local Roboto font-face definitions for the Moko-Cassiopeia template
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/global/light/colors_alternative.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Alternative light mode color definitions for Moko-Cassiopeia template
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/global/light/colors_standard.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Standard light mode color definitions for Moko-Cassiopeia template
* =========================================================================
*/
@@ -105,7 +105,7 @@
--container-bottom-b-border: ;
--container-bottom-b-border-radius: ;
--nav-text-color: var(--mainmenu-nav-link-color);
--nav-text-color: white;
--nav-bg-color: var(--color-link);
--border: 5px;

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/global/social-media-demo.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Demo styles for showcasing social media elements in Moko-Cassiopeia template
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/system/searchtools/searchtools.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Stylesheet for Joomla search tools integration in Moko-Cassiopeia template
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/template-rtl.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Right-to-left (RTL) layout stylesheet for Moko-Cassiopeia template
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/template.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Main stylesheet providing layout, typography, and component styles for Moko-Cassiopeia
* =========================================================================
*/
@@ -5135,7 +5135,7 @@ fieldset:disabled .btn {
--card-spacer-x: 1rem;
--card-title-spacer-y: 0.5rem;
--card-border-width: 1px;
--card-border-color: hsl(210, 14%, 89%);
--card-border-color: var(--color-secondary);
--card-border-radius: 0.25rem;
--card-box-shadow: ;
--card-inner-border-radius: calc(0.25rem - 1px);
@@ -5145,7 +5145,7 @@ fieldset:disabled .btn {
--card-cap-color: ;
--card-height: ;
--card-color: ;
--card-bg: hsl(0, 0%, 100%);
--card-bg: var(--nav-text-color);
--card-img-overlay-padding: 1rem;
--card-group-margin: 0.5em;
position: relative;
@@ -5520,7 +5520,7 @@ fieldset:disabled .btn {
--breadcrumb-border-radius: ;
--breadcrumb-divider-color: hsl(210, 7%, 46%);
--breadcrumb-item-padding-x: 0.5rem;
--breadcrumb-item-active-color: hsl(210, 9%, 31%);
--breadcrumb-item-active-color: val(var(--link-color));
display: -webkit-box;
display: -ms-flexbox;
display: flex;
@@ -14575,7 +14575,7 @@ li.current a {
.container-header .mod-menu>li>a,
.container-header .mod-menu>li>span {
position: relative;
color: var(--nav-text-color);
color: var(--mainmenu-nav-link-color);
text-decoration: none;
}

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/vendor/choicesjs/choices.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Vendor stylesheet for Choices.js select and input enhancements in Moko-Cassiopeia
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/vendor/choicesjs/choices.css
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Vendor stylesheet for Choices.js select and input enhancements in Moko-Cassiopeia
* =========================================================================
*/

View File

@@ -1,647 +0,0 @@
@charset "UTF-8";
/* =========================================================================
* Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
*
* This file is part of a Moko Consulting project.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see https://www.gnu.org/licenses/ .
* =========================================================================
* FILE INFORMATION
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/css/vendor/vmbasic.css
* VERSION: 02.00
* BRIEF: Vendor stylesheet providing base styles for VM Basic in Moko-Cassiopeia
* =========================================================================
*/
/* Bootstrap */
.dropdown-menu {
border-radius: 0;
--bs-dropdown-zindex: 1030;
}
.dropdown-toggle {
display: flex;
align-items: center;
}
.dropdown-toggle::after {
content: "";
border: none;
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/></svg>');
background-repeat: no-repeat;
width: 10px;
height: 10px
}
.btn {
border-radius: 0
}
.input-group .btn {
font-size: 14px;
border-radius: var(--bs-border-radius);
}
.btn-primary {
--bs-btn-bg: #333;
--bs-btn-border-color: #333;
--bs-btn-hover-bg: #555;
--bs-btn-hover-border-color: #555;
--bs-btn-focus-shadow-rgb: 49, 132, 253;
--bs-btn-active-bg: #555;
--bs-btn-active-border-color: #555;
--bs-btn-disabled-bg: #A0A0A0;
--bs-btn-disabled-border-color: #A0A0A0;
}
.btn-secondary {
--bs-btn-color: #333;
--bs-btn-bg: #EFEFEF;
--bs-btn-border-color: #EFEFEF;
--bs-btn-hover-bg: #333;
--bs-btn-hover-border-color: #333;
--bs-btn-active-bg: #333;
--bs-btn-active-border-color: #333;
}
.btn-check:checked + .btn, .btn.active, .btn.show, .btn:first-child:active, :not(.btn-check) + .btn:active {
color: #A0A0A0;
}
.text-secondary {
color: #A0A0A0 !important;
}
.form-control, .form-select {
font-size: 14px
}
form .form-control, form .form-select {
border-color: #C7C7C7
}
/* General styles */
body {
font-size: 15px;
color: #333;
}
a, .btn-link {
color: #A0A0A0;
text-decoration: none
}
a:hover, .btn-link:hover {
color: #333;
}
img {
max-width: 100%;
height: auto;
aspect-ratio: attr(width) / attr(height);
}
h1, h2, h3, h4, h5, h6 {
font-weight: 600;
margin-bottom: 1em;
color: #333;
}
h1 {
font-size: 32px
}
h2 {
font-size: 28px
}
h3 {
font-size: 25px
}
h4 {
font-size: 22px
}
h5 {
font-size: 20px
}
h6 {
font-size: 18px
}
.toolbar {
font-size: 14px;
padding: 9px 0;
background-color: #EFEFEF
}
.toolbar a, .toolbar .btn-link {
color: inherit;
}
.toolbar .btn svg {
margin-right: 5px;
}
.toolbar svg {
line-height: 16px;
vertical-align: sub;
}
.top-bar {
font-weight: bold;
}
header p {
margin: 0
}
.toolbar .dropdown-menu {
font-size: 14px;
line-height: 14px;
min-width: 100%;
width: max-content;
}
.form-control-feedback {
display: block;
font-size: 14px;
color: red;
}
/* Main menu */
.main-menu {
background-color: #555;
color: #fff;
}
.main-menu .nav-item {
position: relative;
}
.main-menu a, .main-menu span {
position: relative;
display: block;
padding: 14px 18px;
color: #fff;
background-color: #555;
transition: background-color linear 250ms
}
.main-menu .active > a, .main-menu .active > span, .main-menu a:hover, .main-menu span:hover {
background-color: #000;
transition: background-color linear 250ms
}
.main-menu .parent > a::after, .main-menu .parent > span::after {
content: "";
display: inline-block;
width: 10px;
height: 10px;
background-color: #fff;
margin-left: 5px;
-webkit-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/></svg>');
mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/></svg>');
}
.main-menu .mod-menu__sub .parent > a::after, .main-menu .mod-menu__sub .parent > span::after {
position: absolute;
right: 9px;
top: 50%;
transform: translateY(-50%) rotate(-90deg);
}
.main-menu .mod-menu__sub {
position: absolute;
left: 0;
top: 100%;
z-index: 1022;
min-width: 200px;
opacity: 0;
visibility: hidden;
transition: all linear 250ms
}
.main-menu .parent:hover > .mod-menu__sub {
opacity: 1;
visibility: visible;
box-shadow: 0 5px 15px 0 rgba(0,0,0,0.3);
transition: all linear 250ms
}
.mod-menu__sub .mod-menu__sub {
left: 100%;
top: 0
}
/* Banners */
.banner-section p {
margin: 0
}
/* Modules */
.mod-breadcrumbs {
background-color: #EFEFEF;
font-size: 14px;
white-space: nowrap;
overflow: auto;
flex-wrap: nowrap;
}
.breadcrumb-item + .breadcrumb-item::before {
float: none;
}
.mod-breadcrumbs a, .manufacturer-details-view a:not(.btn) {
color: #71ABD6;
}
.breadcrumb-item.active {
color: #A0A0A0;
}
aside .module-title {
font-size: 24px;
font-weight: normal;
border-bottom: 1px solid #dee2e6;
padding-bottom: 15px;
margin-bottom: 15px;
display: flex;
align-items: center;
justify-content: space-between;
}
/* Footer */
footer {
padding: 50px 0;
background-color: #EFEFEF;
}
footer .module-title {
font-size: 18px;
margin-bottom: 20px;
}
footer .nav {
flex-direction: column;
}
footer ul {
list-style: none;
padding: 0;
margin: 0
}
footer .nav-item, footer li {
margin-bottom: 10px;
}
footer a {
color: #333;
}
footer a:hover {
color: #A0A0A0;
}
/* Forms */
textarea {
min-height: 100px
}
.control-label {
margin-bottom: 5px;
}
/*********
Virtuemart
*********/
/* VM Search module */
.vmbasic-search input {
border-color: #A0A0A0;
border-radius: 0;
height: 40px;
}
.mod-vm-search .btn-svg {
padding: 0 10px;
position: absolute;
z-index: 5;
top: 0;
right: 0;
bottom: 0;
height: 40px;
}
.vm-search-custom-search-input input, #vm-orderby-select {
border-radius: var(--bs-border-radius) !important;
}
/* VM cart module */
.vmCartModule .btn-link {
color: #333;
}
/* Product page */
.manufacturer a {
color: #71ABD6;
}
/* Account */
.vm-add-edit-address > a, .vm-order-list a {
font-weight: 600;
color: #71ABD6
}
/* Checkout */
.vm-coupon-container .btn {
border-radius: var(--bs-border-radius);
}
#checkoutForm .details {
font-weight: 600;
color: #71ABD6
}
/*********
Joomla
*********/
/* com_content */
.item-content .page-header h2 {
font-size: 20px;
}
.article-info {
display: flex;
flex-wrap: wrap;
font-size: 14px;
margin-bottom: 5px;
}
.item-image {
display: block;
margin: 0 auto 30px;
}
.article-info > * {
margin-right: 8px
}
.com-content-article__links {
list-style: none;
padding: 0;
margin: 30px 0;
}
.com-content-article__links a, .items-more a {
color: #71ABD6
}
.active > .page-link, .page-link.active {
background-color: #555555;
border-color: #555555;
}
.page-link, .page-link:hover {
color: #333;
}
.pagenavigation {
margin: 30px 0;
}
.pagenavigation .next {
margin-left: auto;
}
/* tags */
.com-tags-tag-list__category, .com-tags-tag__category {
margin-top: 30px;
}
.tag-category .list-group-item h3 {
margin: 0;
font-size: 16px;
}
.tags .btn {
font-size: 12px;
padding: 0 5px;
color: #fff;
}
/* User */
.com-users-login.login, .com-users-reset, .com-users-remind, .com-users-registration {
max-width: 400px;
margin: auto;
padding: 15px;
border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}
.control-group, .com-users-login__remember {
margin-bottom: 15px;
}
.com-users-reset legend, .com-users-remind legend {
font-size: 14px
}
/* Contact */
#contact-form legend {
font-size: 16px;
font-weight: 600;
}
.com-contact-featured__table {
margin-top: 30px;
}
/* Modules */
.sidebar-right ul, .sidebar-left ul {
list-style: none;
padding: 0;
margin: 0;
}
.sidebar-right li, .sidebar-left li {
margin-bottom: 10px
}
.mod-login__userdata > div {
margin-bottom: 15px;
}
.awesomplete input {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.mod-login__userdata.userdata {
padding: 15px;
border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}
#Passkey {
width: 24px;
}
/* offcanvas*/
.offcanvas-body .mod-menu {
flex-direction: column;
}
.offcanvas-body .mod-menu__sub {
display: none;
padding: 10px
}
.offcanvas-body .nav-item {
padding: 5px 0;
border-bottom: 1px solid var(--bs-border-color);
position: relative;
}
.offcanvas-body .nav-item:last-child {
border-bottom: none;
}
.offcanvas-body a {
font-size: 15px;
color: #333
}
.offcanvas-body .active > a {
font-weight: bold;
}
.offcanvas-body .subtoggle {
padding: 0;
background-color: transparent;
border: none;
width: 30px;
height: 30px;
position: absolute;
right: 0;
top: 1px;
z-index: 1
}
.offcanvas-body .subtoggle.open {
transform: rotate(-180deg);
transition: all linear 200ms
}
/* To top */
.back-to-top-link {
display: none;
position: fixed;
right: 12px;
bottom: 12px;
z-index: 1020;
}
@media screen and (max-width: 1080px) {
body {
font-size: 14px
}
}
@media screen and (max-width: 991px) {
h1 {
font-size: 24px
}
h2 {
font-size: 22px
}
h3 {
font-size: 20px
}
h4 {
font-size: 18px
}
h5 {
font-size: 16px
}
h6 {
font-size: 15px
}
.main-search {
display: none;
}
}
@media screen and (max-width: 490px) {
.toolbar {
padding: 6px 0;
}
.toolbar .bg-alt {
background-color: #333;
color: #fff;
}
.top-bar {
background-color: #333;
color: #fff;
}
.top-bar a {
color: #fff;
}
.cart-module .bi-cart3 {
margin-top: 2px
}
.cart-module .total_products {
display: none;
}
.vmCartModule .dropdown-menu {
margin-right: -10px !important;
}
.cart-module .dropdown-toggle::after {
content: none;
}
.com-contact-featured__items, .com-contact-category__items {
overflow-x: auto;
}
footer {
padding-bottom: 30px;
}
}

View File

@@ -1,617 +0,0 @@
/* Bootstrap */
.dropdown-menu {
border-radius: 0;
--bs-dropdown-zindex: 1030;
}
.dropdown-toggle {
display: flex;
align-items: center;
}
.dropdown-toggle::after {
content: "";
border: none;
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/></svg>');
background-repeat: no-repeat;
width: 10px;
height: 10px
}
.btn {
border-radius: 0
}
.input-group .btn {
font-size: 14px;
border-radius: var(--bs-border-radius);
}
.btn-primary {
--bs-btn-bg: #333;
--bs-btn-border-color: #333;
--bs-btn-hover-bg: #555;
--bs-btn-hover-border-color: #555;
--bs-btn-focus-shadow-rgb: 49, 132, 253;
--bs-btn-active-bg: #555;
--bs-btn-active-border-color: #555;
--bs-btn-disabled-bg: #A0A0A0;
--bs-btn-disabled-border-color: #A0A0A0;
}
.btn-secondary {
--bs-btn-color: #333;
--bs-btn-bg: #EFEFEF;
--bs-btn-border-color: #EFEFEF;
--bs-btn-hover-bg: #333;
--bs-btn-hover-border-color: #333;
--bs-btn-active-bg: #333;
--bs-btn-active-border-color: #333;
}
.btn-check:checked + .btn, .btn.active, .btn.show, .btn:first-child:active, :not(.btn-check) + .btn:active {
color: #A0A0A0;
}
.text-secondary {
color: #A0A0A0 !important;
}
.form-control, .form-select {
font-size: 14px
}
form .form-control, form .form-select {
border-color: #C7C7C7
}
/* General styles */
body {
font-size: 15px;
color: #333;
}
a, .btn-link {
color: #A0A0A0;
text-decoration: none
}
a:hover, .btn-link:hover {
color: #333;
}
img {
max-width: 100%;
height: auto;
aspect-ratio: attr(width) / attr(height);
}
h1, h2, h3, h4, h5, h6 {
font-weight: 600;
margin-bottom: 1em;
color: #333;
}
h1 {
font-size: 32px
}
h2 {
font-size: 28px
}
h3 {
font-size: 25px
}
h4 {
font-size: 22px
}
h5 {
font-size: 20px
}
h6 {
font-size: 18px
}
.toolbar {
font-size: 14px;
padding: 9px 0;
background-color: #EFEFEF
}
.toolbar a, .toolbar .btn-link {
color: inherit;
}
.toolbar .btn svg {
margin-right: 5px;
}
.toolbar svg {
line-height: 16px;
vertical-align: sub;
}
.top-bar {
font-weight: bold;
}
header p {
margin: 0
}
.toolbar .dropdown-menu {
font-size: 14px;
line-height: 14px;
min-width: 100%;
width: max-content;
}
.form-control-feedback {
display: block;
font-size: 14px;
color: red;
}
/* Main menu */
.main-menu {
background-color: #555;
color: #fff;
}
.main-menu .nav-item {
position: relative;
}
.main-menu a, .main-menu span {
position: relative;
display: block;
padding: 14px 18px;
color: #fff;
background-color: #555;
transition: background-color linear 250ms
}
.main-menu .active > a, .main-menu .active > span, .main-menu a:hover, .main-menu span:hover {
background-color: #000;
transition: background-color linear 250ms
}
.main-menu .parent > a::after, .main-menu .parent > span::after {
content: "";
display: inline-block;
width: 10px;
height: 10px;
background-color: #fff;
margin-left: 5px;
-webkit-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/></svg>');
mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/></svg>');
}
.main-menu .mod-menu__sub .parent > a::after, .main-menu .mod-menu__sub .parent > span::after {
position: absolute;
right: 9px;
top: 50%;
transform: translateY(-50%) rotate(-90deg);
}
.main-menu .mod-menu__sub {
position: absolute;
left: 0;
top: 100%;
z-index: 1022;
min-width: 200px;
opacity: 0;
visibility: hidden;
transition: all linear 250ms
}
.main-menu .parent:hover > .mod-menu__sub {
opacity: 1;
visibility: visible;
box-shadow: 0 5px 15px 0 rgba(0,0,0,0.3);
transition: all linear 250ms
}
.mod-menu__sub .mod-menu__sub {
left: 100%;
top: 0
}
/* Banners */
.banner-section p {
margin: 0
}
/* Modules */
.mod-breadcrumbs {
background-color: #EFEFEF;
font-size: 14px;
white-space: nowrap;
overflow: auto;
flex-wrap: nowrap;
}
.breadcrumb-item + .breadcrumb-item::before {
float: none;
}
.mod-breadcrumbs a, .manufacturer-details-view a:not(.btn) {
color: #71ABD6;
}
.breadcrumb-item.active {
color: #A0A0A0;
}
aside .module-title {
font-size: 24px;
font-weight: normal;
border-bottom: 1px solid #dee2e6;
padding-bottom: 15px;
margin-bottom: 15px;
display: flex;
align-items: center;
justify-content: space-between;
}
/* Footer */
footer {
padding: 50px 0;
background-color: #EFEFEF;
}
footer .module-title {
font-size: 18px;
margin-bottom: 20px;
}
footer .nav {
flex-direction: column;
}
footer ul {
list-style: none;
padding: 0;
margin: 0
}
footer .nav-item, footer li {
margin-bottom: 10px;
}
footer a {
color: #333;
}
footer a:hover {
color: #A0A0A0;
}
/* Forms */
textarea {
min-height: 100px
}
.control-label {
margin-bottom: 5px;
}
/*********
Virtuemart
*********/
/* VM Search module */
.vmbasic-search input {
border-color: #A0A0A0;
border-radius: 0;
height: 40px;
}
.mod-vm-search .btn-svg {
padding: 0 10px;
position: absolute;
z-index: 5;
top: 0;
right: 0;
bottom: 0;
height: 40px;
}
.vm-search-custom-search-input input, #vm-orderby-select {
border-radius: var(--bs-border-radius) !important;
}
/* VM cart module */
.vmCartModule .btn-link {
color: #333;
}
/* Product page */
.manufacturer a {
color: #71ABD6;
}
/* Account */
.vm-add-edit-address > a, .vm-order-list a {
font-weight: 600;
color: #71ABD6
}
/* Checkout */
.vm-coupon-container .btn {
border-radius: var(--bs-border-radius);
}
#checkoutForm .details {
font-weight: 600;
color: #71ABD6
}
/*********
Joomla
*********/
/* com_content */
.item-content .page-header h2 {
font-size: 20px;
}
.article-info {
display: flex;
flex-wrap: wrap;
font-size: 14px;
margin-bottom: 5px;
}
.item-image {
display: block;
margin: 0 auto 30px;
}
.article-info > * {
margin-right: 8px
}
.com-content-article__links {
list-style: none;
padding: 0;
margin: 30px 0;
}
.com-content-article__links a, .items-more a {
color: #71ABD6
}
.active > .page-link, .page-link.active {
background-color: #555555;
border-color: #555555;
}
.page-link, .page-link:hover {
color: #333;
}
.pagenavigation {
margin: 30px 0;
}
.pagenavigation .next {
margin-left: auto;
}
/* tags */
.com-tags-tag-list__category, .com-tags-tag__category {
margin-top: 30px;
}
.tag-category .list-group-item h3 {
margin: 0;
font-size: 16px;
}
.tags .btn {
font-size: 12px;
padding: 0 5px;
color: #fff;
}
/* User */
.com-users-login.login, .com-users-reset, .com-users-remind, .com-users-registration {
max-width: 400px;
margin: auto;
padding: 15px;
border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}
.control-group, .com-users-login__remember {
margin-bottom: 15px;
}
.com-users-reset legend, .com-users-remind legend {
font-size: 14px
}
/* Contact */
#contact-form legend {
font-size: 16px;
font-weight: 600;
}
.com-contact-featured__table {
margin-top: 30px;
}
/* Modules */
.sidebar-right ul, .sidebar-left ul {
list-style: none;
padding: 0;
margin: 0;
}
.sidebar-right li, .sidebar-left li {
margin-bottom: 10px
}
.mod-login__userdata > div {
margin-bottom: 15px;
}
.awesomplete input {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.mod-login__userdata.userdata {
padding: 15px;
border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}
#Passkey {
width: 24px;
}
/* offcanvas*/
.offcanvas-body .mod-menu {
flex-direction: column;
}
.offcanvas-body .mod-menu__sub {
display: none;
padding: 10px
}
.offcanvas-body .nav-item {
padding: 5px 0;
border-bottom: 1px solid var(--bs-border-color);
position: relative;
}
.offcanvas-body .nav-item:last-child {
border-bottom: none;
}
.offcanvas-body a {
font-size: 15px;
color: #333
}
.offcanvas-body .active > a {
font-weight: bold;
}
.offcanvas-body .subtoggle {
padding: 0;
background-color: transparent;
border: none;
width: 30px;
height: 30px;
position: absolute;
right: 0;
top: 1px;
z-index: 1
}
.offcanvas-body .subtoggle.open {
transform: rotate(-180deg);
transition: all linear 200ms
}
/* To top */
.back-to-top-link {
display: none;
position: fixed;
right: 12px;
bottom: 12px;
z-index: 1020;
}
@media screen and (max-width: 1080px) {
body {
font-size: 14px
}
}
@media screen and (max-width: 991px) {
h1 {
font-size: 24px
}
h2 {
font-size: 22px
}
h3 {
font-size: 20px
}
h4 {
font-size: 18px
}
h5 {
font-size: 16px
}
h6 {
font-size: 15px
}
.main-search {
display: none;
}
}
@media screen and (max-width: 490px) {
.toolbar {
padding: 6px 0;
}
.toolbar .bg-alt {
background-color: #333;
color: #fff;
}
.top-bar {
background-color: #333;
color: #fff;
}
.top-bar a {
color: #fff;
}
.cart-module .bi-cart3 {
margin-top: 2px
}
.cart-module .total_products {
display: none;
}
.vmCartModule .dropdown-menu {
margin-right: -10px !important;
}
.cart-module .dropdown-toggle::after {
content: none;
}
.com-contact-featured__items, .com-contact-category__items {
overflow-x: auto;
}
footer {
padding-bottom: 30px;
}
}

View File

@@ -22,7 +22,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/js/darkmode-toggle.js
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: JavaScript logic for dark mode toggle functionality in Moko-Cassiopeia
* =========================================================================
*/

View File

@@ -22,7 +22,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/js/mod_menu/menu-metismenu-es5.js
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: ES5-compatible MetisMenu script for Joomla mod_menu in Moko-Cassiopeia
* =========================================================================
*/

View File

@@ -22,7 +22,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/js/mod_menu/menu-metismenu.js
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Modern MetisMenu script for Joomla mod_menu in Moko-Cassiopeia
* =========================================================================
*/

View File

@@ -22,7 +22,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/js/template.js
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Core JavaScript utilities and behaviors for Moko-Cassiopeia template
* =========================================================================
*/

View File

@@ -22,7 +22,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/js/theme-init.js
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Initialization script for Moko-Cassiopeia theme features and behaviors
* =========================================================================
*/

View File

@@ -22,7 +22,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: media/templates/site/moko-cassiopeia/js/user.js
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: JavaScript for handling user-specific interactions in Moko-Cassiopeia template
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: templates/moko-cassiopeia/component.php
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Minimal component-only template file for Moko-Cassiopeia
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: templates/moko-cassiopeia/custom.php
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Custom entry template file for Moko-Cassiopeia with user-defined overrides
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: templates/moko-cassiopeia/error.php
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Error page template file for Moko-Cassiopeia
* =========================================================================
*/
@@ -59,8 +59,6 @@ $params_rightIcon = htmlspecialchars($params->get('drawerRightIcon', 'fa-solid f
// ------------------ Styles ------------------
$wa->useStyle('template.base');
$wa->useStyle('template.user');
$wa->useStyle('vendor.vmbasic');
$wa->useStyle('vendor.gable');
// Light/Dark variable sheets (load before consumers)
if ($wa->assetExists('style', 'template.light.' . $colorLight)) {

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: templates/moko-cassiopeia/html/com_content/article/toc-left.php
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Template override for Joomla articles with Table of Contents aligned left
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: templates/moko-cassiopeia/html/com_content/article/toc-right.php
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Template override for Joomla articles with Table of Contents aligned right
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: templates/moko-cassiopeia/index.php
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Main template index file for Moko-Cassiopeia rendering site layout
* =========================================================================
*/
@@ -101,8 +101,6 @@ $wa->useStyle('template.base'); // css/template.css
$wa->useStyle('template.user'); // css/user.css
// Optional vendor CSS
$wa->useStyle('vendor.vmbasic');
$wa->useStyle('vendor.gable');
$wa->useStyle('vendor.bootstrap-toc');
// Color theme (light + optional dark)

View File

@@ -1,36 +1,7 @@
/*
=========================================================================
Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
This file is part of a Moko Consulting project.
SPDX-License-Identifier: GPL-3.0-or-later
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/ .
=========================================================================
FILE INFORMATION
DEFGROUP: Joomla
INGROUP: Moko-Cassiopeia
PATH: templates/moko-cassiopeia/joomla.asset.json
VERSION: 02.00
BRIEF: Joomla asset manifest defining scripts and styles for Moko-Cassiopeia template
=========================================================================
*/
{
"$schema": "https://developer.joomla.org/schemas/json-schema/web_assets.json",
"name": "tpl_moko-cassiopeia",
"version": "02.00",
"version": "02.01.05",
"description": "Moko-Cassiopeia template assets",
"license": "GPL-3.0-or-later",
"x-header":
@@ -72,24 +43,6 @@
"media": "all"
}
},
{
"name": "vendor.vmbasic",
"type": "style",
"uri": "media/templates/site/moko-cassiopeia/css/vendor/vmbasic.css",
"attributes":
{
"media": "all"
}
},
{
"name": "vendor.gable",
"type": "style",
"uri": "media/templates/site/moko-cassiopeia/css/vendor/gable.css",
"attributes":
{
"media": "all"
}
},
{
"name": "vendor.bootstrap-toc",
"type": "style",

View File

@@ -23,7 +23,7 @@
* DEFGROUP: Joomla
* INGROUP: Moko-Cassiopeia
* PATH: templates/moko-cassiopeia/offline.php
* VERSION: 02.00
* VERSION: 02.01.05
* BRIEF: Offline page template file for Moko-Cassiopeia
* =========================================================================
*/

View File

@@ -23,7 +23,7 @@
DEFGROUP: Joomla
INGROUP: Moko-Cassiopeia
PATH: templates/moko-cassiopeia/templateDetails.xml
VERSION: 02.00
VERSION: 02.01.05
BRIEF: Template manifest XML file for Moko-Cassiopeia
=========================================================================
-->
@@ -32,8 +32,8 @@
<server type="extension" name="Moko Consulting">https://raw.githubusercontent.com/mokoconsulting-tech/MokoUpdates/refs/heads/main/joomla/moko-cassiopeia/updates.xml</server>
</updateservers>
<name>moko-cassiopeia</name>
<version>02.00</version>
<creationDate>2025-08-23</creationDate>
<version>02.01.05</version>
<creationDate>2025-09-23</creationDate>
<author>Jonathan Miller || Moko Consulting</author>
<authorEmail>hello@mokoconsulting.tech</authorEmail>
<copyright>(C)GNU General Public License Version 2 - 2025 Moko Consulting</copyright>