/* global React */
/* ============================================================
   Hand-drawn line-art illustrations for Roman & Yana
   All use currentColor so they tint with the surrounding palette
   ============================================================ */

/* ---- big floral sprig — for hero corners ---- */
const FloralSprig = ({ className, style }) => (
  <svg
    viewBox="0 0 220 340"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1.1"
    strokeLinecap="round"
    strokeLinejoin="round"
    preserveAspectRatio="xMidYMid meet"
  >
    {/* main bending stem */}
    <path d="M30 330 C 50 280, 70 220, 90 170 C 105 130, 125 90, 145 60 C 155 45, 160 30, 158 18" />
    {/* secondary stems */}
    <path d="M70 220 C 60 200, 50 188, 30 178" />
    <path d="M95 170 C 110 160, 130 162, 150 158" />
    <path d="M120 110 C 100 100, 80 96, 55 100" />
    <path d="M135 75 C 150 70, 170 76, 190 80" />

    {/* leaves — almond shapes ----- */}
    {[
      [56, 305, -38, 1],
      [70, 270, -45, 1.1],
      [80, 232, -50, 1.05],
      [60, 195, -110, 0.9],
      [40, 182, -130, 0.85],
      [98, 200, -30, 0.95],
      [88, 165, -55, 1.05],
      [115, 165, 30, 0.9],
      [138, 156, 45, 0.95],
      [105, 130, -120, 0.9],
      [82, 115, -150, 0.85],
      [60, 102, -160, 0.8],
      [128, 100, 50, 0.9],
      [148, 76, 35, 1],
      [170, 80, 55, 0.9],
      [185, 78, 70, 0.85],
      [155, 40, -10, 0.9],
      [148, 22, -20, 0.85],
    ].map(([x, y, r, s], i) => (
      <g key={i} transform={`translate(${x} ${y}) rotate(${r}) scale(${s})`}>
        <path d="M 0 0 C 4 -6, 4 -16, 0 -22 C -4 -16, -4 -6, 0 0 Z" />
        <path d="M 0 -2 L 0 -20" strokeWidth=".5" opacity=".6" />
      </g>
    ))}

    {/* small flower buds */}
    {[[148, 60], [98, 138], [60, 215]].map(([x, y], i) => (
      <g key={`b${i}`} transform={`translate(${x} ${y})`}>
        <circle cx="0" cy="0" r="2.6" />
        <circle cx="-3" cy="-2" r="1.6" />
        <circle cx="3" cy="-2" r="1.6" />
        <circle cx="0" cy="-3.5" r="1.4" />
      </g>
    ))}

    {/* tiny berries */}
    {[[40, 178], [188, 80], [108, 200]].map(([x, y], i) => (
      <circle key={`be${i}`} cx={x} cy={y} r="1.4" fill="currentColor" />
    ))}
  </svg>
);

/* ---- small bouquet — for invitation strip ends ---- */
const BouquetSprig = ({ className, style }) => (
  <svg
    viewBox="0 0 140 200"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    <path d="M70 195 C 70 160, 70 120, 70 80 C 70 50, 64 30, 50 18" />
    <path d="M70 130 C 60 120, 48 116, 30 116" />
    <path d="M70 150 C 84 140, 96 138, 112 140" />
    <path d="M70 95 C 56 90, 44 88, 30 90" />
    <path d="M70 70 C 84 64, 96 64, 108 68" />
    {/* leaves */}
    {[[40, 130, -50, 1], [30, 116, -90, .9], [98, 138, 60, .95], [115, 142, 80, .85],
      [42, 92, -70, .9], [98, 70, 60, .9], [60, 50, -30, 1], [78, 40, 30, .95]].map(([x, y, r, s], i) => (
      <g key={i} transform={`translate(${x} ${y}) rotate(${r}) scale(${s})`}>
        <path d="M 0 0 C 4 -6, 4 -16, 0 -22 C -4 -16, -4 -6, 0 0 Z" />
      </g>
    ))}
    {/* central flower */}
    <g transform="translate(50 18)">
      <circle r="3.5" />
      <circle r="6" opacity=".6" />
      <circle r="2" fill="currentColor" />
    </g>
    {/* secondary buds */}
    {[[112, 60], [30, 90]].map(([x, y], i) => (
      <g key={i} transform={`translate(${x} ${y})`}>
        <circle r="2.4" />
        <circle cy="-3" r="1.2" />
      </g>
    ))}
  </svg>
);

/* ---- olive branch — long, horizontal ---- */
const OliveBranch = ({ className, style }) => (
  <svg
    viewBox="0 0 360 90"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    <path d="M10 50 C 80 30, 160 30, 240 40 C 290 46, 330 52, 350 56" />
    {[[40, 50, -60], [70, 40, -70], [100, 36, -75], [130, 34, -80],
      [160, 34, -85], [195, 36, -88], [230, 40, 80], [260, 44, 75],
      [290, 50, 70], [50, 60, 70], [85, 56, 75], [120, 54, 80],
      [155, 52, 85], [195, 54, 92], [225, 60, 98], [275, 66, 102]].map(([x, y, r], i) => (
      <g key={i} transform={`translate(${x} ${y}) rotate(${r})`}>
        <ellipse cx="0" cy="-6" rx="3" ry="10" />
      </g>
    ))}
    {/* olives */}
    {[[160, 36], [200, 42], [232, 48]].map(([x, y], i) => (
      <circle key={i} cx={x} cy={y} r="2" fill="currentColor" />
    ))}
  </svg>
);

