From a5e6a4d931955cac3cb8ce3d3c7c05101575a352 Mon Sep 17 00:00:00 2001 From: Ricardo Monla Date: Mon, 4 May 2026 09:10:32 -0300 Subject: [PATCH] Feat: estructura web normalizada (css/style.css, js/app.js, assets/) --- descargar-curso/sync.log | 238 +++++++++++++++ www-ksaldis-dt/css/style.css | 518 ++++++++++++++++++++++++++++++++ www-ksaldis-dt/index.html | 560 +---------------------------------- www-ksaldis-dt/js/app.js | 73 +++++ 4 files changed, 832 insertions(+), 557 deletions(-) create mode 100644 www-ksaldis-dt/css/style.css create mode 100644 www-ksaldis-dt/js/app.js diff --git a/descargar-curso/sync.log b/descargar-curso/sync.log index 6da5d74..6ee2e85 100644 --- a/descargar-curso/sync.log +++ b/descargar-curso/sync.log @@ -19651,3 +19651,241 @@ Permission denied, please try again. โœ… Sincronizaciรณn completada โ€” 0 videos nuevos subidos 2026-05-04 08:50:11 +๐Ÿ”„ Sincronizaciรณn iniciada โ€” 2026-05-04 09:00:01 + Registro: 46 | Mapa: 23 +๐Ÿ“Š Mapa actualizado: 46 videos +๐Ÿ“ Regenerando libro... + ๐Ÿ“‚ Planificaciรณn (9 temas) + ๐Ÿ“‚ Preparaciรณn Atlรฉtica (15 temas) + ๐Ÿ“‚ Explicaciรณn del Trabajo Prรกctico a Presentar (2 temas) + ๐Ÿ“‚ Seguimientos de Equipos (16 temas) + ๐Ÿ“‚ Anรกlisis de Equipos de Voleibol (23 temas) + ๐Ÿ“‚ Anรกlisis de Equipos de Voleibol 2 (7 temas) + ๐Ÿ“‚ Trabajo Prรกctico Final de la Unidad (3 temas) + ๐Ÿ“‚ Entrenamiento de los Centrales y Opuestos/as (25 temas) + ๐Ÿ“‚ Puntas y Liberos/as (13 temas) + ๐Ÿ“‚ Entrenamiento de los y las Armadoras (1 temas) + ๐Ÿ“‚ Explicaciรณn del Trabajo Prรกctico a Presentar (1 temas) + โœ“ /home/rmonla/Documentos/GitHub/rm-KSALDIS-DT/descargar-curso/descargas/LIBRO_DE_ESTUDIO.md (33 KB) + โœ“ /home/rmonla/Documentos/GitHub/rm-KSALDIS-DT/descargar-curso/descargas/LIBRO_DE_ESTUDIO.html (107 KB) + 115 temas de estudio +๐Ÿ“ค Subiendo cambios... + Sin cambios en git. +๐Ÿš€ Desplegando... +Permission denied, please try again. +Permission denied, please try again. +๐Ÿ“น Sincronizando videos al servidor... + ๐Ÿ“ค Subiendo M1_Explicacion_TP_video_1173576229.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M1_Planificacion_PLANIFICACIร“N.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M1_Preparacion_Atletica_PREPARACIร“N_ATLร‰TICA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M1_Preparacion_Atletica_video_1063655414.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M1_Preparacion_Atletica_video_1063657248.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_APOYO_0.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_ATAQUE_B.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_BETI_A_UN_PIE_ATRAS.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_BETI_EN_JUEGO.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HANA_POSITIVA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HANA_RECEPCION_A_2.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATU_BIEN_HECHA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATU_CON_PELOTA_SEPARADA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATUMARCADA_BIEN_ATACADA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATU_MARCADA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATU_RECEPCION_PERFECTA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_PRIORIDAD_EN_EL_BLOQUEO.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_SKIPPED_STEP.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_1179197191.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919342668.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919346562.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919355668.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919359386.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919359855.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919360318.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919363728.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919365485.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919366263.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Entrenamiento_Armadoras_video_1181188693.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Explicacion_TP_video_1181892359.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_EVALUACION_POSICIONAL.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_GLOBAL_TECNICO_DE_LA_PIPE.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_PUNTAS_Y_LรBEROS_AS.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_SPLIT_STEP.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921873304.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921873724.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921873953.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921875302.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921875519.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921875778.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921879520.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921879925.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo MX_video_1073484590.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo MX_video_1175436659.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo MX_video_1176900332.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo MX_video_876705933.mp4... + โŒ Error scp + +โœ… Sincronizaciรณn completada โ€” 0 videos nuevos subidos + 2026-05-04 09:00:11 +๐Ÿ”„ Sincronizaciรณn iniciada โ€” 2026-05-04 09:10:01 + Registro: 46 | Mapa: 23 +๐Ÿ“Š Mapa actualizado: 46 videos +๐Ÿ“ Regenerando libro... + ๐Ÿ“‚ Planificaciรณn (9 temas) + ๐Ÿ“‚ Preparaciรณn Atlรฉtica (15 temas) + ๐Ÿ“‚ Explicaciรณn del Trabajo Prรกctico a Presentar (2 temas) + ๐Ÿ“‚ Seguimientos de Equipos (16 temas) + ๐Ÿ“‚ Anรกlisis de Equipos de Voleibol (23 temas) + ๐Ÿ“‚ Anรกlisis de Equipos de Voleibol 2 (7 temas) + ๐Ÿ“‚ Trabajo Prรกctico Final de la Unidad (3 temas) + ๐Ÿ“‚ Entrenamiento de los Centrales y Opuestos/as (25 temas) + ๐Ÿ“‚ Puntas y Liberos/as (13 temas) + ๐Ÿ“‚ Entrenamiento de los y las Armadoras (1 temas) + ๐Ÿ“‚ Explicaciรณn del Trabajo Prรกctico a Presentar (1 temas) + โœ“ /home/rmonla/Documentos/GitHub/rm-KSALDIS-DT/descargar-curso/descargas/LIBRO_DE_ESTUDIO.md (33 KB) + โœ“ /home/rmonla/Documentos/GitHub/rm-KSALDIS-DT/descargar-curso/descargas/LIBRO_DE_ESTUDIO.html (107 KB) + 115 temas de estudio +๐Ÿ“ค Subiendo cambios... + Sin cambios en git. +๐Ÿš€ Desplegando... +Permission denied, please try again. +Permission denied, please try again. +๐Ÿ“น Sincronizando videos al servidor... + ๐Ÿ“ค Subiendo M1_Explicacion_TP_video_1173576229.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M1_Planificacion_PLANIFICACIร“N.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M1_Preparacion_Atletica_PREPARACIร“N_ATLร‰TICA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M1_Preparacion_Atletica_video_1063655414.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M1_Preparacion_Atletica_video_1063657248.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_APOYO_0.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_ATAQUE_B.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_BETI_A_UN_PIE_ATRAS.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_BETI_EN_JUEGO.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HANA_POSITIVA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HANA_RECEPCION_A_2.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATU_BIEN_HECHA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATU_CON_PELOTA_SEPARADA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATUMARCADA_BIEN_ATACADA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATU_MARCADA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_HATU_RECEPCION_PERFECTA.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_PRIORIDAD_EN_EL_BLOQUEO.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_SKIPPED_STEP.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_1179197191.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919342668.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919346562.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919355668.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919359386.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919359855.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919360318.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919363728.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919365485.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Centrales_y_Oponentes_video_919366263.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Entrenamiento_Armadoras_video_1181188693.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Explicacion_TP_video_1181892359.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_EVALUACION_POSICIONAL.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_GLOBAL_TECNICO_DE_LA_PIPE.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_PUNTAS_Y_LรBEROS_AS.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_SPLIT_STEP.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921873304.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921873724.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921873953.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921875302.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921875519.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921875778.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921879520.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo M2_Puntas_y_Liberos_video_921879925.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo MX_video_1073484590.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo MX_video_1175436659.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo MX_video_1176900332.mp4... + โŒ Error scp + ๐Ÿ“ค Subiendo MX_video_876705933.mp4... + โŒ Error scp + +โœ… Sincronizaciรณn completada โ€” 0 videos nuevos subidos + 2026-05-04 09:10:11 diff --git a/www-ksaldis-dt/css/style.css b/www-ksaldis-dt/css/style.css new file mode 100644 index 0000000..1fc0ef2 --- /dev/null +++ b/www-ksaldis-dt/css/style.css @@ -0,0 +1,518 @@ +/* ===================================================== + Curso de Vรณley โ€” Material de Estudio + Estilos principales + ===================================================== */ + +* { 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; +} + +/* โ”€โ”€ RECURSOS โ”€โ”€ */ +.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 โ”€โ”€ */ +.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; } +} diff --git a/www-ksaldis-dt/index.html b/www-ksaldis-dt/index.html index 3a298b1..5a082c8 100644 --- a/www-ksaldis-dt/index.html +++ b/www-ksaldis-dt/index.html @@ -8,516 +8,7 @@ - + @@ -1713,51 +1204,6 @@ body { - + - \ No newline at end of file + diff --git a/www-ksaldis-dt/js/app.js b/www-ksaldis-dt/js/app.js new file mode 100644 index 0000000..b9ee06c --- /dev/null +++ b/www-ksaldis-dt/js/app.js @@ -0,0 +1,73 @@ +/* ===================================================== + Curso de Vรณley โ€” Material de Estudio + JavaScript principal + ===================================================== */ + +(function () { + "use strict"; + + // โ”€โ”€ Sidebar toggle (mรณvil) โ”€โ”€ + const hamburger = document.getElementById("hamburger"); + const sidebar = document.getElementById("sidebar"); + const overlay = document.getElementById("sidebar-overlay"); + + if (hamburger && sidebar && overlay) { + hamburger.addEventListener("click", () => { + sidebar.classList.toggle("open"); + overlay.classList.toggle("open"); + }); + + overlay.addEventListener("click", () => { + sidebar.classList.remove("open"); + overlay.classList.remove("open"); + }); + + // Cerrar sidebar al hacer clic en un enlace (mรณvil) + sidebar.querySelectorAll("a").forEach((link) => { + link.addEventListener("click", () => { + if (window.innerWidth <= 900) { + sidebar.classList.remove("open"); + overlay.classList.remove("open"); + } + }); + }); + } + + // โ”€โ”€ Navegaciรณn activa por scroll โ”€โ”€ + const sections = document.querySelectorAll(".seccion-titulo"); + const navLinks = document.querySelectorAll(".sidebar-nav a[data-section]"); + + if (sections.length && navLinks.length) { + 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)); + } + + // โ”€โ”€ Colapsar/expandir videos y PDFs โ”€โ”€ + document.addEventListener("click", function (e) { + const header = e.target.closest(".video-viewer-header, .pdf-viewer-header"); + if (header) { + header.parentElement.classList.toggle("collapsed"); + } + }); +})();