// Hand-drawn SVG illustrations for 8 wagashi + option icons.
// All viewBox 0 0 200 200 (wagashi) or 0 0 24 24 (icons).

const WagashiArt = ({ type, size = 220 }) => {
  const common = { width: size, height: size, viewBox: '0 0 200 200' };
  switch (type) {
    case 'nerikiri':
      // Sculpted pink flower-shaped wagashi with 5 petals + yellow center
      return (
        <svg {...common}>
          <defs>
            <radialGradient id="nr-pg" cx="50%" cy="45%" r="55%">
              <stop offset="0%" stopColor="#FFF0F3"/>
              <stop offset="60%" stopColor="#F7D4DC"/>
              <stop offset="100%" stopColor="#E89AAA"/>
            </radialGradient>
          </defs>
          <ellipse cx="100" cy="168" rx="58" ry="8" fill="#2B2118" opacity=".08"/>
          {[0,1,2,3,4].map(i=>{
            const a=(i*72-90)*Math.PI/180;
            const cx=100+Math.cos(a)*30, cy=100+Math.sin(a)*30;
            return <ellipse key={i} cx={cx} cy={cy} rx="36" ry="30"
              fill="url(#nr-pg)" stroke="#C77F90" strokeWidth="1.2"
              transform={`rotate(${i*72} ${cx} ${cy})`} opacity=".96"/>
          })}
          <circle cx="100" cy="100" r="18" fill="#F5E2A8" stroke="#C9A86A" strokeWidth="1.2"/>
          <circle cx="100" cy="100" r="9" fill="#E8C263"/>
          {[0,1,2,3,4,5].map(i=>{
            const a=(i*60)*Math.PI/180;
            return <circle key={i} cx={100+Math.cos(a)*13} cy={100+Math.sin(a)*13} r="1.6" fill="#A88548"/>
          })}
          {/* petal highlights */}
          {[0,1,2,3,4].map(i=>{
            const a=(i*72-90)*Math.PI/180;
            const cx=100+Math.cos(a)*30, cy=100+Math.sin(a)*30;
            return <ellipse key={'h'+i} cx={cx-6} cy={cy-10} rx="9" ry="4"
              fill="#FFF" opacity=".5"
              transform={`rotate(${i*72} ${cx} ${cy})`}/>
          })}
        </svg>
      );

    case 'kuzumochi':
      // Translucent cube glistening, on leaf, with kuromitsu drip
      return (
        <svg {...common}>
          <ellipse cx="100" cy="170" rx="62" ry="7" fill="#2B2118" opacity=".08"/>
          {/* bamboo leaf */}
          <path d="M30 150 Q100 110 170 150 Q100 165 30 150 Z" fill="#8AA078" opacity=".5"/>
          <path d="M40 150 Q100 120 160 150" stroke="#5E7550" strokeWidth="1" fill="none" opacity=".5"/>
          {/* cube */}
          <g transform="translate(100 100)">
            {/* back/top face */}
            <path d="M-42 -18 L0 -38 L42 -18 L0 2 Z" fill="#D4E4E9" opacity=".55" stroke="#8FB8CC" strokeWidth="1"/>
            {/* front */}
            <path d="M-42 -18 L-42 30 L0 50 L0 2 Z" fill="#BFD6DC" opacity=".55" stroke="#8FB8CC" strokeWidth="1"/>
            <path d="M0 2 L0 50 L42 30 L42 -18 Z" fill="#A8C4CC" opacity=".55" stroke="#8FB8CC" strokeWidth="1"/>
            {/* highlights */}
            <path d="M-34 -14 L-12 -24 L-6 -22 L-30 -10 Z" fill="#FFF" opacity=".8"/>
            <ellipse cx="-24" cy="14" rx="4" ry="10" fill="#FFF" opacity=".4"/>
          </g>
          {/* kuromitsu */}
          <path d="M135 68 Q138 85 128 96 Q120 105 126 118" stroke="#4A2E1A" strokeWidth="3" fill="none" strokeLinecap="round" opacity=".85"/>
          <ellipse cx="130" cy="60" rx="10" ry="5" fill="#4A2E1A" opacity=".85"/>
          {/* kinako dust */}
          {[{x:74,y:58},{x:88,y:48},{x:112,y:52},{x:60,y:72},{x:128,y:78}].map((p,i)=>(
            <circle key={i} cx={p.x} cy={p.y} r="1.4" fill="#C9A86A"/>
          ))}
        </svg>
      );

    case 'monaka':
      // Two crispy wafer shells sandwiching red bean paste
      return (
        <svg {...common}>
          <ellipse cx="100" cy="168" rx="60" ry="7" fill="#2B2118" opacity=".08"/>
          {/* bottom wafer */}
          <ellipse cx="100" cy="128" rx="62" ry="22" fill="#F0DDB0" stroke="#B89760" strokeWidth="1.4"/>
          {/* bean paste filling */}
          <ellipse cx="100" cy="108" rx="54" ry="12" fill="#6B2F1C"/>
          <ellipse cx="90" cy="105" rx="14" ry="4" fill="#8A3F26" opacity=".7"/>
          {/* top wafer */}
          <ellipse cx="100" cy="92" rx="60" ry="22" fill="#F5E4BC" stroke="#B89760" strokeWidth="1.4"/>
          {/* embossed kanji 福 on top */}
          <g transform="translate(100 92)" opacity=".55" stroke="#A88548" strokeWidth="1.6" fill="none" strokeLinecap="round">
            <path d="M-10 -9 L10 -9"/>
            <path d="M0 -9 L0 9"/>
            <path d="M-8 0 L8 0"/>
            <path d="M-10 9 L10 9"/>
          </g>
          {/* wafer pattern grid */}
          <g opacity=".4" stroke="#B89760" strokeWidth=".6">
            {[-45,-30,-15,0,15,30,45].map(x=>
              <line key={'v'+x} x1={100+x} y1={75} x2={100+x*0.9} y2={108}/>)}
          </g>
          <g opacity=".4" stroke="#B89760" strokeWidth=".6">
            {[-45,-30,-15,0,15,30,45].map(x=>
              <line key={'b'+x} x1={100+x} y1={112} x2={100+x*0.9} y2={146}/>)}
          </g>
          {/* crumbs */}
          <circle cx="38" cy="148" r="2" fill="#E4CE99"/>
          <circle cx="160" cy="142" r="1.6" fill="#E4CE99"/>
          <circle cx="44" cy="154" r="1.2" fill="#E4CE99"/>
        </svg>
      );

    case 'yokan':
      // Dark amber brick on a bamboo leaf, cross-section showing translucent layers
      return (
        <svg {...common}>
          <ellipse cx="100" cy="168" rx="58" ry="7" fill="#2B2118" opacity=".1"/>
          {/* bamboo leaf */}
          <path d="M22 140 Q100 102 178 140 Q100 160 22 140 Z" fill="#8AA078" opacity=".55"/>
          <path d="M30 140 Q100 115 170 140" stroke="#5E7550" strokeWidth="1" fill="none" opacity=".6"/>
          {/* yokan brick (isometric) */}
          <g transform="translate(100 110)">
            {/* top */}
            <path d="M-50 -10 L20 -32 L60 -20 L-10 2 Z" fill="#4A3020" stroke="#2B1A0E" strokeWidth="1.2"/>
            {/* front */}
            <path d="M-50 -10 L-50 28 L-10 40 L-10 2 Z" fill="#6B442A" stroke="#2B1A0E" strokeWidth="1.2"/>
            {/* side */}
            <path d="M-10 2 L-10 40 L60 18 L60 -20 Z" fill="#3A2314" stroke="#2B1A0E" strokeWidth="1.2"/>
            {/* translucent gloss on top */}
            <path d="M-42 -12 L10 -28 L30 -22 L-22 -4 Z" fill="#C9A86A" opacity=".35"/>
            {/* layer hint on front */}
            <path d="M-50 10 L-10 22" stroke="#8A5A3A" strokeWidth=".8" opacity=".5"/>
          </g>
          {/* small knife cut wisp */}
          <path d="M155 70 Q150 78 158 82" stroke="#C9A86A" strokeWidth="1.6" fill="none" opacity=".7" strokeLinecap="round"/>
        </svg>
      );

    case 'kusamochi':
      // Round green mochi dusted with kinako, small leaf on top
      return (
        <svg {...common}>
          <ellipse cx="100" cy="168" rx="58" ry="8" fill="#2B2118" opacity=".1"/>
          {/* plate */}
          <ellipse cx="100" cy="140" rx="70" ry="14" fill="#EDE4D0" stroke="#C9A86A" strokeWidth="1"/>
          {/* mochi body */}
          <defs>
            <radialGradient id="ku-g" cx="40%" cy="35%" r="70%">
              <stop offset="0%" stopColor="#DFE8C8"/>
              <stop offset="60%" stopColor="#A9C08A"/>
              <stop offset="100%" stopColor="#7A9064"/>
            </radialGradient>
          </defs>
          <ellipse cx="100" cy="108" rx="55" ry="40" fill="url(#ku-g)" stroke="#5E7550" strokeWidth="1.4"/>
          {/* highlight */}
          <ellipse cx="80" cy="88" rx="18" ry="8" fill="#FFF" opacity=".5"/>
          {/* red bean peek at bottom */}
          <path d="M58 138 Q100 150 142 138 Q100 146 58 138" fill="#6B2F1C" opacity=".85"/>
          {/* kinako dust specs */}
          {[{x:70,y:74,r:1.4},{x:120,y:82,r:1.2},{x:95,y:70,r:1},{x:135,y:100,r:1.4},{x:60,y:108,r:1.2},{x:145,y:120,r:1}].map((p,i)=>(
            <circle key={i} cx={p.x} cy={p.y} r={p.r} fill="#C9A86A"/>
          ))}
          {/* tiny leaf */}
          <path d="M100 66 Q86 52 96 42 Q110 52 100 66 Z" fill="#8AA078" stroke="#5E7550" strokeWidth="1"/>
          <path d="M98 60 L100 44" stroke="#5E7550" strokeWidth=".8"/>
        </svg>
      );

    case 'gyuhi':
      // Soft pillow of pale pink mochi, slightly pillow-shaped, dusted
      return (
        <svg {...common}>
          <ellipse cx="100" cy="168" rx="55" ry="7" fill="#2B2118" opacity=".08"/>
          {/* paper under */}
          <rect x="30" y="118" width="140" height="40" rx="6" fill="#FBF7EC" stroke="#C9A86A" strokeWidth=".8" opacity=".9"/>
          <line x1="36" y1="126" x2="164" y2="126" stroke="#C9A86A" strokeWidth=".4" opacity=".5"/>
          {/* pillow */}
          <defs>
            <radialGradient id="gy-g" cx="40%" cy="35%" r="80%">
              <stop offset="0%" stopColor="#FFF7EE"/>
              <stop offset="70%" stopColor="#FFE5D4"/>
              <stop offset="100%" stopColor="#E8B89A"/>
            </radialGradient>
          </defs>
          <path d="M48 100
                   C48 70, 152 70, 152 100
                   C160 100, 160 128, 152 128
                   C152 150, 48 150, 48 128
                   C40 128, 40 100, 48 100 Z"
                fill="url(#gy-g)" stroke="#C77F90" strokeWidth="1.2" opacity=".9"/>
          {/* highlight */}
          <ellipse cx="82" cy="92" rx="22" ry="8" fill="#FFF" opacity=".7"/>
          {/* katakori dust */}
          {[{x:68,y:80},{x:118,y:78},{x:96,y:70},{x:130,y:108},{x:72,y:116},{x:140,y:92}].map((p,i)=>(
            <circle key={i} cx={p.x} cy={p.y} r="1.2" fill="#FFF" opacity=".9"/>
          ))}
          {/* soft indent */}
          <ellipse cx="100" cy="130" rx="30" ry="4" fill="#C77F90" opacity=".2"/>
        </svg>
      );

    case 'mizumanju':
      // Crystal clear dome with red bean sphere inside, water droplets
      return (
        <svg {...common}>
          <ellipse cx="100" cy="168" rx="58" ry="8" fill="#2B2118" opacity=".08"/>
          {/* glass plate */}
          <ellipse cx="100" cy="148" rx="70" ry="12" fill="#E8F0F4" stroke="#8FB8CC" strokeWidth=".8" opacity=".8"/>
          <ellipse cx="100" cy="146" rx="65" ry="10" fill="none" stroke="#FFF" strokeWidth=".6"/>
          {/* outer water dome */}
          <defs>
            <radialGradient id="mz-g" cx="40%" cy="30%" r="70%">
              <stop offset="0%" stopColor="#FFF" stopOpacity=".9"/>
              <stop offset="60%" stopColor="#D9EAF2" stopOpacity=".6"/>
              <stop offset="100%" stopColor="#8FB8CC" stopOpacity=".5"/>
            </radialGradient>
          </defs>
          <path d="M50 140 Q50 70 100 70 Q150 70 150 140 Z"
                fill="url(#mz-g)" stroke="#8FB8CC" strokeWidth="1.2"/>
          {/* inner bean */}
          <circle cx="100" cy="118" r="18" fill="#6B2F1C"/>
          <circle cx="94" cy="112" r="5" fill="#8A3F26" opacity=".8"/>
          {/* highlights */}
          <path d="M66 88 Q70 102 64 118" stroke="#FFF" strokeWidth="3" fill="none" opacity=".8" strokeLinecap="round"/>
          <circle cx="128" cy="92" r="4" fill="#FFF" opacity=".8"/>
          {/* water beads around */}
          <circle cx="45" cy="152" r="2.5" fill="#8FB8CC" opacity=".6"/>
          <circle cx="160" cy="150" r="2" fill="#8FB8CC" opacity=".6"/>
          <circle cx="36" cy="148" r="1.4" fill="#8FB8CC" opacity=".5"/>
          <circle cx="168" cy="144" r="1.6" fill="#8FB8CC" opacity=".5"/>
        </svg>
      );

    case 'sakuramochi':
      // Pink rice ball wrapped in a salted cherry leaf
      return (
        <svg {...common}>
          <ellipse cx="100" cy="168" rx="56" ry="8" fill="#2B2118" opacity=".1"/>
          {/* cherry leaf backdrop */}
          <path d="M30 140 Q60 90 100 82 Q140 90 170 140 Q150 160 100 160 Q50 160 30 140 Z"
                fill="#6E7A4E" opacity=".85" stroke="#4A5436" strokeWidth="1"/>
          {/* leaf vein */}
          <path d="M100 82 L100 158" stroke="#4A5436" strokeWidth="1" opacity=".7"/>
          {[{d:"M100 95 Q130 100 155 130"},{d:"M100 110 Q128 118 150 140"},{d:"M100 125 Q125 134 142 150"},
            {d:"M100 95 Q70 100 45 130"},{d:"M100 110 Q72 118 50 140"},{d:"M100 125 Q75 134 58 150"}].map((p,i)=>
            <path key={i} d={p.d} stroke="#4A5436" strokeWidth=".7" fill="none" opacity=".6"/>
          )}
          {/* leaf edge teeth */}
          <path d="M30 140 Q60 90 100 82 Q140 90 170 140" stroke="#3A4226" strokeWidth="1.2" fill="none" strokeDasharray="3 2" opacity=".5"/>
          {/* pink rice ball */}
          <defs>
            <radialGradient id="sk-g" cx="40%" cy="35%" r="70%">
              <stop offset="0%" stopColor="#FFF0F3"/>
              <stop offset="60%" stopColor="#F7BFCB"/>
              <stop offset="100%" stopColor="#D97E93"/>
            </radialGradient>
          </defs>
          <ellipse cx="100" cy="120" rx="46" ry="32" fill="url(#sk-g)" stroke="#B26278" strokeWidth="1.2"/>
          {/* grain texture */}
          {[{x:80,y:108},{x:108,y:106},{x:90,y:118},{x:118,y:122},{x:78,y:130},{x:104,y:132},{x:124,y:112},{x:96,y:98}].map((p,i)=>(
            <ellipse key={i} cx={p.x} cy={p.y} rx="2" ry="1.2" fill="#FFF" opacity=".7"/>
          ))}
          {/* highlight */}
          <ellipse cx="84" cy="104" rx="14" ry="6" fill="#FFF" opacity=".55"/>
          {/* tiny flower on top */}
          <g transform="translate(100 76)">
            {[0,1,2,3,4].map(i=>{
              const a=(i*72-90)*Math.PI/180;
              return <circle key={i} cx={Math.cos(a)*5} cy={Math.sin(a)*5} r="3.4" fill="#FBDCE2" stroke="#D97E93" strokeWidth=".6"/>
            })}
            <circle r="2" fill="#E8C263"/>
          </g>
        </svg>
      );

    default:
      return null;
  }
};