/* ---- candle with bow — for schedule icons ---- */
const CandleIcon = ({ size = 60 }) => (
  <svg width={size} height={size} viewBox="0 0 60 80" fill="none" stroke="currentColor"
       strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round" className="line-art">
    {/* flame */}
    <path d="M30 10 C 27 14, 26 18, 30 22 C 34 18, 33 14, 30 10 Z" />
    {/* wick */}
    <path d="M30 22 L 30 26" />
    {/* candle */}
    <rect x="26" y="26" width="8" height="38" rx="1" />
    {/* base */}
    <path d="M22 64 L 38 64 L 36 70 L 24 70 Z" />
    <path d="M24 70 L 36 70" />
    {/* bow */}
    <path d="M22 40 C 16 36, 14 42, 20 44 C 22 44, 26 42, 30 44 C 34 42, 38 44, 40 44 C 46 42, 44 36, 38 40" />
    <path d="M30 44 L 28 56 M 30 44 L 32 56" />
  </svg>
);

/* ---- church / cathedral ---- */
const ChurchIcon = ({ size = 60 }) => (
  <svg width={size} height={size} viewBox="0 0 70 80" fill="none" stroke="currentColor"
       strokeWidth="1.1" strokeLinecap="round" strokeLinejoin="round" className="line-art">
    {/* cross */}
    <path d="M35 4 L 35 14 M 31 8 L 39 8" />
    {/* central dome */}
    <path d="M28 16 C 28 12, 42 12, 42 16" />
    <path d="M28 16 L 28 24 L 22 30 L 22 70" />
    <path d="M42 16 L 42 24 L 48 30 L 48 70" />
    {/* side spires */}
    <path d="M10 38 L 14 30 L 18 38" />
    <path d="M14 38 L 14 70" />
    <path d="M52 38 L 56 30 L 60 38" />
    <path d="M56 38 L 56 70" />
    <path d="M22 70 L 48 70" />
    <path d="M14 70 L 22 70" />
    <path d="M48 70 L 56 70" />
    {/* arched door */}
    <path d="M31 70 L 31 58 C 31 53, 39 53, 39 58 L 39 70" />
    {/* window */}
    <circle cx="35" cy="36" r="3" />
  </svg>
);

/* ---- champagne flutes clinking ---- */
const FlutesIcon = ({ size = 60 }) => (
  <svg width={size} height={size} viewBox="0 0 70 80" fill="none" stroke="currentColor"
       strokeWidth="1.1" strokeLinecap="round" strokeLinejoin="round" className="line-art">
    {/* bubbles */}
    <circle cx="18" cy="8" r="1" fill="currentColor" />
    <circle cx="52" cy="6" r=".8" fill="currentColor" />
    <circle cx="24" cy="4" r=".7" fill="currentColor" />
    <circle cx="46" cy="12" r=".6" fill="currentColor" />
    {/* left flute — coupe shape */}
    <path d="M16 18 C 16 30, 22 36, 28 36 C 34 36, 40 30, 40 18" />
    <path d="M16 18 L 40 18" />
    <path d="M22 22 C 26 24, 34 24, 38 22" strokeWidth=".9" opacity=".5" />
    <path d="M28 36 L 28 60" />
    <path d="M28 60 C 24 60, 20 62, 18 66" />
    <path d="M28 60 C 32 60, 36 62, 38 66" />
    <path d="M18 68 L 38 68" />
    {/* right flute — taller narrow */}
    <path d="M34 14 C 34 28, 40 34, 46 34 C 52 34, 58 28, 58 14" />
    <path d="M34 14 L 58 14" />
    <path d="M38 18 C 42 20, 50 20, 54 18" strokeWidth=".9" opacity=".5" />
    <path d="M46 34 L 46 60" />
    <path d="M46 60 C 42 60, 38 62, 36 66" />
    <path d="M46 60 C 50 60, 54 62, 56 66" />
    <path d="M36 68 L 56 68" />
    {/* clink sparkle */}
    <path d="M36 10 L 38 8 M 38 12 L 36 10" strokeWidth="1" />
  </svg>
);

/* ---- rings ---- */
const RingsIcon = ({ size = 60 }) => (
  <svg width={size} height={size} viewBox="0 0 80 60" fill="none" stroke="currentColor"
       strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round" className="line-art">
    <circle cx="28" cy="38" r="15" />
    <circle cx="50" cy="38" r="15" />
    {/* sparkle on top of left ring */}
    <path d="M22 16 L 22 6 M 17 11 L 27 11" strokeWidth=".9" />
    <path d="M14 22 L 14 18 M 12 20 L 16 20" strokeWidth=".7" />
  </svg>
);

/* ---- calendar / save the date ---- */
const CalendarIcon = ({ size = 60 }) => (
  <svg width={size} height={size} viewBox="0 0 70 70" fill="none" stroke="currentColor"
       strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round" className="line-art">
    <rect x="10" y="14" width="50" height="46" rx="1.5" />
    <path d="M10 24 L 60 24" />
    <path d="M22 8 L 22 18 M 48 8 L 48 18" />
    {/* date dots — 5 of 9 */}
    {[[20, 34], [30, 34], [40, 34], [50, 34],
      [20, 42], [30, 42], [40, 42], [50, 42],
      [20, 50], [30, 50]].map(([x, y], i) => (
      <circle key={i} cx={x} cy={y} r="1" fill="currentColor" />
    ))}
    {/* day-of circle */}
    <circle cx="40" cy="50" r="4.5" strokeWidth=".9" />
  </svg>
);

/* ---- dress / dress code ---- */
const DressIcon = ({ size = 56 }) => (
  <svg width={size} height={size} viewBox="0 0 60 70" fill="none" stroke="currentColor"
       strokeWidth="1.1" strokeLinecap="round" strokeLinejoin="round" className="line-art">
    <path d="M22 10 L 22 18 L 30 22 L 38 18 L 38 10" />
    <path d="M22 18 L 12 40 L 18 42 L 10 64 L 50 64 L 42 42 L 48 40 L 38 18" />
    <path d="M30 22 L 30 36" strokeWidth=".7" opacity=".7" />
  </svg>
);

