// Shared content for Gerizim Hope site (Korean primary, English toggle).

const CONTENT = {
  ko: {
    name: '그리심 소망교회',
    nameShort: '그리심소망',
    tagline: '열방을 향하여 구속 경륜의 깃발을 높이 들고\n의와 영광의 빛을 발하는 교회',
    indicator: '2026년 신앙지표',
    scriptures: '창 18:19  ·  시 89:14  ·  사 11:10,12  ·  사 60:1-3  ·  사 62:1-2',
    welcomeTitle: '환영합니다',
    welcomeBody: '여러분을 처음 만나는 자리, 우리는 가장 단순한 것을 함께 합니다 — 말씀을 듣고, 함께 기도하며, 떡을 떼며 교제합니다.',
    nav: [
      ['home',     '홈'],
      ['about',    '교회소개'],
      ['sermons',  '말씀영상'],
      ['events',   '교회행사'],
      ['welcome',  '처음오신분'],
      ['gallery',  '갤러리'],
      ['contact',  '오시는 길'],
    ],
    services: [
      ['주일예배',   '오전 11:00', '본당', [
        ['중고등부', '오전 9:30'],
        ['주일학교', '오전 9:30'],
        ['유치부',   '오전 9:30'],
        ['영유아부', '오전 9:30'],
      ]],
      ['수요예배',   '오후 7:30',  '본당'],
      ['새벽예배',   '토 6:00',    '기도실'],
      ['청년예배',   '토 10:00',   '청년부실'],
    ],
    sermonCat: '새벽예배',
    sermonDate: '04.25.2026',
    sermonName: '마음을 토하라',
    sermonBy: '유성준 담임목사',
    address: '631 Mitchell Rd, Norcross, GA 30071',
    email: 'ghpchurch144000@gmail.com',
    cta: '예배 함께하기',
    secondary: '최근 말씀 듣기',
    latest: '이번 주의 말씀',
    upcoming: '오월의 자리',
    aboutKicker: '교회소개',
    aboutTitle: '20년의 빛.',
    aboutLead: '2006년 애틀랜타에 뿌리내린 한인 장로교회로, 말씀과 기도, 그리고 성도의 교제 가운데 다음 세대를 세워가는 교회입니다.',
    aboutNarrative: {
      intro: '저희 그리심 소망교회는 오직예수, 오직 말씀, 오직 성경으로 하나님의 구속사의 완성을 이루는 그날까지 예배와 가르침, 선교, 찬양, 봉사에 힘쓰는 교회입니다.',
      origin: "성경에서 ‘그리심’이란 말은 ‘축복의 산’으로, 이스라엘의 열 두지파 중 여섯 지파가 이 산에서 하나님께 축복을 받았습니다. 저희 교회는 축복으로 명하신 그 말씀을 믿고 따르는 축복의 교회가 되기를 소망하며, 구속사의 완성을 위해 여러분의 참여를 환영합니다.",
      pillars: [
        ['말씀이 살아 있는 그리심 소망교회', '하나님의 말씀은 지금도 살아서 역사하십니다. 모든 것 중에 모든 것이 하나님의 말씀이요, 이 세상이 변해도 변치 않는 것이 하나님의 말씀입니다. 저희 교회는 이런 말씀에 대한 확신과 믿음을 소중히 지키며 행하는 교회입니다.'],
        ['도심 속에 전원 교회', '저희 교회는 늘 푸른나무로 둘러싸인 전원의 향기가 물씬 나는 교회입니다. 하나님을 향한 예배, 신선한 공기, 영육간에 아름다움을 만끽할 수 있는 매력적인 자연의 품 속에서 성도들은 몸과 마음의 편안한 안식을 갖게 됩니다.'],
        ['다채로운 말씀 교육', '주일예배와 수요예배, 주일학교, 중고등부, 청년선교회 각자 모두들 개별적인 수준별 교육으로 성경을 가르치고 있습니다. 말씀을 사랑하시고 공부를 원하시는 분들은 언제든지 환영합니다.'],
        ["‘일방적 축복’과 소망이 넘치는 교회", '꺼져가는 등불과 같은 이 세상에서 축복과 소망이 넘치는 교회. 예수님은 부활 후 두려움에 떠는 제자들을 향해 ‘평강’을 명하셨습니다. 우리 그리심 소망교회는 두려움에 떠는 어두운 세상을 향해, 예수님이 가르쳐주신 평강을 전하고 있습니다.'],
      ],
      closing: '하나님은 오늘도 사랑을 찾아 헤매는 외로운 영혼을 기다리고 계십니다.\n이 곳 그리심 소망교회에서 살아계신 하나님을 만나시길 기도합니다.\n그리심 소망교회는 당신을 향해 늘 열려 있습니다.',
    },
    leadershipKicker: '교역자',
    leadershipTitle: '함께 섬기는 이들',
    leadership: [
      ['유성준 목사', '담임목사', 'dusk', '2018년부터 그리심 소망교회의 담임목사로 섬기고 계십니다. 미국 남부노회 부회장으로도 섬기고 있습니다.', [
        '용인대학교 유도학과 학사',
        '총회신학교 목회학 석사',
        '베리트 신학교 석사',
      ], 'site/img/leader-pastor-yoo.jpg'],
      ['조혜순 선교사', '교육부 · 통역팀', 'forest', '2017년부터 그리심 소망교회를 섬기고 계시며, 현재 교육부와 통역팀을 담당하고 계십니다.', [
        '숭실대학교 영어영문학과 졸업',
        'Reformed Theological Seminary (Charlotte, NC) 성경학 석사',
        '베리트 신학교 성경학 박사',
        'Evangelical Theological Seminary 박사 과정',
      ], 'site/img/leader-cho-missionary.jpg'],
    ],
    sermonsTitle: '말씀, 깃발.',
    eventsTitle: '함께하는 날.',
    welcomePageKicker: '처음 오신 분',
    welcomePageTitle: '문은 열려있다.',
    contactTitle: '오시는 길.',
    galleryKicker: '갤러리',
    galleryTitle: '함께한 자리.',
    cats: ['전체','주일','수요','새벽','성경공부','특별집회'],
    sermonsList: [
      ['새벽예배', '04.25', '마음을 토하라', '시편 62편 8절', 36],
      ['주일설교', '04.20', '의의 길을 지키는 자', '창 18:19', 52],
      ['수요설교', '04.22', '깃발을 높이 들라', '사 11:10,12', 44],
      ['성경공부', '04.18', '구속사 — 아브라함의 언약', '창세기 15장', 58],
      ['특별집회', '04.10', '부활의 새벽', '눅 24:1-12', 64],
      ['새벽예배', '04.24', '여호와의 영광이 임하리라', '사 60:1-3', 28],
      ['주일설교', '04.13', '시온의 깃발', '사 62:1-2', 49],
      ['수요설교', '04.15', '의로 통치하시는', '시 89:14', 41],
    ],
    eventsList: [
      ['04.05', '주일',     '부활절 주일예배',            '오전 11:00', '본당'],
      ['05.09', '토',       '야드 세일',                  '',           ''    ],
      ['05.10', '주일',     '어머니 주일 / 어버이 주일',  '오전 11:00', '본당'],
      ['05.24–25', '주일–월', '교회 수련회',              '오전 11:00', 'Calvin Center'],
      ['06.27',    '토',      '구속사 세미나',            '오전 10:30', '본당'         ],
    ],
    welcomeSteps: [
      ['도착', '주차장에서 본당까지 안내해 드립니다. 처음 오신 분은 정문에서 환영팀이 맞이합니다.'],
      ['예배', '오전 11시 주일예배에 함께하세요. 한국어로 진행되며 자리는 자유롭게 앉으시면 됩니다.'],
      ['교제', '예배 후 친교실에서 차와 다과를 나누며 인사합니다. 부담 없이 머물다 가세요.'],
      ['다음', '관심 있는 부서나 모임이 있다면 안내데스크에서 연결해 드립니다.'],
    ],
    galleryItems: [
      ['교회 전경',        'forest', '본당',       'site/img/church-aerial-hero.jpg'],
      ['주일예배 — 본당',  'dusk',  '예배',       'site/img/gallery-praise-night.jpg'],
      ['말씀 선포',        'forest', '말씀',       'site/img/preaching-portrait.jpg'],
      ['청년 찬양',        'ember', '찬양',       'site/img/gallery-youth-praise.jpg'],
      ['성찬',             'clay',  '성례',       'site/img/gallery-communion.jpg'],
      ['주일학교',         'bone',  '다음세대',    'site/img/gallery-children.jpg'],
      ['찬양대',           'ember', '찬양',       'site/img/gallery-praise-team.jpg'],
      ['교제 — 야외',      'dusk',  '친교',       'site/img/gallery-fellowship.jpg'],
      ['예배 — 본당',      'clay',  '예배',       'site/img/sanctuary-worship-portrait.jpg'],
    ],
    footer: {
      addr:     '주소',
      contact:  '연락',
      sermons:  '말씀',
      links:    'Links',
      copy:     '© 2026 그리심 소망교회',
    },
    misc: {
      sundayLabel:  '주일예배',
      sundayTime:   '오전 11:00',
      viewAll:      '전체 보기',
      forFirstTime: '처음 오신 분들을 위해',
      bigCta:       '함께 예배합시다.',
      vol:          'VOL. 20 — EST. 2006',
    },
  },
  en: {
    name: 'Gerizim Hope Presbyterian Church',
    nameShort: 'Gerizim Hope',
    tagline: 'A church that lifts the banner of redemption to the nations\nand shines with the light of righteousness and glory',
    indicator: '2026 Theme Verse',
    scriptures: 'Gen 18:19  ·  Ps 89:14  ·  Isa 11:10,12  ·  Isa 60:1-3  ·  Isa 62:1-2',
    welcomeTitle: 'Welcome',
    welcomeBody: 'When we meet for the first time, we do the simplest things together: hearing the Word, praying side by side, breaking bread together.',
    nav: [
      ['home',     'Home'],
      ['about',    'About'],
      ['sermons',  'Sermons'],
      ['events',   'Events'],
      ['welcome',  'New here?'],
      ['gallery',  'Gallery'],
      ['contact',  'Visit'],
    ],
    services: [
      ['Sunday Service',     '11:00 AM',     'Sanctuary', [
        ['Middle/High School', '9:30 AM'],
        ['Sunday School',      '9:30 AM'],
        ['Kindergarten',       '9:30 AM'],
        ['Nursery',            '9:30 AM'],
      ]],
      ['Wednesday Service',  '7:30 PM',      'Sanctuary'],
      ['Dawn Prayer',        'Sat 6:00 AM',  'Prayer Room'],
      ['Young Adults',       'Sat 10:00 AM', 'YA Hall'],
    ],
    sermonCat: 'Dawn Service',
    sermonDate: '04.25.2026',
    sermonName: 'Pour Out Your Heart',
    sermonBy: 'Rev. Sung Jun Yoo, Senior Pastor',
    address: '631 Mitchell Rd, Norcross, GA 30071',
    email: 'ghpchurch144000@gmail.com',
    cta: 'Join us for worship',
    secondary: 'Listen to recent sermons',
    latest: 'This week, the Word',
    upcoming: 'May, gathered',
    aboutKicker: 'About',
    aboutTitle: 'Twenty years.',
    aboutLead: 'A Korean Presbyterian congregation rooted in Atlanta since 2006, raising the next generation through the Word, prayer, and fellowship.',
    aboutNarrative: {
      intro: 'We at Gerizim Hope Church are a congregation devoted to worship, teaching, mission, praise, and service — by Christ alone, by the Word alone, by Scripture alone — until the day God’s redemptive history is fulfilled.',
      origin: 'In Scripture, “Gerizim” means “the mountain of blessing.” Six of the twelve tribes of Israel received God’s blessing on this mountain. Our church longs to be a church of blessing — believing and following the Word God commanded as blessing — and we welcome your part in the fulfillment of redemptive history.',
      pillars: [
        ['Where the Word is alive', 'God’s Word still lives and works today. Of all things in all things, the Word of God is everything; this world changes, but God’s Word does not. Our church treasures and walks in conviction and faith in this Word.'],
        ['A country church in the city', 'Our church is wrapped in the fragrance of the countryside, surrounded by evergreen trees. In the embrace of this attractive nature — worship before God, fresh air, beauty for body and soul — our congregation finds rest for body and mind.'],
        ['Rich and varied Bible teaching', 'Through Sunday and Wednesday services, Sunday school, the youth group, and the young-adult mission, we teach Scripture at each level individually. All who love the Word and desire to study it are warmly welcomed at any time.'],
        ['A church overflowing with “unilateral blessing” and hope', 'A church overflowing with blessing and hope in a world like a fading lamp. After his resurrection, Jesus commanded "peace" upon his trembling disciples. Our Gerizim Hope Church proclaims that same peace — taught by Jesus — to a darkened, fearful world.'],
      ],
      closing: 'God still waits today for the lonely soul searching for love.\nWe pray you would meet the living God here at Gerizim Hope Church.\nOur doors are always open to you.',
    },
    leadershipKicker: 'Leadership',
    leadershipTitle: 'Those who serve',
    leadership: [
      ['Rev. Sung Jun Yoo', 'Senior Pastor', 'dusk', 'Rev. Yoo has served as senior pastor of Gerizim Hope Presbyterian Church since 2018. He also serves as Vice President of the American Southern Presbytery.', [
        'B.A. in Judo, Yongin University',
        'M.Div., General Assembly Theological Seminary',
        "Master's, Berit Theological Seminary",
      ], 'site/img/leader-pastor-yoo.jpg'],
      ['Missionary Grace Cho', 'Education · Translation', 'forest', 'Missionary Cho has served Gerizim Hope Presbyterian Church since 2017. She currently leads the Education Department and the Translation Team.', [
        'B.A. in English Language and Literature, Soongsil University',
        'MABS, Reformed Theological Seminary (Charlotte, NC)',
        'Doctorate in Biblical Theology, Berit Theological Seminary',
        'Ph.D. student, Evangelical Theological Seminary',
      ], 'site/img/leader-cho-missionary.jpg'],
    ],
    sermonsTitle: 'Word as banner.',
    eventsTitle: 'Come together.',
    welcomePageKicker: 'New here?',
    welcomePageTitle: 'The door is open.',
    contactTitle: 'Come and visit.',
    galleryKicker: 'Gallery',
    galleryTitle: 'Together.',
    cats: ['All','Sunday','Wednesday','Dawn','Bible Study','Special'],
    sermonsList: [
      ['Dawn',       '04.25', 'Pour Out Your Heart', 'Psalm 62:8', 36],
      ['Sunday',     '04.20', 'Those who keep the way of righteousness', 'Gen 18:19', 52],
      ['Wednesday',  '04.22', 'Lift up the banner', 'Isa 11:10,12', 44],
      ['Bible Study','04.18', 'Redemptive History: Abraham\u2019s Covenant', 'Genesis 15', 58],
      ['Special',    '04.10', 'Resurrection dawn', 'Luke 24:1-12', 64],
      ['Dawn',       '04.24', 'The glory of the Lord shall come', 'Isa 60:1-3', 28],
      ['Sunday',     '04.13', 'The banner of Zion', 'Isa 62:1-2', 49],
      ['Wednesday',  '04.15', 'Throne of righteousness', 'Ps 89:14', 41],
    ],
    eventsList: [
      ['APR 05', 'Sun',     'Easter Lord\u2019s Day',                  '11:00 AM', 'Sanctuary'],
      ['MAY 09', 'Sat',     'Yard Sale',                               '',         ''         ],
      ['MAY 10', 'Sun',     'Mother\u2019s Day / Parents\u2019 Sunday', '11:00 AM', 'Sanctuary'],
      ['MAY 24\u201325', 'Sun\u2013Mon', 'Church Retreat',                  '11:00 AM',  'Calvin Center'],
      ['JUN 27',    'Sat',     'History of Redemption Seminar',  '10:30 AM',  'Sanctuary'    ],
    ],
    welcomeSteps: [
      ['Arrive', 'We\u2019ll guide you from the parking lot to the sanctuary. A welcome team meets first-timers at the front door.'],
      ['Worship', 'Join us at 11 AM Sunday. Service is in Korean; please sit anywhere you like.'],
      ['Connect', 'After the service, share tea and refreshments in the fellowship hall. Stay as long as you\u2019d like.'],
      ['Next', 'If a ministry or group catches your eye, the welcome desk will introduce you.'],
    ],
    galleryItems: [
      ['Church \u2014 aerial',      'forest','Building',  'site/img/church-aerial-hero.jpg'],
      ['Sunday \u2014 Sanctuary',   'dusk',  'Worship',   'site/img/gallery-praise-night.jpg'],
      ['Preaching the Word',        'forest','Word',      'site/img/preaching-portrait.jpg'],
      ['Young adults \u2014 praise','ember', 'Praise',    'site/img/gallery-youth-praise.jpg'],
      ['The Lord\u2019s Supper',    'clay',  'Communion', 'site/img/gallery-communion.jpg'],
      ['Sunday school',             'bone',  'Next gen',  'site/img/gallery-children.jpg'],
      ['Praise team',               'ember', 'Praise',    'site/img/gallery-praise-team.jpg'],
      ['Fellowship \u2014 outdoors','dusk',  'Fellowship','site/img/gallery-fellowship.jpg'],
      ['Worship \u2014 sanctuary',  'clay',  'Worship',   'site/img/sanctuary-worship-portrait.jpg'],
    ],
    footer: {
      addr:     'Address',
      contact:  'Contact',
      sermons:  'Sermons',
      links:    'Links',
      copy:     '\u00a9 2026 Gerizim Hope Presbyterian Church',
    },
    misc: {
      sundayLabel:  'Sunday',
      sundayTime:   '11:00 AM',
      viewAll:      'View all',
      forFirstTime: 'For first-time visitors',
      bigCta:       'Come, worship.',
      vol:          'VOL. 20 — EST. 2006',
    },
  },
};

