/* global React, ReactDOM */

const HIBISCUS_SVG = (color = '#d72638', center = '#f4b942') => `
<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
  <g>
    <ellipse cx="32" cy="14" rx="11" ry="14" fill="${color}" />
    <ellipse cx="48" cy="22" rx="11" ry="14" fill="${color}" transform="rotate(60 48 22)" />
    <ellipse cx="48" cy="42" rx="11" ry="14" fill="${color}" transform="rotate(120 48 42)" />
    <ellipse cx="32" cy="50" rx="11" ry="14" fill="${color}" transform="rotate(180 32 50)" />
    <ellipse cx="16" cy="42" rx="11" ry="14" fill="${color}" transform="rotate(240 16 42)" />
    <ellipse cx="16" cy="22" rx="11" ry="14" fill="${color}" transform="rotate(300 16 22)" />
    <circle cx="32" cy="32" r="6" fill="${center}" />
    <circle cx="32" cy="32" r="2" fill="#7a3a08" />
  </g>
</svg>`;

function Hib({ size = 30, rot = 0, top, left, right, bottom, zIndex }) {
  const style = { position: 'absolute', width: size, height: size, transform: `rotate(${rot}deg)`, pointerEvents: 'none' };
  if (top    !== undefined) style.top    = top;
  if (left   !== undefined) style.left   = left;
  if (right  !== undefined) style.right  = right;
  if (bottom !== undefined) style.bottom = bottom;
  if (zIndex !== undefined) style.zIndex = zIndex;
  return <span aria-hidden="true" style={style} dangerouslySetInnerHTML={{ __html: HIBISCUS_SVG('#d72638', '#f4b942') }} />;
}

function useReveal() {
  React.useEffect(() => {
    const els = document.querySelectorAll('.reveal');
    const io = new IntersectionObserver(entries => {
      entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } });
    }, { threshold: 0.07 });
    els.forEach(el => io.observe(el));
    return () => io.disconnect();
  }, []);
}

const SNS_LINKS = [
  { type: 'instagram', href: 'https://www.instagram.com/okinawanoobaa' },
  { type: 'threads',   href: 'https://www.threads.com/@okinawanoobaa' },
  { type: 'youtube',   href: 'https://www.youtube.com/@okinawanoobaa' },
  { type: 'tiktok',    href: 'https://www.tiktok.com/@okinawanoobaaa' },
  { type: 'facebook',  href: 'https://www.facebook.com/@okinawanoobaa' },
];

function SocialIcon({ type, size = 20 }) {
  if (type === 'instagram') return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="currentColor">
      <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/>
    </svg>
  );
  if (type === 'threads') return (
    <svg width={size} height={size} viewBox="0 0 192 192" fill="currentColor">
      <path d="M141.537 88.9883C140.71 88.5919 139.87 88.2104 139.019 87.8451C137.537 60.5382 122.616 44.905 97.5619 44.745C97.4484 44.7443 97.3355 44.7443 97.222 44.7443C82.2364 44.7443 69.7731 51.1409 62.102 62.7807L75.881 72.2328C81.6116 63.5383 90.6052 61.6848 97.2286 61.6848C97.3051 61.6848 97.3819 61.6848 97.4576 61.6855C105.707 61.7381 111.932 64.1366 115.961 68.814C118.893 72.2193 120.854 76.925 121.825 82.8638C114.511 81.6207 106.601 81.2385 98.145 81.7233C74.3247 83.0954 59.0111 96.9879 60.0396 116.292C60.5615 126.084 65.4397 134.508 73.775 140.011C80.8224 144.663 89.899 146.938 99.3323 146.423C111.79 145.74 121.563 140.987 128.381 132.296C133.559 125.696 136.834 117.143 138.28 106.366C144.217 109.949 148.617 114.664 151.047 120.332C155.179 129.967 155.42 145.8 142.501 158.708C131.182 170.016 117.576 174.908 97.0135 175.059C74.2042 174.89 56.9538 167.575 45.7381 153.317C35.2355 139.966 29.8077 120.682 29.6052 96C29.8077 71.3178 35.2355 52.0336 45.7381 38.6827C56.9538 24.4249 74.2039 17.11 97.0132 16.9405C119.988 17.1113 137.539 24.4614 149.184 38.788C154.894 45.8136 159.199 54.6488 162.037 64.9503L178.184 60.6422C174.744 47.9622 169.331 37.0357 161.965 27.974C147.036 9.60668 125.202 0.195148 97.0695 0H96.9569C68.8816 0.19447 47.2921 9.6418 32.7883 28.0793C19.8819 44.4864 13.2244 67.3157 13.0007 95.9325L13 96L13.0007 96.0675C13.2244 124.684 19.8819 147.514 32.7883 163.921C47.2921 182.358 68.8816 191.806 96.9569 192H97.0695C122.03 191.827 139.624 185.292 154.118 170.811C173.081 151.866 172.51 128.119 166.26 113.541C161.776 103.087 153.227 94.5962 141.537 88.9883ZM98.4405 129.507C88.0005 130.095 77.1544 125.409 76.6196 115.372C76.2232 107.93 81.9158 99.626 99.0812 98.6368C101.047 98.5234 102.976 98.468 104.871 98.468C111.106 98.468 116.939 99.0737 122.242 100.233C120.264 124.935 108.662 128.946 98.4405 129.507Z"/>
    </svg>
  );
  if (type === 'youtube') return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="currentColor">
      <path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/>
    </svg>
  );
  if (type === 'tiktok') return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="currentColor">
      <path d="M16.6 5.82s.51.5 0 0A4.278 4.278 0 0 1 15.54 3h-3.09v12.4a2.592 2.592 0 0 1-2.59 2.5c-1.42 0-2.6-1.16-2.6-2.6 0-1.72 1.66-3.01 3.37-2.48V9.66c-3.45-.46-6.47 2.22-6.47 5.64 0 3.33 2.76 5.7 5.69 5.7 3.14 0 5.69-2.55 5.69-5.7V9.01a7.35 7.35 0 0 0 4.3 1.38V7.3s-1.88.09-3.24-1.48z"/>
    </svg>
  );
  if (type === 'facebook') return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="currentColor">
      <path d="M22 12.06C22 6.505 17.523 2 12 2S2 6.505 2 12.06c0 5.022 3.657 9.184 8.438 9.94v-7.03H7.898v-2.91h2.54V9.845c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562v1.877h2.773l-.443 2.91h-2.33V22c4.78-.756 8.437-4.918 8.437-9.94z"/>
    </svg>
  );
  return null;
}