// Hero illustration for landing: a small collection
const HeroArt = () => (
  <svg viewBox="0 0 240 240">
    {/* round platter */}
    <ellipse cx="120" cy="170" rx="100" ry="16" fill="#EDE4D0" stroke="#C9A86A" strokeWidth=".8"/>
    <ellipse cx="120" cy="166" rx="96" ry="14" fill="none" stroke="#FFF" strokeWidth=".6"/>
    {/* three wagashi */}
    {/* sakuramochi */}
    <g transform="translate(58 140)">
      <path d="M-28 6 Q-18 -20 0 -22 Q18 -20 28 6 Q18 12 0 12 Q-18 12 -28 6 Z" fill="#6E7A4E" opacity=".85"/>
      <ellipse cx="0" cy="-4" rx="20" ry="14" fill="#F7BFCB" stroke="#B26278" strokeWidth="1"/>
      <ellipse cx="-6" cy="-10" rx="6" ry="3" fill="#FFF" opacity=".6"/>
    </g>
    {/* nerikiri (flower) center */}
    <g transform="translate(120 124)">
      {[0,1,2,3,4].map(i=>{
        const a=(i*72-90)*Math.PI/180;
        const cx=Math.cos(a)*12, cy=Math.sin(a)*12;
        return <ellipse key={i} cx={cx} cy={cy} rx="16" ry="13"
          fill="#F7D4DC" stroke="#C77F90" strokeWidth="1"
          transform={`rotate(${i*72} ${cx} ${cy})`}/>
      })}
      <circle r="7" fill="#F5E2A8" stroke="#C9A86A" strokeWidth="1"/>
      <circle r="3" fill="#E8C263"/>
    </g>
    {/* yokan */}
    <g transform="translate(182 142)">
      <path d="M-26 -12 L14 -24 L30 -18 L-10 -6 Z" fill="#4A3020" stroke="#2B1A0E" strokeWidth="1"/>
      <path d="M-26 -12 L-26 12 L-10 18 L-10 -6 Z" fill="#6B442A" stroke="#2B1A0E" strokeWidth="1"/>
      <path d="M-10 -6 L-10 18 L30 6 L30 -18 Z" fill="#3A2314" stroke="#2B1A0E" strokeWidth="1"/>
      <path d="M-22 -14 L10 -22 L22 -18 L-10 -10 Z" fill="#C9A86A" opacity=".3"/>
    </g>
    {/* petal confetti around */}
    {[{x:40,y:50,r:-20},{x:200,y:40,r:15},{x:30,y:95,r:40},{x:212,y:80,r:-10},{x:110,y:30,r:25}].map((p,i)=>(
      <g key={i} transform={`translate(${p.x} ${p.y}) rotate(${p.r})`}>
        <path d="M0 -6 Q4 -2 6 0 Q4 2 0 6 Q-4 2 -6 0 Q-4 -2 0 -6 Z" fill="#F7D4DC" opacity=".9"/>
        <path d="M0 -6 Q0 0 0 6" stroke="#E89AAA" strokeWidth=".5" opacity=".6"/>
      </g>
    ))}
  </svg>
);