// Tonal photo placeholder, OR a real image if `src` is provided.
function Photo({ label, ratio = '4 / 3', tone = 'dusk', tag = 'photo', src, children }) {
  if (src) {
    return (
      <div className="photo photo-real" style={{ aspectRatio: ratio, position: 'relative', overflow: 'hidden' }}>
        <img src={src} alt={label || ''} loading="lazy" style={{
          position: 'absolute', inset: 0, width: '100%', height: '100%',
          objectFit: 'cover', display: 'block',
        }} />
        {children}
      </div>
    );
  }
  const palettes = {
    dusk:   ['#a89aa8', '#7a6a82', '#3e3146', '#e6dee8'],
    forest: ['#8da78a', '#5d7a5d', '#324633', '#dde6d6'],
    ember:  ['#d68a5a', '#a25a30', '#5a2a14', '#f3dbc6'],
    clay:   ['#c9a98a', '#a47855', '#6e4a2a', '#f1e4d3'],
    bone:   ['#d8cfc1', '#aea293', '#5b4f42', '#efe7d8'],
    blue:   ['#9aaab8', '#5d7180', '#2a3a48', '#dee6ee'],
    mono:   ['#bcb6ac', '#7d7468', '#2a251f', '#e3ddd1'],
  };
  const c = palettes[tone] || palettes.dusk;
  return (
    <div className="photo" style={{
      aspectRatio: ratio,
      background: `linear-gradient(135deg, ${c[0]} 0%, ${c[1]} 60%, ${c[2]} 100%)`,
      position: 'relative', overflow: 'hidden',
    }}>
      <div style={{
        position: 'absolute', inset: 0,
        background: `repeating-linear-gradient(135deg, transparent 0 14px, rgba(255,255,255,0.04) 14px 15px)`,
      }} />
      <div className="photo-tag" style={{
        position: 'absolute', top: 14, right: 16,
        fontFamily: 'var(--mono)', fontSize: 10, letterSpacing: 1.5, color: c[3], opacity: 0.85, textTransform: 'uppercase',
      }}>{tag}</div>
      <div className="photo-label" style={{
        position: 'absolute', left: 18, bottom: 18,
        padding: '6px 10px',
        fontFamily: 'var(--mono)', fontSize: 11, letterSpacing: 1, color: c[3],
        background: 'rgba(0,0,0,0.18)', backdropFilter: 'blur(2px)',
      }}>{label}</div>
      {children}
    </div>
  );
}

