// Gorgeous SVG "photograph" scenes — soft, painterly, on-brand.
// Each scene is a full SVG with its own palette, figures, and light.
// Usage: <Scene name="newbornHome" label="— newborn, in-home —" aspect="4/5" />

const Grain = ({ id = 'grain' }) => (
  <filter id={id}>
    <feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="2" stitchTiles="stitch"/>
    <feColorMatrix values="0 0 0 0 0.24  0 0 0 0 0.2  0 0 0 0 0.18  0 0 0 0.08 0"/>
    <feComposite in2="SourceGraphic" operator="in"/>
  </filter>
);

const Bokeh = ({ id = 'bokeh', color = '#F5D7C3' }) => (
  <radialGradient id={id}>
    <stop offset="0%" stopColor={color} stopOpacity="0.9"/>
    <stop offset="60%" stopColor={color} stopOpacity="0.3"/>
    <stop offset="100%" stopColor={color} stopOpacity="0"/>
  </radialGradient>
);

// A mother holding a swaddled newborn, warm window light
const SceneNewbornHome = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="nh-bg" x1="0" x2="1" y1="0" y2="1">
        <stop offset="0%" stopColor="#FBEFE2"/>
        <stop offset="55%" stopColor="#F2DFCD"/>
        <stop offset="100%" stopColor="#E6C8B0"/>
      </linearGradient>
      <radialGradient id="nh-sun" cx="0.8" cy="0.15" r="0.6">
        <stop offset="0%" stopColor="#FFF6E8" stopOpacity="1"/>
        <stop offset="100%" stopColor="#FFF6E8" stopOpacity="0"/>
      </radialGradient>
      <linearGradient id="nh-mom" x1="0" x2="1" y1="0" y2="1">
        <stop offset="0%" stopColor="#E8CDB8"/>
        <stop offset="100%" stopColor="#C9A38A"/>
      </linearGradient>
      <linearGradient id="nh-wrap" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#FBF4EA"/>
        <stop offset="100%" stopColor="#ECD9C4"/>
      </linearGradient>
    </defs>
    <rect width="400" height="500" fill="url(#nh-bg)"/>
    {/* Window light */}
    <rect width="400" height="500" fill="url(#nh-sun)"/>
    <rect x="260" y="30" width="90" height="180" rx="6" fill="#FFFBF1" opacity="0.55"/>
    <line x1="305" y1="40" x2="305" y2="200" stroke="#FBEFE2" strokeWidth="2" opacity="0.8"/>
    <line x1="265" y1="115" x2="345" y2="115" stroke="#FBEFE2" strokeWidth="2" opacity="0.8"/>
    {/* Curtain */}
    <path d="M 350 20 Q 370 260 340 500 L 400 500 L 400 20 Z" fill="#F7E5D2" opacity="0.85"/>
    {/* Mother silhouette */}
    <ellipse cx="180" cy="520" rx="200" ry="220" fill="#D6B29A"/>
    <path d="M 60 500 C 60 340 100 240 180 230 C 260 240 300 340 300 500 Z" fill="url(#nh-mom)"/>
    {/* Mother head */}
    <circle cx="180" cy="205" r="48" fill="#E8C6AA"/>
    {/* Hair */}
    <path d="M 132 200 C 130 155 160 148 180 150 C 210 148 232 170 228 205 C 228 185 210 170 180 172 C 155 172 136 185 132 200 Z" fill="#6B4A38"/>
    <path d="M 218 220 C 240 240 240 280 220 300 L 200 290 Z" fill="#6B4A38"/>
    {/* Mother arms holding baby */}
    <path d="M 100 320 C 80 340 80 380 110 395 L 250 395 C 275 385 280 350 260 330 Z" fill="#D9B39C"/>
    {/* Swaddled baby */}
    <ellipse cx="185" cy="360" rx="85" ry="38" fill="url(#nh-wrap)"/>
    <path d="M 110 360 Q 140 330 180 328 Q 220 326 258 345 L 270 370 Q 230 395 180 395 Q 130 395 108 380 Z" fill="#F6E7D5"/>
    {/* Baby face */}
    <circle cx="130" cy="355" r="22" fill="#F5D4B8"/>
    <circle cx="124" cy="353" r="1.5" fill="#4A3428"/>
    <path d="M 122 362 Q 128 366 134 362" stroke="#C48770" strokeWidth="1" fill="none" strokeLinecap="round"/>
    {/* Mother kissing baby head */}
    <path d="M 155 235 Q 160 270 140 330" stroke="#C89A7F" strokeWidth="3" fill="none" opacity="0.3"/>
    {/* Floating light particles */}
    <circle cx="280" cy="120" r="3" fill="#FFF5E6" opacity="0.8"/>
    <circle cx="310" cy="180" r="2" fill="#FFF5E6" opacity="0.6"/>
    <circle cx="240" cy="90" r="2.5" fill="#FFF5E6" opacity="0.7"/>
    <circle cx="340" cy="240" r="2" fill="#FFF5E6" opacity="0.5"/>
  </svg>
);