// Small SVG icons for answer options. 24x24 stroke-based.
const OptIcon = ({ name, size = 22 }) => {
  const p = { width: size, height: size, viewBox:'0 0 24 24', fill:'none',
    stroke:'currentColor', strokeWidth:'1.5', strokeLinecap:'round', strokeLinejoin:'round' };
  switch(name){
    case 'sakura':
      return <svg {...p}>
        {[0,1,2,3,4].map(i=>{
          const a=(i*72-90)*Math.PI/180, cx=12+Math.cos(a)*3.2, cy=12+Math.sin(a)*3.2;
          return <ellipse key={i} cx={cx} cy={cy} rx="3.2" ry="2.4"
            transform={`rotate(${i*72} ${cx} ${cy})`}/>
        })}
        <circle cx="12" cy="12" r="1.2" fill="currentColor"/>
      </svg>;
    case 'rain':
      return <svg {...p}>
        <path d="M6 11a4 4 0 0 1 1-7 5 5 0 0 1 9 1 3 3 0 0 1-2 6H7"/>
        <path d="M8 16l-1 3M13 16l-1 3M17 16l-1 3"/>
      </svg>;
    case 'leaf':
      return <svg {...p}>
        <path d="M4 20c0-8 6-14 16-14 0 10-6 16-16 14Z"/>
        <path d="M4 20 14 10"/>
      </svg>;
    case 'snow':
      return <svg {...p}>
        <path d="M12 3v18M3 12h18M5.6 5.6l12.8 12.8M18.4 5.6 5.6 18.4"/>
      </svg>;
    case 'torii':
      return <svg {...p}>
        <path d="M3 7c4-2 14-2 18 0"/>
        <path d="M3 10h18"/>
        <path d="M6 10v10M18 10v10"/>
        <path d="M5 14h14"/>
      </svg>;
    case 'boat':
      return <svg {...p}>
        <path d="M3 17h18l-2 3H5z"/>
        <path d="M12 3v12M12 3l6 12M12 3 6 15"/>
      </svg>;
    case 'mountain':
      return <svg {...p}>
        <path d="M3 20l6-10 4 6 3-4 5 8Z"/>
        <circle cx="8" cy="7" r="1.5"/>
      </svg>;
    case 'ticket':
      return <svg {...p}>
        <path d="M4 7h16v3a2 2 0 0 0 0 4v3H4v-3a2 2 0 0 0 0-4z"/>
        <path d="M14 7v10"/>
      </svg>;
    case 'door':
      return <svg {...p}>
        <path d="M7 21V4a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v17"/>
        <path d="M5 21h14"/>
        <circle cx="14" cy="12" r=".8" fill="currentColor"/>
      </svg>;
    case 'chat':
      return <svg {...p}>
        <path d="M4 5h16v11H9l-5 4z"/>
      </svg>;
    case 'foot':
      return <svg {...p}>
        <ellipse cx="12" cy="16" rx="4" ry="5"/>
        <circle cx="8" cy="8" r="1.5"/><circle cx="12" cy="6" r="1.5"/>
        <circle cx="16" cy="8" r="1.5"/><circle cx="18" cy="12" r="1.2"/>
      </svg>;
    case 'tea':
      return <svg {...p}>
        <path d="M5 9h12v5a4 4 0 0 1-4 4H9a4 4 0 0 1-4-4z"/>
        <path d="M17 11h2a2 2 0 0 1 0 4h-2"/>
        <path d="M9 5c0 1 1 1 1 2M13 5c0 1 1 1 1 2"/>
      </svg>;
    case 'brush':
      return <svg {...p}>
        <path d="M14 5l5 5-9 9-5-2 9-12z"/>
        <path d="M5 17l-2 4 4-2"/>
      </svg>;
    case 'wave':
      return <svg {...p}>
        <path d="M3 10c2-3 4-3 6 0s4 3 6 0 4-3 6 0"/>
        <path d="M3 16c2-3 4-3 6 0s4 3 6 0 4-3 6 0"/>
      </svg>;
    case 'check':
      return <svg {...p}>
        <rect x="4" y="4" width="16" height="16" rx="3"/>
        <path d="M8 12l3 3 5-6"/>
      </svg>;
    case 'spark':
      return <svg {...p}>
        <path d="M12 3v5M12 16v5M3 12h5M16 12h5M6 6l3 3M15 15l3 3M6 18l3-3M15 9l3-3"/>
      </svg>;
    case 'eye':
      return <svg {...p}>
        <path d="M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12Z"/>
        <circle cx="12" cy="12" r="3"/>
      </svg>;
    case 'hands':
      return <svg {...p}>
        <path d="M4 14c0-3 2-4 4-4 1 0 2 1 2 2v5c0 2-2 3-4 3s-2-2-2-2z"/>
        <path d="M20 14c0-3-2-4-4-4-1 0-2 1-2 2v5c0 2 2 3 4 3s2-2 2-2z"/>
      </svg>;
    case 'smile':
      return <svg {...p}>
        <circle cx="12" cy="12" r="9"/>
        <path d="M8 14c1 2 3 2.5 4 2.5S14 16 15 14"/>
        <circle cx="9" cy="10" r=".8" fill="currentColor"/>
        <circle cx="15" cy="10" r=".8" fill="currentColor"/>
      </svg>;
    case 'moon':
      return <svg {...p}>
        <path d="M20 14a8 8 0 1 1-9-10 6 6 0 0 0 9 10Z"/>
      </svg>;
    case 'art':
      return <svg {...p}>
        <rect x="4" y="4" width="16" height="14" rx="2"/>
        <path d="M4 14l5-5 4 4 3-2 4 3"/>
        <circle cx="8" cy="8" r="1"/>
      </svg>;
    case 'drop':
      return <svg {...p}>
        <path d="M12 3s6 7 6 11a6 6 0 0 1-12 0c0-4 6-11 6-11Z"/>
        <path d="M9 14c0 2 1 3 2 3"/>
      </svg>;
    case 'block':
      return <svg {...p}>
        <rect x="5" y="8" width="14" height="9" rx="1"/>
        <path d="M5 11h14"/>
      </svg>;
    case 'crisp':
      return <svg {...p}>
        <path d="M3 12c3-2 6-2 9 0s6 2 9 0"/>
        <path d="M3 16c3-2 6-2 9 0s6 2 9 0"/>
        <path d="M6 8l2-2M12 7l2-2M18 8l2-2"/>
      </svg>;
    case 'frame':
      return <svg {...p}>
        <rect x="4" y="4" width="16" height="16" rx="1"/>
        <path d="M8 8h8v8H8z"/>
      </svg>;
    case 'bag':
      return <svg {...p}>
        <path d="M5 8h14l-1 12H6z"/>
        <path d="M8 8V6a4 4 0 0 1 8 0v2"/>
      </svg>;
    case 'bed':
      return <svg {...p}>
        <path d="M3 18V8"/>
        <path d="M3 12h18v6"/>
        <circle cx="8" cy="12" r="2"/>
      </svg>;
    case 'firework':
      return <svg {...p}>
        <path d="M12 3v4M12 17v4M3 12h4M17 12h4M6 6l3 3M15 15l3 3M6 18l3-3M15 9l3-3"/>
        <circle cx="12" cy="12" r="1.5" fill="currentColor"/>
      </svg>;
    case 'cloud':
      return <svg {...p}>
        <path d="M7 16a4 4 0 0 1 0-8 5 5 0 0 1 9 1 3 3 0 0 1 0 7H7Z"/>
      </svg>;
    case 'flower':
      return <svg {...p}>
        <circle cx="12" cy="12" r="2"/>
        <ellipse cx="12" cy="6" rx="2" ry="3"/>
        <ellipse cx="12" cy="18" rx="2" ry="3"/>
        <ellipse cx="6" cy="12" rx="3" ry="2"/>
        <ellipse cx="18" cy="12" rx="3" ry="2"/>
      </svg>;
    case 'anchor':
      return <svg {...p}>
        <circle cx="12" cy="6" r="2"/>
        <path d="M12 8v12"/>
        <path d="M8 12h8"/>
        <path d="M5 16a7 7 0 0 0 14 0"/>
      </svg>;
    case 'shine':
      return <svg {...p}>
        <path d="M12 3l2 6 6 1-5 4 2 6-5-3-5 3 2-6-5-4 6-1z"/>
      </svg>;
    default:
      return <svg {...p}><circle cx="12" cy="12" r="6"/></svg>;
  }
};

Object.assign(window, { WagashiArt, HeroArt, OptIcon });
