/* GCCReady — LogoStrip
 * Auto-scrolling logo marquee with real brand marks.
 * Two seamless tracks (duplicated content) translate-X over 30-45s.
 * Pauses on hover. Edges fade with a CSS mask so logos enter/exit gracefully.
 *
 * Uses grLogoUrl + grLogoFallback from data.jsx → falls back to text on image error.
 */

// Partner colleges — used on /tpo trust strip. We use Wikipedia-style domain
// inferences for logos; many will fall back to text via the chain.
const GR_COLLEGES = {
  'christ':       { name:'Christ University',         domain:'christuniversity.in',   city:'Bengaluru' },
  'srcc':         { name:'SRCC, Delhi',                domain:'srcc.edu',              city:'Delhi' },
  'lsr':          { name:'Lady Shri Ram',              domain:'lsr.edu.in',            city:'Delhi' },
  'st-xaviers':   { name:"St. Xavier's, Mumbai",       domain:'xaviers.edu',           city:'Mumbai' },
  'loyola':       { name:'Loyola College, Chennai',    domain:'loyolacollege.edu',     city:'Chennai' },
  'stella-maris': { name:'Stella Maris College',       domain:'stellamariscollege.edu.in', city:'Chennai' },
  'symbiosis':    { name:'Symbiosis (SCMS)',           domain:'scmspune.ac.in',        city:'Pune' },
  'iim-indore':   { name:'IIM Indore (PGDM)',          domain:'iimidr.ac.in',          city:'Indore' },
  'xlri':         { name:'XLRI Jamshedpur',            domain:'xlri.ac.in',            city:'Jamshedpur' },
  'nmims':        { name:'NMIMS Mumbai',               domain:'nmims.edu',             city:'Mumbai' },
  'jadavpur':     { name:'Jadavpur University',        domain:'jaduniv.edu.in',        city:'Kolkata' },
  'manipal':      { name:'MAHE Manipal',               domain:'manipal.edu',           city:'Manipal' },
  'jain':         { name:'Jain (Deemed-to-be Univ)',   domain:'jainuniversity.ac.in',  city:'Bengaluru' },
  'amity':        { name:'Amity University',           domain:'amity.edu',             city:'Noida' },
  'st-josephs':   { name:"St. Joseph's, Bengaluru",    domain:'sjcc.edu.in',           city:'Bengaluru' },
  'hansraj':      { name:'Hansraj College, DU',        domain:'hansrajcollege.ac.in',  city:'Delhi' },
  'mit-pune':     { name:'MIT-WPU',                    domain:'mitwpu.edu.in',         city:'Pune' },
  'iiit-hyd':     { name:'IIIT Hyderabad',             domain:'iiit.ac.in',            city:'Hyderabad' },
  'bits-pilani':  { name:'BITS Pilani',                domain:'bits-pilani.ac.in',     city:'Pilani' },
  'nit-trichy':   { name:'NIT Trichy',                 domain:'nitt.edu',              city:'Trichy' },
  'vit-vellore':  { name:'VIT Vellore',                domain:'vit.ac.in',             city:'Vellore' },
  'anna-univ':    { name:'Anna University',            domain:'annauniv.edu',          city:'Chennai' },
};

