diff --git a/assets/shared.css b/assets/shared.css index 1e107f7..e79b116 100644 --- a/assets/shared.css +++ b/assets/shared.css @@ -14,7 +14,12 @@ a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible, /* Anchored sections clear the fixed/sticky bar */ section[id]{scroll-margin-top:84px} -#lang{min-width:42px;justify-content:center} +/* ES / EN segmented language toggle (built by shared.js, replaces the old single button) */ +.langseg{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line2,#3A2C22);border-radius:10px;background:rgba(0,0,0,.22)} +.langseg .langopt{font-family:inherit;font-size:12.5px;font-weight:700;letter-spacing:.4px;color:var(--dim,#94867A);background:transparent;border:0;border-radius:7px;padding:5px 9px;cursor:pointer;line-height:1;transition:color .14s,background .14s,box-shadow .14s} +.langseg .langopt:hover{color:var(--bone,#EFE7DC)} +.langseg .langopt.on{color:#1A0E06;background:linear-gradient(180deg,var(--ember,#FF6A00),var(--brasa,#E0480F));box-shadow:0 4px 14px rgba(255,106,0,.35)} +.langseg .langopt.on:hover{color:#1A0E06} /* Skip link */ .skip{position:absolute;left:8px;top:-52px;z-index:200;background:var(--card,var(--panel,#1A1310));color:var(--bone,#EFE7DC);border:1px solid var(--ember,#FF6A00);padding:10px 16px;border-radius:10px;font-weight:600;transition:top .15s} diff --git a/assets/shared.js b/assets/shared.js index 60b8837..8cba179 100644 --- a/assets/shared.js +++ b/assets/shared.js @@ -37,39 +37,72 @@ window.addEventListener('resize',function(){ if(window.innerWidth>880) set(false); }); })(); -/* Fervon bilingual toggle — ES/EN, persisted, used by every page */ +/* Fervon bilingual toggle — ES/EN segmented control, persisted, used by every page */ (function(){ var KEY="fervon-lang"; var base=(document.documentElement.getAttribute("lang")||"es").slice(0,2).toLowerCase(); var other=base==="es"?"en":"es"; var nodes=[].slice.call(document.querySelectorAll("[data-"+other+"]")); nodes.forEach(function(n){ var a=n.getAttribute("data-i18n-attr"); n.setAttribute("data-"+base, a?(n.getAttribute(a)||""):n.innerHTML); }); + + // Replace the legacy single #lang button with an ES/EN segmented control. + var opts={}; + (function(){ + var old=document.getElementById("lang"); if(!old) return; + var seg=document.createElement("div"); + seg.id="lang"; seg.className="langseg"; + seg.setAttribute("role","group"); seg.setAttribute("aria-label","Idioma / Language"); + ["es","en"].forEach(function(lg){ + var o=document.createElement("button"); + o.type="button"; o.className="langopt"; o.setAttribute("data-lang",lg); + o.textContent=lg.toUpperCase(); + o.setAttribute("aria-label",lg==="es"?"Español":"English"); + o.addEventListener("click",function(){ + if(document.documentElement.getAttribute("lang")===lg) return; + try{localStorage.setItem(KEY,lg);}catch(e){} + apply(lg); + }); + opts[lg]=o; seg.appendChild(o); + }); + old.parentNode.replaceChild(seg,old); + })(); + function apply(lang){ document.documentElement.setAttribute("lang",lang); for(var i=0;i