/* ---- small inline icons ---- */
const InlineIcon = {
  pin: () => (
    <svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" strokeWidth="1.2" className="line-art">
      <path d="M8 14s5-5 5-9a5 5 0 0 0-10 0c0 4 5 9 5 9z" />
      <circle cx="8" cy="5" r="1.5" />
    </svg>
  ),
  arrow: () => (
    <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="1.2" className="line-art">
      <path d="M6 14l6 6 6-6M12 4v16" />
    </svg>
  ),
  check: () => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.4" className="line-art">
      <path d="M4 12l5 5 11-11" />
    </svg>
  ),
  x: () => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.3" className="line-art">
      <path d="M5 5l14 14M19 5L5 19" />
    </svg>
  ),
  music: () => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round">
      <path d="M9 18V5l10-2v13" />
      <circle cx="7" cy="18" r="2" />
      <circle cx="17" cy="16" r="2" />
    </svg>
  ),
  insta: () => (
    <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" strokeWidth="1.2">
      <rect x="3" y="3" width="18" height="18" rx="5" />
      <circle cx="12" cy="12" r="4" />
      <circle cx="17.5" cy="6.5" r=".7" fill="currentColor" />
    </svg>
  ),
  telegram: () => (
    <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" strokeWidth="1.2" strokeLinejoin="round">
      <path d="M3 11.5l17-7-3 14-5-3-3 4v-5L20 4.5" />
    </svg>
  ),
};

/* ---- squiggle path connector — connects two photos ---- */
const Squiggle = ({ className, style }) => (
  <svg viewBox="0 0 360 220" className={`line-art ${className || ''}`} style={style}
       fill="none" stroke="currentColor" strokeWidth="1" strokeLinecap="round">
    <path d="M10 110 C 50 60, 90 160, 130 100 C 160 60, 200 160, 240 100 C 280 50, 320 160, 350 110"
          opacity=".7" />
    <path d="M10 130 C 60 100, 100 180, 140 130 C 180 90, 220 180, 260 130 C 300 100, 340 180, 350 140"
          opacity=".4" strokeWidth=".7" />
  </svg>
);

/* ---- tiny line-heart ---- */
const HeartLine = ({ size = 18 }) => (
  <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor"
       strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round" className="line-art">
    <path d="M12 20 C 4 14, 2 9, 6 6 C 9 4, 11 6, 12 8 C 13 6, 15 4, 18 6 C 22 9, 20 14, 12 20 Z" />
  </svg>
);

/* ---- ornamental short divider ---- */
const OrnamentDivider = ({ width = 220, color }) => (
  <svg width={width} height="18" viewBox="0 0 220 18" fill="none"
       stroke={color || 'currentColor'} strokeWidth="1" strokeLinecap="round" className="line-art">
    <path d="M4 9 L 96 9" />
    <path d="M124 9 L 216 9" />
    {/* center diamond */}
    <path d="M110 3 L 116 9 L 110 15 L 104 9 Z" />
    <circle cx="110" cy="9" r="1.2" fill={color || 'currentColor'} />
    {/* tiny leaves on each end */}
    <path d="M4 9 C 0 6, 0 12, 4 9" />
    <path d="M216 9 C 220 6, 220 12, 216 9" />
  </svg>
);

/* ---- ribbon flourish ---- */
const RibbonFlourish = ({ className, style }) => (
  <svg viewBox="0 0 320 80" className={`line-art ${className || ''}`} style={style}
       fill="none" stroke="currentColor" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round">
    <path d="M10 50 C 60 30, 120 70, 160 40 C 200 10, 260 70, 310 50" />
    <path d="M160 40 L 154 22 M 160 40 L 166 22" strokeWidth=".9" />
    <path d="M154 22 C 150 18, 156 14, 160 18" />
    <path d="M166 22 C 170 18, 164 14, 160 18" />
  </svg>
);

/* ---- big bouquet for donation section ---- */
const BigBouquet = ({ className, style }) => (
  <svg viewBox="0 0 280 360" className={`line-art ${className || ''}`} style={style}
       fill="none" stroke="currentColor" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round">
    {/* stems gathered at bottom */}
    <path d="M140 350 C 138 280, 132 200, 110 120 C 96 80, 72 60, 50 50" />
    <path d="M140 350 C 142 280, 148 200, 168 130 C 184 84, 210 60, 234 56" />
    <path d="M140 350 C 140 280, 140 210, 144 140 C 148 90, 156 50, 160 28" />
    <path d="M140 350 C 130 320, 90 280, 40 270" />
    <path d="M140 350 C 150 320, 190 280, 240 268" />
    {/* binding */}
    <path d="M128 350 L 152 350" strokeWidth="1.4" />
    <path d="M132 344 L 148 344" strokeWidth="1" />

    {/* large center flower */}
    <g transform="translate(160 28)">
      <circle r="9" />
      <circle r="14" opacity=".5" />
      <circle r="20" opacity=".35" />
      <circle r="4" fill="currentColor" />
    </g>
    {/* secondary flowers */}
    <g transform="translate(50 50)">
      <circle r="6" />
      <circle r="11" opacity=".5" />
      <circle r="2.5" fill="currentColor" />
    </g>
    <g transform="translate(234 56)">
      <circle r="7" />
      <circle r="12" opacity=".5" />
      <circle r="3" fill="currentColor" />
    </g>
    {/* buds */}
    {[[40, 270], [240, 268], [110, 90], [180, 90], [80, 180], [200, 170]].map(([x, y], i) => (
      <g key={i} transform={`translate(${x} ${y})`}>
        <circle r="3" />
        <circle r="5" opacity=".5" />
      </g>
    ))}
    {/* leaves */}
    {[[90, 200, -50], [70, 230, -65], [110, 260, -80],
      [190, 200, 50], [210, 230, 65], [170, 260, 80],
      [140, 220, 0], [125, 180, -10], [155, 180, 10],
      [100, 150, -45], [180, 150, 45], [80, 110, -55],
      [200, 110, 55], [125, 130, -20], [155, 130, 20]].map(([x, y, r], i) => (
      <g key={`l${i}`} transform={`translate(${x} ${y}) rotate(${r})`}>
        <path d="M 0 0 C 5 -8, 5 -18, 0 -26 C -5 -18, -5 -8, 0 0 Z" />
      </g>
    ))}
  </svg>
);

