const PR1 = Object.keys(window).filter(k=>/DesignSystem_/.test(k)).map(k=>window[k]).find(o=>o&&o.Button)||{};
const { Button, GradientText, StatItem, TrustBadge, Icon } = PR1;

const PR_NAV=[{label:'A Central',href:'#central'},{label:'Ciclo do evento',href:'#ciclo'},{label:'Tempo real',href:'#tempo-real'},{label:'Comparativo',href:'#comparativo'},{label:'Perfis',href:'#perfis'},{label:'FAQ',href:'#faq'}];

function PrNav(){
  const isMobile=useIsMobile();
  const [isOpen,setIsOpen]=React.useState(false);
  useScrollLock(isMobile&&isOpen);

  React.useEffect(()=>{ if(!isMobile) setIsOpen(false); },[isMobile]);
  React.useEffect(()=>{
    if(!isOpen) return;
    const onKeyDown=(e)=>{ if(e.key==='Escape') setIsOpen(false); };
    window.addEventListener('keydown',onKeyDown);
    return ()=>window.removeEventListener('keydown',onKeyDown);
  },[isOpen]);

  const linkStyle={display:'flex',alignItems:'center',minHeight:44,padding:'8px 12px',borderRadius:'var(--radius-pill)',textDecoration:'none',fontFamily:'var(--font-ui)',fontWeight:500,fontSize:13,letterSpacing:'-.1px',color:'#fff'};

  return (
    <header style={{position:'fixed',top:isMobile?12:16,left:'50%',transform:'translateX(-50%)',zIndex:100,width:isMobile?'calc(100% - 24px)':'calc(100% - 64px)',maxWidth:960}}>
      <nav style={{display:'flex',alignItems:'center',justifyContent:'space-between',gap:2,width:'100%',boxSizing:'border-box',paddingInline:isMobile?8:12,paddingBlock:isMobile?8:9,background:'var(--surface-nav)',backdropFilter:'var(--blur-nav)',borderRadius:'var(--radius-pill)',border:'1px solid var(--border-on-dark)',boxShadow:'var(--shadow-nav)'}}>
        <a href="#topo" style={{display:'flex',alignItems:'center',gap:8,flexShrink:0,background:'var(--surface-glass)',borderRadius:'var(--radius-pill)',padding:isMobile?'8px 14px':'8px 16px',textDecoration:'none'}}>
          <span style={{width:9,height:9,borderRadius:'50%',background:'var(--gradient-brand)',animation:'acs-pulse 2.2s infinite'}}></span>
          <span style={{fontFamily:'var(--font-display)',fontWeight:800,fontSize:isMobile?12:13,letterSpacing:'2px',color:'#fff'}}>CONNECT CENTRAL</span>
        </a>

        {isMobile ? (
          <button
            type="button"
            aria-label={isOpen?'Fechar menu':'Abrir menu'}
            aria-expanded={isOpen}
            aria-controls="pr-menu-mobile"
            onClick={()=>setIsOpen(v=>!v)}
            style={{display:'flex',alignItems:'center',justifyContent:'center',width:44,height:44,flexShrink:0,border:'none',borderRadius:'50%',background:'var(--surface-glass)',color:'#fff',cursor:'pointer'}}>
            {isOpen
              ? <Icon name="plus" size={18} strokeWidth={2.2} style={{transform:'rotate(45deg)'}}/>
              : <span aria-hidden="true" style={{display:'flex',flexDirection:'column',gap:4,width:18}}>
                  {[0,1,2].map(i=>(<span key={i} style={{height:2,borderRadius:2,background:'currentColor'}}/>))}
                </span>}
          </button>
        ) : (
          <>
            <ul style={{display:'flex',alignItems:'center',gap:2,margin:0,padding:0,listStyle:'none',flex:'1 1 0%',justifyContent:'center'}}>
              {PR_NAV.map(l=>(<li key={l.href}><a href={l.href} style={linkStyle}>{l.label}</a></li>))}
            </ul>
            <Button variant="light" href="#contato">Pedir demonstração</Button>
          </>
        )}
      </nav>

      {isMobile&&isOpen&&(
        <div id="pr-menu-mobile" style={{marginTop:8,padding:12,boxSizing:'border-box',background:'var(--surface-nav)',backdropFilter:'var(--blur-nav)',border:'1px solid var(--border-on-dark)',borderRadius:'var(--radius-2xl)',boxShadow:'var(--shadow-nav)',animation:'acs-drawer-in .22s var(--ease-out-expo) both'}}>
          <ul style={{display:'flex',flexDirection:'column',gap:2,margin:0,padding:0,listStyle:'none'}}>
            {PR_NAV.map(l=>(
              <li key={l.href}>
                <a href={l.href} onClick={()=>setIsOpen(false)} style={{...linkStyle,minHeight:48,fontSize:15,padding:'10px 14px'}}>{l.label}</a>
              </li>
            ))}
          </ul>
          <div style={{display:'flex',marginTop:10}} onClick={()=>setIsOpen(false)}>
            <Button variant="light" href="#contato" style={{width:'100%',justifyContent:'center'}}>Pedir demonstração</Button>
          </div>
        </div>
      )}
    </header>
  );
}

