Modularización de GKACHELE SaaS

This commit is contained in:
gkachele
2026-01-17 11:40:17 +01:00
commit b6820848b8
1338 changed files with 339275 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
<!--
GKACHELE™ Template System
© 2025 GKACHELE™. Todos los derechos reservados.
Desarrollado desde noviembre 2025 por GKACHELE
Código propiedad de GKACHELE © 2025 - Prohibida su reproducción sin autorización
-->
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% if site_name %}{{ site_name }}{% else %}GKACHELE Site{% endif %}</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family={{ typography.font_family|replace(' ', '+') }}:wght@300;400;500;700&display=swap" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--primary: {{ colors.primary or '#d32f2f' }};
--secondary: {{ colors.secondary or '#ff6f00' }};
--text: {{ colors.text or '#2c2c2c' }};
--bg-light: #f9f9f9;
--white: #ffffff;
}
body {
font-family: '{{ typography.font_family or 'Roboto' }}', sans-serif;
color: var(--text);
line-height: 1.6;
}
/* Header / Navigation */
.gk-header {
background: var(--white);
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
position: fixed;
width: 100%;
top: 0;
z-index: 1000;
}
.gk-nav {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px 40px;
max-width: 1200px;
margin: 0 auto;
}
.gk-logo {
font-size: 28px;
color: var(--primary);
font-weight: 700;
text-decoration: none;
}
.gk-menu {
display: flex;
list-style: none;
gap: 30px;
}
.gk-menu a {
text-decoration: none;
color: var(--text);
font-weight: 500;
transition: color 0.3s;
}
.gk-menu a:hover {
color: var(--primary);
}
.gk-menu .current-menu-item a {
color: var(--primary);
}
/* Main Content */
.gk-main {
margin-top: 80px;
min-height: calc(100vh - 160px);
}
@media (max-width: 768px) {
.gk-menu {
display: none;
}
}
</style>
</head>
<body>
<header class="gk-header">
<nav class="gk-nav">
<a href="/" class="gk-logo">{{ site_name or 'GKACHELE Site' }}</a>
{% if menus %}
<ul class="gk-menu">
{% for menu_item in menus.header %}
<li class="{% if menu_item.current %}current-menu-item{% endif %}">
<a href="{{ menu_item.url }}">{{ menu_item.title }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
</nav>
</header>
<main class="gk-main">