// Toddler in wildflower field, golden hour
const SceneToddlerField = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="tf-sky" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#F5D9BC"/>
        <stop offset="60%" stopColor="#F2C8AA"/>
        <stop offset="100%" stopColor="#E5B294"/>
      </linearGradient>
      <linearGradient id="tf-grass" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#C7B388"/>
        <stop offset="100%" stopColor="#8A7E5C"/>
      </linearGradient>
      <radialGradient id="tf-sun" cx="0.75" cy="0.25" r="0.5">
        <stop offset="0%" stopColor="#FFF1D8" stopOpacity="1"/>
        <stop offset="100%" stopColor="#FFF1D8" stopOpacity="0"/>
      </radialGradient>
    </defs>
    <rect width="400" height="320" fill="url(#tf-sky)"/>
    <rect y="260" width="400" height="240" fill="url(#tf-grass)"/>
    <rect width="400" height="500" fill="url(#tf-sun)"/>
    <circle cx="300" cy="125" r="38" fill="#FFF0D5" opacity="0.9"/>
    {/* Distant trees */}
    <ellipse cx="60" cy="265" rx="70" ry="28" fill="#9A8B6E" opacity="0.6"/>
    <ellipse cx="340" cy="270" rx="90" ry="30" fill="#9A8B6E" opacity="0.5"/>
    {/* Tall grass strokes */}
    {Array.from({length: 40}).map((_, i) => (
      <line key={i} x1={i * 10 + 5} y1={290 + (i % 5) * 4} x2={i * 10 + 8} y2={260 + (i % 5) * 4} stroke="#B8A47A" strokeWidth="1.5" opacity="0.7"/>
    ))}
    {/* Wildflowers */}
    {[[40,340,'#E8B8A0'],[80,360,'#F0D4C2'],[140,345,'#C99B8A'],[200,375,'#EED2BE'],[270,355,'#E8B8A0'],[320,380,'#F0D4C2'],[360,350,'#C99B8A'],[100,395,'#E8B8A0'],[180,410,'#F0D4C2'],[250,420,'#C99B8A'],[330,440,'#EED2BE']].map(([x,y,c],i)=>(
      <g key={i}>
        <circle cx={x} cy={y} r="4" fill={c}/>
        <circle cx={x-3} cy={y-2} r="3" fill={c} opacity="0.7"/>
        <circle cx={x+3} cy={y-2} r="3" fill={c} opacity="0.7"/>
        <circle cx={x} cy={y+3} r="3" fill={c} opacity="0.7"/>
      </g>
    ))}
    {/* Toddler silhouette running */}
    <g transform="translate(175, 260)">
      {/* Legs */}
      <path d="M -8 60 Q -12 85 -5 100 L 3 100 Q 0 80 2 60 Z" fill="#D4A890"/>
      <path d="M 12 55 Q 20 80 15 102 L 22 102 Q 25 80 22 55 Z" fill="#C49680"/>
      {/* Dress */}
      <path d="M -18 10 Q -25 45 -15 70 L 30 70 Q 35 45 22 10 Z" fill="#F5E3D4"/>
      <path d="M -18 10 Q -25 45 -15 70 L 30 70 Q 35 45 22 10 Z" fill="url(#tf-sun)" opacity="0.6"/>
      {/* Arms raised */}
      <path d="M -18 15 Q -38 -5 -35 -25" stroke="#D4A890" strokeWidth="7" fill="none" strokeLinecap="round"/>
      <path d="M 22 10 Q 42 -10 40 -30" stroke="#D4A890" strokeWidth="7" fill="none" strokeLinecap="round"/>
      {/* Head */}
      <circle cx="4" cy="-12" r="16" fill="#E8C1A5"/>
      {/* Hair */}
      <path d="M -12 -15 Q -10 -28 4 -28 Q 18 -28 20 -15 Q 18 -22 4 -22 Q -10 -22 -12 -15 Z" fill="#8B6042"/>
      <circle cx="-10" cy="-10" r="4" fill="#8B6042"/>
      <circle cx="18" cy="-10" r="4" fill="#8B6042"/>
    </g>
    {/* Bokeh light */}
    <circle cx="80" cy="160" r="6" fill="#FFF5E0" opacity="0.6"/>
    <circle cx="360" cy="200" r="5" fill="#FFF5E0" opacity="0.5"/>
    <circle cx="140" cy="100" r="4" fill="#FFF5E0" opacity="0.7"/>
  </svg>
);

// Mother + daughter forehead kiss, linen tones
const SceneMomKiss = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="mk-bg" x1="0" x2="1" y1="0" y2="1">
        <stop offset="0%" stopColor="#F2DCCD"/>
        <stop offset="100%" stopColor="#D9B9A3"/>
      </linearGradient>
      <radialGradient id="mk-glow" cx="0.5" cy="0.3" r="0.6">
        <stop offset="0%" stopColor="#FFEED8" stopOpacity="0.7"/>
        <stop offset="100%" stopColor="#FFEED8" stopOpacity="0"/>
      </radialGradient>
    </defs>
    <rect width="400" height="500" fill="url(#mk-bg)"/>
    <rect width="400" height="500" fill="url(#mk-glow)"/>
    {/* Mother's shoulders/dress */}
    <path d="M -20 500 C -20 360 40 310 120 310 L 280 310 C 360 310 420 360 420 500 Z" fill="#E3C1A8"/>
    {/* Daughter's dress (front) */}
    <path d="M 90 500 C 90 430 130 400 200 400 C 270 400 310 430 310 500 Z" fill="#EED4C0"/>
    {/* Mother's head tilted down */}
    <ellipse cx="200" cy="200" rx="58" ry="68" fill="#EBC9AF" transform="rotate(-8 200 200)"/>
    {/* Mother's hair */}
    <path d="M 140 160 Q 135 110 200 108 Q 265 110 262 165 Q 270 220 255 260 L 265 320 L 240 330 Q 220 200 200 170 Q 180 200 160 330 L 135 320 L 145 260 Q 130 220 140 160 Z" fill="#4A3424"/>
    {/* Daughter's head nested */}
    <ellipse cx="200" cy="345" rx="42" ry="48" fill="#F1D3B8"/>
    {/* Daughter's hair */}
    <path d="M 160 325 Q 158 300 200 298 Q 242 300 240 328 Q 245 360 235 390 L 200 395 L 165 390 Q 155 360 160 325 Z" fill="#8B6042"/>
    {/* Kiss point on daughter's forehead */}
    <ellipse cx="200" cy="318" rx="8" ry="3" fill="#C4856D" opacity="0.5"/>
    {/* Mother's eye closed */}
    <path d="M 178 195 Q 188 192 198 197" stroke="#3D342E" strokeWidth="1.5" fill="none" strokeLinecap="round"/>
    {/* Daughter's eye closed, peaceful */}
    <path d="M 182 348 Q 189 345 196 349" stroke="#3D342E" strokeWidth="1.2" fill="none" strokeLinecap="round"/>
    {/* Daughter's cheek */}
    <circle cx="176" cy="360" r="4" fill="#E8B8A0" opacity="0.5"/>
    {/* Small flower in hair */}
    <g transform="translate(162, 310)">
      <circle cx="0" cy="0" r="3" fill="#E8B8A0"/>
      <circle cx="-3" cy="-2" r="2.5" fill="#F0D4C2"/>
      <circle cx="3" cy="-2" r="2.5" fill="#F0D4C2"/>
      <circle cx="0" cy="3" r="2.5" fill="#F0D4C2"/>
    </g>
    <circle cx="70" cy="120" r="4" fill="#FFF5E6" opacity="0.7"/>
    <circle cx="340" cy="140" r="3" fill="#FFF5E6" opacity="0.6"/>
  </svg>
);