/* ---- tall vase with mixed flowers ---- */
const VaseBouquet = ({ className, style }) => (
  <svg
    viewBox="0 0 360 480"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1.2"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    <path d="M180 360 C 178 320, 176 260, 172 200 C 168 140, 168 100, 170 64" />
    <path d="M180 360 C 184 300, 192 240, 206 184 C 220 132, 240 100, 256 80" />
    <path d="M180 360 C 174 320, 156 280, 132 240 C 110 204, 96 178, 88 156" />
    <path d="M180 360 C 188 320, 200 280, 224 250 C 246 222, 270 210, 290 208" />
    <path d="M180 360 C 178 316, 172 274, 160 234 C 150 198, 144 168, 144 140" />
    <g transform="translate(88 156)">
      {[0, 36, 72, 108, 144, 180, 216, 252, 288, 324].map((a, i) => (
        <g key={i} transform={`rotate(${a})`}>
          <path d="M 0 0 C -3 -10, -2 -22, 0 -28 C 2 -22, 3 -10, 0 0 Z" />
        </g>
      ))}
      <circle r="4" />
      <circle r="2.4" fill="currentColor" />
    </g>
    <g transform="translate(256 80)" strokeWidth="1.2">
      <path d="M 0 0 C -8 -6, -16 -12, -22 -22 C -26 -10, -22 -4, -12 0" />
      <path d="M 0 0 C 4 -10, 8 -22, 18 -28 C 18 -16, 14 -8, 6 -2" />
      <path d="M 0 0 C 12 -6, 22 -10, 30 -18 C 22 -22, 12 -22, 4 -14" />
      <path d="M 0 0 C -14 -2, -24 0, -32 6 C -22 12, -10 12, -2 6" />
      <path d="M 0 0 C 8 8, 18 16, 28 16 C 24 6, 16 0, 6 -2" />
      <path d="M 0 0 C -8 8, -18 12, -28 12 C -24 4, -14 -2, -6 -2" />
      <path d="M 0 0 C -2 -14, 4 -26, 14 -34 C 14 -22, 8 -14, 2 -8" />
      <path d="M 0 0 C -6 -12, -16 -20, -26 -22 C -20 -12, -14 -6, -6 -2" />
      <circle r="2" fill="currentColor" />
    </g>
    <g transform="translate(132 240)" strokeWidth="1.2">
      <path d="M 0 0 C -8 -2, -14 -8, -14 -14 C -8 -16, -2 -10, 0 -6" />
      <path d="M 0 0 C 8 -4, 14 -10, 12 -16 C 6 -16, 0 -10, -2 -6" />
      <path d="M 0 0 C -4 -8, -2 -16, 4 -20 C 6 -14, 2 -8, 0 -4" />
      <path d="M 0 0 C 2 6, 10 8, 14 4 C 10 -2, 4 -2, 0 0 Z" />
      <circle r="2" fill="currentColor" />
    </g>
    <g transform="translate(160 234)">
      {[0, 45, 90, 135, 180, 225, 270, 315].map((a, i) => (
        <g key={i} transform={`rotate(${a})`}>
          <path d="M 0 0 L 0 -18" strokeWidth="1.2" />
          <path d="M 0 -16 C -2 -14, 2 -14, 0 -16" />
        </g>
      ))}
      <circle r="3" fill="currentColor" />
    </g>
    <g transform="translate(290 208)" strokeWidth="1.2">
      <path d="M 0 0 C -4 -6, -4 -14, 0 -18 C 4 -14, 4 -6, 0 0 Z" />
      <path d="M -3 -3 L 3 -3" />
    </g>
    {[[160, 290, -50, 1], [200, 290, 50, 1], [148, 200, -70, .85],
      [220, 200, 60, .85], [130, 260, -85, .8], [240, 260, 80, .8],
      [200, 130, 40, .9]].map(([x, y, r, s], i) => (
      <g key={i} transform={`translate(${x} ${y}) rotate(${r}) scale(${s})`}>
        <path d="M 0 0 C 6 -8, 6 -22, 0 -30 C -6 -22, -6 -8, 0 0 Z" strokeWidth="1.2" />
      </g>
    ))}
    <path d="M 140 360 C 134 380, 130 396, 132 412 C 134 432, 150 446, 180 446 C 210 446, 226 432, 228 412 C 230 396, 226 380, 220 360 Z" />
    <path d="M 144 358 C 152 358, 168 358, 180 358 C 192 358, 208 358, 216 358" />
    <path d="M 130 458 C 160 462, 200 462, 230 458" strokeWidth="1.2" opacity=".55" />
  </svg>
);

/* ---- hanging disco ball with sparkle ---- */
const DiscoBall = ({ className, style }) => (
  <svg
    viewBox="0 0 180 220"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1.2"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    <path d="M90 4 L 90 36" />
    <path d="M82 36 L 98 36 L 98 46 L 82 46 Z" />
    <circle cx="90" cy="108" r="62" />
    <ellipse cx="90" cy="108" rx="62" ry="22" />
    <ellipse cx="90" cy="108" rx="62" ry="42" />
    <ellipse cx="90" cy="108" rx="22" ry="62" />
    <ellipse cx="90" cy="108" rx="42" ry="62" />
    <path d="M 156 168 L 168 180 M 162 168 L 168 174 M 156 174 L 162 180" strokeWidth="1.2" />
    <path d="M 156 174 C 162 176, 168 178, 174 180" strokeWidth="1.2" opacity=".7" />
  </svg>
);

