// Logo system for Tzedoka.org
// Mark: an open hand with a coin / seed (the gesture of giving) inside a circle.
// Reads symbolically — no fake Hebrew letter. Renders as pure geometry so it scales cleanly.

function LogoMark({ size = 56, color = 'var(--tz-gold)', accent = 'var(--tz-blue)', variant = 'tzadi' }) {
  const s = size;

  if (variant === 'tzadiBadge') {
    return (
      <svg width={s} height={s} viewBox="0 0 64 64" aria-hidden="true">
        <rect x="6" y="6" width="52" height="52" rx="12" fill={accent}/>
        <path d="M44 14 L44 42 C 44 46, 41 48, 36 48" stroke={color} strokeWidth="4.5" strokeLinecap="round" strokeLinejoin="round" fill="none"/>
        <path d="M20 18 C 24 24, 32 28, 44 30" stroke={color} strokeWidth="4.5" strokeLinecap="round" fill="none"/>
        <path d="M16 48 C 22 49, 30 49, 36 48" stroke={color} strokeWidth="4.5" strokeLinecap="round" fill="none" opacity=".75"/>
      </svg>
    );
  }

  if (variant === 'coin') {
    return (
      <svg width={s} height={s} viewBox="0 0 64 64" aria-hidden="true">
        <circle cx="32" cy="32" r="30" fill="none" stroke={color} strokeWidth="2"/>
        <circle cx="32" cy="32" r="22" fill="none" stroke={color} strokeWidth="1" opacity=".55"/>
        <circle cx="32" cy="32" r="14" fill="none" stroke={color} strokeWidth="1" opacity=".35"/>
        <circle cx="32" cy="32" r="4" fill={color}/>
      </svg>
    );
  }

  // default: 'tzadi' — the Hebrew letter צ, geometric (approved version)
  return (
    <svg width={s} height={s} viewBox="0 0 64 64" aria-hidden="true">
      <path d="M44 12 L44 44 C 44 50, 40 52, 34 52" stroke={color} strokeWidth="5" strokeLinecap="round" strokeLinejoin="round" fill="none"/>
      <path d="M18 16 C 22 22, 30 28, 44 30" stroke={color} strokeWidth="5" strokeLinecap="round" fill="none"/>
      <path d="M14 50 C 22 52, 30 52, 34 52" stroke={accent} strokeWidth="5" strokeLinecap="round" fill="none"/>
    </svg>
  );
}

function Wordmark({ color = 'var(--tz-blue)', goldDot = 'var(--tz-gold)', size = 28, family }) {
  const fam = family || 'var(--tz-display)';
  const letterStyle = { display:'inline-block', willChange:'transform' };
  return (
    <span className="tz-wordmark" style={{
      fontFamily: fam,
      fontWeight: 600,
      letterSpacing: '-0.01em',
      fontSize: size,
      color,
      lineHeight: 1,
      display:'inline-flex',
      alignItems:'baseline',
      whiteSpace:'nowrap',
    }}>
      <span style={{display:'inline-flex'}}>
        {'tzedoka'.split('').map((ch,i)=>(
          <span key={i} className="tz-letter" style={letterStyle}>{ch}</span>
        ))}
      </span>
      <span className="tz-dot" style={{ color: goldDot, padding:'0 .04em', display:'inline-block', willChange:'transform' }}>.</span>
      <span className="tz-org" style={{ color, opacity:.85, display:'inline-flex' }}>
        {'org'.split('').map((ch,i)=>(
          <span key={i} className="tz-letter tz-letter-org" style={letterStyle}>{ch}</span>
        ))}
      </span>
    </span>
  );
}

// Wraps the mark in a contrasting rounded-square badge — used on dark backgrounds
// so the blue base stroke doesn't disappear into the navy.
function MarkBadge({ size=40, bg='var(--tz-cream)', children }){
  // Pad the mark inside a rounded square. Mark renders at ~78% of badge size.
  return (
    <span style={{
      display:'inline-flex', alignItems:'center', justifyContent:'center',
      width: size, height: size,
      background: bg,
      borderRadius: Math.round(size*0.22),
      flexShrink: 0,
    }}>
      {children}
    </span>
  );
}

