// Pencil-drawn illustrations — refined v2
// Higher fidelity: better proportions, cross-hatching shadows, controlled detail
// Each path uses .bp-stroke for draw-on animation

const Illus = {};

// ============ COFFEE CUP ============
// Tall classic French café cup on saucer with proper perspective and fine cross-hatching
Illus.CoffeeCup = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 220 240" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round">
    {/* Steam — three wisps, soft curves */}
    <path className="bp-stroke" d="M82 50 C 76 38, 88 30, 80 18 C 76 12, 82 8, 80 4" strokeWidth="1.1" />
    <path className="bp-stroke" d="M108 48 C 102 36, 114 28, 106 14 C 102 8, 108 4, 106 0" strokeWidth="1.1" />
    <path className="bp-stroke" d="M134 50 C 128 38, 140 30, 132 18 C 128 12, 134 8, 132 4" strokeWidth="1.1" />

    {/* Cup rim — outer ellipse */}
    <ellipse className="bp-stroke" cx="108" cy="78" rx="52" ry="11" />
    {/* Inner rim shadow */}
    <ellipse className="bp-stroke" cx="108" cy="80" rx="46" ry="7.5" strokeWidth="0.7" opacity="0.55" />
    {/* Coffee surface — subtle ellipse just below rim */}
    <ellipse className="bp-stroke" cx="108" cy="84" rx="42" ry="5" strokeWidth="0.6" opacity="0.4" />

    {/* Cup body — slightly tapered */}
    <path className="bp-stroke" d="M58 79 C 60 130, 65 168, 72 182 C 78 192, 92 196, 108 196 C 124 196, 138 192, 144 182 C 151 168, 156 130, 158 79" />

    {/* Handle — elegant curl */}
    <path className="bp-stroke" d="M158 96 C 188 96, 196 118, 196 132 C 196 152, 178 160, 152 158" />
    <path className="bp-stroke" d="M161 106 C 182 108, 188 122, 188 134 C 188 148, 174 152, 154 150" strokeWidth="0.7" opacity="0.5" />

    {/* Saucer — large outer ellipse */}
    <ellipse className="bp-stroke" cx="108" cy="206" rx="78" ry="13" />
    {/* Saucer inner ridge */}
    <path className="bp-stroke" d="M40 206 C 48 218, 80 224, 108 224 C 136 224, 168 218, 176 206" />
    {/* Saucer well */}
    <ellipse className="bp-stroke" cx="108" cy="204" rx="62" ry="8" strokeWidth="0.7" opacity="0.55" />

    {/* Cup body cross-hatching shadow (right side) */}
    <path className="bp-stroke" d="M138 110 L 142 120 M 142 122 L 146 132 M 144 134 L 148 144 M 145 146 L 149 156 M 144 158 L 148 168 M 142 170 L 145 178" strokeWidth="0.55" opacity="0.45" />
    <path className="bp-stroke" d="M132 116 L 136 124 M 136 130 L 140 138 M 138 144 L 142 152 M 137 158 L 141 166" strokeWidth="0.5" opacity="0.3" />

    {/* Saucer underside hatching */}
    <path className="bp-stroke" d="M52 218 L 56 226 M 70 220 L 74 228 M 90 222 L 94 230 M 110 222 L 114 230 M 130 222 L 134 230 M 150 220 L 154 228 M 168 218 L 172 226" strokeWidth="0.55" opacity="0.4" />

    {/* Tiny gleam on rim left */}
    <path className="bp-stroke" d="M68 76 C 76 71, 88 70, 96 73" strokeWidth="0.6" opacity="0.4" />
  </svg>
);

