/* global React, SectionLabel, PrimaryButton, SecondaryButton, Ornament */
const { useState } = React;

// ============================================================
// HERO
// ============================================================
function HeroSection({ onReserve }) {
  return (
    <section id="hero" data-screen-label="01 hero" style={{
      position: 'relative',
      minHeight: '100vh',
      display: 'flex', alignItems: 'center', justifyContent: 'center',
      background: `
        radial-gradient(ellipse at 20% 30%, rgba(220,184,136,0.35), transparent 55%),
        radial-gradient(ellipse at 80% 70%, rgba(101,98,92,0.30), transparent 50%),
        linear-gradient(165deg, #98866B 0%, #806F56 55%, #65625C 100%)
      `,
      overflow: 'hidden',
    }}>
      {/* film grain */}
      <div style={{
        position: 'absolute', inset: 0, pointerEvents: 'none',
        backgroundImage: `url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' seed='3'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.18 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")`,
        opacity: 0.5, mixBlendMode: 'overlay',
      }} />

      {/* corner ornaments — small uppercase markers (placed lower so they don't read as header content) */}
      <div style={{
        position: 'absolute', bottom: 56, left: 56,
        fontFamily: 'var(--font-sans)', fontSize: 10, letterSpacing: '0.4em',
        color: 'rgba(245,242,238,0.55)', textTransform: 'uppercase',
        display: 'flex', flexDirection: 'column', gap: 6,
      }}>
        <span style={{ width: 32, height: 1, background: 'rgba(245,242,238,0.4)' }} />
        <span>est. 2026 — ikeda, osaka</span>
      </div>
      <div style={{
        position: 'absolute', bottom: 56, right: 56,
        fontFamily: 'var(--font-sans)', fontSize: 10, letterSpacing: '0.4em',
        color: 'rgba(245,242,238,0.55)', textTransform: 'uppercase',
        textAlign: 'right',
        display: 'flex', flexDirection: 'column', gap: 6, alignItems: 'flex-end',
      }}>
        <span style={{ width: 32, height: 1, background: 'rgba(245,242,238,0.4)' }} />
        <span>eyelash · eyebrow salon</span>
      </div>

      <div style={{
        position: 'relative', textAlign: 'center', color: '#F5F2EE',
        padding: '120px 32px', maxWidth: 1100,
        animation: 'sononFadeUp 1200ms var(--ease-out) 200ms both',
      }}>
        <img src="assets/logo_hero.png" alt="sonon"
             style={{
               height: 220, marginBottom: 24, opacity: 0.98,
             }} />

        <div style={{
          fontFamily: 'var(--font-serif)', fontSize: 13, letterSpacing: '0.4em',
          color: 'rgba(245,242,238,0.85)',
          marginBottom: 32,
        }}>— ここから、あなたらしく。—</div>

        <h1 style={{
          fontFamily: 'var(--font-serif)', fontWeight: 300,
          fontSize: 60, letterSpacing: '0.16em', lineHeight: 1.55,
          margin: 0,
          color: '#F5F2EE',
        }}>
          わたしに似合う、を<br />見つける場所。
        </h1>

        <div style={{
          fontFamily: 'var(--font-display)', fontStyle: 'italic',
          fontSize: 22, letterSpacing: '0.06em', marginTop: 36,
          color: 'rgba(245,242,238,0.8)', fontWeight: 300,
        }}>
          a place to find the look that is, quietly, you.
        </div>

        <div style={{ marginTop: 64, display: 'flex', gap: 16, justifyContent: 'center', flexWrap: 'wrap' }}>
          <button onClick={onReserve}
            style={{
              background: '#F5F2EE', color: 'var(--sonon-ink)',
              padding: '17px 44px', border: 0, borderRadius: 2,
              fontSize: 11, letterSpacing: '0.32em', textTransform: 'uppercase',
              fontFamily: 'var(--font-sans)', cursor: 'pointer',
              transition: 'background 200ms var(--ease-out)',
            }}
            onMouseOver={(e) => e.currentTarget.style.background = '#FFFFFF'}
            onMouseOut={(e) => e.currentTarget.style.background = '#F5F2EE'}
          >ご予約はこちら · reserve</button>
          <SecondaryButton light onClick={() => document.getElementById('menu').scrollIntoView({ behavior: 'smooth', block: 'start' })}>
            メニューを見る
          </SecondaryButton>
        </div>
      </div>

      {/* scroll cue */}
      <div style={{
        position: 'absolute', bottom: 36, left: '50%', transform: 'translateX(-50%)',
        display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 12,
        color: 'rgba(245,242,238,0.6)',
      }}>
        <span style={{ fontFamily: 'var(--font-sans)', fontSize: 9, letterSpacing: '0.5em', textTransform: 'uppercase' }}>
          scroll
        </span>
        <span style={{ width: 1, height: 36, background: 'rgba(245,242,238,0.5)', animation: 'sononScrollLine 2400ms var(--ease-in-out) infinite' }} />
      </div>
    </section>
  );
}

