// BRITXIA — Home · KLEO protagonista + GSAP (function () { const { useState, useEffect } = React; const BX = window.BX; const NAVY = BX.navy, ORANGE = BX.orange, CREAM = BX.cream; const H = '"Poppins", system-ui, sans-serif'; const B = '"Inter", system-ui, sans-serif'; const M = '"JetBrains Mono", ui-monospace, monospace'; const LIGHT = '#F3EEE6'; const BLUE = '#1A6DB5'; const BORD = 'rgba(13,27,42,0.10)'; // ── Inject keyframes once ────────────────────────────────────── if (!document.getElementById('bx-home-styles')) { const s = document.createElement('style'); s.id = 'bx-home-styles'; s.textContent = ` @keyframes bxDot{0%,80%,100%{transform:scale(.6);opacity:.35}40%{transform:scale(1);opacity:1}} @keyframes bxFloat{0%,100%{transform:translateY(0) rotateX(2deg) rotateY(-3deg)}50%{transform:translateY(-10px) rotateX(-1deg) rotateY(2deg)}} .prod-visual{perspective:900px;perspective-origin:50% 50%} .dev-3d{transform-style:preserve-3d;transition:transform .5s cubic-bezier(.23,1,.32,1)} .prod-row:hover .dev-3d{transform:rotateX(-4deg) rotateY(5deg) scale(1.03)!important} .prod-row.rev:hover .dev-3d{transform:rotateX(-4deg) rotateY(-5deg) scale(1.03)!important} @keyframes bxBar{from{transform:scaleY(0);transform-origin:bottom}to{transform:scaleY(1)}} @keyframes bxProg{from{width:0!important}} .btn-hover{transition:transform .2s,box-shadow .2s}\n .btn-hover:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(245,166,35,.45)}\n .btn-ghost-hover{transition:border-color .2s,color .2s}\n .btn-ghost-hover:hover{border-color:rgba(248,244,238,.75)!important;color:#fff!important}\n .btn-link-hover{transition:opacity .2s,letter-spacing .2s}\n .btn-link-hover:hover{opacity:1!important;letter-spacing:.3px} `; document.head.appendChild(s); } // ── i18n hook ────────────────────────────────────────────────── function useLang() { const [, rerender] = useState(0); useEffect(() => { const h = () => rerender(n => n + 1); window.addEventListener('langchange', h); return () => window.removeEventListener('langchange', h); }, []); } const T = window.t || (k => k); // ── Responsive + dynamic card styles ───────────────────────── if (!document.getElementById('bx-responsive-styles')) { const r = document.createElement('style'); r.id = 'bx-responsive-styles'; r.textContent = ` /* global overflow guard */ body{overflow-x:hidden} *{box-sizing:border-box} /* reset fit.js scale */ #app{transform:none!important;width:100%!important} #stage{width:100%!important;height:auto!important} /* padding scale */ @media(max-width:1100px){ #hero,#about,#britxia-tech,#contacto,#quienes-somos,#kleo-section,#lo-que-sigue{padding-left:40px!important;padding-right:40px!important} #ecosistema>div:first-child{padding-left:40px!important;padding-right:40px!important} } @media(max-width:960px){ #hero{grid-template-columns:1fr!important;padding-bottom:52px!important} .hero-showcase-wrap{display:none!important} .hero-title{font-size:42px!important} .hero-sub,.hero-close{font-size:17px!important} } @media(max-width:900px){ .kleo-grid{grid-template-columns:1fr!important;gap:40px!important} } /* hamburger */ @media(max-width:768px){ .bx-nav-bar{padding:16px 20px!important} .bx-nav-desktop{display:none!important} .bx-hamburger{display:flex!important} } @media(max-width:640px){ #hero{padding:28px 20px 44px!important} .hero-title{font-size:32px!important;letter-spacing:-.5px!important} .hero-sub,.hero-close{font-size:15px!important} .hero-btns{flex-direction:column!important} .hero-btns a{text-align:center!important;width:100%!important;box-sizing:border-box!important} #about,#britxia-tech,#quienes-somos,#kleo-section,#lo-que-sigue{padding-left:20px!important;padding-right:20px!important} #ecosistema>div:first-child{padding:48px 20px 32px!important} .btech-logo{max-width:260px!important} .btech-title{font-size:22px!important} .btech-desc{font-size:14px!important} #britxia-tech{padding-top:52px!important;padding-bottom:52px!important} #quienes-somos,#kleo-section,#lo-que-sigue{padding-top:52px!important;padding-bottom:52px!important} } /* info stats */ @media(max-width:560px){ .info-stats{flex-wrap:wrap!important} .info-stats>div{flex:0 0 50%!important;border-right:none!important;padding-left:0!important;padding-right:0!important;padding-top:16px!important;padding-bottom:16px!important;border-bottom:1px solid rgba(13,27,42,.1)!important} } /* product rows */ @media(max-width:900px){ .prod-row{grid-template-columns:1fr!important} .prod-row.rev .prod-content{order:1!important} .prod-row.rev .prod-visual{order:2!important} .prod-content{padding:40px 40px!important} .prod-visual{min-height:280px!important} .waitlist-grid{grid-template-columns:1fr!important;gap:36px!important;padding:40px 36px!important} #contacto{padding-left:20px!important;padding-right:20px!important} } @media(max-width:640px){ .prod-content{padding:32px 20px!important} .prod-visual{min-height:240px!important;padding:24px 16px!important} #contacto{padding:16px 16px 52px!important} .waitlist-grid{padding:32px 20px!important;border-radius:16px!important} } /* dynamic card backgrounds */ @keyframes bxCardGlow{0%,100%{opacity:.5}50%{opacity:1}} @keyframes bxCardShimmer{0%{left:-100%}100%{left:200%}} .prod-visual{position:relative;overflow:hidden} .prod-visual::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.05) 0%,transparent 55%,rgba(255,255,255,.02) 100%);animation:bxCardGlow 5s ease-in-out infinite;pointer-events:none;z-index:0} .prod-visual::after{content:'';position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.04),transparent);animation:bxCardShimmer 9s linear infinite;pointer-events:none;z-index:0} .prod-visual>*{position:relative;z-index:1} `; document.head.appendChild(r); } // ── Platform icons ───────────────────────────────────────────── const PLATSVG = { iphone: c=>, android: c=>, web: c=>, watch: c=>, }; function PlatBadge({ platforms, color }) { const labels = { iphone: 'iPhone', android: 'Android', watch: 'Apple Watch\n& Wear OS', web: 'Web', }; return (
{T('hero.sub')}
{T('hero.close')} {T('hero.close_hi')}
{T('about.p1')}
{T('about.p2')}
{T('kleo.desc')}
{T('contact.sub')}
{T('contact.sub2')}