// Family of 4-5 walking hand-in-hand, golden hour
const SceneFamilyWalk = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="fw-sky" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#F2D4B8"/>
        <stop offset="60%" stopColor="#E8B894"/>
        <stop offset="100%" stopColor="#D8A078"/>
      </linearGradient>
      <linearGradient id="fw-ground" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#B89A72"/>
        <stop offset="100%" stopColor="#6E5F48"/>
      </linearGradient>
    </defs>
    <rect width="400" height="360" fill="url(#fw-sky)"/>
    <rect y="340" width="400" height="160" fill="url(#fw-ground)"/>
    {/* Sun */}
    <circle cx="200" cy="280" r="55" fill="#FFE8C8" opacity="0.9"/>
    <circle cx="200" cy="280" r="80" fill="#FFE8C8" opacity="0.3"/>
    {/* Tree line */}
    <ellipse cx="30" cy="335" rx="70" ry="22" fill="#7A6B4E" opacity="0.7"/>
    <ellipse cx="370" cy="340" rx="80" ry="25" fill="#7A6B4E" opacity="0.6"/>
    {/* Family silhouettes walking away */}
    <g>
      {/* Dad */}
      <path d="M 120 360 L 118 470 L 128 470 L 128 400 L 132 470 L 142 470 L 140 360 Z" fill="#3D342E"/>
      <rect x="118" y="320" width="24" height="50" rx="6" fill="#3D342E"/>
      <circle cx="130" cy="310" r="12" fill="#3D342E"/>
      {/* Mom */}
      <path d="M 170 360 Q 165 420 170 470 L 185 470 L 190 400 L 195 470 L 210 470 Q 215 420 210 360 Z" fill="#6B5244"/>
      <path d="M 168 325 L 212 325 Q 218 360 210 390 L 170 390 Q 162 360 168 325 Z" fill="#7A6550"/>
      <circle cx="190" cy="312" r="13" fill="#E8C6AA"/>
      <path d="M 178 300 Q 178 295 190 293 Q 202 295 202 300 Q 205 320 200 325 L 180 325 Q 175 320 178 300 Z" fill="#4A3424"/>
      {/* Child 1 */}
      <path d="M 235 385 L 233 470 L 241 470 L 245 420 L 249 470 L 257 470 L 255 385 Z" fill="#8A6E58"/>
      <rect x="233" y="360" width="22" height="32" rx="4" fill="#EED4C0"/>
      <circle cx="244" cy="352" r="9" fill="#F1D3B8"/>
      {/* Child 2 (tiny, on shoulders behind Dad wouldn't read — put to right) */}
      <path d="M 280 398 L 278 470 L 285 470 L 288 430 L 291 470 L 298 470 L 296 398 Z" fill="#8A6E58"/>
      <rect x="278" y="378" width="20" height="24" rx="4" fill="#D4B09A"/>
      <circle cx="288" cy="370" r="8" fill="#F1D3B8"/>
      {/* Hand-holding connectors */}
      <line x1="145" y1="390" x2="168" y2="395" stroke="#3D342E" strokeWidth="3" strokeLinecap="round"/>
      <line x1="212" y1="395" x2="234" y2="400" stroke="#6B5244" strokeWidth="3" strokeLinecap="round"/>
      <line x1="256" y1="405" x2="278" y2="410" stroke="#8A6E58" strokeWidth="2.5" strokeLinecap="round"/>
    </g>
    {/* Long shadows */}
    <ellipse cx="130" cy="475" rx="20" ry="6" fill="#4A3828" opacity="0.35"/>
    <ellipse cx="190" cy="475" rx="26" ry="7" fill="#4A3828" opacity="0.35"/>
    <ellipse cx="245" cy="478" rx="16" ry="5" fill="#4A3828" opacity="0.35"/>
    <ellipse cx="288" cy="478" rx="14" ry="4" fill="#4A3828" opacity="0.35"/>
    {/* Sun flare particles */}
    <circle cx="180" cy="240" r="3" fill="#FFF0D8" opacity="0.8"/>
    <circle cx="240" cy="260" r="2" fill="#FFF0D8" opacity="0.7"/>
    <circle cx="280" cy="220" r="2.5" fill="#FFF0D8" opacity="0.6"/>
  </svg>
);