/* ---- three candles with bows ---- */
const CandleTrio = ({ className, style }) => (
  <svg
    viewBox="0 0 240 260"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1.2"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    <path d="M 14 14 L 14 30 M 6 22 L 22 22" strokeWidth="1.2" />
    <path d="M 28 6 L 28 14 M 24 10 L 32 10" strokeWidth="1.2" />
    <g>
      <path d="M 60 12 C 56 16, 56 22, 60 26 C 64 22, 64 16, 60 12 Z" />
      <path d="M 60 26 L 60 32" />
      <path d="M 54 32 L 54 220" />
      <path d="M 66 32 L 66 220" />
      <path d="M 52 220 L 68 220" />
      <path d="M 54 120 C 44 116, 40 124, 50 128 C 56 128, 62 124, 60 122" />
      <path d="M 66 120 C 76 116, 80 124, 70 128 C 64 128, 58 124, 60 122" />
      <path d="M 56 128 L 50 158 M 64 128 L 70 158" />
      <path d="M 50 158 C 46 162, 54 162, 50 158" />
      <path d="M 70 158 C 74 162, 66 162, 70 158" />
    </g>
    <g>
      <path d="M 120 36 C 116 40, 116 46, 120 50 C 124 46, 124 40, 120 36 Z" />
      <path d="M 120 50 L 120 56" />
      <path d="M 114 56 L 114 220" />
      <path d="M 126 56 L 126 220" />
      <path d="M 112 220 L 128 220" />
      <path d="M 114 140 C 104 136, 100 144, 110 148 C 116 148, 122 144, 120 142" />
      <path d="M 126 140 C 136 136, 140 144, 130 148 C 124 148, 118 144, 120 142" />
      <path d="M 116 148 L 110 174 M 124 148 L 130 174" />
    </g>
    <g>
      <path d="M 180 20 C 176 24, 176 30, 180 34 C 184 30, 184 24, 180 20 Z" />
      <path d="M 180 34 L 180 40" />
      <path d="M 174 40 L 174 220" />
      <path d="M 186 40 L 186 220" />
      <path d="M 172 220 L 188 220" />
      <path d="M 174 124 C 164 120, 160 128, 170 132 C 176 132, 182 128, 180 126" />
      <path d="M 186 124 C 196 120, 200 128, 190 132 C 184 132, 178 128, 180 126" />
      <path d="M 176 132 L 170 162 M 184 132 L 190 162" />
      <path d="M 170 162 C 166 166, 174 166, 170 162" />
      <path d="M 190 162 C 194 166, 186 166, 190 162" />
    </g>
    <path d="M 40 232 L 210 232" strokeWidth="1.2" opacity=".55" />
  </svg>
);

/* ---- wine bottle + glass on table ---- */
const WineAndGlass = ({ className, style }) => (
  <svg
    viewBox="0 0 220 280"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1.2"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    <path d="M 30 26 L 30 42 M 22 34 L 38 34" strokeWidth="1.2" />
    <path d="M 60 14 L 60 22 M 56 18 L 64 18" strokeWidth="1.2" />
    <path d="M 18 56 L 18 64 M 14 60 L 22 60" strokeWidth="1.2" />
    <g>
      <path d="M 72 36 L 72 70" />
      <path d="M 92 36 L 92 70" />
      <path d="M 72 36 L 92 36" />
      <path d="M 72 70 C 56 80, 50 100, 50 124 L 50 248" />
      <path d="M 92 70 C 108 80, 114 100, 114 124 L 114 248" />
      <path d="M 50 248 L 114 248" />
      <path d="M 72 50 L 92 50" />
      <rect x="56" y="160" width="52" height="60" />
      <path d="M 82 200 C 72 192, 70 186, 74 182 C 78 180, 80 184, 82 186 C 84 184, 86 180, 90 182 C 94 186, 92 192, 82 200 Z" strokeWidth="1.2" />
    </g>
    <g>
      <path d="M 138 110 C 138 138, 154 152, 168 152 C 182 152, 198 138, 198 110" />
      <path d="M 138 110 L 198 110" />
      <path d="M 168 152 L 168 232" />
      <path d="M 148 244 L 188 244" />
      <path d="M 168 232 C 162 232, 156 236, 152 244" />
      <path d="M 168 232 C 174 232, 180 236, 184 244" />
      <path d="M 144 124 C 154 120, 184 120, 194 124" strokeWidth="1.2" opacity=".55" />
    </g>
  </svg>
);

/* ---- hand holding a champagne coupe ---- */
const HandCoupe = ({ className, style }) => (
  <svg
    viewBox="0 0 220 240"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1.2"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    <path d="M 50 36 C 50 70, 84 92, 110 92 C 136 92, 170 70, 170 36" />
    <path d="M 50 36 L 170 36" />
    <path d="M 60 48 C 80 52, 130 54, 160 50" strokeWidth="1.2" opacity=".6" />
    <path d="M 70 56 C 90 60, 130 60, 150 58" strokeWidth="1.2" opacity=".5" />
    <path d="M 110 92 L 110 160" />
    <path d="M 86 156 C 80 144, 86 134, 100 134 C 112 134, 118 142, 118 152" />
    <path d="M 86 156 C 80 168, 80 180, 88 188 C 96 196, 104 200, 112 200 C 120 200, 132 196, 138 188" />
    <path d="M 118 152 C 124 152, 130 158, 130 168 C 130 178, 124 188, 118 192" />
    <path d="M 100 134 C 104 130, 108 128, 110 132" />
    <path d="M 108 132 C 112 130, 118 132, 120 138" />
    <path d="M 138 188 C 144 180, 144 168, 140 160" />
    <path d="M 88 188 L 78 224" />
    <path d="M 138 188 L 152 224" />
    <path d="M 78 224 L 152 224" />
  </svg>
);