// ============ CROISSANT ============
// Classic French croissant with proper crescent curl, layered folds, scoring marks
Illus.Croissant = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 260 180" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round">
    {/* Outer outline — crescent shape with tapered horns */}
    <path className="bp-stroke" d="M22 110 C 22 80, 48 50, 86 42 C 130 32, 178 36, 212 50 C 234 60, 244 76, 240 92 C 236 106, 222 114, 208 112 C 198 110, 192 102, 192 94 C 192 86, 196 80, 192 76 C 186 72, 180 78, 178 86 C 176 96, 168 102, 158 102 C 148 102, 142 96, 140 88 C 138 80, 132 76, 126 78 C 120 80, 116 86, 114 94 C 112 102, 104 108, 92 108 C 80 108, 74 102, 70 94 C 66 86, 60 82, 54 84 C 48 86, 44 92, 44 100 C 44 110, 50 118, 60 122 C 66 124, 64 130, 56 132 C 38 134, 22 126, 22 110 Z" />

    {/* Top curl ridges — fold lines that suggest layered dough */}
    <path className="bp-stroke" d="M52 80 C 64 64, 82 56, 102 56" strokeWidth="0.9" opacity="0.85" />
    <path className="bp-stroke" d="M78 66 C 96 54, 118 50, 140 52" strokeWidth="0.9" opacity="0.85" />
    <path className="bp-stroke" d="M120 54 C 144 48, 170 50, 192 56" strokeWidth="0.9" opacity="0.85" />
    <path className="bp-stroke" d="M170 56 C 192 60, 210 68, 222 78" strokeWidth="0.9" opacity="0.85" />

    {/* Secondary fold lines — softer */}
    <path className="bp-stroke" d="M62 92 C 70 76, 84 70, 96 72" strokeWidth="0.6" opacity="0.55" />
    <path className="bp-stroke" d="M96 80 C 110 68, 126 66, 140 70" strokeWidth="0.6" opacity="0.55" />
    <path className="bp-stroke" d="M138 76 C 156 68, 176 70, 192 78" strokeWidth="0.6" opacity="0.55" />

    {/* Belly fold curves — bottom half */}
    <path className="bp-stroke" d="M70 102 C 78 90, 88 86, 100 88" strokeWidth="0.7" opacity="0.7" />
    <path className="bp-stroke" d="M118 100 C 124 90, 134 86, 144 88" strokeWidth="0.7" opacity="0.7" />
    <path className="bp-stroke" d="M160 98 C 168 88, 180 86, 190 90" strokeWidth="0.7" opacity="0.7" />

    {/* Cross-hatching shadow on underside */}
    <path className="bp-stroke" d="M52 120 L 56 128 M 64 122 L 68 130 M 80 124 L 84 132 M 100 122 L 104 130 M 124 122 L 128 130 M 148 120 L 152 128 M 172 118 L 176 126 M 196 114 L 200 122" strokeWidth="0.55" opacity="0.5" />
    <path className="bp-stroke" d="M58 124 L 60 130 M 78 126 L 80 132 M 102 126 L 104 132 M 126 124 L 128 130 M 152 122 L 154 128 M 178 120 L 180 126" strokeWidth="0.4" opacity="0.3" />

    {/* Tiny crumb dots */}
    <circle className="bp-stroke" cx="74" cy="72" r="0.6" opacity="0.5" />
    <circle className="bp-stroke" cx="112" cy="62" r="0.6" opacity="0.5" />
    <circle className="bp-stroke" cx="158" cy="64" r="0.6" opacity="0.5" />
    <circle className="bp-stroke" cx="186" cy="74" r="0.6" opacity="0.5" />
  </svg>
);

// ============ BAGUETTE ============
// French baguette — proper elongated form, deep score marks (grignes), crusty texture
Illus.Baguette = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 320 110" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round">
    {/* Body outline — long oval with slightly pointed ends */}
    <path className="bp-stroke" d="M20 55 C 22 36, 38 26, 60 24 L 260 24 C 282 26, 298 36, 300 55 C 298 74, 282 84, 260 86 L 60 86 C 38 84, 22 74, 20 55 Z" />

    {/* Score marks (grignes) — deep diagonal slashes, the signature of a baguette */}
    <path className="bp-stroke" d="M58 38 C 64 42, 68 50, 70 58 C 72 66, 76 72, 82 76" strokeWidth="1.2" />
    <path className="bp-stroke" d="M62 36 C 68 40, 72 48, 74 56" strokeWidth="0.55" opacity="0.5" />

    <path className="bp-stroke" d="M104 38 C 110 42, 114 50, 116 58 C 118 66, 122 72, 128 76" strokeWidth="1.2" />
    <path className="bp-stroke" d="M108 36 C 114 40, 118 48, 120 56" strokeWidth="0.55" opacity="0.5" />

    <path className="bp-stroke" d="M150 38 C 156 42, 160 50, 162 58 C 164 66, 168 72, 174 76" strokeWidth="1.2" />
    <path className="bp-stroke" d="M154 36 C 160 40, 164 48, 166 56" strokeWidth="0.55" opacity="0.5" />

    <path className="bp-stroke" d="M196 38 C 202 42, 206 50, 208 58 C 210 66, 214 72, 220 76" strokeWidth="1.2" />
    <path className="bp-stroke" d="M200 36 C 206 40, 210 48, 212 56" strokeWidth="0.55" opacity="0.5" />

    <path className="bp-stroke" d="M242 38 C 248 42, 252 50, 254 58 C 256 66, 260 72, 266 76" strokeWidth="1.2" />
    <path className="bp-stroke" d="M246 36 C 252 40, 256 48, 258 56" strokeWidth="0.55" opacity="0.5" />

    {/* End caps — knotted texture on tips */}
    <path className="bp-stroke" d="M30 46 C 34 50, 36 55, 34 60 C 32 65, 30 68, 32 72" strokeWidth="0.7" opacity="0.7" />
    <path className="bp-stroke" d="M40 42 C 44 48, 46 55, 44 62" strokeWidth="0.55" opacity="0.5" />
    <path className="bp-stroke" d="M290 46 C 286 50, 284 55, 286 60 C 288 65, 290 68, 288 72" strokeWidth="0.7" opacity="0.7" />
    <path className="bp-stroke" d="M280 42 C 276 48, 274 55, 276 62" strokeWidth="0.55" opacity="0.5" />

    {/* Underside cross-hatching shadow */}
    <path className="bp-stroke" d="M48 90 L 52 96 M 70 92 L 74 98 M 96 92 L 100 98 M 124 92 L 128 98 M 152 92 L 156 98 M 180 92 L 184 98 M 208 92 L 212 98 M 236 92 L 240 98 M 262 92 L 266 96" strokeWidth="0.55" opacity="0.45" />
    <path className="bp-stroke" d="M62 94 L 64 99 M 90 94 L 92 99 M 118 94 L 120 99 M 146 94 L 148 99 M 174 94 L 176 99 M 202 94 L 204 99 M 230 94 L 232 99 M 256 94 L 258 99" strokeWidth="0.4" opacity="0.3" />

    {/* Tiny crust speckles */}
    <circle className="bp-stroke" cx="80" cy="34" r="0.5" opacity="0.5" />
    <circle className="bp-stroke" cx="140" cy="34" r="0.5" opacity="0.5" />
    <circle className="bp-stroke" cx="220" cy="34" r="0.5" opacity="0.5" />
    <circle className="bp-stroke" cx="180" cy="32" r="0.5" opacity="0.5" />
  </svg>
);