// Peonies / spring floral mini
const SceneSpringFloral = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="sf-bg" x1="0" x2="1" y1="0" y2="1">
        <stop offset="0%" stopColor="#F5E3D9"/>
        <stop offset="100%" stopColor="#E6C8B8"/>
      </linearGradient>
      <radialGradient id="sf-peony" cx="0.5" cy="0.5" r="0.5">
        <stop offset="0%" stopColor="#FFE8E0"/>
        <stop offset="60%" stopColor="#E8B8A8"/>
        <stop offset="100%" stopColor="#C89080"/>
      </radialGradient>
      <radialGradient id="sf-peony2" cx="0.5" cy="0.5" r="0.5">
        <stop offset="0%" stopColor="#FBF4EA"/>
        <stop offset="70%" stopColor="#F0D4C2"/>
        <stop offset="100%" stopColor="#D4A890"/>
      </radialGradient>
    </defs>
    <rect width="400" height="500" fill="url(#sf-bg)"/>
    {/* Big out-of-focus peonies */}
    <g opacity="0.85">
      <circle cx="50" cy="80" r="80" fill="url(#sf-peony)" filter="blur(2px)"/>
      <circle cx="360" cy="60" r="70" fill="url(#sf-peony2)" filter="blur(2px)"/>
      <circle cx="370" cy="440" r="90" fill="url(#sf-peony)" filter="blur(2px)"/>
    </g>
    {/* Focused peony cluster center */}
    <g transform="translate(200, 250)">
      <PeonyBloom size={110} fill="url(#sf-peony2)"/>
      <g transform="translate(-70, 40)"><PeonyBloom size={80} fill="url(#sf-peony)"/></g>
      <g transform="translate(70, 50)"><PeonyBloom size={70} fill="url(#sf-peony2)"/></g>
      <g transform="translate(-30, -80)"><PeonyBloom size={55} fill="url(#sf-peony)"/></g>
    </g>
    {/* Leaves */}
    <ellipse cx="140" cy="340" rx="35" ry="12" fill="#A8B5A0" opacity="0.8" transform="rotate(-30 140 340)"/>
    <ellipse cx="270" cy="360" rx="40" ry="14" fill="#8A9A82" opacity="0.8" transform="rotate(25 270 360)"/>
    <ellipse cx="210" cy="380" rx="30" ry="10" fill="#A8B5A0" opacity="0.7"/>
    {/* Bokeh */}
    <circle cx="80" cy="300" r="5" fill="#FFF0E8" opacity="0.8"/>
    <circle cx="320" cy="200" r="4" fill="#FFF0E8" opacity="0.7"/>
    <circle cx="150" cy="450" r="3" fill="#FFF0E8" opacity="0.6"/>
  </svg>
);

const PeonyBloom = ({ size = 80, fill = '#F0D4C2' }) => {
  const petals = 8;
  return (
    <g>
      {Array.from({length: petals}).map((_, i) => {
        const a = (i / petals) * Math.PI * 2;
        const x = Math.cos(a) * size * 0.28;
        const y = Math.sin(a) * size * 0.28;
        return <ellipse key={i} cx={x} cy={y} rx={size * 0.32} ry={size * 0.22} fill={fill} opacity="0.85" transform={`rotate(${(a * 180 / Math.PI) + 90} ${x} ${y})`}/>;
      })}
      <circle cx="0" cy="0" r={size * 0.2} fill={fill}/>
      <circle cx="-4" cy="-4" r={size * 0.12} fill="#FFF4EC" opacity="0.6"/>
    </g>
  );
};

// Summer golden hour on a trail
const SceneSummerTrail = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="st-sky" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#F5D4B8"/>
        <stop offset="100%" stopColor="#E8A878"/>
      </linearGradient>
      <linearGradient id="st-trees" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#8A9A82"/>
        <stop offset="100%" stopColor="#4A5A44"/>
      </linearGradient>
      <radialGradient id="st-sun" cx="0.5" cy="0.4" r="0.5">
        <stop offset="0%" stopColor="#FFF0D0" stopOpacity="1"/>
        <stop offset="100%" stopColor="#FFF0D0" stopOpacity="0"/>
      </radialGradient>
    </defs>
    <rect width="400" height="260" fill="url(#st-sky)"/>
    <path d="M 0 260 Q 100 180 200 220 Q 300 260 400 200 L 400 500 L 0 500 Z" fill="url(#st-trees)"/>
    <path d="M 0 280 Q 100 260 200 270 Q 300 280 400 260 L 400 500 L 0 500 Z" fill="#6E7A5E"/>
    <path d="M 100 500 Q 180 370 200 310 Q 220 370 300 500 Z" fill="#D4B890"/>
    <rect width="400" height="500" fill="url(#st-sun)" opacity="0.8"/>
    <circle cx="200" cy="205" r="40" fill="#FFEFD0" opacity="0.95"/>
    <circle cx="200" cy="205" r="70" fill="#FFEFD0" opacity="0.3"/>
    {/* Barefoot child silhouettes */}
    <g transform="translate(170, 360)">
      <ellipse cx="15" cy="90" rx="22" ry="6" fill="#4A3828" opacity="0.3"/>
      <path d="M 0 90 L -3 30 Q 0 15 15 15 Q 30 15 33 30 L 30 90 Z" fill="#3D342E"/>
      <rect x="5" y="20" width="20" height="20" fill="#E8C6AA"/>
      <circle cx="15" cy="5" r="12" fill="#E8C6AA"/>
    </g>
    <g transform="translate(215, 375)">
      <ellipse cx="12" cy="75" rx="18" ry="5" fill="#4A3828" opacity="0.3"/>
      <path d="M 0 75 L -2 25 Q 0 12 12 12 Q 24 12 26 25 L 24 75 Z" fill="#5A4236"/>
      <rect x="4" y="18" width="16" height="16" fill="#F1D3B8"/>
      <circle cx="12" cy="3" r="10" fill="#F1D3B8"/>
    </g>
    {/* Light particles */}
    <circle cx="100" cy="180" r="4" fill="#FFF5E0" opacity="0.7"/>
    <circle cx="310" cy="220" r="3" fill="#FFF5E0" opacity="0.6"/>
    <circle cx="150" cy="280" r="2.5" fill="#FFF5E0" opacity="0.8"/>
    <circle cx="280" cy="320" r="3" fill="#FFF5E0" opacity="0.5"/>
  </svg>
);

