// ---------- Landing Page ----------

function Navbar({ onEnterAdmin }) {
  const { t, lang } = useT();
  const [scrolled, setScrolled] = React.useState(false);
  const [mobileOpen, setMobileOpen] = React.useState(false);
  React.useEffect(() => {
    const h = () => setScrolled(window.scrollY > 40);
    window.addEventListener('scroll', h);
    return () => window.removeEventListener('scroll', h);
  }, []);

  const navStyle = {
    position:'fixed', top:0, left:0, right:0, zIndex:100,
    padding: scrolled ? '14px 40px' : '22px 40px',
    background: scrolled ? 'rgba(15, 10, 6, 0.72)' : 'transparent',
    backdropFilter: scrolled ? 'blur(16px) saturate(140%)' : 'none',
    borderBottom: scrolled ? '1px solid var(--border)' : '1px solid transparent',
    transition: 'all .3s ease',
    display:'flex', alignItems:'center', justifyContent:'space-between',
  };

  return (
    <nav style={navStyle}>
      <div
        style={{fontFamily:'Cormorant Garamond',fontSize:26,fontWeight:500,letterSpacing:'-0.01em',cursor:'default',transition:'opacity .2s'}}
        onMouseEnter={e=>e.currentTarget.style.opacity='0.75'}
        onMouseLeave={e=>e.currentTarget.style.opacity='1'}
      >
        Gelato <span style={{fontStyle:'italic',color:'var(--accent)',fontWeight:400}}>House</span>
      </div>
      <div className="hide-md" style={{display:'flex',gap:36,fontSize:13,letterSpacing:'0.02em'}}>
        <a href="#flavors" className="hover-accent" style={{transition:'color .2s'}}>{t('nav.flavors')}</a>
        <a href="#order" className="hover-accent" style={{transition:'color .2s'}}>{t('nav.shop')}</a>
        <a href="#story" className="hover-accent" style={{transition:'color .2s'}}>{t('nav.story')}</a>
        <a href="#locations" className="hover-accent" style={{transition:'color .2s'}}>{t('nav.locations')}</a>
        <a href="#events" className="hover-accent" style={{transition:'color .2s'}}>Events</a>
      </div>
      <div style={{display:'flex',gap:14,alignItems:'center'}}>
        <TextSizeControl compact />
        <LandingThemeToggle compact />
        <LangSwitch compact />
        <a href="#order" className="btn btn-primary btn-sm" style={{ textDecoration: 'none', display: 'inline-flex', alignItems: 'center' }}>{t('nav.order')}</a>
        <button className="show-md" onClick={()=>setMobileOpen(true)} style={{padding:8}}>
          <Icon.Menu size={22}/>
        </button>
      </div>
      {mobileOpen && (
        <div style={{position:'fixed',inset:0,background:'rgba(15,10,6,0.95)',backdropFilter:'blur(20px)',zIndex:120,padding:30,display:'flex',flexDirection:'column',gap:24}}>
          <div style={{display:'flex',justifyContent:'flex-end'}}>
            <button onClick={()=>setMobileOpen(false)}><Icon.X size={26}/></button>
          </div>
          <div style={{display:'flex',flexDirection:'column',alignItems:'flex-start',gap:8}}>
            <span style={{fontSize:11,fontFamily:'JetBrains Mono',letterSpacing:'0.15em',color:'var(--text-dim)',textTransform:'uppercase'}}>{t('nav.size')}</span>
            <TextSizeControl />
          </div>
          <div style={{display:'flex',alignItems:'center',gap:12}}>
            <LandingThemeToggle />
          </div>
          <div style={{display:'flex',flexDirection:'column',gap:20,fontFamily:'Cormorant Garamond',fontSize:34,marginTop:20}}>
            <a onClick={()=>setMobileOpen(false)} href="#flavors">{t('nav.flavors')}</a>
            <a onClick={()=>setMobileOpen(false)} href="#order">{t('nav.shop')}</a>
            <a onClick={()=>setMobileOpen(false)} href="#story">{t('nav.story')}</a>
            <a onClick={()=>setMobileOpen(false)} href="#locations">{t('nav.locations')}</a>
          </div>
          <a href="#order" onClick={()=>setMobileOpen(false)} className="btn btn-primary btn-sm" style={{alignSelf:'flex-start',textDecoration:'none'}}>{t('nav.order')}</a>
        </div>
      )}
    </nav>
  );
}

const _TEXT_SIZES = ['sm', 'md', 'lg', 'xl', '2xl', '3xl', '4xl'];