// ============================================================
// CONCEPT — three-axis: Korean-modern × similarity × repeatability
// ============================================================
function ConceptSection() {
  const axes = [
    {
      n: '01',
      en: 'korean modern',
      jp: '韓国モダン',
      desc: '今のトレンドを深く研究し、旬のデザインを常にアップデート。韓国現地の質感と色ニュアンスを取り入れ、「今」を感じる仕上がりをお届けします。',
    },
    {
      n: '02',
      en: 'made to suit',
      jp: '似合わせ',
      desc: '韓国風にとらわれず、骨格・目元・ヘアスタイルまで徹底的に分析。あなたにとって最適なデザインを、一人ひとり丁寧にご提案いたします。',
    },
    {
      n: '03',
      en: 'reproducible',
      jp: '再現性',
      desc: '骨格や目の形に合ったデザインは、そのまま持ちの良さにつながります。メイク方法やご自宅でのケアも丁寧にレクチャーし、サロンの仕上がりをいつでも再現できるように。',
    },
  ];

  return (
    <section id="concept" data-screen-label="02 concept" style={{
      padding: '160px 56px',
      background: 'var(--sonon-bg)',
      position: 'relative',
    }}>
      <div style={{ maxWidth: 1240, margin: '0 auto' }}>
        <SectionLabel
          kicker="concept"
          title="three quiet promises."
          jp="わたしたちの3つの約束"
        />

        <div style={{
          marginTop: 96,
          display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 0,
          borderTop: '1px solid var(--border)',
          borderBottom: '1px solid var(--border)',
        }}>
          {axes.map((a, i) => (
            <div key={a.n} style={{
              padding: '64px 48px',
              borderRight: i < axes.length - 1 ? '1px solid var(--border)' : 'none',
              display: 'flex', flexDirection: 'column', gap: 24,
            }}>
              <div style={{
                fontFamily: 'var(--font-display)', fontSize: 44,
                color: 'var(--sonon-gold)', fontWeight: 300, letterSpacing: '0.04em',
              }}>{a.n}</div>

              <div>
                <div style={{
                  fontFamily: 'var(--font-sans)', fontSize: 10,
                  letterSpacing: '0.32em', textTransform: 'uppercase',
                  color: 'var(--accent)', marginBottom: 10,
                }}>{a.en}</div>
                <h3 style={{
                  fontFamily: 'var(--font-serif)', fontSize: 24, fontWeight: 400,
                  letterSpacing: '0.16em', color: 'var(--fg1)', margin: 0, lineHeight: 1.4,
                }}>{a.jp}</h3>
              </div>

              <p style={{
                fontFamily: 'var(--font-serif)', fontSize: 14, lineHeight: 2.0,
                letterSpacing: '0.06em', color: 'var(--fg2)', margin: 0,
              }}>{a.desc}</p>
            </div>
          ))}
        </div>

        <div style={{ marginTop: 64, textAlign: 'center' }}>
          <p style={{
            fontFamily: 'var(--font-serif)', fontSize: 14, lineHeight: 2.2,
            letterSpacing: '0.12em', color: 'var(--fg2)', maxWidth: 640, margin: '0 auto',
          }}>
            派手さよりも、毎日のあなたに静かに寄り添う仕上がりを。<br />
            sononは、自分らしさを整える時間を大切にしています。
          </p>
        </div>
      </div>
    </section>
  );
}