// Fall pumpkin patch
const SceneFallPumpkin = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="fp-sky" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#F2D4B0"/>
        <stop offset="100%" stopColor="#E8B88C"/>
      </linearGradient>
      <linearGradient id="fp-ground" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#C49A70"/>
        <stop offset="100%" stopColor="#8A6B4A"/>
      </linearGradient>
    </defs>
    <rect width="400" height="260" fill="url(#fp-sky)"/>
    <rect y="240" width="400" height="260" fill="url(#fp-ground)"/>
    <circle cx="320" cy="120" r="35" fill="#FFE8C8" opacity="0.8"/>
    {/* Distant bare trees */}
    <g opacity="0.7">
      <ellipse cx="50" cy="245" rx="60" ry="20" fill="#8B5A3C"/>
      <ellipse cx="360" cy="250" rx="70" ry="22" fill="#A06A45"/>
    </g>
    {/* Pumpkins scattered */}
    <Pumpkin x={60} y={360} s={1.3} tone="#D47A3E"/>
    <Pumpkin x={150} y={380} s={1.6} tone="#E8904A"/>
    <Pumpkin x={260} y={370} s={1.4} tone="#C86A38"/>
    <Pumpkin x={340} y={385} s={1.2} tone="#D48048"/>
    <Pumpkin x={100} y={440} s={1.5} tone="#E8904A"/>
    <Pumpkin x={210} y={450} s={1.7} tone="#D47A3E"/>
    <Pumpkin x={320} y={445} s={1.3} tone="#C86A38"/>
    {/* Toddler sitting with pumpkin (center) */}
    <g transform="translate(200, 300)">
      <ellipse cx="0" cy="70" rx="48" ry="12" fill="#6B4A32" opacity="0.3"/>
      <path d="M -30 50 Q -35 10 -10 5 Q 10 5 30 10 Q 35 50 30 70 L -30 70 Z" fill="#B8724A"/>
      <circle cx="0" cy="-15" r="20" fill="#F1D3B8"/>
      <path d="M -18 -18 Q -16 -35 0 -37 Q 18 -35 20 -18 Q 22 -5 18 5 L -18 5 Q -22 -5 -18 -18 Z" fill="#6B4432"/>
      {/* Cozy sweater */}
      <path d="M -32 5 Q -38 25 -30 52 L 30 52 Q 38 25 32 5 Z" fill="#D4A888"/>
      {/* Hand holding small pumpkin */}
      <circle cx="0" cy="30" r="14" fill="#E8904A"/>
      <path d="M 0 16 Q -3 15 0 10 Q 3 15 0 16" fill="#4A5A44"/>
    </g>
    {/* Leaves floating */}
    <path d="M 80 180 Q 85 175 90 180 Q 88 185 82 185 Z" fill="#C48440" opacity="0.8"/>
    <path d="M 300 160 Q 305 155 310 160 Q 308 165 302 165 Z" fill="#D49C5C" opacity="0.7"/>
    <path d="M 180 210 Q 185 205 190 210 Q 188 215 182 215 Z" fill="#C48440" opacity="0.9"/>
  </svg>
);

const Pumpkin = ({ x, y, s = 1, tone = '#E8904A' }) => (
  <g transform={`translate(${x}, ${y}) scale(${s})`}>
    <ellipse cx="0" cy="0" rx="25" ry="20" fill={tone}/>
    <ellipse cx="-10" cy="0" rx="8" ry="20" fill={tone} opacity="0.8"/>
    <ellipse cx="10" cy="0" rx="8" ry="20" fill={tone} opacity="0.8"/>
    <ellipse cx="0" cy="0" rx="5" ry="20" fill={tone} opacity="0.6"/>
    <rect x="-2" y="-22" width="4" height="6" fill="#6B4A32"/>
  </g>
);

// Holiday magic — twinkle lights, christmas tree
const SceneHoliday = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <radialGradient id="ho-bg" cx="0.5" cy="0.6" r="0.7">
        <stop offset="0%" stopColor="#4A3E36"/>
        <stop offset="100%" stopColor="#2A1E18"/>
      </radialGradient>
      <radialGradient id="ho-light" cx="0.5" cy="0.5" r="0.5">
        <stop offset="0%" stopColor="#FFE8A8" stopOpacity="1"/>
        <stop offset="100%" stopColor="#FFE8A8" stopOpacity="0"/>
      </radialGradient>
    </defs>
    <rect width="400" height="500" fill="url(#ho-bg)"/>
    {/* Tree silhouette */}
    <path d="M 200 80 L 140 200 L 165 200 L 115 290 L 145 290 L 90 380 L 310 380 L 255 290 L 285 290 L 235 200 L 260 200 Z" fill="#3A4E38"/>
    {/* Twinkle lights — lots */}
    {Array.from({length: 60}).map((_, i) => {
      const cols = 10;
      const row = Math.floor(i / cols);
      const col = i % cols;
      const tx = 60 + col * 32 + (row % 2) * 16;
      const ty = 80 + row * 60;
      return (
        <g key={i}>
          <circle cx={tx} cy={ty} r="12" fill="url(#ho-light)"/>
          <circle cx={tx} cy={ty} r="2" fill="#FFF4D0"/>
        </g>
      );
    })}
    {/* Star on top */}
    <g transform="translate(200, 70)">
      <path d="M 0 -18 L 5 -5 L 18 -5 L 8 3 L 12 16 L 0 8 L -12 16 L -8 3 L -18 -5 L -5 -5 Z" fill="#FFE8A8"/>
      <circle cx="0" cy="0" r="22" fill="url(#ho-light)" opacity="0.6"/>
    </g>
    {/* Family silhouette in front — two parents, two kids */}
    <g transform="translate(200, 340)">
      <ellipse cx="0" cy="130" rx="130" ry="20" fill="#1A0E08" opacity="0.6"/>
      {/* Dad */}
      <ellipse cx="-60" cy="60" rx="22" ry="50" fill="#2A1E18"/>
      <circle cx="-60" cy="0" r="15" fill="#2A1E18"/>
      {/* Mom holding baby */}
      <ellipse cx="-10" cy="60" rx="24" ry="55" fill="#1F1410"/>
      <circle cx="-10" cy="-5" r="15" fill="#1F1410"/>
      <ellipse cx="-5" cy="45" rx="12" ry="18" fill="#3A2E24"/>
      {/* Child */}
      <ellipse cx="45" cy="80" rx="16" ry="35" fill="#2A1E18"/>
      <circle cx="45" cy="40" r="11" fill="#2A1E18"/>
    </g>
    {/* Foreground bokeh lights */}
    <circle cx="40" cy="80" r="18" fill="url(#ho-light)" opacity="0.7"/>
    <circle cx="370" cy="120" r="22" fill="url(#ho-light)" opacity="0.6"/>
    <circle cx="60" cy="420" r="16" fill="url(#ho-light)" opacity="0.5"/>
    <circle cx="340" cy="440" r="20" fill="url(#ho-light)" opacity="0.6"/>
  </svg>
);