function TextSizeControl({ compact }) {
  const { t, lang } = useT();
  const [cur, setCur] = React.useState(
    () => (typeof document !== 'undefined' && document.documentElement.getAttribute('data-font-size')) || 'lg'
  );
  React.useEffect(() => {
    const h = () => setCur(document.documentElement.getAttribute('data-font-size') || 'lg');
    window.addEventListener('tweak-change', h);
    return () => window.removeEventListener('tweak-change', h);
  }, []);
  const idx = _TEXT_SIZES.indexOf(cur);
  const step = (d) => {
    const n = idx + d;
    if (n < 0 || n >= _TEXT_SIZES.length) return;
    if (window.__setTextSize) window.__setTextSize(_TEXT_SIZES[n]);
  };
  const labelMap = (t('a11y.size_titles') || '').split(',').map((s) => s.trim());
  const sizeLabel = labelMap[_TEXT_SIZES.indexOf(cur)] || cur;
  return (
    <div
      style={{
        display: 'flex', alignItems: 'center', gap: compact ? 2 : 4,
        fontSize: compact ? 10 : 11, letterSpacing: '0.06em',
        border: '1px solid var(--border)', borderRadius: 999, padding: compact ? 2 : 3,
        color: 'var(--text-dim)', flexShrink: 0,
      }}
      title={t('nav.size')}
    >
      <button
        type="button" aria-label={t('a11y.size_minus')}
        onClick={() => step(-1)} disabled={idx <= 0}
        style={{ padding: '4px 10px', borderRadius: 999, border: 'none', background: 'transparent', color: 'var(--text)', cursor: idx <= 0 ? 'not-allowed' : 'pointer', opacity: idx <= 0 ? 0.35 : 1, fontWeight: 700, fontSize: compact ? 11 : 13, letterSpacing: '-0.02em' }}
      >
        A−
      </button>
      <button
        type="button" aria-label={t('a11y.size_plus')}
        onClick={() => step(1)} disabled={idx >= _TEXT_SIZES.length - 1}
        style={{ padding: '4px 10px', borderRadius: 999, border: 'none', background: 'transparent', color: 'var(--accent)', cursor: idx >= _TEXT_SIZES.length - 1 ? 'not-allowed' : 'pointer', opacity: idx >= _TEXT_SIZES.length - 1 ? 0.35 : 1, fontWeight: 700, fontSize: compact ? 11 : 13, letterSpacing: '-0.02em' }}
      >
        A+
      </button>
    </div>
  );
}

function LandingThemeToggle({ compact }) {
  const { t } = useT();
  const [light, setLight] = React.useState(() =>
    typeof document !== 'undefined' && document.body.classList.contains('theme-light')
  );
  React.useEffect(() => {
    const h = () => setLight(document.body.classList.contains('theme-light'));
    window.addEventListener('tweak-change', h);
    return () => window.removeEventListener('tweak-change', h);
  }, []);
  const sz = compact ? 18 : 20;
  return (
    <button
      type="button"
      onClick={() => window.__applyGhTheme && window.__applyGhTheme(light ? 'dark' : 'light')}
      title={light ? t('nav.theme_toggle_dark') : t('nav.theme_toggle_light')}
      aria-label={light ? t('nav.theme_toggle_dark') : t('nav.theme_toggle_light')}
      style={{
        padding: compact ? 6 : 8,
        color: 'var(--text-dim)',
        display: 'flex',
        alignItems: 'center',
        justifyContent: 'center',
        borderRadius: 8,
      }}
    >
      {light ? <Icon.Sun size={sz} /> : <Icon.Moon size={sz} />}
    </button>
  );
}

function LangSwitch({ compact }) {
  const [lang, setLangState] = React.useState(window.__lang || 'en');
  React.useEffect(() => {
    const h = e => setLangState(e.detail);
    window.addEventListener('lang-change', h);
    return () => window.removeEventListener('lang-change', h);
  }, []);
  const opts = [{v:'en',l:'EN'},{v:'fr',l:'FR'},{v:'ar',l:'عر'}];
  return (
    <div style={{display:'flex',gap:0,fontSize:11,letterSpacing:'0.06em',border:'1px solid var(--border)',borderRadius:999,padding:3}}>
      {opts.map(o => (
        <button key={o.v} onClick={()=>setLang(o.v)}
          style={{
            padding:'4px 10px', borderRadius:999,
            background: lang===o.v ? 'var(--accent)' : 'transparent',
            color: lang===o.v ? 'white' : 'var(--text-dim)',
            fontSize:11, fontWeight:500,
            transition:'all .2s',
          }}>
          {o.l}
        </button>
      ))}
    </div>
  );
}