/* ---- champagne bottle popping ---- */
const ChampagnePop = ({ className, style }) => (
  <svg
    viewBox="0 0 280 220"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1.2"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    <g transform="translate(40 130) rotate(-22)">
      <path d="M 0 0 L 0 30" />
      <path d="M 20 0 L 20 30" />
      <path d="M 0 0 L 20 0" />
      <path d="M 0 30 C -12 36, -16 50, -16 70 L -16 160" />
      <path d="M 20 30 C 32 36, 36 50, 36 70 L 36 160" />
      <path d="M -16 160 L 36 160" />
      <path d="M 0 14 L 20 14" />
      <ellipse cx="10" cy="160" rx="26" ry="4" strokeWidth="1.2" opacity=".5" />
    </g>
    <g transform="translate(146 28) rotate(20)">
      <rect x="-8" y="-12" width="16" height="24" rx="2" />
      <path d="M -8 -4 L 8 -4" strokeWidth="1.2" />
    </g>
    <path d="M 96 88 C 110 80, 124 76, 138 72" strokeWidth="1.2" />
    <path d="M 100 100 C 116 96, 134 92, 150 90" strokeWidth="1.2" />
    <path d="M 104 116 C 120 116, 138 112, 154 108" strokeWidth="1.2" opacity=".75" />
    <path d="M 112 60 C 116 56, 120 64, 124 60 C 128 56, 132 64, 136 60" strokeWidth="1.2" />
    <path d="M 144 50 C 148 46, 152 54, 156 50" strokeWidth="1.2" />
    {[[120, 130], [134, 122], [148, 118], [164, 102], [156, 76]].map(([x, y], i) => (
      <circle key={i} cx={x} cy={y} r="1.6" fill="currentColor" />
    ))}
  </svg>
);

/* ---- small 4-point sparkle filler ---- */
const Sparkle = ({ size = 28, className, style }) => (
  <svg
    width={size} height={size} viewBox="0 0 28 28"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none" stroke="currentColor"
    strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round"
  >
    <path d="M 14 2 C 14 8, 14 12, 18 14 C 14 16, 14 20, 14 26 C 14 20, 14 16, 10 14 C 14 12, 14 8, 14 2 Z" />
  </svg>
);

/* ---- wedding rings (sketchy, decorative) ---- */
const SketchRings = ({ className, style }) => (
  <svg
    viewBox="0 0 220 140"
    className={`line-art ${className || ''}`}
    style={style}
    fill="none"
    stroke="currentColor"
    strokeWidth="1.2"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    <circle cx="78" cy="84" r="40" />
    <circle cx="78" cy="84" r="36" strokeWidth="1.2" opacity=".7" />
    <circle cx="140" cy="84" r="40" />
    <circle cx="140" cy="84" r="36" strokeWidth="1.2" opacity=".7" />
    <path d="M 78 32 L 72 44 L 78 56 L 84 44 Z" />
    <path d="M 72 44 L 84 44" />
    <path d="M 78 32 L 78 56" strokeWidth="1.2" opacity=".6" />
    <path d="M 184 36 L 184 50 M 178 43 L 190 43" strokeWidth="1.2" />
  </svg>
);