// Abby portrait — studio warm
const SceneAbbyPortrait = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <radialGradient id="ap-bg" cx="0.4" cy="0.3" r="0.9">
        <stop offset="0%" stopColor="#EAD3BE"/>
        <stop offset="100%" stopColor="#C49A80"/>
      </radialGradient>
    </defs>
    <rect width="400" height="500" fill="url(#ap-bg)"/>
    {/* Window light sweep */}
    <path d="M 0 0 L 260 0 L 160 500 L 0 500 Z" fill="#F5E3D2" opacity="0.35"/>
    {/* Shoulders / cream dress */}
    <path d="M 60 500 C 60 360 110 320 200 320 C 290 320 340 360 340 500 Z" fill="#F5E8D6"/>
    {/* Neck */}
    <rect x="185" y="280" width="30" height="50" fill="#E8C6AA"/>
    {/* Face */}
    <ellipse cx="200" cy="240" rx="60" ry="72" fill="#EBC9AF"/>
    {/* Hair — warm brunette with waves */}
    <path d="M 135 220 Q 128 150 200 140 Q 272 150 265 222 Q 275 280 260 330 L 235 330 Q 225 260 200 230 Q 175 260 165 330 L 140 330 Q 125 280 135 220 Z" fill="#5A3E2A"/>
    <path d="M 145 245 Q 155 280 150 320" stroke="#4A3020" strokeWidth="2" fill="none" opacity="0.6"/>
    <path d="M 255 245 Q 245 280 250 320" stroke="#4A3020" strokeWidth="2" fill="none" opacity="0.6"/>
    {/* Eyes (subtle, looking soft) */}
    <ellipse cx="180" cy="235" rx="5" ry="2.5" fill="#3D342E"/>
    <ellipse cx="220" cy="235" rx="5" ry="2.5" fill="#3D342E"/>
    {/* Brows */}
    <path d="M 172 222 Q 180 219 190 223" stroke="#4A3020" strokeWidth="2" strokeLinecap="round" fill="none"/>
    <path d="M 210 223 Q 220 219 228 222" stroke="#4A3020" strokeWidth="2" strokeLinecap="round" fill="none"/>
    {/* Nose */}
    <path d="M 200 245 Q 196 260 200 270" stroke="#C89A7F" strokeWidth="1.5" fill="none" opacity="0.6"/>
    {/* Smile */}
    <path d="M 185 275 Q 200 285 215 275" stroke="#8A4E3E" strokeWidth="2" fill="none" strokeLinecap="round"/>
    <path d="M 188 277 Q 200 282 212 277 Q 200 280 188 277 Z" fill="#C47050" opacity="0.5"/>
    {/* Blush */}
    <circle cx="162" cy="258" r="10" fill="#E8A890" opacity="0.5"/>
    <circle cx="238" cy="258" r="10" fill="#E8A890" opacity="0.5"/>
    {/* Earrings */}
    <circle cx="142" cy="250" r="3" fill="#C9A87C"/>
    <circle cx="258" cy="250" r="3" fill="#C9A87C"/>
  </svg>
);