/* Relógio de Brasília, igual ao da tela de login da Central. */
function PrClock(){
  const [t,setT]=React.useState('');
  React.useEffect(()=>{
    const f=()=>setT(new Date().toLocaleTimeString('pt-BR',{timeZone:'America/Sao_Paulo'}));
    f();const id=setInterval(f,1000);return ()=>clearInterval(id);
  },[]);
  return <span style={{fontFamily:'var(--font-mono)',fontVariantNumeric:'tabular-nums'}}>{t}</span>;
}

/* Barra de progresso de leitura no topo — transform-only, sem reflow. */
function PrScrollBar(){
  const barRef=React.useRef(null);
  React.useEffect(()=>{
    let raf=null;
    const update=()=>{
      raf=null;
      const max=document.documentElement.scrollHeight-window.innerHeight;
      const p=max>0?window.scrollY/max:0;
      if(barRef.current) barRef.current.style.transform=`scaleX(${p})`;
    };
    const onScroll=()=>{ if(raf==null) raf=requestAnimationFrame(update); };
    update();
    window.addEventListener('scroll',onScroll,{passive:true});
    window.addEventListener('resize',onScroll,{passive:true});
    return ()=>{window.removeEventListener('scroll',onScroll);window.removeEventListener('resize',onScroll);if(raf)cancelAnimationFrame(raf);};
  },[]);
  return <div ref={barRef} aria-hidden="true" style={{position:'fixed',top:0,left:0,right:0,height:3,zIndex:200,background:'var(--gradient-brand)',transform:'scaleX(0)',transformOrigin:'left'}}/>;
}

/* Roleta de palavras: todas empilhadas no mesmo grid para a largura não pular. */
function PrRotator({words,render}){
  const [idx,setIdx]=React.useState(0);
  React.useEffect(()=>{
    const id=setInterval(()=>setIdx(i=>(i+1)%words.length),2600);
    return ()=>clearInterval(id);
  },[words.length]);
  return (
    <span className="pr-stack">
      {words.map((w,i)=>(
        <span key={typeof w==='string'?w:i} aria-hidden={i!==idx} style={{visibility:i===idx?'visible':'hidden',animation:i===idx?'pr-roll-in .5s var(--ease-out-expo) both':'none',justifySelf:'center'}}>
          {render?render(w):w}
        </span>
      ))}
    </span>
  );
}

const PR_SEM=['Sem alerta perdido.','Sem planilha paralela.','Sem retrabalho na fila.','Sem madrugada sem resposta.'];
const PR_TICKER=[
  ['camera','Evento #1532 tratado em 1m42s'],
  ['phone','Cliente avisado no WhatsApp'],
  ['fileCheck','Checklist do turno entregue no prazo'],
  ['userCheck','Passagem de posto com ciência registrada'],
  ['shieldCheck','SLA varrido de novo — nada estourado'],
];
/* Frases curtas para caber no pill em 320-375px sem quebrar o grid-stack. */
const PR_TICKER_M=[
  ['camera','Evento tratado em 1m42s'],
  ['phone','Cliente avisado no WhatsApp'],
  ['fileCheck','Checklist no prazo'],
  ['userCheck','Ciência registrada no turno'],
  ['shieldCheck','SLA sem estouro'],
];
const PR_H1_WORDS=['A','operação','inteira,'];
const PR_H1_WORDS2=['numa','única','tela.'];