const PRODUCE_VIDEOS = [
  { id: '1190671449', title: 'やっけーしーじゃーのあちこーこーアイス', sub: '' },
  { id: '1190675048', title: 'オフィシャルフレグランス「加齢の香り」',   sub: '' },
  { id: '1190671629', title: 'エナジードリンク「ちばりよー」',           sub: '' },
  { id: '1190671754', title: 'ウエディングドレスメーカー「にーびち」',   sub: '' },
  { id: '1190671640', title: 'スポーツウェア「かめぇかめぇ」',           sub: '' },
];

const PROFILE_FACTS = [
  { text: '生涯ニンジンしりしりー本数3万本突破（自称世界記録とのこと）' },
  { text: 'しりしりー距離、那覇から東京間を樹立（自称世界記録2連覇達成とのこと）', nowrap: true },
  { text: '元F1レーサー' },
  { text: '元グリンベレー大尉' },
  { text: 'ハーリー船頭バトル初代王者' },
  { text: 'サッカー元日本代表' },
  { text: '書道大城流 最高位師範' },
  { text: 'ハリウッド映画監督' },
  { text: '最高齢でAKB48の練習生合格（当時還暦越え）' },
  { text: '1本の沖縄そばを伸ばして沖縄と台湾をつないだ世界記録（本人うる覚えだが1600年代に樹立したらしい）' },
  { text: 'サーターアンダギーの直径で世界記録樹立（月の直径とほぼ同じ。本人うる覚え）' },
];

const POLAROIDS = [
  { src: 'assets/ph-tsuru-orion.png',   cap: 'オリオンは友達さぁ',   rot: -3 },
  { src: 'assets/ph-f1.png',             cap: 'F1は楽しかったさぁ',   rot: 2.5 },
  { src: 'assets/ph-greenberet.png',     cap: 'グリンベレーは誇りさぁ', rot: -1.5 },
];

const CONTENTS = [
  { id: 'jcKnYn_MTBs', title: '', sub: '' },
  { id: 'UsmFYPx1w7k', title: '', sub: '' },
  { id: '8SJYB92qaVQ', title: '', sub: '' },
  { id: 'LgJ0lBHfESo', title: '', sub: '' },
  { id: 'JfIPNqrGLKI', title: '', sub: '' },
];

const PROFILE_YOUTUBE = [
  { id: '1190671904', title: 'F1レーサーだった過去',          sub: '' },
  { id: '1190671681', title: 'グリーンベレー大尉だったあの頃', sub: '' },
  { id: '1190671629', title: 'キレたら変身する癖',            sub: '' },
  { id: '1190671483', title: 'AKB48を目指した日々',           sub: '' },
  { id: '1190671698', title: '人参しりしり世界一（自称）',     sub: '' },
];

const GOODS = [
  { src: 'assets/ph-shisiri.png',       name: 'てーげー出汁',   desc: '万能すぎる出汁。' },
  { src: 'assets/ph-orion.png',          name: '加齢の香り',     desc: 'おばぁの記憶の香り。' },
  { src: 'assets/ph-cooking-class.png', name: 'OBARGER',        desc: 'おばぁバーガー。' },
  { src: 'assets/ph-tsuru-cooking.png', name: 'ツルタオル',     desc: '泣くときに使ってね。' },
  { src: 'assets/ph-tsuru-orion.png',   name: 'ツルステッカー', desc: 'いろんなツルを集めてね。' },
];

const INTERVIEWS = [
  { q: 'なぜそんなに元気？', a: 'オリオン飲んでるからさぁ', img: 'assets/ph-tsuru-orion.png' },
  { q: '料理のコツは？',     a: '食べれば分かる',           img: 'assets/ph-tsuru-cooking.png' },
  { q: '長生きの秘訣は？',   a: '笑って、食べて、踊る！',   img: 'assets/ph-tsuru-thumbsup.png' },
];

const NAV_LINKS = [
  { label: 'ホーム',       href: '#sec-home' },
  { label: '経歴',         href: '#sec-profile' },
  { label: '映像制作',     href: '#sec-services' },
  { label: 'アプリ開発',   href: '#sec-apps' },
  { label: 'AI研修',       href: '#sec-terakoya' },
  { label: 'プロデュース', href: '#sec-produce' },
  { label: 'ファミリー',   href: '#sec-family' },
  { label: '共同売店',     href: '#sec-goods' },
  { label: 'お問い合わせ', href: '#sec-contact' },
];

// ── 映像制作サービス（受注3商品） ──
// カード内は プラン名→概要→価格→対象→特徴→参考動画 の順で統一。
// video は Vimeo ID が決まり次第セット（未設定の間はプレースホルダー表示）。
const SERVICES = [
  {
    key: 'ツルバズ（PR動画）',
    badge: 'ツルバズ',
    badgeColor: '#1d7f9e',
    accent: '#c8293a',
    catch: '広告っぽいから見られない。\nだから、ツルバズ。',
    desc: 'PR感のないPR動画。大城ツルが面白おかしくインパクトのある映像で商品・店舗、サービスを宣伝します。',
    plans: [
      { name: '商品PR（30秒）', old: '¥39,800', price: '¥29,800', note: '' },
      { name: '店舗・サービスPR（60秒）', old: '¥79,800', price: '¥59,800', note: '' },
    ],
    target: '対象：商品・食品・グッズ／店舗・サービス全般のPRをしたい事業者',
    fitTitle: 'こんな商品・店舗におすすめ',
    fits: [
      '広告っぽさを出さずに商品を知ってほしい',
      'SNSでシェアされるコンテンツが欲しい',
      '低予算で話題性のある動画PRをしたい',
    ],
    video: '1190671656',
  },
  {
    key: 'WonderPark AI（会社・店舗紹介）',
    badge: 'WonderPark AI',
    badgeColor: '#e8862e',
    accent: '#e8862e',
    catch: '会社の紹介や会社の事業内容の紹介を、\n映画体験に。',
    desc: '「会社紹介を冒険に変える」。大城ツルと巡る、世界にひとつだけのテーマパーク。企業の業務内容をテーマパーク化し、社長・オーナー・広報担当をキャラクター化。約2分の映画体験をSNS広告としても展開可能な形で納品。',
    plans: [
      { name: '会社紹介プラン（約2分）', old: '¥198,000', price: '¥148,000', note: '' },
    ],
    target: '対象：面白い企業PR動画として採用につなげたい企業／親しみのある企業として認知されたい企業',
    fitTitle: 'こんな会社・店舗におすすめ',
    fits: [
      '採用動画をもっとエンタメにしたい',
      '会社紹介・店舗紹介をSNSで拡散させたい',
      '「唯一無二の世界観」でブランディングしたい',
    ],
    video: '1206918298',
  },
  {
    key: 'my story（人生アニメIP）',
    badge: 'my story',
    badgeColor: '#2a1d10',
    accent: '#2a1d10',
    catch: 'あなたの人生は、\n文字じゃ伝わらない。',
    desc: 'あなたの過去から未来にかけてのストーリーをアニメにして分かりやすく伝えることで、あなたのファンを増やし、共に進む仲間を作る。',
    plans: [
      { name: 'エントリー',   price: '¥98,000',  note: '税込', includes: '3Dキャラクター＋60秒動画' },
      { name: 'スタンダード', price: '¥198,000', note: '税込', includes: '3Dキャラクター＋90秒動画＋ブランドアセット（キャラクター設定シート・SNSアイコン／ヘッダー画像）' },
      { name: 'プレミアム',   price: '¥298,000', note: '税込', includes: '3Dキャラクター＋120秒動画＋ブランドアセット＋表情差分セット（3種）・名刺デザイン用素材' },
    ],
    target: '対象：プロアスリート・パフォーマー／起業家・経営者／インフルエンサー',
    fitTitle: '5つのポイント',
    fits: [
      '感情を揺さぶる「ヒーローズ・ジャーニー」構成',
      '顔がブレない「キャラクターの一貫性」',
      'ファンが熱狂する「応援の余白」',
      '一生使える「ブランドアセット（分身）」納品',
      '言語の壁を越える「ノンバーバル（世界仕様）」',
    ],
    video: '1206918409',
  },
];