// Abby on location — laughing, more casual
const SceneAbbyLaugh = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="al-bg" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#E8CDB0"/>
        <stop offset="100%" stopColor="#C8A080"/>
      </linearGradient>
    </defs>
    <rect width="400" height="500" fill="url(#al-bg)"/>
    {/* Soft field blur bg */}
    <ellipse cx="100" cy="400" rx="120" ry="60" fill="#D4B890" opacity="0.7"/>
    <ellipse cx="350" cy="420" rx="100" ry="50" fill="#B89878" opacity="0.7"/>
    {/* Camera silhouette hanging */}
    <g transform="translate(140, 340)">
      <rect x="-28" y="-14" width="56" height="36" rx="4" fill="#2A1E18"/>
      <circle cx="0" cy="4" r="16" fill="#3D342E"/>
      <circle cx="0" cy="4" r="10" fill="#1A100A"/>
      <circle cx="0" cy="4" r="5" fill="#C9A87C" opacity="0.6"/>
    </g>
    {/* Strap */}
    <path d="M 115 340 Q 120 250 160 240" stroke="#2A1E18" strokeWidth="4" fill="none" opacity="0.8"/>
    {/* Figure — tilted head, laughing */}
    <path d="M 80 500 C 80 370 130 330 210 330 C 290 330 340 370 340 500 Z" fill="#B89878"/>
    {/* Linen top */}
    <path d="M 130 340 Q 125 430 140 500 L 300 500 Q 315 430 305 340 Z" fill="#F5E3D0"/>
    {/* Head tilted */}
    <g transform="translate(220, 230) rotate(-12)">
      <ellipse cx="0" cy="0" rx="52" ry="62" fill="#EBC9AF"/>
      <path d="M -50 -20 Q -45 -80 0 -82 Q 55 -78 55 -18 Q 65 40 50 80 L 30 80 Q 20 30 0 10 Q -20 30 -30 80 L -48 80 Q -60 40 -50 -20 Z" fill="#5A3E2A"/>
      {/* Eyes closed from laughing */}
      <path d="M -20 -8 Q -12 -14 -4 -8" stroke="#3D342E" strokeWidth="2" fill="none" strokeLinecap="round"/>
      <path d="M 8 -8 Q 16 -14 24 -8" stroke="#3D342E" strokeWidth="2" fill="none" strokeLinecap="round"/>
      {/* Open-mouth laugh */}
      <ellipse cx="5" cy="30" rx="12" ry="7" fill="#8A4E3E"/>
      <path d="M -5 32 Q 5 34 15 32" stroke="#C47050" strokeWidth="1.5" fill="none"/>
      {/* Blush */}
      <circle cx="-30" cy="12" r="10" fill="#E8A890" opacity="0.5"/>
      <circle cx="35" cy="12" r="10" fill="#E8A890" opacity="0.5"/>
    </g>
    <circle cx="60" cy="100" r="4" fill="#FFF5E0" opacity="0.7"/>
    <circle cx="350" cy="150" r="3" fill="#FFF5E0" opacity="0.6"/>
  </svg>
);

// Behind the scenes — camera + notebook flat lay
const SceneBehindTheScenes = () => (
  <svg viewBox="0 0 400 400" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="bts-bg" x1="0" x2="1" y1="0" y2="1">
        <stop offset="0%" stopColor="#F5E8D6"/>
        <stop offset="100%" stopColor="#E0C8B0"/>
      </linearGradient>
    </defs>
    <rect width="400" height="400" fill="url(#bts-bg)"/>
    {/* Shadow */}
    <ellipse cx="200" cy="210" rx="150" ry="30" fill="#B89878" opacity="0.3"/>
    {/* Camera */}
    <g transform="translate(200, 200)">
      <rect x="-85" y="-45" width="170" height="90" rx="10" fill="#2A1E18"/>
      <circle cx="0" cy="0" r="52" fill="#1A100A"/>
      <circle cx="0" cy="0" r="38" fill="#3D342E"/>
      <circle cx="0" cy="0" r="20" fill="#1A100A"/>
      <circle cx="0" cy="0" r="10" fill="#C9A87C" opacity="0.4"/>
      <rect x="-70" y="-42" width="30" height="10" rx="2" fill="#4A3828"/>
      <circle cx="65" cy="-30" r="5" fill="#C4404A"/>
    </g>
    {/* Linen swatch */}
    <rect x="20" y="30" width="130" height="80" rx="4" fill="#F5E3D0" opacity="0.9" transform="rotate(-8 85 70)"/>
    {/* Peony sprig */}
    <g transform="translate(330, 80) rotate(20)">
      <rect x="-2" y="0" width="3" height="80" fill="#A8B5A0"/>
      <ellipse cx="15" cy="30" rx="12" ry="6" fill="#A8B5A0" transform="rotate(20 15 30)"/>
      <circle cx="0" cy="-5" r="20" fill="#F0D4C2"/>
      <circle cx="-5" cy="-10" r="12" fill="#FFEEDC"/>
    </g>
    {/* Notebook */}
    <rect x="260" y="300" width="120" height="80" rx="3" fill="#E8D4B8" transform="rotate(8 320 340)"/>
    <line x1="270" y1="315" x2="370" y2="315" stroke="#C49A70" strokeWidth="1" opacity="0.5"/>
    <line x1="270" y1="330" x2="370" y2="330" stroke="#C49A70" strokeWidth="1" opacity="0.5"/>
    <line x1="270" y1="345" x2="370" y2="345" stroke="#C49A70" strokeWidth="1" opacity="0.5"/>
    {/* Coffee cup */}
    <g transform="translate(70, 330)">
      <ellipse cx="0" cy="0" rx="30" ry="8" fill="#3D342E"/>
      <path d="M -30 0 L -28 28 Q -28 35 0 35 Q 28 35 28 28 L 30 0 Z" fill="#F5E8D6"/>
      <ellipse cx="0" cy="0" rx="26" ry="6" fill="#6B4A32"/>
    </g>
  </svg>
);

// Her kids — tiny hand-holds cluster
const SceneHerKids = () => (
  <svg viewBox="0 0 400 400" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="hk-bg" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stopColor="#F2D4B8"/>
        <stop offset="100%" stopColor="#D8A878"/>
      </linearGradient>
    </defs>
    <rect width="400" height="400" fill="url(#hk-bg)"/>
    <circle cx="200" cy="200" r="150" fill="#FFEED8" opacity="0.4"/>
    {/* 3 kids back-facing */}
    <g transform="translate(80, 120)">
      <rect x="0" y="80" width="60" height="200" fill="#E8C4A0"/>
      <circle cx="30" cy="70" r="35" fill="#F1D3B8"/>
      <path d="M 0 60 Q 0 30 30 28 Q 60 30 60 60 Q 62 85 58 100 L 2 100 Q -2 85 0 60 Z" fill="#8B6042"/>
    </g>
    <g transform="translate(160, 150)">
      <rect x="0" y="70" width="70" height="200" fill="#D4A888"/>
      <circle cx="35" cy="60" r="38" fill="#F1D3B8"/>
      <path d="M -2 50 Q 0 20 35 18 Q 70 20 72 50 Q 76 80 70 95 L 0 95 Q -6 80 -2 50 Z" fill="#6B4A32"/>
    </g>
    <g transform="translate(260, 180)">
      <rect x="0" y="60" width="55" height="180" fill="#EED4C0"/>
      <circle cx="27" cy="50" r="30" fill="#F1D3B8"/>
      <path d="M 0 40 Q 0 18 27 16 Q 55 18 55 40 Q 58 65 52 80 L 2 80 Q -2 65 0 40 Z" fill="#A87048"/>
    </g>
    {/* Connecting hand-holds */}
    <line x1="135" y1="240" x2="160" y2="240" stroke="#E8C4A0" strokeWidth="6" strokeLinecap="round"/>
    <line x1="230" y1="250" x2="260" y2="250" stroke="#D4A888" strokeWidth="5" strokeLinecap="round"/>
    {/* Sun flare */}
    <circle cx="350" cy="80" r="40" fill="#FFF0D0" opacity="0.7"/>
  </svg>
);