function GelatoCupAnimated() {
  return (
    <div style={{position:'relative',width:'100%',height:'100%',display:'flex',alignItems:'center',justifyContent:'center'}}>
      {/* Morphing blobs */}
      <div style={{
        position:'absolute', width:460, height:460,
        background:'radial-gradient(circle at 30% 30%, rgba(232,162,176,0.32), rgba(192,96,58,0.18) 60%, transparent 80%)',
        animation:'blob1 14s ease-in-out infinite',
        filter:'blur(0px)', zIndex:0,
      }}/>
      <div style={{
        position:'absolute', left:'10%', bottom:'10%', width:280, height:280,
        background:'radial-gradient(circle, rgba(122,159,95,0.25), transparent 70%)',
        animation:'blob2 18s ease-in-out infinite',
        zIndex:0,
      }}/>
      {/* Rotating rings */}
      <div style={{position:'absolute',width:420,height:420,border:'1px dashed rgba(192,96,58,0.28)',borderRadius:'50%',animation:'spin-slow 40s linear infinite'}}/>
      <div style={{position:'absolute',width:340,height:340,border:'1px solid rgba(201,150,42,0.22)',borderRadius:'50%',animation:'spin-rev 60s linear infinite'}}/>

      {/* Floating flavor tags */}
      <div style={{position:'absolute',top:'12%',left:'4%',animation:'float1 6s ease-in-out infinite'}}>
        <FlavorTag color="#7A9F5F" label="Pistachio"/>
      </div>
      <div style={{position:'absolute',top:'16%',right:'4%',animation:'float2 7s ease-in-out infinite'}}>
        <FlavorTag color="#C85A6A" label="Strawberry"/>
      </div>
      <div style={{position:'absolute',bottom:'18%',left:'6%',animation:'float3 8s ease-in-out infinite'}}>
        <FlavorTag color="#E8D4A0" label="Vanilla"/>
      </div>
      <div style={{position:'absolute',bottom:'14%',right:'6%',animation:'float1 6.5s ease-in-out infinite'}}>
        <FlavorTag color="#E2A141" label="Mango"/>
      </div>

      {/* The cup */}
      <div style={{position:'relative',zIndex:2,width:260,height:300}}>
        {/* Scoops */}
        <div style={{position:'absolute',top:0,left:38,width:80,height:80,borderRadius:'50%',
          background:'radial-gradient(circle at 35% 30%, #F2C3CD, #C85A6A 70%)',
          boxShadow:'inset -6px -8px 16px rgba(0,0,0,0.18)',
          animation:'float1 4.5s ease-in-out infinite'}}/>
        <div style={{position:'absolute',top:10,left:90,width:90,height:90,borderRadius:'50%',
          background:'radial-gradient(circle at 35% 30%, #C5DAA6, #7A9F5F 70%)',
          boxShadow:'inset -6px -8px 16px rgba(0,0,0,0.18)',
          animation:'float2 5s ease-in-out infinite'}}/>
        <div style={{position:'absolute',top:4,left:150,width:82,height:82,borderRadius:'50%',
          background:'radial-gradient(circle at 35% 30%, #B5A8D8, #6A5AAB 70%)',
          boxShadow:'inset -6px -8px 16px rgba(0,0,0,0.18)',
          animation:'float3 5.5s ease-in-out infinite'}}/>

        {/* Cup body */}
        <div style={{
          position:'absolute', top:76, left:20, right:20, bottom:0,
          background:'linear-gradient(180deg, #F7EDD8 0%, #EDD9B4 100%)',
          clipPath:'polygon(8% 0%, 92% 0%, 82% 100%, 18% 100%)',
          borderRadius:'0 0 20px 20px',
          display:'flex', alignItems:'center', justifyContent:'center',
        }}>
          <div style={{transform:'translateY(30px)',fontFamily:'Cormorant Garamond',fontStyle:'italic',fontSize:22,color:'#C0603A',letterSpacing:'0.02em'}}>
            Gelato House
          </div>
        </div>
      </div>
    </div>
  );
}

function FlavorTag({ color, label }) {
  return (
    <div style={{
      background:'rgba(30, 21, 16, 0.72)', backdropFilter:'blur(8px)',
      padding:'8px 14px', borderRadius:999,
      border:'1px solid var(--border)',
      fontSize:12, fontWeight:500, letterSpacing:'0.02em',
      display:'flex',alignItems:'center',gap:8,
      color:'var(--cream)'
    }}>
      <span style={{width:8,height:8,borderRadius:'50%',background:color}}/>
      {label}
    </div>
  );
}