// ── ツルアプリ工房（アプリ受託開発） ──
const APPS = [
  { name: '習字道場',     video: '1208985374', url: 'https://shuuji.vercel.app', desc: '書き順をなぞって楽しく学べる子ども向け習字アプリ。' },
  { name: '書類の達人',   video: '1208737453', url: 'https://invoice-one-self.vercel.app/', desc: '請求書などの書類をPDFで作れる書類作成アプリ。' },
  { name: '沖縄AI村 寺子屋', video: '1208761622', url: 'https://okinawa-ai-school.vercel.app/', desc: 'AIを一から学べる、初心者向けの無料学習サイト。' },
  { name: '大城ツルの地球たんけん', video: null, url: 'https://tsuru-adventure-world.vercel.app/', desc: '47都道府県と世界196カ国の「かたち」で遊べる3D地理教材。' },
];

const SERVICE_OPTIONS = [...SERVICES.map(s => s.key), 'ツルアプリ工房（アプリ開発）', 'ツルのAI寺子屋（AI研修）', 'ツルプロデュース（商品共同開発）', 'その他・全般のご相談'];

const FORMSPREE_URL = 'https://formspree.io/f/mvzlwbkn';

function ContactForm({ service, onServiceChange }) {
  const [form, setForm] = React.useState({ name: '', email: '', subject: '', body: '' });
  const [status, setStatus] = React.useState('idle'); // idle | sending | success | error

  const handleChange = e => setForm({ ...form, [e.target.name]: e.target.value });

  const handleSubmit = async e => {
    e.preventDefault();
    setStatus('sending');
    try {
      const res = await fetch(FORMSPREE_URL, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
        body: JSON.stringify({ ...form, service }),
      });
      if (res.ok) {
        setStatus('success');
        setForm({ name: '', email: '', subject: '', body: '' });
      } else {
        setStatus('error');
      }
    } catch {
      setStatus('error');
    }
  };

  if (status === 'success') return (
    <div style={{ textAlign: 'center', padding: '40px 0' }}>
      <div style={{ fontSize: '2.5rem', marginBottom: 12 }}>🌺</div>
      <div className="f-disp" style={{ fontSize: '1.4rem', color: 'var(--brown)', marginBottom: 8 }}>送信できたよ！</div>
      <div style={{ color: 'var(--ink-mute)' }}>メッセージを受け取ったさぁ。またね！</div>
    </div>
  );

  return (
    <form className="contact-form reveal" onSubmit={handleSubmit}>
      <div className="contact-row">
        <label className="contact-label">お名前</label>
        <input className="contact-input" type="text" name="name" value={form.name} onChange={handleChange} placeholder="山田 太郎" required />
      </div>
      <div className="contact-row">
        <label className="contact-label">メールアドレス</label>
        <input className="contact-input" type="email" name="email" value={form.email} onChange={handleChange} placeholder="example@mail.com" required />
      </div>
      <div className="contact-row">
        <label className="contact-label">ご希望サービス</label>
        <select className="contact-input" name="service" value={service} onChange={e => onServiceChange(e.target.value)} required>
          <option value="">選択してください</option>
          {SERVICE_OPTIONS.map(opt => <option key={opt} value={opt}>{opt}</option>)}
        </select>
      </div>
      <div className="contact-row">
        <label className="contact-label">件名</label>
        <input className="contact-input" type="text" name="subject" value={form.subject} onChange={handleChange} placeholder="お仕事のご依頼など" required />
      </div>
      <div className="contact-row">
        <label className="contact-label">メッセージ</label>
        <textarea className="contact-textarea" name="body" value={form.body} onChange={handleChange} rows="5" placeholder="お気軽にどうぞ！" required />
      </div>
      <div style={{ textAlign: 'center', marginTop: 24 }}>
        <button type="submit" className="btn-red" style={{ fontSize: '1rem', padding: '14px 48px' }} disabled={status === 'sending'}>
          {status === 'sending' ? '送信中...' : '送信する →'}
        </button>
      </div>
      {status === 'error' && (
        <div style={{ textAlign: 'center', color: 'var(--hibiscus)', marginTop: 12 }}>
          送信に失敗したさぁ。直接 <a href="mailto:info@rp-connection.com" style={{ color: 'var(--hibiscus)' }}>info@rp-connection.com</a> へ連絡してね。
        </div>
      )}
    </form>
  );
}