// ============================================================
// MENU
// ============================================================
function MenuSection({ onReserve }) {
  const [tab, setTab] = useState('new'); // 'new' | 'repeat'

  const groups = {
    new: [
      {
        cat: 'set',
        jpCat: 'セット（おすすめ）',
        featured: true,
        items: [
          { tag: '垢抜けNo.1', name: '韓国風似合わせまつ毛パーマ×アイブロウワックスセット', price: 13000, time: 105 },
          { tag: '迷ったらコレ！', name: '似合わせまつ毛パーマ×アイブロウワックスセット', price: 13000, time: 105 },
          { tag: '満足度◎', name: '韓国まつ毛パーマ上下＋アイブロウワックス', price: 15500, time: 120 },
          { tag: '満足度◎', name: 'まつ毛パーマ上下＋アイブロウワックス', price: 15500, time: 120 },
        ],
      },
      {
        cat: 'lash',
        jpCat: 'まつ毛パーマ',
        items: [
          { tag: 'デザイン徹底分析', name: '似合わせ韓国風束感まつ毛パーマ＋ケア', price: 7000, time: 60 },
          { tag: 'デザイン徹底分析', name: '似合わせまつ毛パーマ＋ケア', price: 7000, time: 60 },
          { tag: '小顔効果◎', name: '目元デザイン分析付き 韓国風上下まつ毛パーマ＋ケア', price: 9500, time: 75 },
          { tag: '小顔効果◎', name: '目元デザイン分析付き 上下まつ毛パーマ＋ケア', price: 9500, time: 75 },
        ],
      },
      {
        cat: 'brow',
        jpCat: 'アイブロウワックス',
        items: [
          { tag: '骨格徹底分析', name: '韓国風デザイン×アイブロウワックス', price: 7000, time: 60 },
          { tag: '骨格徹底分析', name: '似合わせデザイン×アイブロウワックス', price: 7000, time: 60 },
        ],
      },
    ],
    repeat: [
      {
        cat: 'set',
        jpCat: 'セット（おすすめ）',
        featured: true,
        items: [
          { tag: '垢抜けNo.1', name: '韓国風似合わせまつ毛パーマ×アイブロウワックスセット', price: 14000, time: 90 },
          { tag: '迷ったらコレ！', name: '似合わせまつ毛パーマ×アイブロウワックスセット', price: 14000, time: 90 },
          { tag: '満足度◎', name: '韓国まつ毛パーマ上下＋アイブロウワックス', price: 16500, time: 105 },
          { tag: '満足度◎', name: 'まつ毛パーマ上下＋アイブロウワックス', price: 16500, time: 105 },
        ],
      },
      {
        cat: 'lash',
        jpCat: 'まつ毛パーマ',
        items: [
          { tag: 'デザイン徹底分析', name: '似合わせ韓国風束感まつ毛パーマ＋ケア', price: 8000, time: 45 },
          { tag: 'デザイン徹底分析', name: '似合わせまつ毛パーマ＋ケア', price: 8000, time: 45 },
          { tag: '小顔効果◎', name: '目元デザイン分析付き 韓国風上下まつ毛パーマ＋ケア', price: 10500, time: 60 },
          { tag: '小顔効果◎', name: '目元デザイン分析付き 上下まつ毛パーマ＋ケア', price: 10500, time: 60 },
        ],
      },
      {
        cat: 'brow',
        jpCat: 'アイブロウワックス',
        items: [
          { tag: '骨格徹底分析', name: '韓国風デザイン×アイブロウワックス', price: 8000, time: 45 },
          { tag: '骨格徹底分析', name: '似合わせデザイン×アイブロウワックス', price: 8000, time: 45 },
        ],
      },
    ],
  };

  const promos = [
    { kicker: 'OPEN記念', period: '6/30まで', label: '全メニュー', value: '¥1,000 OFF' },
    { kicker: '初めてのセット体験', period: '全員対象', label: '眉＋まつ毛パーマ', value: '¥1,000 OFF' },
    { kicker: '紹介クーポン', period: '全員対象', label: '紹介した方・された方', value: '¥1,000 OFF' },
  ];

  const standard = [
    { name: 'まつ毛パーマ', price: 8000, time: 60 },
    { name: 'まつ毛パーマ（上下）', price: 10500, time: 75 },
    { name: 'アイブロウワックス', price: 8000, time: 60 },
    { name: '眉＋まつ毛パーマセット', price: 14000, time: 90 },
    { name: '眉＋まつ毛パーマセット（上下）', price: 16500, time: 105 },
  ];

  const fmt = (n) => n.toLocaleString();

  return (
    <section id="menu" data-screen-label="03 menu" style={{
      padding: '160px 56px',
      background: 'var(--sonon-bg-2)',
    }}>
      <div style={{ maxWidth: 1240, margin: '0 auto' }}>
        <SectionLabel
          kicker="menu & price"
          title="for lashes & brows."
          jp="メニュー・料金表"
        />

        {/* Promo strip */}
        <div style={{
          marginTop: 80,
          display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 20,
        }}>
          {promos.map((p) => (
            <div key={p.kicker} style={{
              background: '#FFFFFF',
              border: '1px solid var(--sonon-gold-soft)',
              borderRadius: 4,
              padding: '24px 28px',
              position: 'relative',
              display: 'flex', flexDirection: 'column', gap: 10,
            }}>
              <div style={{
                position: 'absolute', top: 14, right: 14,
                fontFamily: 'var(--font-sans)', fontSize: 8,
                letterSpacing: '0.24em', textTransform: 'uppercase',
                color: 'var(--sonon-gold-deep)',
                padding: '3px 9px',
                border: '1px solid var(--sonon-gold-soft)',
                borderRadius: 999,
                whiteSpace: 'nowrap',
              }}>{p.period}</div>
              <div style={{
                fontFamily: 'var(--font-sans)', fontSize: 9,
                letterSpacing: '0.32em', textTransform: 'uppercase',
                color: 'var(--accent)',
              }}>— {p.kicker}</div>
              <div style={{
                fontFamily: 'var(--font-serif)', fontSize: 14,
                letterSpacing: '0.1em', color: 'var(--fg2)',
              }}>{p.label}</div>
              <div style={{
                fontFamily: 'var(--font-display)', fontSize: 30,
                fontWeight: 300, letterSpacing: '0.02em',
                color: 'var(--sonon-brown)', lineHeight: 1.1,
                marginTop: 2,
              }}>{p.value}</div>
            </div>
          ))}
        </div>

        {/* Tabs */}
        <div style={{
          marginTop: 80,
          display: 'flex', justifyContent: 'center',
          borderBottom: '1px solid var(--border)',
        }}>
          {[
            { id: 'new', en: 'first visit', jp: '新規クーポン' },
            { id: 'repeat', en: 'returning', jp: '再来クーポン' },
          ].map((t) => {
            const active = tab === t.id;
            return (
              <button key={t.id} onClick={() => setTab(t.id)} style={{
                background: 'transparent', border: 0, cursor: 'pointer',
                padding: '20px 56px',
                display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 6,
                borderBottom: active ? '2px solid var(--sonon-brown)' : '2px solid transparent',
                marginBottom: -1,
                transition: 'border-color 280ms var(--ease-out)',
              }}>
                <span style={{
                  fontFamily: 'var(--font-display)', fontSize: 22,
                  fontWeight: 400, fontStyle: active ? 'italic' : 'normal',
                  letterSpacing: '0.04em',
                  color: active ? 'var(--fg1)' : 'var(--fg3)',
                  whiteSpace: 'nowrap',
                  transition: 'color 280ms var(--ease-out)',
                }}>{t.en}</span>
                <span style={{
                  fontFamily: 'var(--font-sans)', fontSize: 10,
                  letterSpacing: '0.32em', textTransform: 'uppercase',
                  color: active ? 'var(--accent)' : 'var(--fg4)',
                }}>{t.jp}</span>
              </button>
            );
          })}
        </div>

        {/* Coupon list */}
        <div style={{ marginTop: 64, display: 'flex', flexDirection: 'column', gap: 56 }}>
          {groups[tab].map((g) => (
            <div key={g.cat}>
              {/* group header */}
              <div style={{
                display: 'flex', alignItems: 'baseline', gap: 18,
                marginBottom: 24, paddingBottom: 14,
                borderBottom: '1px solid var(--border-soft)',
              }}>
                <span style={{
                  fontFamily: 'var(--font-display)', fontStyle: 'italic',
                  fontSize: 15, color: 'var(--sonon-gold)', letterSpacing: '0.08em',
                }}>{g.cat}.</span>
                <h3 style={{
                  margin: 0,
                  fontFamily: 'var(--font-serif)', fontSize: 19, fontWeight: 400,
                  letterSpacing: '0.16em', color: 'var(--fg1)',
                }}>{g.jpCat}</h3>
                {g.featured && (
                  <span style={{
                    fontFamily: 'var(--font-sans)', fontSize: 9,
                    letterSpacing: '0.32em', textTransform: 'uppercase',
                    color: '#FFFFFF', background: 'var(--sonon-brown)',
                    padding: '4px 12px', borderRadius: 999,
                    marginLeft: 'auto',
                  }}>most popular</span>
                )}
              </div>

              {/* items */}
              <div style={{ display: 'flex', flexDirection: 'column' }}>
                {g.items.map((it, i) => (
                  <div key={i} style={{
                    display: 'grid',
                    gridTemplateColumns: 'minmax(160px, auto) 1fr auto auto',
                    gap: 28, alignItems: 'center',
                    padding: '22px 24px',
                    borderBottom: '1px solid var(--border-soft)',
                    background: 'rgba(255,255,255,0.5)',
                  }}>
                    <div style={{
                      fontFamily: 'var(--font-sans)', fontSize: 9,
                      letterSpacing: '0.28em', textTransform: 'uppercase',
                      color: 'var(--accent)',
                      padding: '5px 10px',
                      border: '1px solid var(--sonon-gold-soft)',
                      borderRadius: 2,
                      whiteSpace: 'nowrap',
                      justifySelf: 'flex-start',
                    }}>【{it.tag}】</div>
                    <div style={{
                      fontFamily: 'var(--font-serif)', fontSize: 15,
                      lineHeight: 1.65, letterSpacing: '0.08em',
                      color: 'var(--fg1)',
                    }}>{it.name}</div>
                    <div style={{
                      fontFamily: 'var(--font-sans)', fontSize: 11,
                      letterSpacing: '0.24em', color: 'var(--fg3)',
                      whiteSpace: 'nowrap',
                    }}>{it.time} min</div>
                    <div style={{
                      display: 'flex', alignItems: 'baseline', gap: 2,
                      whiteSpace: 'nowrap', minWidth: 110, justifyContent: 'flex-end',
                    }}>
                      <span style={{
                        fontFamily: 'var(--font-display)', fontSize: 14,
                        color: 'var(--fg2)',
                      }}>¥</span>
                      <span style={{
                        fontFamily: 'var(--font-display)', fontSize: 26,
                        fontWeight: 300, color: 'var(--fg1)', letterSpacing: '0.02em',
                        lineHeight: 1,
                      }}>{fmt(it.price)}</span>
                    </div>
                  </div>
                ))}
              </div>
            </div>
          ))}
        </div>

        {/* Standard / reference price */}
        <div style={{
          marginTop: 96,
          background: 'transparent',
          border: 0,
          borderRadius: 0,
          padding: '40px 8px 8px',
        }}>
          <div style={{
            display: 'flex', alignItems: 'baseline', gap: 16,
            marginBottom: 20,
          }}>
            <span style={{
              fontFamily: 'var(--font-sans)', fontSize: 10,
              letterSpacing: '0.32em', textTransform: 'uppercase',
              color: 'var(--fg3)',
            }}>— standard menu</span>
            <span style={{
              fontFamily: 'var(--font-serif)', fontSize: 13,
              letterSpacing: '0.16em', color: 'var(--fg3)',
            }}>通常メニュー</span>
          </div>
          <div style={{ display: 'flex', flexDirection: 'column' }}>
            {standard.map((s, i) => (
              <div key={i} style={{
                display: 'grid', gridTemplateColumns: '1fr auto auto',
                gap: 24, alignItems: 'baseline',
                padding: '12px 0',
                borderTop: i === 0 ? 'none' : '1px dashed var(--border-soft)',
              }}>
                <span style={{
                  fontFamily: 'var(--font-serif)', fontSize: 13,
                  letterSpacing: '0.1em', color: 'var(--fg2)',
                }}>{s.name}</span>
                <span style={{
                  fontFamily: 'var(--font-sans)', fontSize: 10,
                  letterSpacing: '0.24em', color: 'var(--fg4)',
                  whiteSpace: 'nowrap',
                }}>{s.time} min</span>
                <span style={{
                  fontFamily: 'var(--font-display)', fontSize: 16,
                  color: 'var(--fg2)', letterSpacing: '0.02em',
                  whiteSpace: 'nowrap', minWidth: 90, textAlign: 'right',
                }}>¥{fmt(s.price)}</span>
              </div>
            ))}
          </div>
        </div>

        {/* fine print */}
        <div style={{
          marginTop: 48, paddingTop: 28, borderTop: '1px solid var(--border)',
          display: 'flex', justifyContent: 'space-between', flexWrap: 'wrap', gap: 24,
          alignItems: 'flex-end',
        }}>
          <div style={{
            fontFamily: 'var(--font-serif)', fontSize: 12, lineHeight: 2,
            letterSpacing: '0.08em', color: 'var(--fg3)',
          }}>
            ※ 表示価格はすべて税込みです。<br />
            ※ クーポンは他券併用不可です。<br />
            <span style={{
              display: 'block', paddingLeft: '1.4em',
              color: 'var(--fg4)',
              wordBreak: 'normal', overflowWrap: 'anywhere',
            }}>
              （ただし、OPEN記念・初めてのセット体験・紹介クーポンの全員対象クーポンは他券と併用可能です。）
            </span>
            ※ オフ・追加料金は別途いただく場合がございます。
          </div>
          <SecondaryButton onClick={onReserve}>ご予約に進む</SecondaryButton>
        </div>
      </div>
    </section>
  );
}