/* ---- banquet table scene ---- */
const TableScene = ({ className, style }) => (
  <svg
    viewBox="0 0 760 500"
    className={`line-art ${className || ''}`}
    style={style}
    xmlns="http://www.w3.org/2000/svg"
    fill="none"
    stroke="currentColor"
    strokeWidth="1.2"
    strokeLinecap="round"
    strokeLinejoin="round"
  >
    {[
      { x: 130, top: 40,  h: 290 },
      { x: 196, top: 70,  h: 260 },
      { x: 560, top: 60,  h: 270 },
      { x: 626, top: 30,  h: 300 },
    ].map((c, i) => {
      const bowY = c.top + c.h * 0.55;
      return (
        <g key={i}>
          <path d={`M ${c.x} ${c.top - 16} C ${c.x - 3} ${c.top - 10}, ${c.x - 3} ${c.top - 2}, ${c.x} ${c.top + 2} C ${c.x + 3} ${c.top - 2}, ${c.x + 3} ${c.top - 10}, ${c.x} ${c.top - 16} Z`} />
          <path d={`M ${c.x} ${c.top + 2} L ${c.x} ${c.top + 8}`} />
          <path d={`M ${c.x - 4} ${c.top + 8} L ${c.x - 4} ${c.top + c.h}`} />
          <path d={`M ${c.x + 4} ${c.top + 8} L ${c.x + 4} ${c.top + c.h}`} />
          <path d={`M ${c.x - 4} ${bowY} C ${c.x - 14} ${bowY - 4}, ${c.x - 16} ${bowY + 4}, ${c.x - 8} ${bowY + 8} C ${c.x - 2} ${bowY + 8}, ${c.x} ${bowY + 4}, ${c.x} ${bowY + 2}`} />
          <path d={`M ${c.x + 4} ${bowY} C ${c.x + 14} ${bowY - 4}, ${c.x + 16} ${bowY + 4}, ${c.x + 8} ${bowY + 8} C ${c.x + 2} ${bowY + 8}, ${c.x} ${bowY + 4}, ${c.x} ${bowY + 2}`} />
          <path d={`M ${c.x - 8} ${bowY + 8} L ${c.x - 14} ${bowY + 38}`} />
          <path d={`M ${c.x + 8} ${bowY + 8} L ${c.x + 14} ${bowY + 38}`} />
          <path d={`M ${c.x - 14} ${bowY + 38} C ${c.x - 18} ${bowY + 42}, ${c.x - 10} ${bowY + 42}, ${c.x - 14} ${bowY + 38}`} />
          <path d={`M ${c.x + 14} ${bowY + 38} C ${c.x + 18} ${bowY + 42}, ${c.x + 10} ${bowY + 42}, ${c.x + 14} ${bowY + 38}`} />
        </g>
      );
    })}
    <g transform="translate(380 80)">
      <path d="M 0 240 C -4 200, -10 160, -20 120 C -30 84, -36 56, -34 28" />
      <path d="M 0 240 C 4 200, 10 160, 20 120 C 30 84, 36 56, 34 28" />
      <path d="M 0 240 L 0 130 C 0 100, 4 60, 8 20" />
      <path d="M 0 240 C -10 220, -28 200, -50 196" />
      <path d="M 0 240 C 10 220, 28 200, 50 196" />
      <g transform="translate(8 20)">
        <circle r="11" />
        <circle r="6" />
        <circle r="2" fill="currentColor" />
        {[0, 60, 120, 180, 240, 300].map((a, i) => (
          <g key={i} transform={`rotate(${a})`}>
            <path d="M 0 -11 C -4 -16, 4 -16, 0 -11" />
          </g>
        ))}
      </g>
      <g transform="translate(-34 28)">
        <circle r="7" />
        <circle r="2" fill="currentColor" />
      </g>
      <g transform="translate(34 28)">
        <circle r="8" />
        <circle r="2" fill="currentColor" />
      </g>
      {[[-50, 196], [50, 196], [-20, 120], [20, 120], [-10, 180], [10, 180]].map(([x, y], i) => (
        <g key={`b${i}`} transform={`translate(${x} ${y})`}>
          <circle r="3.5" />
        </g>
      ))}
      {[[-12, 180, -45], [12, 180, 45], [-26, 90, -55], [26, 90, 55],
        [-4, 200, -10], [4, 200, 10], [-22, 60, -70], [22, 60, 70]].map(([x, y, r], i) => (
        <g key={`l${i}`} transform={`translate(${x} ${y}) rotate(${r})`}>
          <path d="M 0 0 C 5 -8, 5 -22, 0 -28 C -5 -22, -5 -8, 0 0 Z" />
        </g>
      ))}
    </g>
    <path d="M 60 340 C 200 322, 560 322, 700 340" />
    <path d="M 60 340 L 84 490" />
    <path d="M 700 340 L 676 490" />
    <path d="M 196 340 L 188 490" opacity=".55" />
    <path d="M 332 340 L 326 490" opacity=".55" />
    <path d="M 428 340 L 434 490" opacity=".55" />
    <path d="M 564 340 L 572 490" opacity=".55" />
    <path d="M 84 488 C 110 484, 130 490, 156 486 C 184 490, 210 484, 240 488 C 270 484, 296 490, 322 486 C 350 490, 376 484, 404 488 C 432 484, 458 490, 488 486 C 514 490, 540 484, 568 488 C 598 484, 620 490, 644 486 C 660 490, 670 486, 676 490" />
    <g>
      <ellipse cx="190" cy="334" rx="58" ry="14" />
      <ellipse cx="190" cy="334" rx="46" ry="10" />
      <path d="M 174 326 L 206 326 L 210 334 L 170 334 Z" />
      <path d="M 174 326 L 178 334 M 200 326 L 196 334" opacity=".4" />
      <g transform="translate(190 280)">
        <path d="M -12 0 C -12 16, 12 16, 12 0" />
        <path d="M -12 0 L 12 0" />
        <path d="M 0 16 L 0 36" />
        <path d="M -8 38 L 8 38" />
      </g>
      <g transform="translate(220 268)">
        <path d="M -7 0 C -7 16, 7 16, 7 0 L 5 -22 L -5 -22 Z" />
        <path d="M 0 16 L 0 42" />
        <path d="M -7 44 L 7 44" />
      </g>
    </g>
    <g>
      <ellipse cx="570" cy="334" rx="58" ry="14" />
      <ellipse cx="570" cy="334" rx="46" ry="10" />
      <path d="M 554 326 L 586 326 L 590 334 L 550 334 Z" />
      <path d="M 554 326 L 558 334 M 580 326 L 576 334" opacity=".4" />
      <g transform="translate(570 280)">
        <path d="M -12 0 C -12 16, 12 16, 12 0" />
        <path d="M -12 0 L 12 0" />
        <path d="M 0 16 L 0 36" />
        <path d="M -8 38 L 8 38" />
      </g>
      <g transform="translate(540 268)">
        <path d="M -7 0 C -7 16, 7 16, 7 0 L 5 -22 L -5 -22 Z" />
        <path d="M 0 16 L 0 42" />
        <path d="M -7 44 L 7 44" />
      </g>
    </g>
    <g>
      <ellipse cx="380" cy="338" rx="62" ry="14" />
      <ellipse cx="380" cy="338" rx="50" ry="10" />
      <path d="M 380 348 C 374 360, 388 364, 384 370" opacity=".55" />
    </g>
    <g opacity=".6">
      <path d="M 250 360 C 252 374, 246 384, 240 388" />
      <path d="M 245 372 C 240 370, 236 376, 240 378" />
      <path d="M 510 360 C 508 374, 514 384, 520 388" />
      <path d="M 515 372 C 520 370, 524 376, 520 378" />
    </g>
  </svg>
);