// ============ BOULE ============
// Round country bread / pain de campagne — cross-scored top, crusty surface
Illus.Boule = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 220 200" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round">
    {/* Main dome — slightly squat, like a real boule */}
    <path className="bp-stroke" d="M30 118 C 30 78, 60 52, 110 52 C 160 52, 190 78, 190 118 C 190 142, 170 158, 110 158 C 50 158, 30 142, 30 118 Z" />

    {/* Base ellipse — ground line */}
    <ellipse className="bp-stroke" cx="110" cy="158" rx="80" ry="10" strokeWidth="0.9" />

    {/* Cross-score (signature scoring on top) */}
    <path className="bp-stroke" d="M58 90 C 80 110, 100 128, 122 142" strokeWidth="1.3" />
    <path className="bp-stroke" d="M62 92 C 82 112, 102 130, 124 144" strokeWidth="0.55" opacity="0.5" />
    <path className="bp-stroke" d="M162 90 C 140 110, 120 128, 98 142" strokeWidth="1.3" />
    <path className="bp-stroke" d="M158 92 C 138 112, 118 130, 96 144" strokeWidth="0.55" opacity="0.5" />

    {/* Top highlight curve */}
    <path className="bp-stroke" d="M48 88 C 60 70, 80 60, 102 58" strokeWidth="0.7" opacity="0.6" />
    <path className="bp-stroke" d="M52 80 C 62 70, 76 64, 90 62" strokeWidth="0.5" opacity="0.4" />

    {/* Side curve — dough fold */}
    <path className="bp-stroke" d="M178 110 C 174 120, 170 128, 160 134" strokeWidth="0.6" opacity="0.55" />

    {/* Cross-hatching shadow on lower right */}
    <path className="bp-stroke" d="M130 110 L 134 120 M 138 116 L 142 126 M 146 122 L 150 132 M 152 128 L 156 138 M 156 134 L 160 144 M 158 140 L 162 148" strokeWidth="0.55" opacity="0.5" />
    <path className="bp-stroke" d="M138 122 L 140 130 M 148 128 L 150 136 M 156 132 L 158 140" strokeWidth="0.4" opacity="0.3" />

    {/* Crumb texture dots */}
    <circle className="bp-stroke" cx="80" cy="100" r="0.6" opacity="0.5" />
    <circle className="bp-stroke" cx="140" cy="100" r="0.6" opacity="0.5" />
    <circle className="bp-stroke" cx="100" cy="78" r="0.5" opacity="0.5" />
    <circle className="bp-stroke" cx="120" cy="78" r="0.5" opacity="0.5" />
    <circle className="bp-stroke" cx="90" cy="120" r="0.5" opacity="0.4" />
    <circle className="bp-stroke" cx="130" cy="120" r="0.5" opacity="0.4" />

    {/* Ground hatching beneath */}
    <path className="bp-stroke" d="M40 170 L 46 178 M 60 172 L 66 180 M 84 174 L 90 182 M 110 174 L 116 182 M 134 174 L 140 182 M 158 172 L 164 180 M 178 170 L 184 178" strokeWidth="0.55" opacity="0.45" />
  </svg>
);