function PrHero(){
  const isMobile=useIsMobile();
  const word=(w,i)=><span key={w+i} className="pr-word" style={{animationDelay:`${120+i*90}ms`,marginRight:'.28em'}}>{w}</span>;
  return (
    <main id="topo" style={{position:'relative',zIndex:1,width:'100%',minHeight:'88svh',display:'flex',flexDirection:'column',alignItems:'center',justifyContent:'center',paddingTop:isMobile?110:130,paddingBottom:isMobile?24:36,boxSizing:'border-box',overflow:'hidden',textAlign:'center'}}>
      <div style={{display:'flex',flexDirection:'column',alignItems:'center',gap:isMobile?16:20,maxWidth:880,paddingInline:isMobile?20:24}}>
        <span className="pr-word" style={{animationDelay:'0ms',display:'inline-flex',flexWrap:'wrap',justifyContent:'center',alignItems:'center',gap:10,maxWidth:'100%',boxSizing:'border-box',background:'var(--rcem-ink-800)',color:'#fff',border:'1px solid rgba(255,255,255,.08)',borderRadius:'var(--radius-pill)',padding:'6px 16px',fontSize:10,fontWeight:700,textTransform:'uppercase',letterSpacing:'1.5px'}}>
          <span style={{width:7,height:7,borderRadius:'50%',background:'var(--rcem-green-400)',animation:'acs-blink 1.6s infinite'}}></span>
          Connect Central · operação ativa · <PrClock/> · Brasília
        </span>
        <h1 style={{margin:0,fontWeight:'var(--fw-extrabold)',fontSize:'var(--text-hero)',letterSpacing:'var(--track-hero)',lineHeight:'var(--leading-hero)',color:'var(--text-body)'}}>
          <span style={{display:'block'}}>{PR_H1_WORDS.map(word)}</span>
          <span style={{display:'block'}}>
            {PR_H1_WORDS2.map((w,i)=>i===1
              ?<span key={w} className="pr-word" style={{animationDelay:`${120+(i+3)*90}ms`,marginRight:'.28em'}}><GradientText>{w}</GradientText></span>
              :word(w,i+3))}
          </span>
          <span className="pr-word" style={{display:'block',animationDelay:'700ms',marginTop:10,fontSize:isMobile?21:'clamp(24px,2.9vw,34px)',letterSpacing:isMobile?'-.6px':'-1px'}}>
            <PrRotator words={PR_SEM} render={(w)=><GradientText>{w}</GradientText>}/>
          </span>
        </h1>
        <p className="pr-word" style={{animationDelay:'850ms',margin:0,maxWidth:560,fontSize:'var(--text-lead)',lineHeight:'var(--leading-loose)',letterSpacing:'var(--track-nav)',color:'var(--text-body)'}}>
          Eventos de câmera <strong style={{fontWeight:600}}>em tempo real</strong>, chamados, checklists e passagem de posto — a plataforma da central de monitoramento, <strong style={{fontWeight:600}}>24 horas por dia</strong>.
        </p>
        {/* Ticker: o sistema acontecendo, em uma linha. */}
        <div className="pr-word" style={{animationDelay:'950ms',display:'inline-flex',alignItems:'center',gap:10,maxWidth:'100%',border:'1px solid var(--border-default)',background:'var(--surface-card)',borderRadius:'var(--radius-pill)',padding:'8px 18px',boxShadow:'var(--shadow-hairline)'}}>
          <span style={{width:7,height:7,flexShrink:0,borderRadius:'50%',background:'var(--rcem-green-600)',animation:'acs-blink 1.6s infinite'}}></span>
          <span style={{fontSize:10,fontWeight:800,letterSpacing:'1px',textTransform:'uppercase',color:'var(--rcem-grey-500)',flexShrink:0}}>Agora</span>
          <PrRotator words={isMobile?PR_TICKER_M:PR_TICKER} render={([ic,t])=>(
            <span style={{display:'inline-flex',alignItems:'center',gap:7,fontSize:isMobile?11.5:12.5,fontWeight:600,color:'var(--rcem-ink-900)'}}>
              <Icon name={ic} size={13} color="var(--rcem-green-600)"/>{t}
            </span>
          )}/>
        </div>
        <div className="pr-word" style={{animationDelay:'1050ms',display:'flex',flexDirection:isMobile?'column':'row',alignItems:'center',gap:12,marginTop:6,width:isMobile?'100%':'auto'}}>
          <Button variant="primary" href="#central" style={isMobile?{width:'100%',justifyContent:'center'}:undefined}>Explorar a Central</Button>
          <Button variant="ghost" href="#ciclo" style={{color:'var(--rcem-ink-900)',fontWeight:600,...(isMobile?{width:'100%',justifyContent:'center'}:{})}}>Ver o ciclo do evento<Icon name="arrowUpRight" size={15} style={{marginLeft:4}}/></Button>
        </div>
        <span className="pr-word" style={{animationDelay:'1150ms',fontSize:11,textTransform:'uppercase',letterSpacing:'.1em',fontWeight:'var(--fw-bold)',color:'var(--rcem-grey-500)'}}>Connect Central · em produção · v2.25</span>
      </div>
      <PrHeroDemo/>
    </main>
  );
}