/* ---- dancing wedding figures ---- */
const DancingFigures = ({ className, style }) => {
  const Tux = ({ x, arm = 'down' }) => (
    <g transform={`translate(${x} 60)`}>
      <ellipse cx="0" cy="10" rx="10" ry="12" />
      <path d="M -10 4 C -10 -6, 10 -6, 10 4 C 8 -2, 4 -3, 0 -2 C -4 -3, -8 -2, -10 4 Z" />
      <path d="M -3 22 L -3 28 M 3 22 L 3 28" />
      <path d="M -18 32 C -14 32, -10 30, -8 28 L 0 38 L 8 28 C 10 30, 14 32, 18 32" />
      <path d="M -8 28 L -4 60 L 0 64 L 4 60 L 8 28" />
      <path d="M -5 26 L 0 30 L -5 32 Z" />
      <path d="M  5 26 L 0 30 L  5 32 Z" />
      <circle cx="0" cy="29" r=".9" fill="currentColor" />
      <path d="M -18 32 C -22 40, -22 60, -20 80 L -16 130" />
      <path d="M  18 32 C  22 40,  22 60,  20 80 L  16 130" />
      <path d="M -16 130 L -8 132 L -4 64" />
      <path d="M  16 130 L  8 132 L  4 64" />
      <path d="M -16 130 L -14 220" />
      <path d="M  -8 132 L  -8 220" />
      <path d="M  16 130 L  14 220" />
      <path d="M   8 132 L   8 220" />
      <path d="M -14 220 L -8 220" />
      <path d="M  14 220 L  8 220" />
      <path d="M -16 222 L -6 222 L -8 226 L -18 226 Z" />
      <path d="M  16 222 L  6 222 L  8 226 L  18 226 Z" />
      {arm === 'up' && (
        <g>
          <path d="M -18 32 C -28 12, -34 -16, -32 -38" />
          <path d="M -10 32 C -20 14, -26 -10, -26 -36" />
          <path d="M -32 -38 C -30 -42, -28 -42, -26 -36" />
          <circle cx="-29" cy="-40" r="3.5" />
        </g>
      )}
    </g>
  );

  const Lady = ({ x, arm = 'down' }) => (
    <g transform={`translate(${x} 60)`}>
      <ellipse cx="0" cy="10" rx="9" ry="11" />
      <path d="M -10 6 C -16 22, -16 56, -12 78 L -8 70 L -8 14 Z" />
      <path d="M  10 6 C  16 22,  16 56,  12 78 L  8 70 L  8 14 Z" />
      <path d="M -9 0 C -10 -10, 10 -10, 9 0 C 6 -4, -6 -4, -9 0 Z" />
      <path d="M -2.5 21 L -2.5 26 M 2.5 21 L 2.5 26" />
      <path d="M -14 28 C -8 24, 8 24, 14 28" />
      {arm === 'up' ? (
        <g>
          <path d="M -14 28 C -22 8, -26 -14, -22 -32" />
          <path d="M -10 30 C -16 12, -20 -10, -18 -28" />
          <circle cx="-20" cy="-34" r="3.5" />
        </g>
      ) : (
        <>
          <path d="M -14 28 C -18 50, -20 78, -14 96" />
          <path d="M -10 30 C -12 50, -14 78, -10 96" />
          <path d="M -14 96 C -10 100, -10 100, -10 96" />
        </>
      )}
      {arm === 'side' ? (
        <>
          <path d="M  14 28 C  22 36,  26 60, 22 82" />
          <path d="M  10 30 C  16 38,  20 60, 18 80" />
        </>
      ) : (
        <>
          <path d="M  14 28 C  18 50,  20 78,  14 96" />
          <path d="M  10 30 C  12 50,  14 78,  10 96" />
          <path d="M  14 96 C  10 100,  10 100,  10 96" />
        </>
      )}
      <path d="M -14 28 L -16 56" />
      <path d="M  14 28 L  16 56" />
      <path d="M -16 56 L 16 56" />
      <path d="M -16 56 L -22 120 L -28 220" />
      <path d="M  16 56 L  22 120 L  28 220" />
      <path d="M -28 220 L 28 220" />
      <path d="M -28 222 C -20 226, -12 220, -4 224 C 4 220, 12 226, 20 222 C 24 220, 26 224, 28 222" />
      <path d="M -8 80 C -10 130, -10 180, -12 218" />
      <path d="M  8 80 C  10 130,  10 180,  12 218" />
    </g>
  );

  return (
    <svg
      viewBox="0 0 760 320"
      className={`dancing-figures line-art ${className || ''}`}
      style={style}
      xmlns="http://www.w3.org/2000/svg"
      fill="none"
      stroke="currentColor"
      strokeWidth="1.2"
      strokeLinecap="round"
      strokeLinejoin="round"
    >
      <g>
        <path d="M380 4 L 380 22" />
        <g transform="translate(380 36)">
          <circle r="14" />
          <ellipse rx="14" ry="5" />
          <ellipse rx="14" ry="10" />
          <ellipse rx="5"  ry="14" />
          <ellipse rx="10" ry="14" />
        </g>
        <path d="M398 56 L 406 64" />
        <path d="M406 56 L 398 64" />
      </g>
      <g transform="translate(0 30)">
        <Tux  x={70} />
        <Lady x={200} arm="up" />
        <Tux  x={330} arm="up" />
        <Lady x={460} arm="side" />
        <Tux  x={590} />
        <Lady x={700} />
      </g>
    </svg>
  );
};

/* Make available to other Babel scripts */
Object.assign(window, {
  FloralSprig,
  BouquetSprig,
  OliveBranch,
  CandleIcon,
  ChurchIcon,
  FlutesIcon,
  RingsIcon,
  CalendarIcon,
  DressIcon,
  InlineIcon,
  Squiggle,
  HeartLine,
  OrnamentDivider,
  RibbonFlourish,
  BigBouquet,
  VaseBouquet,
  DiscoBall,
  CandleTrio,
  WineAndGlass,
  HandCoupe,
  ChampagnePop,
  Sparkle,
  SketchRings,
  DancingFigures,
  TableScene,
});