function HeroEditorial() {
  const { t } = useT();
  return (
    <div style={{position:'relative',width:'100%',height:'100%',overflow:'hidden',display:'flex',alignItems:'center',justifyContent:'center'}}>
      <div style={{fontFamily:'Cormorant Garamond',fontStyle:'italic',fontSize:'clamp(100px, 22vw, 240px)',fontWeight:300,lineHeight:.9,color:'var(--accent)',opacity:0.12,textAlign:'center',transform:'rotate(-4deg)'}}>
        Laziz
      </div>
      <div style={{position:'absolute',top:'20%',right:'10%',fontFamily:'Noto Naskh Arabic',fontSize:'clamp(70px,14vw,180px)',color:'var(--gold)',opacity:0.2,animation:'float2 8s ease-in-out infinite'}}>
        لذيذ
      </div>
      <div style={{position:'absolute',bottom:'15%',left:'8%',fontFamily:'JetBrains Mono',fontSize:11,letterSpacing:'0.15em',color:'var(--text-dim)',textTransform:'uppercase'}}>
        {t('hero.art_label')}
      </div>
    </div>
  );
}

function HeroPhoto() {
  return (
    <div style={{position:'relative',width:'100%',height:'100%',padding:20}}>
      <div style={{
        width:'100%',height:'100%',
        background:'repeating-linear-gradient(135deg, rgba(192,96,58,0.12) 0 10px, transparent 10px 20px), linear-gradient(180deg, rgba(192,96,58,0.06), rgba(201,150,42,0.06))',
        borderRadius:24, border:'1px solid var(--border2)',
        display:'flex',alignItems:'center',justifyContent:'center',
        flexDirection:'column',gap:12,
      }}>
        <div style={{fontFamily:'JetBrains Mono',fontSize:11,letterSpacing:'0.2em',color:'var(--text-dim)',textTransform:'uppercase'}}>[ image placeholder ]</div>
        <div style={{fontFamily:'Cormorant Garamond',fontSize:28,fontStyle:'italic',color:'var(--text-dim)'}}>hero photography</div>
        <div style={{fontFamily:'JetBrains Mono',fontSize:10,color:'var(--text-dimmer)',marginTop:8}}>product shot · 3 scoops in hand-held cup · warm tungsten · shallow DOF</div>
      </div>
    </div>
  );
}

function Hero() {
  const { t } = useT();
  const variant = window.__tweaks?.heroVariant || 'animated';
  return (
    <section style={{minHeight:'100vh',padding:'120px 40px 60px',display:'flex',alignItems:'center',position:'relative'}}>
      <div style={{maxWidth:1400,margin:'0 auto',width:'100%',display:'grid',gridTemplateColumns:'1.1fr 1fr',gap:60,alignItems:'center'}}
           className="hero-grid">
        <div className="fade-in">
          <div className="chip" style={{
            marginBottom:28, fontSize:11, letterSpacing:'0.12em', textTransform:'uppercase',
            background:'var(--terra-dim,rgba(192,96,58,0.15))',
            border:'1px solid rgba(192,96,58,0.3)',
            color:'var(--accent)',
            display:'inline-flex', alignItems:'center', gap:8,
          }}>
            <span style={{
              width:6, height:6, borderRadius:'50%', background:'var(--accent)',
              display:'inline-block', flexShrink:0,
              animation:'pulseDot 2s ease-in-out infinite',
            }}/>
            {t('hero.tag')}
          </div>
          <h1 style={{fontSize:'clamp(44px, 7vw, 96px)',lineHeight:1,letterSpacing:'-0.025em',fontWeight:300,marginBottom:32}}>
            <div>{t('hero.title_1')}</div>
            <div style={{WebkitTextStroke:'1.5px var(--text)',color:'transparent',fontWeight:300}}>{t('hero.craft')}</div>
            <div style={{fontStyle:'italic',color:'var(--accent)'}}>{t('hero.title_2')}</div>
          </h1>
          <p style={{fontSize:'clamp(15px, 1.15vw, 18px)',color:'var(--text-dim)',maxWidth:460,marginBottom:36,lineHeight:1.6}}>
            {t('hero.sub')}
          </p>
          <div style={{display:'flex',gap:16,flexWrap:'wrap',alignItems:'center'}}>
            <a href="#flavors" className="btn btn-primary">{t('hero.cta_primary')} <Icon.ArrowRight size={14}/></a>
            <a href="#story" className="btn btn-text"><span>{t('hero.cta_secondary')}</span> <Icon.ArrowRight size={14}/></a>
          </div>
          <div style={{marginTop:60,display:'flex',gap:32,fontSize:11,letterSpacing:'0.15em',textTransform:'uppercase',color:'var(--text-dimmer)',fontFamily:'JetBrains Mono'}}>
            <div><span style={{color:'var(--accent)'}}>01</span>&nbsp;&nbsp;Made daily</div>
            <div><span style={{color:'var(--accent)'}}>02</span>&nbsp;&nbsp;100% natural</div>
            <div><span style={{color:'var(--accent)'}}>03</span>&nbsp;&nbsp;Delivered fresh</div>
          </div>
        </div>
        <div style={{height:520,position:'relative'}}>
          {variant === 'animated' && <GelatoCupAnimated/>}
          {variant === 'editorial' && <HeroEditorial/>}
          {variant === 'photo' && <HeroPhoto/>}
        </div>
      </div>
      <style>{`
        @media (max-width: 900px) {
          .hero-grid { grid-template-columns: 1fr !important; }
        }
        @keyframes pulseDot {
          0%, 100% { opacity: 1; transform: scale(1); }
          50% { opacity: 0.4; transform: scale(0.7); }
        }
      `}</style>
    </section>
  );
}