// ============ SANDWICH ============
// Layered sandwich — proper bread shape, lettuce ruffles, tomato slice, cheese, bottom
Illus.Sandwich = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 240 200" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round">
    {/* Top bread — domed loaf top */}
    <path className="bp-stroke" d="M28 78 C 30 42, 70 28, 120 26 C 170 28, 210 42, 212 78 C 212 80, 210 82, 206 82 L 34 82 C 30 82, 28 80, 28 78 Z" />
    {/* Top bread — sesame seed dots */}
    <ellipse className="bp-stroke" cx="80" cy="48" rx="2" ry="1.2" strokeWidth="1" />
    <ellipse className="bp-stroke" cx="120" cy="42" rx="2" ry="1.2" strokeWidth="1" />
    <ellipse className="bp-stroke" cx="160" cy="48" rx="2" ry="1.2" strokeWidth="1" />
    <ellipse className="bp-stroke" cx="100" cy="56" rx="1.6" ry="1" strokeWidth="0.8" opacity="0.7" />
    <ellipse className="bp-stroke" cx="140" cy="56" rx="1.6" ry="1" strokeWidth="0.8" opacity="0.7" />

    {/* Lettuce — ruffled wave */}
    <path className="bp-stroke" d="M30 88 C 38 80, 46 88, 54 84 C 62 80, 70 90, 78 86 C 86 82, 94 92, 102 88 C 110 84, 118 92, 126 88 C 134 84, 142 92, 150 88 C 158 84, 166 92, 174 88 C 182 84, 190 90, 198 86 C 206 82, 212 88, 214 92" />
    <path className="bp-stroke" d="M40 90 C 50 96, 56 92, 62 96 M 80 92 C 88 98, 94 92, 100 96 M 120 92 C 130 98, 134 92, 142 96 M 162 92 C 170 98, 176 92, 184 96" strokeWidth="0.6" opacity="0.55" />

    {/* Tomato slice — round, with seeds */}
    <path className="bp-stroke" d="M28 100 L 212 100 C 212 102, 210 104, 208 104 L 34 104 C 30 104, 28 102, 28 100 Z" />
    <path className="bp-stroke" d="M28 104 L 212 104" strokeWidth="0.5" opacity="0.5" />
    {/* Seed dots in tomato */}
    <circle className="bp-stroke" cx="60" cy="102" r="0.8" opacity="0.5" />
    <circle className="bp-stroke" cx="100" cy="102" r="0.8" opacity="0.5" />
    <circle className="bp-stroke" cx="140" cy="102" r="0.8" opacity="0.5" />
    <circle className="bp-stroke" cx="180" cy="102" r="0.8" opacity="0.5" />

    {/* Ham/meat layer — wavy edge */}
    <path className="bp-stroke" d="M28 110 C 40 106, 56 114, 70 110 C 84 106, 100 114, 116 110 C 132 106, 148 114, 164 110 C 178 106, 196 114, 212 110 L 212 116 L 28 116 Z" />
    <path className="bp-stroke" d="M40 113 L 56 113 M 80 113 L 96 113 M 124 113 L 140 113 M 168 113 L 184 113" strokeWidth="0.5" opacity="0.5" />

    {/* Cheese — angular protruding triangle on right */}
    <path className="bp-stroke" d="M28 120 L 200 120 L 220 116 L 220 124 L 28 124 Z" />
    <path className="bp-stroke" d="M200 120 L 220 116" strokeWidth="0.5" opacity="0.5" />

    {/* Bottom bread */}
    <path className="bp-stroke" d="M28 128 L 32 132 L 208 132 L 212 128 C 214 152, 196 172, 120 172 C 44 172, 26 152, 28 128 Z" />

    {/* Cross-hatching shadow on top bread (right side) */}
    <path className="bp-stroke" d="M170 50 L 174 60 M 178 56 L 182 66 M 184 62 L 188 72 M 190 68 L 194 78 M 194 74 L 198 80" strokeWidth="0.55" opacity="0.45" />
    <path className="bp-stroke" d="M178 60 L 180 68 M 188 68 L 190 76" strokeWidth="0.4" opacity="0.3" />

    {/* Cross-hatching shadow on bottom bread */}
    <path className="bp-stroke" d="M50 145 L 54 155 M 70 150 L 74 160 M 96 154 L 100 164 M 124 156 L 128 166 M 152 154 L 156 164 M 178 150 L 182 160 M 198 145 L 202 155" strokeWidth="0.55" opacity="0.45" />
    <path className="bp-stroke" d="M62 155 L 64 162 M 86 158 L 88 165 M 110 160 L 112 167 M 138 160 L 140 167 M 164 158 L 166 165 M 188 155 L 190 162" strokeWidth="0.4" opacity="0.3" />
  </svg>
);