/* Contador animado: sobe até o alvo quando o elemento entra na viewport. */
function PrCountValue({to,prefix='',suffix=''}){
  const ref=React.useRef(null);
  const [v,setV]=React.useState(0);
  React.useEffect(()=>{
    const el=ref.current;
    if(!el) return;
    let raf;
    const io=new IntersectionObserver(es=>{
      if(!es[0].isIntersecting) return;
      io.disconnect();
      const t0=performance.now(),DUR=1100;
      const tick=(ts)=>{
        const t=Math.min(1,(ts-t0)/DUR);
        setV(Math.round(to*(1-Math.pow(1-t,3))));
        if(t<1) raf=requestAnimationFrame(tick);
      };
      raf=requestAnimationFrame(tick);
    },{threshold:.5});
    io.observe(el);
    return ()=>{io.disconnect();if(raf)cancelAnimationFrame(raf);};
  },[to]);
  return <span ref={ref} style={{fontVariantNumeric:'tabular-nums'}}>{prefix}{v}{suffix}</span>;
}

const PR_STATS=[
  [<PrCountValue key="s1" to={24} suffix="/7"/>,<>operação <strong>ininterrupta</strong></>],
  [<PrCountValue key="s2" to={20} prefix="+"/>,<>módulos numa <strong>única plataforma</strong></>],
  [<PrCountValue key="s3" to={528}/>,<>testes automatizados <strong>passando</strong></>],
  [<PrCountValue key="s4" to={1} suffix=" min"/>,<>varredura de <strong>SLA e escalonamento</strong></>],
];
const PR_BADGES=[
  ['camera','Alertas de câmera em tempo real'],
  ['lockDot','Acesso isolado por cliente (ACL)'],
  ['shieldCheck','Retenção de dados com purge automático'],
  ['fileCheck','Evidência e auditoria em cada evento'],
];

function PrStats(){
  const isMobile=useIsMobile();
  return (
    <section style={{boxSizing:'border-box',display:'flex',flexDirection:'column',alignItems:'center',gap:isMobile?28:32,width:'100%',padding:isMobile?'40px 20px 40px':'48px 24px 56px'}}>
      <div style={{display:'grid',gridTemplateColumns:isMobile?'repeat(2,1fr)':'repeat(4,1fr)',alignItems:'center',gap:isMobile?'28px 16px':24,width:'100%',maxWidth:1100}}>
        {PR_STATS.map(([v,l],i)=>(<div key={i} className="reveal-zoom" style={{transitionDelay:`${100+i*100}ms`}}><StatItem value={v}>{l}</StatItem></div>))}
      </div>
      <div className="reveal" style={{display:'flex',flexWrap:'wrap',justifyContent:'center',alignItems:'center',gap:isMobile?'14px 20px':40,width:'100%',maxWidth:1100,transitionDelay:'200ms'}}>
        {PR_BADGES.map(([ic,t])=>(<TrustBadge key={t} icon={<Icon name={ic} size={18} color="var(--rcem-green-600)"/>}>{t}</TrustBadge>))}
      </div>
    </section>
  );
}
Object.assign(window,{PrNav,PrHero,PrStats,PrClock,PrScrollBar});