// Generic mama + baby window light (contact page hero imagery)
const SceneMamaBabyLinen = () => (
  <svg viewBox="0 0 400 500" preserveAspectRatio="xMidYMid slice" style={{width: '100%', height: '100%', display: 'block'}}>
    <defs>
      <linearGradient id="mb-bg" x1="0" x2="1" y1="0" y2="1">
        <stop offset="0%" stopColor="#F2E0CE"/>
        <stop offset="100%" stopColor="#D8B296"/>
      </linearGradient>
      <radialGradient id="mb-sun" cx="0.2" cy="0.2" r="0.7">
        <stop offset="0%" stopColor="#FFF4DA" stopOpacity="0.9"/>
        <stop offset="100%" stopColor="#FFF4DA" stopOpacity="0"/>
      </radialGradient>
    </defs>
    <rect width="400" height="500" fill="url(#mb-bg)"/>
    <rect width="400" height="500" fill="url(#mb-sun)"/>
    {/* Linen drape */}
    <path d="M 0 0 L 0 500 L 80 500 Q 110 300 70 0 Z" fill="#FBEDD8" opacity="0.6"/>
    {/* Shoulder + body */}
    <path d="M 30 500 C 30 330 100 290 200 290 C 300 290 370 330 370 500 Z" fill="#D8B29A"/>
    <path d="M 70 500 C 70 360 130 330 210 330 C 290 330 350 360 350 500 Z" fill="#F2E3D0"/>
    {/* Head — looking down at baby */}
    <ellipse cx="180" cy="200" rx="55" ry="65" fill="#EBC9AF" transform="rotate(-15 180 200)"/>
    {/* Hair */}
    <path d="M 120 180 Q 115 120 180 118 Q 245 120 245 180 Q 255 240 240 290 L 220 290 L 205 200 Q 190 180 180 175 Q 165 185 155 290 L 135 290 Q 115 240 120 180 Z" fill="#5A3E2A" transform="rotate(-15 180 200)"/>
    {/* Baby cradled */}
    <ellipse cx="235" cy="380" rx="70" ry="30" fill="#FBF4EA"/>
    <circle cx="280" cy="375" r="20" fill="#F5D4B8"/>
    <circle cx="275" cy="373" r="1.5" fill="#4A3428"/>
    <path d="M 270 380 Q 276 383 282 380" stroke="#C48770" strokeWidth="1" fill="none" strokeLinecap="round"/>
    {/* Mother's arm cradling */}
    <path d="M 130 340 Q 160 410 280 400 Q 300 395 300 380" stroke="#D8B29A" strokeWidth="45" fill="none" strokeLinecap="round" opacity="0.9"/>
    {/* Floating particles */}
    <circle cx="80" cy="140" r="4" fill="#FFF0D8" opacity="0.8"/>
    <circle cx="50" cy="240" r="3" fill="#FFF0D8" opacity="0.6"/>
    <circle cx="110" cy="320" r="2.5" fill="#FFF0D8" opacity="0.7"/>
  </svg>
);

// Scene registry
const SCENES = {
  newbornHome: SceneNewbornHome,
  toddlerField: SceneToddlerField,
  momKiss: SceneMomKiss,
  familyWalk: SceneFamilyWalk,
  springFloral: SceneSpringFloral,
  summerTrail: SceneSummerTrail,
  fallPumpkin: SceneFallPumpkin,
  holiday: SceneHoliday,
  abbyPortrait: SceneAbbyPortrait,
  abbyLaugh: SceneAbbyLaugh,
  behindTheScenes: SceneBehindTheScenes,
  herKids: SceneHerKids,
  mamaBabyLinen: SceneMamaBabyLinen,
};

// Photo wrapper — swap .ph placeholders for real scenes, keeps caption chip
const Photo = ({ scene, label, style, className = '', round = 16, aspect }) => {
  const Scene = SCENES[scene] || SceneNewbornHome;
  const s = {
    position: 'relative',
    overflow: 'hidden',
    borderRadius: round,
    ...(aspect ? { aspectRatio: aspect } : {}),
    ...style,
  };
  return (
    <div className={`photo ${className}`} style={s}>
      <div style={{position: 'absolute', inset: 0}}>
        <Scene />
      </div>
      {label && (
        <div style={{
          position: 'absolute', left: 14, bottom: 14,
          fontFamily: 'JetBrains Mono, monospace', fontSize: 10, letterSpacing: '0.14em', textTransform: 'uppercase',
          color: 'rgba(61,52,46,.75)', background: 'rgba(250,246,241,.75)',
          padding: '5px 10px', borderRadius: 999, backdropFilter: 'blur(4px)',
        }}>{label}</div>
      )}
    </div>
  );
};

Object.assign(window, { Photo, SCENES });