// ============ WHEAT SPRIG ============
// Wheat ear with proper tapered form and individual grain pairs
Illus.Wheat = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 120 240" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round">
    {/* Stem — gentle curve */}
    <path className="bp-stroke" d="M60 230 C 58 200, 58 160, 60 130 C 60 100, 60 80, 60 70" />
    {/* Subtle stem second line */}
    <path className="bp-stroke" d="M61 230 C 59 200, 59 160, 61 130" strokeWidth="0.5" opacity="0.5" />

    {/* Stem leaf — small */}
    <path className="bp-stroke" d="M60 180 C 50 178, 42 174, 36 168 C 42 174, 48 180, 60 184" strokeWidth="0.9" opacity="0.85" />

    {/* Grain pairs — each is a teardrop pair tilted outward */}
    {/* Bottom-most pair */}
    <path className="bp-stroke" d="M60 130 C 52 124, 44 118, 38 108 C 46 116, 54 122, 60 130 Z" />
    <path className="bp-stroke" d="M60 130 C 68 124, 76 118, 82 108 C 74 116, 66 122, 60 130 Z" />
    <path className="bp-stroke" d="M44 118 C 46 116, 50 116, 52 118" strokeWidth="0.4" opacity="0.5" />
    <path className="bp-stroke" d="M76 118 C 74 116, 70 116, 68 118" strokeWidth="0.4" opacity="0.5" />

    <path className="bp-stroke" d="M60 116 C 50 110, 40 104, 32 92 C 42 102, 52 108, 60 116 Z" />
    <path className="bp-stroke" d="M60 116 C 70 110, 80 104, 88 92 C 78 102, 68 108, 60 116 Z" />
    <path className="bp-stroke" d="M42 102 C 44 100, 48 100, 50 102" strokeWidth="0.4" opacity="0.5" />
    <path className="bp-stroke" d="M78 102 C 76 100, 72 100, 70 102" strokeWidth="0.4" opacity="0.5" />

    <path className="bp-stroke" d="M60 102 C 48 96, 38 90, 30 76 C 40 86, 50 92, 60 102 Z" />
    <path className="bp-stroke" d="M60 102 C 72 96, 82 90, 90 76 C 80 86, 70 92, 60 102 Z" />
    <path className="bp-stroke" d="M40 86 C 42 84, 46 84, 48 86" strokeWidth="0.4" opacity="0.5" />
    <path className="bp-stroke" d="M80 86 C 78 84, 74 84, 72 86" strokeWidth="0.4" opacity="0.5" />

    <path className="bp-stroke" d="M60 88 C 48 82, 40 76, 34 64 C 42 72, 52 78, 60 88 Z" />
    <path className="bp-stroke" d="M60 88 C 72 82, 80 76, 86 64 C 78 72, 68 78, 60 88 Z" />
    <path className="bp-stroke" d="M44 72 C 46 70, 50 70, 52 72" strokeWidth="0.4" opacity="0.5" />
    <path className="bp-stroke" d="M76 72 C 74 70, 70 70, 68 72" strokeWidth="0.4" opacity="0.5" />

    <path className="bp-stroke" d="M60 76 C 50 70, 44 64, 40 54 C 46 62, 54 68, 60 76 Z" />
    <path className="bp-stroke" d="M60 76 C 70 70, 76 64, 80 54 C 74 62, 66 68, 60 76 Z" />

    {/* Top-most single grain pointing up */}
    <path className="bp-stroke" d="M60 64 C 56 56, 56 50, 60 42 C 64 50, 64 56, 60 64 Z" />

    {/* Awns (long hairs at top) — fan out */}
    <path className="bp-stroke" d="M60 42 L 60 6" strokeWidth="0.6" />
    <path className="bp-stroke" d="M60 42 L 50 8" strokeWidth="0.6" />
    <path className="bp-stroke" d="M60 42 L 70 8" strokeWidth="0.6" />
    <path className="bp-stroke" d="M60 42 L 42 14" strokeWidth="0.55" opacity="0.85" />
    <path className="bp-stroke" d="M60 42 L 78 14" strokeWidth="0.55" opacity="0.85" />
    <path className="bp-stroke" d="M60 42 L 36 22" strokeWidth="0.5" opacity="0.7" />
    <path className="bp-stroke" d="M60 42 L 84 22" strokeWidth="0.5" opacity="0.7" />
  </svg>
);

