Rename: www-ksaldis-dt/ → www/

This commit is contained in:
Ricardo Monla
2026-05-04 11:03:24 -03:00
parent 9aedebe284
commit 1281328401
79 changed files with 2 additions and 2 deletions
View File
View File
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
+508
View File
@@ -0,0 +1,508 @@
* { margin: 0; padding: 0; box-sizing: border-box; }
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
:root {
--sidebar-w: 280px;
--color-bg: #f5f3ef;
--color-surface: #ffffff;
--color-primary: #1a5276;
--color-primary-dark: #0d2b3e;
--color-accent: #2980b9;
--color-text: #2c2c2c;
--color-text-muted: #6b7280;
}
body {
font-family: 'Inter', 'Segoe UI', system-ui, sans-serif;
background: var(--color-bg);
color: var(--color-text);
line-height: 1.8;
font-size: 16px;
}
/* ── LAYOUT ── */
.app-layout {
display: flex;
min-height: 100vh;
}
/* ── SIDEBAR ── */
.sidebar {
width: var(--sidebar-w);
background: var(--color-primary-dark);
color: rgba(255,255,255,0.85);
position: fixed;
top: 0;
left: 0;
bottom: 0;
overflow-y: auto;
z-index: 100;
display: flex;
flex-direction: column;
transition: transform 0.3s ease;
}
.sidebar-header {
padding: 1.5rem 1.2rem 1rem;
border-bottom: 1px solid rgba(255,255,255,0.08);
flex-shrink: 0;
}
.sidebar-header .logo {
font-size: 1.8rem;
margin-bottom: 0.3rem;
}
.sidebar-header h1 {
font-size: 0.95rem;
font-weight: 700;
line-height: 1.3;
margin-bottom: 0.2rem;
}
.sidebar-header p {
font-size: 0.72rem;
opacity: 0.5;
font-weight: 400;
}
.sidebar-stats {
display: flex;
gap: 0.5rem;
padding: 0.8rem 1.2rem;
border-bottom: 1px solid rgba(255,255,255,0.08);
flex-shrink: 0;
}
.sidebar-stats .stat {
background: rgba(255,255,255,0.08);
padding: 0.3rem 0.6rem;
border-radius: 6px;
font-size: 0.7rem;
font-weight: 500;
flex: 1;
text-align: center;
}
.sidebar-nav {
flex: 1;
overflow-y: auto;
padding: 0.8rem 0;
}
.sidebar-nav .nav-modulo {
padding: 0.6rem 1.2rem 0.3rem;
font-size: 0.68rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
color: rgba(255,255,255,0.4);
}
.sidebar-nav a {
display: block;
padding: 0.45rem 1.2rem 0.45rem 1.6rem;
color: rgba(255,255,255,0.7);
text-decoration: none;
font-size: 0.82rem;
font-weight: 400;
transition: all 0.2s;
border-left: 3px solid transparent;
}
.sidebar-nav a:hover {
background: rgba(255,255,255,0.06);
color: white;
border-left-color: var(--color-accent);
}
.sidebar-nav a.active {
background: rgba(41,128,185,0.15);
color: white;
border-left-color: var(--color-accent);
font-weight: 600;
}
.sidebar-nav .nav-count {
font-size: 0.65rem;
opacity: 0.4;
margin-left: 0.3rem;
}
/* ── HAMBURGER ── */
.hamburger {
display: none;
position: fixed;
top: 1rem;
left: 1rem;
z-index: 200;
background: var(--color-primary-dark);
border: none;
color: white;
width: 44px;
height: 44px;
border-radius: 10px;
font-size: 1.4rem;
cursor: pointer;
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
transition: transform 0.2s;
}
.hamburger:hover { transform: scale(1.05); }
.sidebar-overlay {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.4);
z-index: 99;
}
/* ── MAIN CONTENT ── */
.main-content {
flex: 1;
margin-left: var(--sidebar-w);
min-width: 0;
}
/* ── PORTADA ── */
.portada {
background: linear-gradient(135deg, var(--color-primary-dark) 0%, var(--color-primary) 50%, var(--color-accent) 100%);
color: white;
padding: 4rem 2rem;
text-align: center;
min-height: 50vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
position: relative;
overflow: hidden;
}
.portada::before {
content: '';
position: absolute;
top: -50%; left: -50%;
width: 200%; height: 200%;
background: radial-gradient(circle at 30% 70%, rgba(255,255,255,0.05) 0%, transparent 50%);
pointer-events: none;
}
.portada .icono-grande { font-size: 4rem; margin-bottom: 1rem; opacity: 0.3; }
.portada h1 { font-size: 2.4rem; margin-bottom: 0.5rem; font-weight: 800; letter-spacing: -1px; }
.portada h2 { font-size: 1.15rem; font-weight: 300; opacity: 0.8; margin-bottom: 1rem; }
.portada p { opacity: 0.6; font-size: 0.9rem; }
/* ── CONTENIDO ── */
.contenido {
max-width: 820px;
margin: 0 auto;
padding: 2.5rem;
background: var(--color-surface);
min-height: 60vh;
}
.contenido h1.modulo-titulo {
color: var(--color-primary-dark);
font-size: 1.8rem;
font-weight: 800;
border-bottom: 3px solid var(--color-accent);
padding-bottom: 0.5rem;
margin: 3rem 0 1.5rem;
letter-spacing: -0.5px;
}
.contenido h2.seccion-titulo {
color: var(--color-primary);
font-size: 1.35rem;
font-weight: 700;
margin: 2.5rem 0 1rem;
border-left: 4px solid var(--color-accent);
padding-left: 0.8rem;
scroll-margin-top: 1rem;
}
.contenido h3.tema-titulo {
color: #2c3e50;
font-size: 1.1rem;
margin: 1.8rem 0 0.8rem;
font-weight: 600;
}
.contenido h4 {
color: #34495e;
font-size: 1rem;
margin: 1.3rem 0 0.6rem;
font-weight: 600;
}
.contenido p { margin: 0.8rem 0; text-align: justify; }
.contenido ul, .contenido ol { margin: 0.8rem 0; padding-left: 1.8rem; }
.contenido li { margin: 0.4rem 0; }
.contenido strong { color: #1a3a4a; font-weight: 600; }
.contenido hr {
border: none;
border-top: 1px solid #e8e4df;
margin: 1.8rem 0;
}
.contenido table {
width: 100%;
border-collapse: collapse;
margin: 1.2rem 0;
font-size: 0.88rem;
overflow-x: auto;
display: block;
}
.contenido th, .contenido td {
border: 1px solid #ddd;
padding: 0.6rem 0.8rem;
text-align: left;
vertical-align: top;
}
.contenido th {
background: var(--color-primary-dark);
color: white;
font-weight: 600;
}
.contenido tr:nth-child(even) { background: #f8f6f3; }
.contenido tr:hover { background: #efece7; }
.contenido blockquote {
border-left: 4px solid var(--color-accent);
margin: 1rem 0;
padding: 0.8rem 1.2rem;
background: #f0f5fa;
color: #2c3e50;
border-radius: 0 4px 4px 0;
}
/* ── VIDEO PLAYER ── */
.video-viewer-wrap {
margin: 1rem 0;
border: 1px solid #2c3e50;
border-radius: 8px;
overflow: hidden;
background: #1a1a2e;
}
.video-viewer-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.7rem 1rem;
background: linear-gradient(135deg, #1a1a2e, #16213e);
color: #eee;
cursor: pointer;
user-select: none;
font-size: 0.9rem;
transition: background 0.2s;
}
.video-viewer-header:hover {
background: linear-gradient(135deg, #16213e, #0f3460);
}
.video-toggle {
transition: transform 0.3s;
font-size: 0.8rem;
opacity: 0.6;
color: #aaa;
}
.video-viewer-wrap.collapsed .video-toggle {
transform: rotate(-90deg);
}
.video-viewer-wrap.collapsed .video-container,
.video-viewer-wrap.collapsed .video-placeholder {
display: none;
}
.video-container {
border-radius: 0;
overflow: hidden;
background: #000;
}
.video-container video {
width: 100%;
display: block;
}
/* ── NOTAS ESPECIALES ── */
.nota-video {
background: #fef9e7;
border: 1px solid #f9e79f;
border-left: 4px solid #f1c40f;
padding: 0.6rem 1rem;
margin: 0.8rem 0;
border-radius: 0 4px 4px 0;
font-size: 0.88rem;
color: #7d6608;
}
.video-placeholder {
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
border-radius: 8px;
padding: 2rem;
margin: 1rem 0;
text-align: center;
color: #e0e0e0;
position: relative;
overflow: hidden;
}
.video-placeholder::before {
content: '';
position: absolute;
top: 0; left: -100%; width: 200%; height: 100%;
background: linear-gradient(90deg, transparent 25%, rgba(255,255,255,0.03) 50%, transparent 75%);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% { transform: translateX(-50%); }
100% { transform: translateX(50%); }
}
.video-placeholder .play-icon {
font-size: 2.5rem;
margin-bottom: 0.5rem;
opacity: 0.5;
}
.video-placeholder .placeholder-text {
font-size: 0.85rem;
opacity: 0.6;
}
.video-placeholder .placeholder-label {
font-size: 0.75rem;
opacity: 0.35;
margin-top: 0.4rem;
}
/* ── BARRA DE PROGRESO ── */
.progress-section {
padding: 0.8rem 1.2rem;
border-top: 1px solid rgba(255,255,255,0.08);
}
.progress-section .progress-label {
font-size: 0.7rem;
color: rgba(255,255,255,0.5);
margin-bottom: 0.4rem;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.progress-bar-bg {
background: rgba(255,255,255,0.1);
border-radius: 6px;
height: 8px;
overflow: hidden;
}
.progress-bar-fill {
height: 100%;
border-radius: 6px;
background: linear-gradient(90deg, #2980b9, #27ae60);
transition: width 0.5s ease;
}
.progress-stats {
display: flex;
justify-content: space-between;
font-size: 0.7rem;
color: rgba(255,255,255,0.4);
margin-top: 0.3rem;
}
.nota-recurso {
background: #eaf2f8;
border: 1px solid #aed6f1;
border-left: 4px solid var(--color-accent);
padding: 0.6rem 1rem;
margin: 0.8rem 0;
border-radius: 0 4px 4px 0;
font-size: 0.88rem;
}
.nota-recurso a {
color: var(--color-primary);
font-weight: 600;
}
.pdf-viewer-wrap {
margin: 1rem 0;
border: 1px solid #d5e8f0;
border-radius: 8px;
overflow: hidden;
background: #f8fbfd;
}
.pdf-viewer-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.7rem 1rem;
background: linear-gradient(135deg, #eaf2f8, #d4e6f1);
cursor: pointer;
user-select: none;
font-size: 0.9rem;
transition: background 0.2s;
}
.pdf-viewer-header:hover {
background: linear-gradient(135deg, #d4e6f1, #aed6f1);
}
.pdf-toggle {
transition: transform 0.3s;
font-size: 0.8rem;
opacity: 0.6;
}
.pdf-viewer-wrap.collapsed .pdf-toggle {
transform: rotate(-90deg);
}
.pdf-viewer {
width: 100%;
height: 70vh;
border: none;
display: block;
}
.pdf-viewer-wrap.collapsed .pdf-viewer,
.pdf-viewer-wrap.collapsed .pdf-download-link {
display: none;
}
.pdf-download-link {
display: block;
text-align: center;
padding: 0.5rem;
font-size: 0.82rem;
color: var(--color-primary);
text-decoration: none;
background: #eaf2f8;
border-top: 1px solid #d5e8f0;
}
.pdf-download-link:hover {
background: #d4e6f1;
}
.nota-vacio {
color: var(--color-text-muted);
font-style: italic;
font-size: 0.88rem;
margin: 0.5rem 0;
}
.contenido .tema-separador {
margin: 2rem 0;
border-top: 1px dashed #ddd;
}
/* ── PIE DE PÁGINA ── */
.footer {
text-align: center;
padding: 2rem;
color: var(--color-text-muted);
font-size: 0.8rem;
max-width: 820px;
margin: 0 auto;
border-top: 1px solid #e8e4df;
background: var(--color-surface);
}
/* ── RESPONSIVE ── */
@media (max-width: 900px) {
.sidebar { transform: translateX(-100%); }
.sidebar.open { transform: translateX(0); }
.sidebar-overlay.open { display: block; }
.hamburger { display: block; }
.main-content { margin-left: 0; }
.portada { padding: 3rem 1rem 2rem; min-height: 40vh; }
.portada h1 { font-size: 1.6rem; }
.portada h2 { font-size: 0.95rem; }
.contenido { padding: 1.5rem 1rem; }
}
+1209
View File
File diff suppressed because it is too large Load Diff
+44
View File
@@ -0,0 +1,44 @@
// Hamburger menu
const hamburger = document.getElementById('hamburger');
const sidebar = document.getElementById('sidebar');
const overlay = document.getElementById('sidebar-overlay');
hamburger.addEventListener('click', () => {
sidebar.classList.toggle('open');
overlay.classList.toggle('open');
});
overlay.addEventListener('click', () => {
sidebar.classList.remove('open');
overlay.classList.remove('open');
});
// Close sidebar on nav click (mobile)
sidebar.querySelectorAll('a').forEach(link => {
link.addEventListener('click', () => {
if (window.innerWidth <= 900) {
sidebar.classList.remove('open');
overlay.classList.remove('open');
}
});
});
// Highlight active section on scroll
const sections = document.querySelectorAll('.seccion-titulo');
const navLinks = document.querySelectorAll('.sidebar-nav a[data-section]');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
navLinks.forEach(link => link.classList.remove('active'));
const id = entry.target.id;
const activeLink = document.querySelector('.sidebar-nav a[data-section="' + id + '"]');
if (activeLink) {
activeLink.classList.add('active');
activeLink.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
}
}
});
}, { rootMargin: '-10% 0px -80% 0px' });
sections.forEach(section => observer.observe(section));