function StatsBar() {
  const { t } = useT();
  const stats = [
    { n: t('stats.lines_n'), l: t('stats.lines_l') },
    { n: '100%', l: t('stats.natural') },
    { n: '3', l: t('stats.locations') },
    { n: '5K+', l: t('stats.customers') },
  ];
  return (
    <section style={{padding:'20px 40px',borderTop:'1px solid var(--border)',borderBottom:'1px solid var(--border)'}}>
      <div style={{maxWidth:1400,margin:'0 auto',display:'grid',gridTemplateColumns:'repeat(4, 1fr)',gap:20}} className="stats-grid">
        {stats.map((s,i) => (
          <div key={i} style={{padding:'28px 20px',textAlign:'center',borderRight: i<3 ? '1px solid var(--border)' : 'none'}}>
            <div style={{fontFamily:'Cormorant Garamond',fontSize:'clamp(40px,5vw,64px)',fontWeight:300,color:'var(--text)',lineHeight:1}}>{s.n}</div>
            <div style={{marginTop:8,fontSize:11,letterSpacing:'0.15em',textTransform:'uppercase',color:'var(--text-dim)'}}>{s.l}</div>
          </div>
        ))}
      </div>
      <style>{`
        @media (max-width: 700px) {
          .stats-grid { grid-template-columns: repeat(2, 1fr) !important; }
          .stats-grid > div { border-right: none !important; border-bottom: 1px solid var(--border); padding: 20px !important; }
        }
      `}</style>
    </section>
  );
}

function Marquee() {
  const { t } = useT();
  const text = t('marquee');
  return (
    <div style={{background:'var(--espresso)',borderTop:'1px solid var(--border)',borderBottom:'1px solid var(--border)',padding:'24px 0',overflow:'hidden'}}>
      <div style={{display:'flex',whiteSpace:'nowrap',animation:'marquee 40s linear infinite',fontFamily:'Cormorant Garamond',fontStyle:'italic',fontSize:'clamp(1.35rem, 2.15rem, 2.5rem)',color:'var(--cream)',opacity:0.85}}>
        <span style={{paddingRight:40}}>{text}</span>
        <span style={{paddingRight:40}}>{text}</span>
        <span style={{paddingRight:40}}>{text}</span>
      </div>
    </div>
  );
}

function FlavorsSection() {
  const { t } = useT();
  const shown = FLAVORS.slice(0, 4);
  return (
    <section id="flavors" style={{padding:'120px 40px'}}>
      <div style={{maxWidth:1400,margin:'0 auto'}}>
        <div style={{display:'flex',alignItems:'end',justifyContent:'space-between',marginBottom:60,gap:20,flexWrap:'wrap'}}>
          <div>
            <div style={{fontSize:11,letterSpacing:'0.2em',textTransform:'uppercase',color:'var(--accent)',marginBottom:16,fontFamily:'JetBrains Mono'}}>
              ✦ {t('flavors.eyebrow')}
            </div>
            <h2 style={{fontSize:'clamp(44px,5.5vw,76px)',lineHeight:1,fontWeight:300,letterSpacing:'-0.02em'}}>
              {t('flavors.title_a')} <span style={{fontStyle:'italic',color:'var(--accent)'}}>{t('flavors.title_b')}</span> {t('flavors.title_c')}
            </h2>
          </div>
          <a href="#" className="btn btn-text">{t('flavors.view_all')} <Icon.ArrowRight size={14}/></a>
        </div>
        <div style={{display:'grid',gridTemplateColumns:'repeat(4,1fr)',gap:24}} className="flavors-grid">
          {shown.map((f, i) => <FlavorCard key={f.id} flavor={f} idx={i}/>)}
        </div>
      </div>
      <style>{`
        @media (max-width: 1000px) { .flavors-grid { grid-template-columns: repeat(2, 1fr) !important; } }
        @media (max-width: 560px)  { .flavors-grid { grid-template-columns: 1fr !important; } }
      `}</style>
    </section>
  );
}