// ============ CHIPA / PARAGUAYAN BREAD ON PLATE ============
// Plate with three chipa rings — Paraguayan starch bread
Illus.Chipa = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 240 180" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round">
    {/* Plate — outer rim */}
    <ellipse className="bp-stroke" cx="120" cy="110" rx="108" ry="40" />
    {/* Plate — inner rim */}
    <ellipse className="bp-stroke" cx="120" cy="105" rx="92" ry="32" />
    {/* Plate well */}
    <ellipse className="bp-stroke" cx="120" cy="100" rx="80" ry="26" strokeWidth="0.6" opacity="0.5" />

    {/* Chipa 1 — back left, tilted */}
    <ellipse className="bp-stroke" cx="74" cy="86" rx="28" ry="16" />
    <ellipse className="bp-stroke" cx="74" cy="86" rx="11" ry="6" />
    <path className="bp-stroke" d="M58 80 C 64 76, 72 76, 80 78" strokeWidth="0.6" opacity="0.5" />

    {/* Chipa 2 — back right, slightly larger */}
    <ellipse className="bp-stroke" cx="158" cy="80" rx="30" ry="17" />
    <ellipse className="bp-stroke" cx="158" cy="80" rx="12" ry="6.5" />
    <path className="bp-stroke" d="M142 73 C 150 70, 162 70, 172 72" strokeWidth="0.6" opacity="0.5" />

    {/* Chipa 3 — front center */}
    <ellipse className="bp-stroke" cx="118" cy="106" rx="32" ry="18" />
    <ellipse className="bp-stroke" cx="118" cy="106" rx="13" ry="7" />
    <path className="bp-stroke" d="M100 100 C 110 96, 124 96, 134 98" strokeWidth="0.6" opacity="0.5" />

    {/* Crumb / surface texture dots */}
    <circle className="bp-stroke" cx="60" cy="84" r="0.6" opacity="0.55" />
    <circle className="bp-stroke" cx="88" cy="92" r="0.6" opacity="0.55" />
    <circle className="bp-stroke" cx="148" cy="76" r="0.6" opacity="0.55" />
    <circle className="bp-stroke" cx="174" cy="86" r="0.6" opacity="0.55" />
    <circle className="bp-stroke" cx="104" cy="112" r="0.6" opacity="0.55" />
    <circle className="bp-stroke" cx="134" cy="112" r="0.6" opacity="0.55" />

    {/* Cross-hatching on chipa right sides (shadow) */}
    <path className="bp-stroke" d="M88 88 L 90 94 M 94 90 L 96 96 M 174 84 L 176 90 M 180 86 L 182 92 M 138 110 L 140 116 M 144 112 L 146 118" strokeWidth="0.5" opacity="0.45" />

    {/* Plate underside hatching */}
    <path className="bp-stroke" d="M30 142 L 36 150 M 56 144 L 62 152 M 86 146 L 92 154 M 118 146 L 124 154 M 150 146 L 156 154 M 180 144 L 186 152 M 206 142 L 212 150" strokeWidth="0.55" opacity="0.45" />
    <path className="bp-stroke" d="M44 148 L 48 154 M 72 150 L 76 156 M 102 152 L 106 158 M 134 152 L 138 158 M 164 150 L 168 156 M 192 148 L 196 154" strokeWidth="0.4" opacity="0.3" />
  </svg>
);

// ============ LEAF / OLIVE BRANCH ============
// Slender branch with paired teardrop leaves — refined botanical
Illus.Leaf = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 140 220" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round">
    {/* Main stem with gentle curve */}
    <path className="bp-stroke" d="M70 210 C 68 180, 66 140, 68 100 C 70 60, 70 30, 72 10" />

    {/* Pair 1 — bottom */}
    <path className="bp-stroke" d="M68 180 C 50 178, 36 172, 24 162 C 36 168, 50 172, 66 174 Z" />
    <path className="bp-stroke" d="M30 168 C 38 168, 50 170, 60 172" strokeWidth="0.5" opacity="0.5" />
    <path className="bp-stroke" d="M70 178 C 88 176, 102 170, 114 158 C 102 166, 86 170, 70 172 Z" />
    <path className="bp-stroke" d="M108 164 C 100 166, 88 168, 78 170" strokeWidth="0.5" opacity="0.5" />

    {/* Pair 2 */}
    <path className="bp-stroke" d="M68 144 C 50 142, 38 136, 28 124 C 38 132, 52 136, 66 138 Z" />
    <path className="bp-stroke" d="M34 130 C 42 132, 52 134, 60 136" strokeWidth="0.5" opacity="0.5" />
    <path className="bp-stroke" d="M68 142 C 86 140, 100 134, 110 122 C 100 130, 86 134, 70 136 Z" />
    <path className="bp-stroke" d="M104 128 C 96 130, 86 132, 78 134" strokeWidth="0.5" opacity="0.5" />

    {/* Pair 3 */}
    <path className="bp-stroke" d="M68 108 C 52 106, 40 100, 32 88 C 40 96, 54 100, 66 102 Z" />
    <path className="bp-stroke" d="M38 94 C 46 96, 54 98, 60 100" strokeWidth="0.5" opacity="0.5" />
    <path className="bp-stroke" d="M70 106 C 86 104, 98 98, 106 86 C 98 94, 86 98, 72 100 Z" />
    <path className="bp-stroke" d="M100 92 C 92 94, 84 96, 78 98" strokeWidth="0.5" opacity="0.5" />

    {/* Pair 4 — top, smaller */}
    <path className="bp-stroke" d="M70 72 C 56 70, 46 64, 40 54 C 48 62, 58 66, 68 68 Z" />
    <path className="bp-stroke" d="M70 70 C 84 68, 94 62, 100 52 C 92 60, 82 64, 72 66 Z" />

    {/* Top bud */}
    <path className="bp-stroke" d="M71 36 C 67 32, 67 24, 71 18 C 75 24, 75 32, 71 36 Z" />
  </svg>
);