const LOGO_PRESETS = {
  // The flagship: 36 GCCs across all 7 sectors. Used on Home + Mentors.
  hero: ['jpmorganchase','goldmansachs','morganstanley','wellsfargo','bankofamerica','citi','db','hsbc','barclays','blackrock','fidelity','statestreet',
         'microsoft','google','amazon','meta','apple','adobe','oracle','salesforce','nvidia','servicenow',
         'deloitte','ey','kpmg','pwc','mckinsey','bcg','bain',
         'walmart','target','novartis','astrazeneca','ge','siemens','shell'],

  // BFSI-only — for cert pages that target BFSI roles (CFA, CPA risk track)
  bfsi: ['jpmorganchase','goldmansachs','morganstanley','wellsfargo','bankofamerica','citi','db','hsbc','barclays','ubs','sc','blackrock','fidelity','statestreet','bnymellon','northerntrust','aig','allianz','aviva','prudentialplc','metlife'],

  // Big 4 + MBB — for CPA / EA / audit pages
  consulting: ['deloitte','ey','kpmg','pwc','mckinsey','bcg','bain'],

  // Big Tech — for AI PM / Data / Cloud roles
  tech: ['microsoft','google','amazon','meta','apple','adobe','oracle','salesforce','ibm','intel','nvidia','cisco','vmware','servicenow','atlassian','linkedin','uber','airbnb','booking','expedia'],

  // Pharma + healthcare — for clinical / pharma pages
  pharma: ['novartis','pfizer','astrazeneca','sanofi','gsk','bayer','roche','boehringer-ingelheim','lilly','unitedhealthgroup','cvshealth','evernorth'],

  // Industrial / Aero / Auto — for engineering R&D
  industrial: ['ge','siemens','bosch','honeywell','caterpillar','abb','se','3m','cummins','boeing','airbus','mercedes-benz','bmw','volvo','continental','ford'],

  // Mentor-network: weighted toward Big 4 + BFSI + Big Tech (where most certified pros work)
  mentors: ['jpmorganchase','goldmansachs','morganstanley','wellsfargo','bankofamerica','citi','db','hsbc','barclays','blackrock','fidelity','statestreet','bnymellon','northerntrust',
            'deloitte','ey','kpmg','pwc','mckinsey','bcg','bain',
            'microsoft','google','amazon','meta','adobe','oracle','salesforce','servicenow','ibm','nvidia','linkedin',
            'novartis','astrazeneca','walmart','ge','siemens','shell'],
};

/** CollegeStrip — auto-scrolling marquee for partner colleges (uses GR_COLLEGES). */
function CollegeStrip({ speed = 50, size = 'md' }) {
  const slugs = Object.keys(GR_COLLEGES);
  const doubled = [...slugs, ...slugs];
  const dim = size === 'lg' ? 96 : size === 'sm' ? 64 : 80;
  const gap = size === 'lg' ? 28 : 24;
  return (
    <div className="gr-logo-strip-shell" style={{
      position:'relative', overflow:'hidden',
      background:'linear-gradient(180deg, #FFFFFF 0%, #FAFCFE 100%)',
      border:'1px solid var(--gr-border)', borderRadius:22,
      padding:'24px 0', boxShadow:'0 18px 38px -18px rgba(13,27,42,.10)',
    }}
    onMouseEnter={(e)=>{ const tr = e.currentTarget.querySelector('.gr-logo-track'); if (tr) tr.style.animationPlayState='paused'; }}
    onMouseLeave={(e)=>{ const tr = e.currentTarget.querySelector('.gr-logo-track'); if (tr) tr.style.animationPlayState='running'; }}
    >
      <div style={{
        position:'absolute', top:0, left:0, right:0, height:3,
        background:'linear-gradient(90deg, transparent, #F59E0B 25%, #FBBF24 50%, #F59E0B 75%, transparent)',
        opacity:.55,
      }}/>
      <div className="gr-logo-track" style={{
        display:'flex', alignItems:'center', gap:`${gap}px`, width:'max-content',
        animation:`gr-logo-marquee ${speed}s linear infinite`, willChange:'transform',
      }}>
        {doubled.map((slug, i) => {
          const c = GR_COLLEGES[slug];
          return (
            <div key={`${slug}-${i}`} style={{
              flex:'0 0 auto', display:'flex', flexDirection:'column', alignItems:'center', gap:8,
              width: dim + 60, padding:'4px 8px',
            }}>
              <div style={{
                width: dim, height: dim, background:'#fff',
                border:'1px solid var(--gr-border-soft)', borderRadius: dim*0.18,
                display:'grid', placeItems:'center', padding: dim*0.16, overflow:'hidden',
                boxShadow:'0 6px 16px rgba(13,27,42,.06)',
              }}>
                <img src={grLogoUrl(c.domain, 256)}
                  srcSet={`${grLogoUrl(c.domain, 256)} 1x, ${grLogoUrl(c.domain, 512)} 2x`}
                  alt={`${c.name} logo`} loading="lazy"
                  onError={(ev)=>{
                    var img = ev.target;
                    if (img.dataset.fb === '1') {
                      var span = document.createElement('span');
                      span.textContent = c.name;
                      span.style.cssText = 'font:800 11px/1.25 "DM Sans"; color:#0D1B2A; text-align:center; padding:0 6px';
                      img.replaceWith(span); return;
                    }
                    img.dataset.fb = '1';
                    img.src = grLogoFallback(c.domain, 256);
                  }}
                  style={{maxWidth:'100%', maxHeight:'100%', objectFit:'contain', filter:'grayscale(0.10)'}}/>
              </div>
              <div style={{font:'700 12.5px/1.3 "DM Sans"', letterSpacing:'-0.005em', color:'var(--gr-navy)', textAlign:'center'}}>{c.name}</div>
              <div style={{font:'500 10.5px/1.2 Inter', color:'var(--gr-fg-3)'}}>{c.city}</div>
            </div>
          );
        })}
      </div>
    </div>
  );
}