function FlavorCard({ flavor, idx }) {
  const { t } = useT();
  const [hover, setHover] = React.useState(false);
  return (
    <div
      onMouseEnter={()=>setHover(true)}
      onMouseLeave={()=>setHover(false)}
      style={{
        background:'var(--card)',
        border:'1px solid var(--border)',
        borderRadius:'var(--radius-lg)',
        overflow:'hidden',
        transform: hover ? 'translateY(-8px)' : 'none',
        boxShadow: hover ? '0 30px 60px -20px rgba(0,0,0,0.5)' : 'none',
        transition:'all .35s cubic-bezier(.2,.8,.2,1)',
        cursor:'pointer',
    }}>
      <div style={{
        height:200,position:'relative',overflow:'hidden',
        background:`radial-gradient(circle at 30% 30%, ${flavor.color2}, ${flavor.color} 90%)`,
      }}>
        <div style={{position:'absolute',bottom:-20,right:-20,fontSize:120,opacity:0.5,filter:'blur(0.5px)',transform: hover ? 'scale(1.15) rotate(-8deg)' : 'scale(1) rotate(0deg)',transition:'transform .6s ease'}}>
          {flavor.emoji}
        </div>
        <div style={{
          position:'absolute', top:16, left:16,
          fontFamily:'JetBrains Mono', fontSize:10, letterSpacing:'0.15em',
          color:'rgba(255,255,255,0.95)', textTransform:'uppercase',
          background:'rgba(0,0,0,0.28)', backdropFilter:'blur(6px)',
          padding:'3px 8px', borderRadius:6,
          border:'1px solid rgba(255,255,255,0.12)',
        }}>
          № {String(idx+1).padStart(2,'0')}
        </div>
      </div>
      <div style={{padding:24}}>
        <h3 style={{fontSize:26,fontWeight:400,letterSpacing:'-0.01em',marginBottom:8,color:'var(--text)'}}>
          {flavor.name}
        </h3>
        <p style={{fontSize:13,color:'var(--text-dim)',lineHeight:1.55,marginBottom:18,minHeight:40}}>
          {flavor.desc}
        </p>
        <div style={{display:'flex',alignItems:'center',justifyContent:'space-between',paddingTop:16,borderTop:'1px solid var(--border)'}}>
          <div style={{fontSize:14,fontWeight:500,color:'var(--accent)'}}>{fmtNumber(flavor.price)} FCFA</div>
          <div style={{fontSize:11,color:'var(--text-dim)'}}>{t('flavors.scoop_note')}</div>
        </div>
      </div>
    </div>
  );
}

function StorySection() {
  const { t } = useT();
  return (
    <section id="story" style={{padding:'120px 40px',background:'var(--surface)',borderTop:'1px solid var(--border)',borderBottom:'1px solid var(--border)'}}>
      <div style={{maxWidth:1400,margin:'0 auto',display:'grid',gridTemplateColumns:'1.4fr 1fr',gap:60,alignItems:'center'}} className="story-grid">
        <div>
          <div style={{fontSize:11,letterSpacing:'0.2em',textTransform:'uppercase',color:'var(--accent)',marginBottom:20,fontFamily:'JetBrains Mono'}}>
            ✦ {t('story.eyebrow')}
          </div>
          <div style={{fontFamily:'Cormorant Garamond',fontStyle:'italic',fontWeight:300,fontSize:'clamp(30px,3.5vw,52px)',lineHeight:1.2,letterSpacing:'-0.015em',color:'var(--text)',marginBottom:32}}>
            <span style={{color:'var(--accent)',fontSize:'2em',lineHeight:0,opacity:0.7}}>“</span>
            {t('story.quote')}
            <span style={{color:'var(--accent)',fontSize:'2em',lineHeight:0,opacity:0.7}}>”</span>
          </div>
          <div style={{fontSize:13,letterSpacing:'0.1em',color:'var(--text-dim)',textTransform:'uppercase'}}>{t('story.by')}</div>
        </div>
        <div style={{position:'relative',height:420}}>
          <div style={{
            position:'absolute',inset:0,
            background:'repeating-linear-gradient(45deg, rgba(192,96,58,0.1) 0 10px, transparent 10px 24px)',
            borderRadius:12,border:'1px solid var(--border2)',
            display:'flex',alignItems:'center',justifyContent:'center',
            flexDirection:'column',gap:14,
          }}>
            <div style={{fontFamily:'JetBrains Mono',fontSize:10,letterSpacing:'0.25em',color:'var(--text-dimmer)',textTransform:'uppercase'}}>[ portrait ]</div>
            <div style={{fontFamily:'Cormorant Garamond',fontStyle:'italic',fontSize:26,color:'var(--text-dim)'}}>founder · atelier</div>
          </div>
          <div style={{position:'absolute',top:-20,right:-20,background:'var(--accent)',color:'white',padding:'16px 24px',borderRadius:12,fontFamily:'Cormorant Garamond',fontStyle:'italic',fontSize:22,transform:'rotate(6deg)',boxShadow:'0 20px 40px -15px rgba(192,96,58,0.4)'}}>
            Est. 2023
          </div>
        </div>
      </div>
      <style>{`
        @media (max-width: 900px) { .story-grid { grid-template-columns: 1fr !important; } }
      `}</style>
    </section>
  );
}