// ============ ORNAMENT / DIVIDER ============
// Refined center medallion with side flourishes
Illus.Ornament = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 320 40" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.1" strokeLinecap="round" strokeLinejoin="round">
    {/* Left line */}
    <path className="bp-stroke" d="M10 20 L 110 20" />
    {/* Right line */}
    <path className="bp-stroke" d="M210 20 L 310 20" />

    {/* Left flourish — small leaf */}
    <path className="bp-stroke" d="M110 20 C 116 16, 122 16, 126 20" strokeWidth="0.9" />
    <path className="bp-stroke" d="M126 20 C 130 24, 130 18, 134 20" strokeWidth="0.9" />

    {/* Right flourish — mirrored */}
    <path className="bp-stroke" d="M210 20 C 204 16, 198 16, 194 20" strokeWidth="0.9" />
    <path className="bp-stroke" d="M194 20 C 190 24, 190 18, 186 20" strokeWidth="0.9" />

    {/* Center diamond medallion */}
    <path className="bp-stroke" d="M150 20 L 160 12 L 170 20 L 160 28 Z" />
    <circle className="bp-stroke" cx="160" cy="20" r="2.5" />
    <path className="bp-stroke" d="M152 20 L 158 20 M 162 20 L 168 20" strokeWidth="0.5" opacity="0.5" />

    {/* Tiny end dots */}
    <circle className="bp-stroke" cx="6" cy="20" r="1.2" />
    <circle className="bp-stroke" cx="314" cy="20" r="1.2" />
  </svg>
);

// ============ CAKE SLICE ============
// Tall layered cake slice with cream layers, frosted top, cherry on top
Illus.Cake = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 220 220" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round">
    {/* Triangular slice top — viewed slightly from above */}
    <path className="bp-stroke" d="M30 70 L 190 70 L 110 168 Z" />

    {/* Sliced front face — vertical drop showing layers */}
    <path className="bp-stroke" d="M30 70 L 30 92 L 110 196 L 190 92 L 190 70" />
    <path className="bp-stroke" d="M110 168 L 110 196" />

    {/* Cake layer 1 — top sponge */}
    <path className="bp-stroke" d="M30 78 L 110 178 L 190 78" strokeWidth="0.7" opacity="0.7" />
    {/* Cream layer */}
    <path className="bp-stroke" d="M30 84 L 110 184 L 190 84" strokeWidth="0.6" opacity="0.55" />
    {/* Layer 2 */}
    <path className="bp-stroke" d="M30 89 L 110 190 L 190 89" strokeWidth="0.6" opacity="0.5" />

    {/* Top frosting — wavy edge along front */}
    <path className="bp-stroke" d="M30 70 C 38 64, 46 70, 54 64 C 62 70, 70 64, 78 70 C 86 64, 94 70, 102 64 C 110 70, 118 64, 126 70 C 134 64, 142 70, 150 64 C 158 70, 166 64, 174 70 C 182 64, 188 68, 190 70" strokeWidth="0.9" />

    {/* Cherry on top */}
    <circle className="bp-stroke" cx="110" cy="50" r="9" />
    <path className="bp-stroke" d="M110 41 C 108 35, 112 30, 116 28" strokeWidth="0.9" />
    <path className="bp-stroke" d="M105 47 C 102 45, 102 42, 105 41" strokeWidth="0.5" opacity="0.5" />

    {/* Cream rosettes on top */}
    <path className="bp-stroke" d="M55 60 C 50 56, 50 52, 55 50 C 60 52, 60 56, 55 60 Z" strokeWidth="0.9" />
    <path className="bp-stroke" d="M165 60 C 160 56, 160 52, 165 50 C 170 52, 170 56, 165 60 Z" strokeWidth="0.9" />

    {/* Cross-hatching shadow on right side of slice */}
    <path className="bp-stroke" d="M150 100 L 154 110 M 144 116 L 148 126 M 138 130 L 142 140 M 132 144 L 136 154 M 126 158 L 130 168 M 122 170 L 126 180" strokeWidth="0.55" opacity="0.5" />
    <path className="bp-stroke" d="M156 110 L 158 118 M 148 124 L 150 132 M 140 138 L 142 146 M 134 152 L 136 160" strokeWidth="0.4" opacity="0.3" />

    {/* Subtle hatching left-side shadow */}
    <path className="bp-stroke" d="M50 105 L 54 113 M 58 120 L 62 128" strokeWidth="0.4" opacity="0.3" />
  </svg>
);

// ============ FRAME CORNER (small flourish) ============
Illus.FrameCorner = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 90 90" className={`bp-illus ${className}`} style={style} fill="none" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round">
    <path className="bp-stroke" d="M12 45 C 12 18, 30 12, 45 12" />
    <path className="bp-stroke" d="M16 38 C 16 22, 28 16, 38 16" strokeWidth="0.7" opacity="0.6" />
    <circle className="bp-stroke" cx="12" cy="12" r="2.5" />
    <path className="bp-stroke" d="M14 14 L 18 18" strokeWidth="0.5" opacity="0.5" />
  </svg>
);

