30 Commits
Author SHA1 Message Date
itziarZG 74df617b7b Merge pull request 'feat(proyectos): add Posidonia + Cases Tancades projects' (#3) from develop into main
Reviewed-on: #3
2026-07-31 11:26:52 +00:00
itziarZG eba8a36efa feat(proyectos): add Posidonia + Cases Tancades projects
- Add project-4 (Posidonia) and project-5 (Cases Tancades) cards and modals in all 3 locales (ES/CA/EN)
- Reorder Block A: Operativo projects first, Posidonia at top
- Align Posidonia modal style to match Eivissa Watch / Cases Tancades (bg-background-light, max-w-2xl, rounded-3xl, glass)
- Add external "Visitar sitio" link button to Eivissa Watch modal
- Refresh Eivissa Watch thumbnail (was just a green block, now real content)
- Generate Cases Tancades thumbnail from OG image
- Update Cases Tancades card tech stack from Next.js to Astro (matches actual site)
- Add "Ver detalles" button to Cases Tancades card

fix: persist modal layout stability CSS to source.css (was dropped on every build:css)
2026-07-31 13:21:02 +02:00
itziarZG 9d89a2c069 fix(ui): make .hidden work on icon SVGs (remove display:inline-block)
The .icon CSS rule had display:inline-block, which had higher source-order
priority than Tailwind's .hidden (display:none). Both have the same
specificity, but .icon was declared later in the compiled CSS, so it
overrode .hidden.

Result: both moon and sun SVGs in the theme toggle were always visible,
making them appear side-by-side (flex) or stacked (grid) instead of
swapping cleanly between light and dark mode.

Fix: remove display:inline-block from .icon. SVGs default to inline and
still respect width:1em / height:1em correctly. Now .hidden and
.dark\:block work as intended, and only one icon is visible at a time,
perfectly centered in the button.
2026-07-28 22:48:04 +02:00
itziarZG 17fcbd90cb docs(huella): update with real third-party audit measurements (Ecograder 99/100, Digital Beacon A+) 2026-07-28 22:32:04 +02:00
itziarZG a2eff3e8e8 perf(carbon): remove dead Material Symbols @font-face + subset Space Grotesk and Instrument Serif to used characters only 2026-07-28 21:59:10 +02:00
itziarZG 94728a7d76 fix(sovereignty): replace Google CDN modal images with self-hosted WebPs + update Tailwind compromise section 2026-07-28 21:43:05 +02:00
itziarZG e9600953c0 fix(proyectos): remove Flujo n8n + Ollama card (overlaps with Eivissa stack) 2026-07-28 21:08:55 +02:00
itziarZG 5e3fd2757c fix(proyectos): remove Visualización Datos Baleares card, update Eivissa stack to Ollama • n8n • Astro 2026-07-28 20:35:05 +02:00
itziarZG b5db12c8b7 fix(proyectos): change Navidrome to Sin iniciar, fix Eivissa stack label, give Cases Tancades a unique icon 2026-07-28 20:32:32 +02:00
itziarZG 9b76a4ae37 fix(proyectos): restore Eivissa Environmental Watch card + reorder cards + fix status badges 2026-07-28 20:27:59 +02:00
itziarZG 0704e8d0de fix: restore icon sizing (add .icon CSS) and re-comment Experimentos tab in standby 2026-07-28 20:21:52 +02:00
itziarZG cb8c5e6c1b Merge pull request 'Sync develop' (#2) from develop into main
Reviewed-on: #2
2026-07-28 18:10:02 +00:00
itziarZG 7dfe54318e chore(merge): integrate main perf optimizations into develop
Resolves merge conflicts when bringing origin/main into develop:
- css/styles.css: keep built/minified Tailwind output, append develop's
  layout-stability CSS (scrollbar-gutter + body.modal-open)
- js/main.js: keep main's aria-hidden + aria-selected a11y hardening, restore
  develop's tabsContainer.scrollIntoView and body.modal-open modal pattern
  (with preventScroll + getScrollbarWidth fallback for non-gutter browsers)
- index*.html / huella.html: take main's meta+analytics+defer heavy work as
  base, restore develop's inline SVG icons (replaces Material Symbols spans)
  and add favicon link
- privacidad*.html: take main's rewritten multi-language versions, add favicon
- keep develop's tab DOM fixes (each tab-pane shows its own content;
  Trabajo Anterior details nested inside tab-proyectos)
- keep develop's deletion of fonts/material-symbols-outlined.woff2
2026-07-28 19:56:31 +02:00
itziarZG 5c3f7a7aa2 fix(lab): repair tab DOM structure, restore missing content, stop page jumps
- Fix malformed class attribute on tab buttons container (was breaking
  pb-4 mb-8 dark:border-slate-800 classes; tab buttons sat glued to
  content with no spacing)
- Move 'Trabajo Anterior' details back inside #tab-proyectos where it
  belongs (had been orphaned into #tab-contents after earlier balance
  fixes, causing it to render on every tab)
- Close tab-proyectos correctly so Proyectos and Notes panes show their
  own content instead of inheriting display:none from Infraestructura
- initTabs() now scrolls smoothly to the tab buttons container on switch
  to prevent the 'jump' caused by varying content height
2026-07-28 19:32:28 +02:00
itziarZG 29d215495d perf(carbon): replace Material Symbols with inline SVGs and self-host WebP images
- Remove fonts/material-symbols-outlined.woff2 (4MB external font eliminated)
- Inline 38 Material Symbols as SVG paths (extracted to icon-paths.json)
- Convert 5 Google-hosted images to self-hosted WebP
- Add favicon.svg (adaptive auto_awesome icon, light + dark)
- Add scrollbar-gutter: stable + body.modal-open to prevent modal jumps
- Clean up preload links to fonts no longer used

Net reduction: ~3.9MB external dependencies, zero CLS on icon swap
2026-07-28 19:32:15 +02:00
itziarZG f2cdc82641 perf: defer heavy modal images with loading=lazy
The Trace JSON showed the two external images from
lh3.googleusercontent.com (~3-4 MB each) being downloaded
during initial load even though they live inside hidden modals.
Adding loading=lazy and decoding=async defers them until the
modal is opened, eliminating the main-thread blocking that
caused the TBT regression.
2026-07-26 22:12:41 +02:00
itziarZG 3c2545d898 perf: reduce TBT by removing blur and font preload
- Drop Instrument Serif italic preload (Lighthouse flags ~700 ms savings)
- Remove backdrop-filter from .glass; use solid translucent background
  to avoid repaints triggered when hero image loads
- Add defer to main.js
2026-07-26 21:51:43 +02:00
itziarZG e4cac196df perf: optimize LCP, TBT and font payload
- Convert hero background to <img> with width/height/fetchpriority=high
  so Lighthouse detects it as the LCP element
- Defer Umami analytics via requestIdleCallback to reduce TBT
- Drop non-critical font preloads (Material Symbols, Space Grotesk 400);
  keep only Instrument Serif italic which is visible above the fold
- Remove unused font weights (300/500/600) from Space Grotesk
2026-07-26 21:46:49 +02:00
itziarZG d44d9464ed perf: self-host hero gradient image (WebP 24 KB) 2026-07-26 21:33:43 +02:00
itziarZG e287861dd7 perf: replace Tailwind CDN with minified CSS build
- Add package.json, tailwind.config.js and css/source.css with @tailwind directives
- Generate css/styles.css (24 KB) via Tailwind CLI v3.4
- Remove cdn.tailwindcss.com and inline tailwind.config from all HTML pages
- Add preload of css/styles.css
- Add cross-language hreflang alternates in HTML and sitemap.xml
2026-07-26 21:30:21 +02:00
itziarZG 3b6352bdca feat: improve SEO and accessibility 2026-07-26 21:04:53 +02:00
itziarZG d83ef3394b Merge pull request 'Develop' (#1) from develop into main
Reviewed-on: #1
2026-07-21 17:43:52 +00:00
itziarZG 88b7742291 feat: refresh portfolio, add analytics and privacy policy
- Update project cards with honest statuses: Navidrome and n8n+Ollama
  moved to 'On the roadmap', Open Source marked 'Not started',
  Visualización Datos Baleares marked 'Migration pending (on Vercel)'.
- Remove past-dated Notes post (2 de Junio, 2026 / Próximamente) with
  never-written content.
- Add Cases Tancades as 5th project: open housing diagnostic for
  Balears crossing INE, Airbnb and Govern Balear HUT registries.
- Add self-hosted Umami analytics tracker to all 4 pages with
  data-domains='www.itziarzameza.dev' to exclude localhost/file://
  visits from analytics.
- Add RGPD-compliant privacy policy in ES/CA/EN
  (privacidad.html, privacidad-ca.html, privacidad-en.html) covering
  controller, data collected, purpose, legal basis, retention,
  user rights, and explicit no-cookies statement.
- Link to privacy policy from footer of all 4 pages.
2026-07-21 19:41:07 +02:00
itziarZG 335edbf316 feat: update email 2026-07-21 18:46:03 +02:00
itziarZG 4793bf76a9 fix(i18n): complete translations for Catalan and English pages (manifesto, lab, projects & modals) 2026-07-20 19:50:59 +02:00
itziarZG e87f90006c feat(notes): add Green Software Practitioner note and disclaimer in 3 languages 2026-07-20 19:48:36 +02:00
itziarZG e9cf9a160a feat: add multi-language support (ES, CA, EN) and optimize font preloading & CLS 2026-07-20 19:41:51 +02:00
itziarZG 1c1da7df73 feat: add Green Software Practitioner badge and update self-hosted fonts info 2026-07-20 18:52:33 +02:00
itziarZG 92b21eab3c fix: fix icons 2026-07-20 15:57:31 +02:00
itziarZG b4ff3a0aca feat: change icons and fonts 2026-07-20 15:34:48 +02:00