function LocationsSection() {
  const { t } = useT();
  const locations = [
    { area:'Nassara', addr:'Av. Charles de Gaulle', hours:'10:00 – 22:00', phone:'+235 66 12 34 56', tag:'Flagship' },
    { area:'Dembé', addr:'Rond-point Dembé', hours:'11:00 – 22:00', phone:'+235 66 22 11 08', tag:'Family' },
    { area:'Amriguébé', addr:'Av. Mobutu', hours:'12:00 – 23:00', phone:'+235 66 88 41 20', tag:'Late-night' },
  ];
  return (
    <section id="locations" style={{padding:'120px 40px'}}>
      <div style={{maxWidth:1400,margin:'0 auto'}}>
          <div style={{marginBottom:50}}>
          <div style={{fontSize:11,letterSpacing:'0.2em',textTransform:'uppercase',color:'var(--accent)',marginBottom:16,fontFamily:'JetBrains Mono'}}>✦ {t('locations.eyebrow')}</div>
          <h2 style={{fontSize:'clamp(40px,5vw,68px)',fontWeight:300,letterSpacing:'-0.02em'}}>Find us in <span style={{fontStyle:'italic',color:'var(--accent)'}}>N'Djamena</span></h2>
        </div>
        <div style={{display:'grid',gridTemplateColumns:'repeat(3,1fr)',gap:24}} className="loc-grid">
          {locations.map((l,i) => (
            <div key={i} className="card" style={{padding:28}}>
              <div style={{display:'flex',alignItems:'center',justifyContent:'space-between',marginBottom:20}}>
                <div style={{fontFamily:'JetBrains Mono',fontSize:10,letterSpacing:'0.2em',color:'var(--text-dim)'}}>0{i+1}</div>
                <div className="badge badge-terra">{l.tag}</div>
              </div>
              <h3 style={{fontSize:36,fontWeight:400,marginBottom:20}}>{l.area}</h3>
              <div style={{display:'flex',flexDirection:'column',gap:12,fontSize:13,color:'var(--text-dim)'}}>
                <div style={{display:'flex',gap:10,alignItems:'center'}}><Icon.MapPin size={14}/> {l.addr}</div>
                <div style={{display:'flex',gap:10,alignItems:'center'}}><Icon.Clock size={14}/> {l.hours}</div>
                <div style={{display:'flex',gap:10,alignItems:'center'}}><Icon.Phone size={14}/> {l.phone}</div>
              </div>
            </div>
          ))}
        </div>
      </div>
      <style>{`
        @media (max-width: 900px) { .loc-grid { grid-template-columns: 1fr !important; } }
      `}</style>
    </section>
  );
}