// ============ BRAND LOGO — vectorized from identity ============
// Circular badge: yellow ring · wheat sprig · BomPain · Café · Bar
Illus.Logo = ({ className = "", style = {} }) => (
  <svg viewBox="0 0 200 200" className={`bp-logo ${className}`} style={style} xmlns="http://www.w3.org/2000/svg" overflow="visible">
    {/* Background */}
    <circle cx="100" cy="100" r="98" fill="var(--cream, #f5efe4)"/>
    {/* Outer yellow ring */}
    <circle cx="100" cy="100" r="93" fill="none" stroke="#d4aa18" strokeWidth="6"/>
    {/* Inner ring subtle */}
    <circle cx="100" cy="100" r="85" fill="none" stroke="#d4aa18" strokeWidth="0.9" opacity="0.45"/>

    {/* ===== WHEAT — LEFT STALK ===== */}
    <path d="M100 105 C 94 88, 86 66, 76 34" fill="none" stroke="#7a5c38" strokeWidth="1.5" strokeLinecap="round"/>
    {/* Outer grains (left of stalk) */}
    <ellipse cx="88" cy="91" rx="7.5" ry="3.2" transform="rotate(-19 88 91)" fill="#7a5c38" opacity="0.72"/>
    <ellipse cx="83" cy="75" rx="7.2" ry="3" transform="rotate(-19 83 75)" fill="#7a5c38" opacity="0.70"/>
    <ellipse cx="79" cy="59" rx="6.8" ry="2.8" transform="rotate(-21 79 59)" fill="#7a5c38" opacity="0.66"/>
    <ellipse cx="76" cy="44" rx="6" ry="2.5" transform="rotate(-23 76 44)" fill="#7a5c38" opacity="0.60"/>
    {/* Inner grains (right of stalk) */}
    <ellipse cx="97" cy="89" rx="6.5" ry="2.8" transform="rotate(-19 97 89)" fill="#7a5c38" opacity="0.52"/>
    <ellipse cx="92" cy="74" rx="6.2" ry="2.6" transform="rotate(-19 92 74)" fill="#7a5c38" opacity="0.50"/>
    <ellipse cx="87" cy="59" rx="5.8" ry="2.4" transform="rotate(-21 87 59)" fill="#7a5c38" opacity="0.46"/>
    {/* Top awn */}
    <path d="M76 34 L 70 21 M 76 34 L 82 20" fill="none" stroke="#7a5c38" strokeWidth="1" strokeLinecap="round"/>

    {/* ===== WHEAT — RIGHT STALK ===== */}
    <path d="M100 105 C 106 88, 114 66, 124 34" fill="none" stroke="#7a5c38" strokeWidth="1.5" strokeLinecap="round"/>
    {/* Outer grains (right of stalk) */}
    <ellipse cx="112" cy="91" rx="7.5" ry="3.2" transform="rotate(19 112 91)" fill="#7a5c38" opacity="0.72"/>
    <ellipse cx="117" cy="75" rx="7.2" ry="3" transform="rotate(19 117 75)" fill="#7a5c38" opacity="0.70"/>
    <ellipse cx="121" cy="59" rx="6.8" ry="2.8" transform="rotate(21 121 59)" fill="#7a5c38" opacity="0.66"/>
    <ellipse cx="124" cy="44" rx="6" ry="2.5" transform="rotate(23 124 44)" fill="#7a5c38" opacity="0.60"/>
    {/* Inner grains (left of stalk) */}
    <ellipse cx="103" cy="89" rx="6.5" ry="2.8" transform="rotate(19 103 89)" fill="#7a5c38" opacity="0.52"/>
    <ellipse cx="108" cy="74" rx="6.2" ry="2.6" transform="rotate(19 108 74)" fill="#7a5c38" opacity="0.50"/>
    <ellipse cx="113" cy="59" rx="5.8" ry="2.4" transform="rotate(21 113 59)" fill="#7a5c38" opacity="0.46"/>
    {/* Top awn */}
    <path d="M124 34 L 130 21 M 124 34 L 118 20" fill="none" stroke="#7a5c38" strokeWidth="1" strokeLinecap="round"/>

    {/* ===== DECORATIVE LINES — above text ===== */}
    <line x1="22" y1="111" x2="80" y2="111" stroke="#d4aa18" strokeWidth="2.5"/>
    <line x1="120" y1="111" x2="178" y2="111" stroke="#d4aa18" strokeWidth="2.5"/>

    {/* ===== BOMPAIN TEXT ===== */}
    <text x="100" y="126" textAnchor="middle"
      fontFamily="'Cormorant Garamond', Georgia, serif"
      fontWeight="600" fontSize="32" fill="#2a1c10" letterSpacing="-0.3">
      BomPain
    </text>

    {/* ===== DECORATIVE LINES — below text ===== */}
    <line x1="18" y1="133" x2="182" y2="133" stroke="#d4aa18" strokeWidth="2"/>
    <line x1="23" y1="137" x2="177" y2="137" stroke="#d4aa18" strokeWidth="0.8" opacity="0.55"/>

    {/* ===== CAFÉ · BAR ===== */}
    <text x="100" y="158" textAnchor="middle"
      fontFamily="'Cormorant Garamond', Georgia, serif"
      fontStyle="italic" fontSize="21" fill="#5b3d23" letterSpacing="0.8">
      Café · Bar
    </text>
  </svg>
);

window.Illus = Illus;