// ============================================================
// FEATURES — three salon characteristics
// ============================================================
function FeaturesSection() {
  const features = [
    {
      n: 'i.',
      title: 'location',
      jp: '駅近・路面店で気軽に',
      desc: '阪急宝塚線「池田」駅より徒歩5分の1階路面店。近くには大型スーパーもあり、お買い物のついでに気軽にお立ち寄りいただけます。',
    },
    {
      n: 'ii.',
      title: 'interior',
      jp: 'ゆったりと、あなたの時間を',
      desc: 'ベージュ×グレーを基調とした、上質で温かみのある内装。カーテン仕切りによる半個室と3席の少人数サロンで、ゆったりとお過ごしいただけます。',
    },
    {
      n: 'iii.',
      title: 'counselling',
      jp: 'あなたのことを、聞かせてください。',
      desc: 'はじめての方も、何もわからなくても大丈夫。スタッフが丁寧にヒアリングし、あなたにぴったりのデザインをご提案いたします。',
    },
  ];

  return (
    <section id="features" data-screen-label="04 features" style={{
      padding: '160px 56px',
      background: 'var(--sonon-bg)',
      position: 'relative',
    }}>
      <div style={{ maxWidth: 1240, margin: '0 auto' }}>
        <div style={{
          display: 'grid', gridTemplateColumns: '5fr 7fr', gap: 96, alignItems: 'flex-start',
        }}>
          {/* Left: label + image card */}
          <div style={{
            display: 'flex', flexDirection: 'column', gap: 40, position: 'sticky', top: 120,
          }}>
            <SectionLabel
              kicker="why sonon"
              title="quiet, but considered."
              jp="サロンの特徴"
              align="left"
              ornament={false}
            />

            <div style={{
              height: 480,
              borderRadius: 4,
              position: 'relative',
              overflow: 'hidden',
              backgroundImage: 'url("assets/interior.jpg")',
              backgroundSize: 'cover',
              backgroundPosition: 'center 40%',
              boxShadow: 'var(--shadow-2)',
            }}>
              {/* warm tone + readability scrim */}
              <div style={{
                position: 'absolute', inset: 0,
                background: 'linear-gradient(180deg, rgba(43,42,38,0) 0%, rgba(43,42,38,0) 45%, rgba(43,42,38,0.55) 100%)',
                mixBlendMode: 'normal',
              }} />
              <div style={{
                position: 'absolute', inset: 0,
                background: 'linear-gradient(155deg, rgba(196,151,90,0.08) 0%, rgba(152,134,107,0.06) 100%)',
                mixBlendMode: 'soft-light',
              }} />
              <div style={{
                position: 'absolute', inset: 0, padding: 32,
                display: 'flex', flexDirection: 'column', justifyContent: 'flex-end',
                color: '#F5F2EE',
              }}>
                <div style={{
                  fontFamily: 'var(--font-sans)', fontSize: 9,
                  letterSpacing: '0.5em', textTransform: 'uppercase',
                  opacity: 0.92, marginBottom: 10,
                }}>— studio interior</div>
                <div style={{
                  fontFamily: 'var(--font-display)', fontStyle: 'italic',
                  fontSize: 24, fontWeight: 300, letterSpacing: '0.04em',
                  textShadow: '0 2px 16px rgba(43,42,38,0.4)',
                }}>a place to slow down.</div>
              </div>
            </div>
          </div>

          {/* Right: features */}
          <div style={{ display: 'flex', flexDirection: 'column' }}>
            {features.map((f, i) => (
              <div key={f.n} style={{
                display: 'grid', gridTemplateColumns: '80px 1fr',
                gap: 32, padding: '40px 0',
                borderTop: i === 0 ? '1px solid var(--border)' : 'none',
                borderBottom: '1px solid var(--border)',
                alignItems: 'flex-start',
              }}>
                <div style={{
                  fontFamily: 'var(--font-display)', fontSize: 24,
                  fontStyle: 'italic', fontWeight: 300,
                  color: 'var(--sonon-gold)', letterSpacing: '0.04em',
                  paddingTop: 4,
                }}>{f.n}</div>

                <div style={{ display: 'flex', flexDirection: 'column', gap: 14 }}>
                  <div style={{
                    fontFamily: 'var(--font-sans)', fontSize: 10,
                    letterSpacing: '0.32em', textTransform: 'uppercase',
                    color: 'var(--accent)',
                  }}>{f.title}</div>
                  <h3 style={{
                    fontFamily: 'var(--font-serif)', fontSize: 22, fontWeight: 400,
                    letterSpacing: '0.14em', color: 'var(--fg1)', margin: 0,
                  }}>{f.jp}</h3>
                  <p style={{
                    fontFamily: 'var(--font-serif)', fontSize: 14, lineHeight: 2,
                    letterSpacing: '0.08em', color: 'var(--fg2)', margin: 0,
                  }}>{f.desc}</p>
                </div>
              </div>
            ))}
          </div>
        </div>
      </div>
    </section>
  );
}

Object.assign(window, {
  HeroSection, ConceptSection, MenuSection, FeaturesSection,
});
