2025-10-20 08:54:21 +01:00
<!DOCTYPE html>
< html lang = "{{if eq .Lang " es " } } es { { else } } en { { end } } " >
2025-12-02 08:29:54 +00:00
{{template "head" .}}
2025-11-12 23:07:44 +00:00
< body { { if . ThemeClean } } class = "theme-clean" { { end } }
2025-11-30 04:35:16 +00:00
_ = "on load call initScrollBehavior()
on scroll from window call handleScroll()
on keydown
2025-11-30 05:58:44 +00:00
set tag to event.target.tagName
2025-12-01 13:03:06 +00:00
set ninjaKeys to document.getElementById('cmd-k-bar')
set ninjaOpen to (ninjaKeys is not null and ninjaKeys.opened)
set skip to (tag is 'INPUT' or tag is 'TEXTAREA' or ninjaOpen)
2025-11-30 05:58:44 +00:00
set noMod to (not event.ctrlKey and not event.metaKey and not event.altKey)
if event.key is '?' and noMod and not skip then halt the event then call openModalShortcut('shortcuts-modal') end
if (event.key is 'l' or event.key is 'L') and noMod and not skip then halt the event then call handleToggleShortcut('lengthToggle', 'lengthToggleMenu') end
if (event.key is 'i' or event.key is 'I') and noMod and not skip then halt the event then call handleToggleShortcut('iconToggle', 'iconToggleMenu') end
if (event.key is 'v' or event.key is 'V') and noMod and not skip then halt the event then call handleToggleShortcut('themeToggle', 'themeToggleMenu') end
2025-11-15 15:59:54 +00:00
end" >
2025-11-12 19:54:56 +00:00
2025-12-02 08:29:54 +00:00
<!-- ============================================ -->
<!-- TOP NAVIGATION & CONTROLS -->
<!-- ============================================ -->
< div id = "top" > < / div >
2025-11-12 18:26:18 +00:00
{{template "action-bar" .}}
{{template "hamburger-menu" .}}
2025-11-18 15:49:30 +00:00
{{template "color-theme-switcher" .}}
2025-11-07 19:11:21 +00:00
2025-12-02 08:29:54 +00:00
<!-- ============================================ -->
<!-- MAIN CV CONTENT -->
<!-- ============================================ -->
2025-11-12 15:24:09 +00:00
< div id = "zoom-wrapper" class = "zoom-wrapper" >
< div class = "cv-container" >
2025-11-12 18:55:06 +00:00
{{template "cv-content.html" .}}
2025-11-09 19:30:05 +00:00
< / div >
2025-12-02 08:29:54 +00:00
< / div >
2025-11-12 11:00:29 +00:00
2025-12-02 08:29:54 +00:00
<!-- ============================================ -->
<!-- PAGE FOOTER & NOTIFICATIONS -->
<!-- ============================================ -->
2025-11-17 17:10:46 +00:00
{{template "page-footer" .}}
2025-11-12 18:26:18 +00:00
{{template "error-toast" .}}
2025-11-20 13:00:06 +00:00
{{template "pdf-toast" .}}
2025-11-23 08:21:12 +00:00
2025-12-02 08:29:54 +00:00
<!-- ============================================ -->
<!-- FLOATING BUTTONS -->
<!-- ============================================ -->
2025-11-23 08:21:12 +00:00
< div class = "fixed-buttons-backdrop no-print" > < / div >
2025-11-12 18:26:18 +00:00
{{template "back-to-top" .}}
2025-11-17 08:34:50 +00:00
{{template "info-button" .}}
{{template "download-button" .}}
{{template "print-friendly-button" .}}
2025-12-01 13:03:06 +00:00
{{template "contact-button" .}}
2025-11-17 08:34:50 +00:00
{{template "zoom-toggle-button" .}}
{{template "shortcuts-button" .}}
2025-12-01 13:03:06 +00:00
{{template "cmd-k-button" .}}
2025-12-02 08:29:54 +00:00
<!-- ============================================ -->
<!-- MODALS -->
<!-- ============================================ -->
2025-11-12 18:26:18 +00:00
{{template "info-modal" .}}
2025-11-15 15:59:54 +00:00
{{template "shortcuts-modal" .}}
2025-11-12 18:26:18 +00:00
{{template "pdf-modal" .}}
2025-11-30 14:31:58 +00:00
{{template "contact-modal" .}}
2025-11-12 18:26:18 +00:00
{{template "zoom-control" .}}
2025-11-12 11:00:29 +00:00
2025-12-02 08:29:54 +00:00
<!-- ============================================ -->
<!-- SCRIPTS & ANALYTICS -->
<!-- ============================================ -->
{{template "body-scripts" .}}
2025-10-20 08:54:21 +01:00
< / body >
< / html >