// Reveal helper — fades + lifts on enter using IntersectionObserver.
// Skips animation entirely when prefers-reduced-motion is set.
function Reveal({ children, delay = 0, as = 'div', style = {}, className = '' }) {
  const ref = React.useRef(null);
  const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  const [seen, setSeen] = React.useState(reducedMotion);
  React.useEffect(() => {
    if (reducedMotion || !ref.current) return;
    const el = ref.current;
    const io = new IntersectionObserver(
      (entries) => entries.forEach(e => e.isIntersecting && (setSeen(true), io.disconnect())),
      { threshold: 0.12, rootMargin: '0px 0px -8% 0px' },
    );
    io.observe(el);
    return () => io.disconnect();
  }, [reducedMotion]);
  const Tag = as;
  return (
    <Tag ref={ref} className={className} style={{
      opacity: seen ? 1 : 0,
      transform: seen ? 'translateY(0)' : 'translateY(18px)',
      transition: reducedMotion
        ? 'none'
        : `opacity 700ms cubic-bezier(.22,.6,.36,1) ${delay}ms, transform 700ms cubic-bezier(.22,.6,.36,1) ${delay}ms`,
      ...style,
    }}>{children}</Tag>
  );
}

Object.assign(window, { CONTENT, Photo, Reveal });