function Logo({ variant = 'markLeft', size = 'md', color = 'var(--tz-blue)', mark = 'var(--tz-gold)', accent = 'var(--tz-blue)', dot = 'var(--tz-gold)', markVariant='tzadi', badge=false, badgeBg='var(--tz-cream)' }) {
  const sizes = { sm: { mark: 28, word: 18 }, md: { mark: 40, word: 26 }, lg: { mark: 64, word: 44 }, xl:{mark:96,word:64} };
  const s = sizes[size] || sizes.md;
  if (variant === 'wordmark') {
    return <Wordmark color={color} goldDot={dot} size={s.word} />;
  }
  const renderedMark = badge ? (
    <MarkBadge size={Math.round(s.mark*1.25)} bg={badgeBg}>
      <LogoMark size={s.mark} color={mark} accent={accent} variant={markVariant}/>
    </MarkBadge>
  ) : (
    <LogoMark size={s.mark} color={mark} accent={accent} variant={markVariant}/>
  );
  if (variant === 'stacked') {
    return (
      <div className="tz-logo" style={{display:'inline-flex', flexDirection:'column', alignItems:'center', gap: 10, cursor:'pointer'}}>
        {badge ? renderedMark : <LogoMark size={s.mark*1.1} color={mark} accent={accent} variant={markVariant}/>}
        <Wordmark color={color} goldDot={dot} size={s.word*0.85}/>
      </div>
    );
  }
  return (
    <div className="tz-logo" style={{display:'inline-flex', alignItems:'center', gap: 12, cursor:'pointer'}}>
      {renderedMark}
      <Wordmark color={color} goldDot={dot} size={s.word}/>
    </div>
  );
}

function LogoExplorations({ ctx }){
  const { t } = ctx;
  return (
    <div style={{
      width:'100%', height:'100%', padding:48,
      background:'var(--tz-cream)',
      fontFamily:'var(--tz-body)', color:'var(--tz-ink)',
      display:'grid', gridTemplateColumns:'1.4fr 1fr 1fr', gap:24,
    }}>
      <div style={{
        background:'var(--tz-parchment)',
        border:'1px solid rgba(11,42,74,.08)',
        borderRadius:14, padding:'48px 48px',
        display:'flex',flexDirection:'column',justifyContent:'space-between',
      }}>
        <div style={{display:'flex', alignItems:'center', gap:12, fontSize:11, letterSpacing:'.16em', textTransform:'uppercase', color:'var(--tz-muted)'}}>
          <span style={{width:24, height:1, background:'var(--tz-gold)'}}/> Primary lockup
        </div>
        <div style={{display:'flex', flexDirection:'column', gap:32, alignItems:'flex-start'}}>
          <Logo variant={t.logoVariant} size="xl" markVariant="tzadi"/>
          <div style={{fontFamily:'var(--tz-display)', fontSize:18, color:'var(--tz-muted)', fontStyle:'italic', maxWidth:480, lineHeight:1.5}}>
            The fundraising platform for Jewish nonprofits — built once, yours forever.
          </div>
        </div>
        <div style={{fontSize:11, letterSpacing:'.16em', textTransform:'uppercase', color:'var(--tz-muted)'}}>
          tzedoka<span style={{color:'var(--tz-gold)'}}>.</span>org
        </div>
      </div>

      <div style={{
        background:'var(--tz-blue)', color:'#fff',
        borderRadius:14, padding:'48px 36px',
        display:'flex',flexDirection:'column',justifyContent:'space-between',gap:24,
      }}>
        <div style={{fontSize:11, letterSpacing:'.16em', textTransform:'uppercase', color:'rgba(255,255,255,.6)'}}>
          On deep blue
        </div>
        <Logo variant={t.logoVariant} size="lg"
              color="#fff" mark="var(--tz-gold)" accent="var(--tz-blue-2)" dot="var(--tz-gold)" markVariant="tzadi"/>
        <div style={{display:'flex', gap:14, alignItems:'center', flexWrap:'wrap'}}>
          <LogoMark size={42} color="var(--tz-gold)" accent="var(--tz-blue-2)" variant="tzadi"/>
          <LogoMark size={42} color="var(--tz-gold)" accent="var(--tz-blue-2)" variant="tzadiBadge"/>
          <LogoMark size={42} color="var(--tz-gold)" accent="var(--tz-blue-2)" variant="coin"/>
          <span style={{fontSize:11, color:'rgba(255,255,255,.55)', letterSpacing:'.1em', textTransform:'uppercase'}}>Mark studies</span>
        </div>
      </div>

      <div style={{
        background:'var(--tz-stone)',
        borderRadius:14, padding:'36px 32px',
        display:'flex',flexDirection:'column',justifyContent:'space-between',gap:16,
      }}>
        <div style={{fontSize:11, letterSpacing:'.16em', textTransform:'uppercase', color:'var(--tz-muted)'}}>Sizes & spacing</div>
        <div style={{display:'flex',flexDirection:'column',gap:16,alignItems:'flex-start'}}>
          <Logo variant={t.logoVariant} size="lg"/>
          <Logo variant={t.logoVariant} size="md"/>
          <Logo variant={t.logoVariant} size="sm"/>
        </div>
        <div style={{fontFamily:'var(--tz-accent)', fontSize:36, color:'var(--tz-blue)', lineHeight:1, direction:'rtl'}}>
          צדקה
        </div>
      </div>
    </div>
  );
}

Object.assign(window, { Logo, LogoMark, MarkBadge, Wordmark, LogoExplorations });