Object.assign(window, { CollegeStrip, GR_COLLEGES });

/** LogoStrip — auto-scrolling marquee. Design-system-grade.
 *  - 96 px tiles by default, 256 px logo source for retina sharpness
 *  - subtle gradient container, gold ribbon top accent
 *  - hover: gold border + lift, cursor-pause, mask edges
 *  - inline "Browse all 80+ GCCs →" link in top-right
 */
function LogoStrip({
  preset = 'hero',
  slugs,                  // override preset
  speed = 45,             // seconds for one full loop
  size = 'md',            // 'sm' | 'md' | 'lg'
  invert = false,         // dark-bg variant
  showName = true,
  showBrowseAll = true,
  browseHref = '#/gcc-employers',
  browseLabel,
}) {
  const list = (slugs && slugs.length ? slugs : LOGO_PRESETS[preset] || LOGO_PRESETS.hero)
    .filter((s) => GR_EMPLOYERS[s]);
  const doubled = [...list, ...list];

  const dim = size === 'lg' ? 112 : size === 'sm' ? 72 : 96;
  const cellW = dim + 44;
  const gap = size === 'lg' ? 32 : size === 'sm' ? 22 : 28;
  const srcSize = size === 'lg' ? 320 : 256;
  const padBlock = size === 'lg' ? 30 : 24;

  return (
    <div
      className="gr-logo-strip-shell"
      style={{
        position:'relative',
        overflow:'hidden',
        background: invert
          ? 'linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02))'
          : 'linear-gradient(180deg, #FFFFFF 0%, #FAFCFE 100%)',
        border: invert ? '1px solid rgba(255,255,255,.10)' : '1px solid var(--gr-border)',
        borderRadius: 22,
        padding: `${padBlock}px 0 ${padBlock}px`,
        boxShadow: invert ? '0 24px 56px -24px rgba(0,0,0,.45)' : '0 18px 38px -18px rgba(13,27,42,.10)',
      }}
      onMouseEnter={(e)=>{ const tr = e.currentTarget.querySelector('.gr-logo-track'); if (tr) tr.style.animationPlayState='paused'; }}
      onMouseLeave={(e)=>{ const tr = e.currentTarget.querySelector('.gr-logo-track'); if (tr) tr.style.animationPlayState='running'; }}
    >
      {/* gold accent ribbon */}
      <div style={{
        position:'absolute', top:0, left:0, right:0, height:3,
        background:'linear-gradient(90deg, transparent, #F59E0B 25%, #FBBF24 50%, #F59E0B 75%, transparent)',
        opacity: invert ? .8 : .55,
      }}/>

      {showBrowseAll && (
        <a href={browseHref} style={{
          position:'absolute', top:14, right:18, zIndex:3,
          font:'700 12px/1 Inter', textDecoration:'none',
          color: invert ? '#FBBF24' : 'var(--gr-gold-700)',
          padding:'7px 12px', borderRadius:999,
          background: invert ? 'rgba(245,158,11,.10)' : 'var(--gr-gold-50)',
          border: invert ? '1px solid rgba(245,158,11,.30)' : '1px solid var(--gr-gold-100)',
          display:'inline-flex', alignItems:'center', gap:6,
        }}>
          {browseLabel || `Browse all ${Object.keys(GR_EMPLOYERS).length}+ GCCs`} <Icon name="arrow-right" size={11}/>
        </a>
      )}

      <div
        className="gr-logo-track"
        style={{
          display:'flex',
          alignItems:'center',
          gap: `${gap}px`,
          width:'max-content',
          animation:`gr-logo-marquee ${speed}s linear infinite`,
          willChange:'transform',
          marginTop: showBrowseAll ? 28 : 0,
        }}
      >
        {doubled.map((slug, i) => {
          const e = GR_EMPLOYERS[slug];
          if (!e) return null;
          return (
            <a
              key={`${slug}-${i}`}
              href={`#/gcc/${slug}`}
              title={`${e.name} — ${e.cities.slice(0,2).join(' · ')}`}
              className="gr-logo-cell"
              style={{
                flex:'0 0 auto',
                display:'flex', flexDirection:'column', alignItems:'center', gap:10,
                textDecoration:'none',
                width: cellW, padding:'4px 6px',
              }}
            >
              <div className="gr-logo-card" style={{
                width: dim, height: dim,
                background:'#fff',
                border: invert ? '1px solid rgba(255,255,255,.18)' : '1px solid var(--gr-border-soft)',
                borderRadius: dim * 0.20,
                display:'grid', placeItems:'center',
                padding: dim * 0.14,
                overflow:'hidden',
                boxShadow: invert ? '0 8px 22px rgba(0,0,0,.28)' : '0 6px 16px rgba(13,27,42,.07)',
                transition: 'transform .25s ease, box-shadow .25s ease, border-color .25s ease',
              }}>
                <img
                  src={grLogoUrl(e.domain, srcSize)}
                  srcSet={`${grLogoUrl(e.domain, srcSize)} 1x, ${grLogoUrl(e.domain, srcSize * 2)} 2x`}
                  alt={`${e.name} logo`}
                  loading="lazy"
                  onError={(ev)=>{
                    const img = ev.target;
                    if (img.dataset.fb === '1') {
                      const span = document.createElement('span');
                      span.textContent = e.name;
                      span.style.cssText = 'font:800 12px/1.25 "DM Sans"; color:#0D1B2A; text-align:center; padding:0 6px';
                      img.replaceWith(span);
                      return;
                    }
                    img.dataset.fb = '1';
                    img.src = grLogoFallback(e.domain, srcSize);
                  }}
                  style={{ maxWidth:'100%', maxHeight:'100%', objectFit:'contain', filter:'grayscale(0.10)' }}
                />
              </div>
              {showName && (
                <div className="gr-logo-name" style={{
                  font:`700 ${size === 'lg' ? 13 : 12.5}px/1.3 "DM Sans"`,
                  letterSpacing:'-0.005em', textAlign:'center',
                  color: invert ? 'rgba(255,255,255,.92)' : 'var(--gr-navy)',
                  maxWidth: cellW - 8, whiteSpace:'normal',
                }}>{e.name}</div>
              )}
              <div className="gr-logo-city" style={{
                font:'500 10.5px/1.2 Inter', letterSpacing:'.02em',
                color: invert ? 'rgba(255,255,255,.55)' : 'var(--gr-fg-3)',
                textAlign:'center',
              }}>{e.cities.slice(0,2).join(' · ')}</div>
            </a>
          );
        })}
      </div>

      <style>{`
        @keyframes gr-logo-marquee {
          from { transform: translateX(0); }
          to   { transform: translateX(-50%); }
        }
        .gr-logo-strip-shell {
          -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
                  mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
        }
        .gr-logo-cell:hover .gr-logo-card {
          transform: translateY(-3px);
          border-color: var(--gr-gold-200);
          box-shadow: 0 14px 28px -10px rgba(245,158,11,.30);
        }
        .gr-logo-cell:hover .gr-logo-card img {
          filter: grayscale(0) !important;
        }
        @media (prefers-reduced-motion: reduce) {
          .gr-logo-track { animation: none !important; }
        }
      `}</style>
    </div>
  );
}

Object.assign(window, { LogoStrip, LOGO_PRESETS });