function ObaaLP() {
  useReveal();
  const [service, setService] = React.useState('');
  const chooseService = key => {
    setService(key);
    const el = document.getElementById('sec-contact');
    if (el) el.scrollIntoView({ behavior: 'smooth' });
  };

  return (
    <div id="obaa-root">

      {/* ── NAV ── */}
      <nav className="obaa-nav">
        <div className="nav-logo">
          <img className="nav-hib" src="assets/logo-nav.png" alt="大城ツル（88）ファミリー ロゴ" />
          <div>
            <div className="nav-logo-name">大城ツル（88）</div>
            <div className="nav-logo-sub">公式サイト</div>
          </div>
        </div>
        <nav className="nav-links">
          {NAV_LINKS.map(l => <a key={l.label} href={l.href}>{l.label}</a>)}
        </nav>
        <div className="nav-socials">
          {SNS_LINKS.map(s => (
            <a key={s.type} href={s.href} className="nav-social-btn" aria-label={s.type} target="_blank" rel="noopener noreferrer">
              <SocialIcon type={s.type} size={18} />
            </a>
          ))}
        </div>
      </nav>

      {/* ── HERO ── */}
      <section id="sec-home" className="obaa-hero">
        {/* 動画を全画面背景に */}
        <video
          className="hero-bg-video"
          autoPlay
          loop
          muted
          playsInline
          aria-hidden="true"
        >
          <source src="assets/hero.mp4" type="video/mp4" />
        </video>
        <div className="hero-overlay" />

        <Hib size={72} rot={-15} top={60}    left={-16} zIndex={2} />
        <Hib size={48} rot={22}  bottom={90} left={18}  zIndex={2} />

        <div className="hero-content">
          <div className="hero-left reveal">
            <div className="hero-desc">沖縄唯一のおばぁAIインフルエンサー</div>
            <div className="hero-catch f-disp">大城ツル <span className="hero-age">(88)</span></div>
          </div>
        </div>

      </section>

      {/* ── プロフィール ── */}
      <section id="sec-profile" className="profile-section">
        <div className="section-header reveal" style={{ justifyContent: 'center', marginBottom: 16 }}>
          <span className="f-disp section-title">ツルの経歴</span>
        </div>
        <p className="reveal" style={{ textAlign: 'center', fontSize: '1.05rem', color: 'var(--ink-soft)', margin: '0 auto 36px', maxWidth: 720, lineHeight: 1.9 }}>
          沖縄唯一のおばぁAIインフルエンサー。<br />
          大城流沖縄料理研究所の初代所長をはじめ数々の経歴を持ち、<br />
          現在は映像制作・アプリ開発・AI研修など、AI時代に新しい価値を生む活動を行っている。
        </p>
        <div className="profile-grid reveal">
          {/* 左：大きな写真 */}
          <div>
            <div className="profile-photo-frame">
              <video autoPlay loop muted playsInline style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }}>
                <source src="assets/ph-tsuru-cooking.mp4" type="video/mp4" />
              </video>
            </div>
          </div>

          {/* 中央：テキスト */}
          <div>
            <div className="profile-en-label">Profile</div>
            <h2 className="profile-heading f-disp">
              初代大城流沖縄料理研究所　<span style={{ whiteSpace: 'nowrap' }}>所長</span>
            </h2>
            <ul className="profile-checklist">
              {PROFILE_FACTS.map((f, i) => (
                <li key={i}>
                  <span className="check-mark">✓</span>
                  <span>{f.text}</span>
                </li>
              ))}
            </ul>
            <p className="profile-note">※すべて本人調べ</p>
          </div>

        </div>

        {/* 下：Vimeoグリッド */}
        <div className="profile-videos reveal">
          {PROFILE_YOUTUBE.map((v, i) => (
            <div key={i} className="yt-wrap">
              <div className="yt-card">
                <iframe
                  src={`https://player.vimeo.com/video/${v.id}?title=0&byline=0&portrait=0&badge=0&autopause=0&player_id=0&app_id=58479`}
                  title={v.title}
                  frameBorder="0"
                  allow="autoplay; fullscreen; picture-in-picture"
                  referrerPolicy="strict-origin-when-cross-origin"
                  sandbox="allow-scripts allow-same-origin allow-presentation allow-popups"
                  allowFullScreen
                />
              </div>
              <div className="content-info">
                <div className="content-title">{v.title}</div>
                <div className="content-sub">{v.sub}</div>
              </div>
            </div>
          ))}
        </div>
      </section>

      {/* ── できること3本柱 ── */}
      <section id="sec-pillars" className="pillars-section">
        <div className="section-header reveal" style={{ justifyContent: 'center' }}>
          <span className="f-disp section-title">ツルにできること</span>
        </div>
        <div className="pillars-grid reveal">
          {[
            { title: '映像制作', desc: 'PR動画・会社紹介・人生アニメIPを制作', href: '#sec-services' },
            { title: 'アプリ開発', desc: '書類作成からゲームまでアプリを制作', href: '#sec-apps' },
            { title: 'AI研修', desc: '企業・団体向けにAIの使い方を講座で提供', href: '#sec-terakoya' },
            { title: '商品プロデュース', desc: 'ツルのブランドで商品を共同開発', href: '#sec-produce' },
          ].map(p => (
            <a key={p.title} href={p.href} className="pillar-card">
              <div className="pillar-title f-disp">{p.title}</div>
              <div className="pillar-desc">{p.desc}</div>
              <div className="pillar-link">詳しく見る →</div>
            </a>
          ))}
        </div>
      </section>

      {/* ── サービス（ツル映像製作所） ── */}
      <section id="sec-services" className="services-section">
        <div className="section-header reveal" style={{ justifyContent: 'center' }}>
          <span className="f-disp section-title">映像製作所「TSURU」</span>
        </div>
        <p className="reveal" style={{ textAlign: 'center', fontSize: '1.05rem', color: 'var(--ink-soft)', margin: '16px auto 0', maxWidth: 720, lineHeight: 1.9 }}>
          最新AIを使った映像制作を、大城ツル（88）がまるごとプロデュース。<br />
          商品PRから会社・店舗紹介、人生のアニメIP化まで。
        </p>
        <div className="reveal" style={{ maxWidth: 760, margin: '32px auto 0' }}>
          <div className="yt-wrap">
            <div className="yt-card">
              <iframe
                src="https://player.vimeo.com/video/1192159985?title=0&byline=0&portrait=0&badge=0&autopause=0&player_id=0&app_id=58479"
                title="ツル映像製作所"
                frameBorder="0"
                allow="autoplay; fullscreen; picture-in-picture"
                referrerPolicy="strict-origin-when-cross-origin"
                sandbox="allow-scripts allow-same-origin allow-presentation allow-popups"
                allowFullScreen
              />
            </div>
          </div>
        </div>
        <div className="services-grid reveal">
          {SERVICES.map(s => (
            <div key={s.key} className="service-card">
              <span className="service-badge" style={{ background: s.badgeColor }}>{s.badge}</span>
              <div className="service-catch">{s.catch}</div>
              <div className="service-desc">{s.desc}</div>
              {s.plans.map((p, i) => (
                <div key={i} className="service-plan">
                  <div className="service-plan-name">{p.name}</div>
                  <div>
                    {p.old && <span className="service-price-old">{p.old}</span>}
                    <span className="service-price" style={{ color: s.accent }}>{p.price}</span>
                    {p.note && <span className="service-price-note">{p.note}</span>}
                  </div>
                  {p.includes && <div className="service-plan-includes">{p.includes}</div>}
                </div>
              ))}
              <div className="service-target">{s.target}</div>
              <div className="service-fit-title">{s.fitTitle}</div>
              <ul className="service-fit-list">
                {s.fits.map((f, i) => <li key={i}>{f}</li>)}
              </ul>
              {s.footnote && <div className="service-footnote">{s.footnote}</div>}
              <div className="service-video">
                {s.video ? (
                  <div className="yt-wrap">
                    <div className="yt-card">
                      <iframe
                        src={`https://player.vimeo.com/video/${s.video}?title=0&byline=0&portrait=0&badge=0&autopause=0&player_id=0&app_id=58479`}
                        title={`${s.badge} 参考動画`}
                        frameBorder="0"
                        allow="autoplay; fullscreen; picture-in-picture"
                        referrerPolicy="strict-origin-when-cross-origin"
                        sandbox="allow-scripts allow-same-origin allow-presentation allow-popups"
                        allowFullScreen
                      />
                    </div>
                  </div>
                ) : (
                  <div className="service-video-placeholder">参考動画：近日公開</div>
                )}
              </div>
              <div className="service-cta">
                <button type="button" className="btn-red" onClick={() => chooseService(s.key)}>
                  このプランを相談する →
                </button>
              </div>
            </div>
          ))}
        </div>
      </section>

      {/* ── ツルアプリ工房 ── */}
      <section id="sec-apps" className="services-section apps-section">
        <div className="section-header reveal" style={{ justifyContent: 'center', flexDirection: 'column', alignItems: 'center', textAlign: 'center', gap: 8 }}>
          <span className="f-disp section-title">ツルアプリ工房</span>
        </div>
        <p className="reveal" style={{ textAlign: 'center', fontSize: '1.05rem', color: 'var(--ink-soft)', margin: '16px auto 0', maxWidth: 720, lineHeight: 1.9 }}>
          業務に必要なツール、アイディアをツル工房がアプリに仕立てます。<br />
          ※このアプリは無料で使えるから遊んでさぁ
        </p>
        <div className="apps-grid reveal">
          {APPS.map(app => (
            <div key={app.name} className="app-card">
              {app.video ? (
                <div className="yt-wrap">
                  <div className="yt-card">
                    <iframe
                      src={`https://player.vimeo.com/video/${app.video}?title=0&byline=0&portrait=0&badge=0&autopause=0&player_id=0&app_id=58479`}
                      title={`${app.name} 紹介動画`}
                      frameBorder="0"
                      allow="autoplay; fullscreen; picture-in-picture"
                      referrerPolicy="strict-origin-when-cross-origin"
                      sandbox="allow-scripts allow-same-origin allow-presentation allow-popups"
                      allowFullScreen
                    />
                  </div>
                </div>
              ) : (
                <div className="service-video-placeholder" style={{ width: '100%', alignSelf: 'stretch', display: 'grid', placeItems: 'center', aspectRatio: '16/9' }}>
                  紹介動画：近日公開
                </div>
              )}
              <div className="app-card-name f-disp">{app.name}</div>
              <div className="app-card-desc">{app.desc}</div>
              <a href={app.url} target="_blank" rel="noopener noreferrer" className="btn-red app-card-link">
                アプリを見る →
              </a>
            </div>
          ))}
        </div>
        <div className="reveal" style={{ textAlign: 'center', marginTop: 32 }}>
          <button type="button" className="btn-red" onClick={() => chooseService('ツルアプリ工房（アプリ開発）')}>
            アプリ開発を相談する →
          </button>
        </div>
      </section>

      {/* ── ツルのAI寺子屋（AI研修） ── */}
      <section id="sec-terakoya" className="services-section terakoya-section">
        <div className="section-header reveal" style={{ justifyContent: 'center', flexDirection: 'column', alignItems: 'center', textAlign: 'center', gap: 8 }}>
          <span className="f-disp section-title">ツルのAI寺子屋</span>
          <span style={{ fontSize: '0.95rem', color: 'var(--ink-mute)', fontWeight: 700 }}>企業・団体向けAI研修</span>
        </div>
        <p className="reveal" style={{ textAlign: 'center', fontSize: '1.05rem', color: 'var(--ink-soft)', margin: '16px auto 0', maxWidth: 720, lineHeight: 1.9 }}>
          AIの基礎から「Claude Code」の使い方、<br />
          画像生成、ホームページ、アプリ制作など学べるAI研修。<br />
          むずかしい話も、おばぁと一緒なら「なんくるないさー」。
        </p>
        <div className="reveal" style={{ maxWidth: 640, margin: '32px auto 0', display: 'flex', flexDirection: 'column', gap: 14 }}>
          <div className="service-target">
            対象：AIを業務に取り入れたい企業／職員研修をしたい団体
          </div>
          <div className="service-plan" style={{ textAlign: 'center' }}>
            <div className="service-plan-name">料金プラン</div>
            <div className="service-price" style={{ color: 'var(--hibiscus)', fontSize: 20 }}>準備中</div>
            <div className="service-plan-target">内容・料金は現在準備中です。まずはお気軽にご相談ください。</div>
          </div>
          <div className="service-footnote" style={{ textAlign: 'center' }}>
            教材例：<a href="https://okinawa-ai-school.vercel.app/" target="_blank" rel="noopener noreferrer" style={{ color: 'var(--hibiscus)' }}>沖縄AI村 寺子屋（無料学習サイト）</a>
          </div>
          <div style={{ textAlign: 'center', marginTop: 8 }}>
            <button type="button" className="btn-red" onClick={() => chooseService('ツルのAI寺子屋（AI研修）')}>
              AI研修を相談する →
            </button>
          </div>
        </div>
      </section>

      {/* ── ツルプロデュース ── */}
      <section id="sec-produce" className="philosophy-section">
        <div className="section-header reveal" style={{ justifyContent: 'center' }}>
          <span className="f-disp section-title">ツルプロデュース</span>
        </div>
        <p className="reveal" style={{ textAlign: 'center', fontSize: '1.05rem', color: 'var(--ink-soft)', margin: '16px auto 32px', maxWidth: 720, lineHeight: 1.9 }}>
          ツルと一緒に商品の共同開発を行います。<br />
          ツルのブランドと世界観で、あなたの商品に「物語」を乗せます。
        </p>

        {/* プロフィール風イントロ */}
        <div className="profile-grid reveal" style={{ marginBottom: 48 }}>
          <div>
            <div className="profile-photo-frame">
              <video autoPlay loop muted playsInline style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }}>
                <source src="assets/producer.mp4" type="video/mp4" />
              </video>
            </div>
          </div>
          <div>
            <div className="profile-en-label">プロデュース商品</div>
            <ul className="profile-checklist">
              {[
                'ウエディングドレス「にーびち」',
                'やっけーしーじゃーアイス「あちこーこー」',
                'エナジードリンク「ちばりよー」',
                'オフィシャルフレグランス「加齢の香り」',
                'スポーツウェア「かめぇかめぇ」',
              ].map((item, i) => (
                <li key={i}>
                  <span className="check-mark">✓</span>
                  <span>{item}</span>
                </li>
              ))}
            </ul>
          </div>
        </div>

        <div className="produce-grid reveal">
          {PRODUCE_VIDEOS.map((v, i) => (
            <div key={i} className="yt-wrap">
              <div className="yt-card" style={v.aspect ? { paddingTop: v.aspect } : undefined}>
                <iframe
                  src={`https://player.vimeo.com/video/${v.id}?title=0&byline=0&portrait=0&badge=0&autopause=0&player_id=0&app_id=58479`}
                  title={v.title}
                  frameBorder="0"
                  allow="autoplay; fullscreen; picture-in-picture"
                  referrerPolicy="strict-origin-when-cross-origin"
                  sandbox="allow-scripts allow-same-origin allow-presentation allow-popups"
                  allowFullScreen
                />
              </div>
              <div className="content-info">
                <div className="content-title">{v.title}</div>
                <div className="content-sub">{v.sub}</div>
              </div>
            </div>
          ))}
        </div>
        <div className="reveal" style={{ textAlign: 'center', marginTop: 36 }}>
          <p style={{ fontSize: '0.95rem', color: 'var(--ink-soft)', marginBottom: 14, lineHeight: 1.8 }}>
            ツルのブランドと一緒に、あなたの商品を共同開発しませんか？
          </p>
          <button type="button" className="btn-red" onClick={() => chooseService('ツルプロデュース（商品共同開発）')}>
            商品開発を相談する →
          </button>
        </div>
      </section>

      {/* ── 今後の展開（ロードマップ） ── */}
      <section id="sec-roadmap" className="roadmap-section">
        <div className="section-header reveal" style={{ justifyContent: 'center', flexDirection: 'column', alignItems: 'center', textAlign: 'center', gap: 8 }}>
          <span className="f-disp section-title">今後の展開</span>
          <span style={{ fontSize: '0.95rem', color: 'var(--ink-mute)', fontWeight: 700 }}>ツルの向かう先</span>
        </div>
        <div className="reveal roadmap-list">
          {[
            { state: '稼働中', tone: 'now',  title: 'おばぁAIインフルエンサー', desc: 'SNS・キャラクターIPとして活動中' },
            { state: '受付中', tone: 'now',  title: '映像制作・アプリ開発・AI研修・商品プロデュース', desc: '4つの事業として受注受付中' },
            { state: '構想中', tone: 'next', title: '大城ツルの実店舗ブランド', desc: '「大城ツルの沖縄そば屋」など、ツルの世界観を体験できる実店舗を計画中' },
          ].map((r, i) => (
            <div key={i} className="roadmap-row">
              <span className={`roadmap-badge roadmap-badge-${r.tone}`}>{r.state}</span>
              <div>
                <div className="roadmap-title">{r.title}</div>
                <div className="roadmap-desc">{r.desc}</div>
              </div>
            </div>
          ))}
        </div>
      </section>

      {/* ── 大城ファミリー ── */}
      <section id="sec-family" className="contents-section">
        <div className="section-header reveal" style={{ justifyContent: 'center' }}>
          <span className="f-disp section-title">大城ツルファミリー</span>
          <span className="section-en">Family</span>
        </div>
        <div className="family-video-wrap reveal">
          <video autoPlay loop muted playsInline style={{ width: '100%', borderRadius: 16, display: 'block' }}>
            <source src="assets/family.mp4" type="video/mp4" />
          </video>
        </div>

        <div style={{ display: 'flex', flexDirection: 'column', gap: 48, maxWidth: 1160, margin: '48px auto 0' }}>

          {/* 左：大城ヒモ吉 */}
          <div className="profile-grid family-grid reveal" style={{ gap: 20 }}>
            <div>
              <div className="profile-photo-frame" style={{ height: 270 }}>
                <video autoPlay loop muted playsInline style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }}>
                  <source src="assets/himokichi.mp4" type="video/mp4" />
                </video>
              </div>
            </div>
            <div>
              <div className="profile-en-label">Family</div>
              <h3 className="f-disp" style={{ fontSize: '1.8rem', marginBottom: 12, color: 'var(--brown)' }}>大城ヒモ吉（78）</h3>
              <ul className="profile-checklist" style={{ fontSize: '0.85em' }}>
                {[
                  { label: '肩　書', value: 'おばぁに絶対服従するおじい' },
                  { label: '生息地', value: '沖縄の某共同売店のベンチ' },
                  { label: '口　癖', value: 'おばぁが正しい' },
                  { label: '特　技', value: '泡盛のコップを見るだけで水と泡盛の比率が分かる' },
                  { label: '夢', value: 'おばぁと結婚すること（現在は内縁関係。いわゆるヒモ）' },
                ].map((row, i) => (
                  <li key={i} style={{ display: 'flex', gap: 8, alignItems: 'flex-start' }}>
                    <span style={{ color: 'var(--red)', minWidth: 72, fontWeight: 700, whiteSpace: 'nowrap' }}>{row.label}：</span>
                    <span>{row.value}</span>
                  </li>
                ))}
              </ul>
            </div>
          </div>

          {/* 右：大城ぽち */}
          <div className="profile-grid family-grid reveal" style={{ gap: 20 }}>
            <div>
              <div className="profile-photo-frame" style={{ height: 270 }}>
                <video autoPlay loop muted playsInline style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }}>
                  <source src="assets/pochi.mp4" type="video/mp4" />
                </video>
              </div>
            </div>
            <div>
              <div className="profile-en-label">Family</div>
              <h3 className="f-disp" style={{ fontSize: '1.8rem', marginBottom: 12, color: 'var(--brown)' }}>大城ぽち（38）</h3>
              <ul className="profile-checklist" style={{ fontSize: '0.85em' }}>
                {[
                  { label: '性　格', value: '甘えん坊で人懐っこい。よくスリスリして甘えてくる。寂しがり屋で、そばにいると安心する' },
                  { label: '鳴き声', value: 'かめぇかめぇ' },
                  { label: '性　能', value: '郵便物を自動で受け取り、持ち主に届けてくれる' },
                  { label: '注意点', value: '生ものの場合、そのまま食べる癖がある。食べられないよう注意しよう！' },
                ].map((row, i) => (
                  <li key={i} style={{ display: 'flex', gap: 8, alignItems: 'flex-start' }}>
                    <span style={{ color: 'var(--red)', minWidth: 72, fontWeight: 700, whiteSpace: 'nowrap' }}>{row.label}：</span>
                    <span>{row.value}</span>
                  </li>
                ))}
              </ul>
            </div>
          </div>

          {/* ── 比嘉家（お隣のライバル一家） ── */}
          <div className="reveal" style={{ textAlign: 'center', marginTop: 24 }}>
            <div className="f-disp" style={{ fontSize: '1.6rem', color: 'var(--brown)' }}>比嘉家</div>
            <div style={{ fontSize: '0.85rem', color: 'var(--ink-mute)', marginTop: 4 }}>
              お隣のライバル一家（ライバル視しているのは向こうだけ）
            </div>
          </div>

          {/* 比嘉カメ */}
          <div className="profile-grid family-grid reveal" style={{ gap: 20 }}>
            <div>
              <div className="profile-photo-frame" style={{ height: 270 }}>
                <video autoPlay loop muted playsInline style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }}>
                  <source src="assets/higakame.mp4" type="video/mp4" />
                </video>
              </div>
            </div>
            <div>
              <div className="profile-en-label">Family</div>
              <h3 className="f-disp" style={{ fontSize: '1.8rem', marginBottom: 12, color: 'var(--brown)' }}>比嘉カメ（77）</h3>
              <ul className="profile-checklist" style={{ fontSize: '0.85em' }}>
                {[
                  { label: '肩　書', value: 'ナベラー農家／嫉妬の守り人' },
                  { label: '関　係', value: 'ヒモ吉の幼なじみ。ヒモ吉がツルに惹かれたため、勝手にツルをライバル視している（ツル側は認識していない）' },
                  { label: '口　癖', value: '「ツルより長生きするのはカメさ！」' },
                  { label: '特　技', value: '亀の甲羅を見ただけでその亀の年齢を当てられる' },
                  { label: '変　身', value: '嫉妬が爆発すると亀甲羅パワードスーツ「KAME SHELL ARMOR」に変身。動きは亀なみ、防御は最強' },
                ].map((row, i) => (
                  <li key={i} style={{ display: 'flex', gap: 8, alignItems: 'flex-start' }}>
                    <span style={{ color: 'var(--red)', minWidth: 72, fontWeight: 700, whiteSpace: 'nowrap' }}>{row.label}：</span>
                    <span>{row.value}</span>
                  </li>
                ))}
              </ul>
            </div>
          </div>

          {/* 比嘉がんじゅ */}
          <div className="profile-grid family-grid reveal" style={{ gap: 20 }}>
            <div>
              <div className="profile-photo-frame" style={{ height: 270 }}>
                <video autoPlay loop muted playsInline style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }}>
                  <source src="assets/higaganju.mp4" type="video/mp4" />
                </video>
              </div>
            </div>
            <div>
              <div className="profile-en-label">Family</div>
              <h3 className="f-disp" style={{ fontSize: '1.8rem', marginBottom: 12, color: 'var(--brown)' }}>比嘉がんじゅ（66）</h3>
              <ul className="profile-checklist" style={{ fontSize: '0.85em' }}>
                {[
                  { label: '職　業', value: 'ナベラー農家／比嘉カメのパートナー' },
                  { label: '性　格', value: '頑固、働き者、昔気質のマッチョ。実は繊細で不安を抱えている' },
                  { label: '口　癖', value: '「がんじゅーが一番さ！」' },
                  { label: '変　身', value: 'カメの口からヒモ吉の名前が出た瞬間、嫉妬と悔しさが爆発して黄金の「GANJUU HOST ARMOR」に変身。「お前もキラキラさせてやる」' },
                ].map((row, i) => (
                  <li key={i} style={{ display: 'flex', gap: 8, alignItems: 'flex-start' }}>
                    <span style={{ color: 'var(--red)', minWidth: 72, fontWeight: 700, whiteSpace: 'nowrap' }}>{row.label}：</span>
                    <span>{row.value}</span>
                  </li>
                ))}
              </ul>
            </div>
          </div>

          {/* 比嘉くいな */}
          <div className="profile-grid family-grid reveal" style={{ gap: 20 }}>
            <div>
              <div className="profile-photo-frame" style={{ height: 270 }}>
                <video autoPlay loop muted playsInline style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }}>
                  <source src="assets/higakuina.mp4" type="video/mp4" />
                </video>
              </div>
            </div>
            <div>
              <div className="profile-en-label">Family</div>
              <h3 className="f-disp" style={{ fontSize: '1.8rem', marginBottom: 12, color: 'var(--brown)' }}>比嘉くいな（11）</h3>
              <ul className="profile-checklist" style={{ fontSize: '0.85em' }}>
                {[
                  { label: '種　族', value: 'ヤンバルクイナ（比嘉がんじゅ＆比嘉カメのペット）' },
                  { label: 'サイズ', value: '身長 約25cm／体重 約400g' },
                  { label: '口　癖', value: '「にぃーびち！」（沖縄方言で結婚式・婚礼のこと）' },
                  { label: '性　格', value: '婚礼に異常な執着を持つお節介焼き。誰かと誰かが少しでも近づくと「にぃーびち！」と叫び出す' },
                  { label: '変　身', value: '誰かの愛情の気配を感じ取ると、寡黙で厳かな「にぃーびち神父」に変身。両思いには祝福を、片思いには稲妻の裁きを下す' },
                ].map((row, i) => (
                  <li key={i} style={{ display: 'flex', gap: 8, alignItems: 'flex-start' }}>
                    <span style={{ color: 'var(--red)', minWidth: 72, fontWeight: 700, whiteSpace: 'nowrap' }}>{row.label}：</span>
                    <span>{row.value}</span>
                  </li>
                ))}
              </ul>
            </div>
          </div>

        </div>
      </section>

      {/* ── グッズ ── */}
      <section id="sec-goods" className="goods-section">
        <div className="section-header reveal" style={{ justifyContent: 'center' }}>
          <span className="f-disp section-title">大城共同売店</span>
        </div>
        <p className="reveal" style={{ textAlign: 'center', fontSize: '1.1rem', color: 'var(--ink-soft)', marginBottom: 32 }}>
          オフィシャルグッズ販売中！大赤字で売店が倒産します。助けてください。
        </p>
        <div className="reveal" style={{ maxWidth: 900, margin: '0 auto' }}>
          <div className="yt-wrap">
            <div className="yt-card">
              <iframe
                src="https://player.vimeo.com/video/1190677041?title=0&byline=0&portrait=0&badge=0&autopause=0&player_id=0&app_id=58479"
                title="大城共同売店"
                frameBorder="0"
                allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share"
                referrerPolicy="strict-origin-when-cross-origin"
                allowFullScreen
              />
            </div>
          </div>
        </div>
        <div className="reveal" style={{ display: 'flex', gap: 16, justifyContent: 'center', marginTop: 32, flexWrap: 'wrap' }}>
          {[
            { href: 'https://suzuri.jp/okinawanoobaa/19977372/t-shirt/m/white?utm_source=others&utm_medium=social&utm_campaign=item_detail_share', img: 'assets/tshirt-back.png',  name: 'てーげー見えてるよ？ スタンダードTシャツ', price: '¥4,851' },
            { href: 'https://suzuri.jp/okinawanoobaa/19977370/t-shirt/m/indigo?utm_source=others&utm_medium=social&utm_campaign=item_detail_share', img: 'assets/tshirt-back2.png', name: 'てーげー見えてるよ？（カラー） スタンダードTシャツ', price: '¥5,588' },
            { href: 'https://store.line.me/stickershop/author/6396397/ja', img: 'assets/line-stamp.png', name: '大城ツル（88）ファミリー LINEスタンプ 全6種', price: '各¥190' },
          ].map((item, i) => (
            <a key={i} href={item.href} target="_blank" rel="noopener noreferrer"
              style={{ textDecoration: 'none', color: 'inherit', display: 'block', width: 180, flexShrink: 0 }}
            >
              <div style={{ background: '#fff', borderRadius: 16, overflow: 'hidden', boxShadow: '0 4px 20px rgba(80,30,0,0.12)', transition: 'transform .2s, box-shadow .2s', cursor: 'pointer' }}
                onMouseEnter={e => { e.currentTarget.style.transform = 'translateY(-4px)'; e.currentTarget.style.boxShadow = '0 10px 32px rgba(80,30,0,0.18)'; }}
                onMouseLeave={e => { e.currentTarget.style.transform = ''; e.currentTarget.style.boxShadow = '0 4px 20px rgba(80,30,0,0.12)'; }}
              >
                <img src={item.img} alt={item.name} style={{ width: '100%', display: 'block', aspectRatio: '1/1', objectFit: 'cover' }} />
                <div style={{ padding: '12px 14px 16px' }}>
                  <div style={{ fontSize: '0.75rem', color: 'var(--ink-mute)', marginBottom: 4 }}>大城共同売店</div>
                  <div style={{ fontSize: '0.85rem', fontWeight: 700, color: 'var(--ink)', marginBottom: 8, lineHeight: 1.4 }}>{item.name}</div>
                  <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
                    <span style={{ fontSize: '1rem', fontWeight: 700, color: 'var(--hibiscus)' }}>{item.price}</span>
                    <span style={{ fontSize: '0.75rem', background: 'var(--hibiscus)', color: '#fff', padding: '3px 10px', borderRadius: 999, fontWeight: 700 }}>購入する</span>
                  </div>
                </div>
              </div>
            </a>
          ))}
        </div>
      </section>

      {/* ── お問い合わせ ── */}
      <section id="sec-contact" className="contact-section">
        <div className="section-header reveal" style={{ justifyContent: 'center', flexDirection: 'column', alignItems: 'center', textAlign: 'center', gap: 8 }}>
          <span className="f-disp section-title">お問い合わせ</span>
          <span style={{ fontSize: '0.95rem', color: 'var(--ink-mute)' }}>お仕事のご依頼・メディア取材・その他のお問い合わせはこちら</span>
        </div>
        <div style={{ maxWidth: 680, margin: '0 auto' }}>
          <ContactForm service={service} onServiceChange={setService} />
          <div style={{ textAlign: 'center', marginTop: 16, color: 'var(--ink-mute)', fontSize: '0.85rem' }}>
            直接メールの場合は <a href="mailto:info@rp-connection.com" style={{ color: 'var(--hibiscus)' }}>info@rp-connection.com</a> まで
          </div>
        </div>
      </section>

      {/* ── FOOTER ── */}
      <footer className="obaa-footer">
        <img src="assets/ph-okinawa-sea.png" alt="" className="footer-bg-img" aria-hidden="true" />
        <div className="footer-overlay" />
        <div className="footer-inner">
          <div>
            <div className="footer-quote f-disp">
              <span style={{ fontSize: '1.4em', display: 'block' }}>どんな料理も、オリオンビールを飲めば、味は分からん。</span>
              <span style={{ fontSize: '0.9em', display: 'block', marginTop: 12, opacity: 0.85, textAlign: 'right' }}>大城流沖縄料理研究所　初代所長 大城ツル（88）</span>
            </div>
          </div>
          <div>
            <div className="footer-follow">Follow Me!</div>
            <div className="footer-socials">
              {SNS_LINKS.map(s => (
                <a key={s.type} href={s.href} className="footer-social-btn" aria-label={s.type} target="_blank" rel="noopener noreferrer">
                  <SocialIcon type={s.type} size={20} />
                </a>
              ))}
            </div>
          </div>
        </div>{/* /footer-inner */}
        <div className="footer-copyright">
          © {new Date().getFullYear()} 株式会社琉球パフォーマーズコネクション All Rights Reserved.
        </div>
      </footer>

    </div>
  );
}

const obaaRoot = ReactDOM.createRoot(document.getElementById('obaa-mount'));
obaaRoot.render(React.createElement(ObaaLP));