function Footer({ onEnterAdmin }) {
  const { t } = useT();
  return (
    <footer style={{background:'var(--espresso)',padding:'80px 40px 40px',color:'var(--cream)',borderTop:'1px solid var(--border)'}}>
      <div style={{maxWidth:1400,margin:'0 auto'}}>
        <div style={{display:'grid',gridTemplateColumns:'1.4fr 1fr 1fr 1fr',gap:40,marginBottom:60}} className="footer-grid">
          <div>
            <div style={{fontFamily:'Cormorant Garamond',fontSize:36,fontWeight:400,marginBottom:12}}>
              Gelato <span style={{fontStyle:'italic',color:'var(--accent)'}}>House</span>
            </div>
            <div style={{fontFamily:'Cormorant Garamond',fontStyle:'italic',fontSize:22,color:'var(--text-dim)',marginBottom:20}}>
              {t('footer.tagline')}
            </div>
            <div style={{display:'flex',gap:12}}>
              <a
                style={{width:38,height:38,border:'1px solid var(--border)',borderRadius:'50%',display:'flex',alignItems:'center',justifyContent:'center',transition:'all .2s',cursor:'pointer'}}
                onMouseEnter={e=>{e.currentTarget.style.borderColor='var(--accent)';e.currentTarget.style.color='var(--accent)';e.currentTarget.style.boxShadow='0 0 14px rgba(192,96,58,0.3)';}}
                onMouseLeave={e=>{e.currentTarget.style.borderColor='';e.currentTarget.style.color='';e.currentTarget.style.boxShadow='';}}
              ><Icon.Instagram size={16}/></a>
              <a
                style={{width:38,height:38,border:'1px solid var(--border)',borderRadius:'50%',display:'flex',alignItems:'center',justifyContent:'center',transition:'all .2s',cursor:'pointer'}}
                onMouseEnter={e=>{e.currentTarget.style.borderColor='var(--accent)';e.currentTarget.style.color='var(--accent)';e.currentTarget.style.boxShadow='0 0 14px rgba(192,96,58,0.3)';}}
                onMouseLeave={e=>{e.currentTarget.style.borderColor='';e.currentTarget.style.color='';e.currentTarget.style.boxShadow='';}}
              ><Icon.Mail size={16}/></a>
            </div>
          </div>
          <FooterCol title="Menu" items={['Flavors','Sorbets','Cakes','Catering']}/>
          <FooterCol title="Visit" items={['Nassara','Dembé','Amriguébé','Book event']}/>
          <FooterCol title="Company" items={['Story','Press','Careers','Contact']}/>
        </div>
        <div style={{paddingTop:30,borderTop:'1px solid var(--border)',display:'flex',justifyContent:'space-between',fontSize:12,color:'var(--text-dim)',flexWrap:'wrap',gap:12}}>
          <div>{t('footer.rights')}</div>
          <div style={{display:'flex',gap:24,fontFamily:'JetBrains Mono',fontSize:11,letterSpacing:'0.1em',textTransform:'uppercase'}}>
            <span>Privacy</span><span>Terms</span>
            <a href="https://gelatohouse.app" target="_blank" rel="noopener noreferrer" style={{ color: 'inherit', textDecoration: 'none', borderBottom: '1px solid rgba(201, 150, 42, 0.4)' }}>gelatohouse.app</a>
          </div>
          <button
            onClick={onEnterAdmin}
            style={{
              fontSize:10, letterSpacing:'0.12em', textTransform:'uppercase',
              color:'rgba(237,224,204,0.2)', fontFamily:'JetBrains Mono',
              padding:'4px 8px', borderRadius:4,
              border:'1px solid rgba(255,255,255,0.06)',
              transition:'all .2s',
              cursor:'pointer',
            }}
            onMouseEnter={e=>{e.target.style.color='rgba(192,96,58,0.8)';e.target.style.borderColor='rgba(192,96,58,0.3)';}}
            onMouseLeave={e=>{e.target.style.color='rgba(237,224,204,0.2)';e.target.style.borderColor='rgba(255,255,255,0.06)';}}
            title="Staff access"
          >
            Staff
          </button>
        </div>
      </div>
      <style>{`
        @media (max-width: 800px) { .footer-grid { grid-template-columns: 1fr 1fr !important; } }
      `}</style>
    </footer>
  );
}

function FooterCol({ title, items }) {
  return (
    <div>
      <div style={{fontSize:11,letterSpacing:'0.2em',textTransform:'uppercase',color:'var(--accent)',marginBottom:16,fontFamily:'JetBrains Mono'}}>{title}</div>
      <div style={{display:'flex',flexDirection:'column',gap:10,fontSize:14}}>
        {items.map(i => <a key={i} className="hover-accent" style={{transition:'color .2s',color:'var(--text-dim)'}}>{i}</a>)}
      </div>
    </div>
  );
}

function LandingPage({ onEnterAdmin }) {
  return (
    <div style={{background:'var(--bg)',minHeight:'100vh'}}>
      <Navbar onEnterAdmin={onEnterAdmin}/>
      <Hero/>
      <StatsBar/>
      <Marquee/>
      <FlavorsSection/>
      <OrderSection/>
      <StorySection/>
      <LocationsSection/>
      <Footer onEnterAdmin={onEnterAdmin}/>
    </div>
  );
}

Object.assign(window, { LandingPage, LangSwitch });
