// Photorealistic SVG scenes — counter, fish, sake, plate, washi, moon, tatami
// Heavy use of feTurbulence, multiple radial gradients, depth-of-field, surface microdetail.

function PhCounter() {
  return (
    <svg viewBox="0 0 800 600" preserveAspectRatio="xMidYMid slice" style={{ width: "100%", height: "100%" }}>
      <defs>
        {/* Hinoki wood — turbulence displaced for grain */}
        <filter id="pc-grain" x="0" y="0" width="100%" height="100%">
          <feTurbulence type="fractalNoise" baseFrequency="0.012 0.85" numOctaves="3" seed="3" />
          <feColorMatrix values="0 0 0 0 .42  0 0 0 0 .28  0 0 0 0 .15  0 0 0 .85 0" />
          <feComposite in2="SourceGraphic" operator="in" />
        </filter>
        <filter id="pc-fine">
          <feTurbulence baseFrequency="0.9" numOctaves="2" seed="7"/>
          <feColorMatrix values="0 0 0 0 .15 0 0 0 0 .1 0 0 0 0 .05 0 0 0 .25 0"/>
        </filter>
        <radialGradient id="pc-spot" cx="50%" cy="35%" r="65%">
          <stop offset="0%" stopColor="#FFE0B0" stopOpacity=".22" />
          <stop offset="30%" stopColor="#C9A961" stopOpacity=".1" />
          <stop offset="100%" stopColor="#000" stopOpacity="0" />
        </radialGradient>
        <linearGradient id="pc-counter" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#E8C896" />
          <stop offset="30%" stopColor="#D4AC78" />
          <stop offset="70%" stopColor="#A07C50" />
          <stop offset="100%" stopColor="#6B4F2E" />
        </linearGradient>
        <linearGradient id="pc-counter-side" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#1A100A" />
          <stop offset="100%" stopColor="#050302" />
        </linearGradient>
        <linearGradient id="pc-wall" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#0A0706" />
          <stop offset="60%" stopColor="#1A1411" />
          <stop offset="100%" stopColor="#241B14" />
        </linearGradient>
        <radialGradient id="pc-lantern" cx="50%" cy="50%" r="50%">
          <stop offset="0%" stopColor="#FFE5B5" stopOpacity=".95" />
          <stop offset="50%" stopColor="#E8B870" stopOpacity=".7" />
          <stop offset="100%" stopColor="#C9A961" stopOpacity="0" />
        </radialGradient>
        <filter id="pc-blur"><feGaussianBlur stdDeviation="3.5"/></filter>
        <filter id="pc-soft"><feGaussianBlur stdDeviation="1.5"/></filter>
      </defs>

      {/* Background wall */}
      <rect width="800" height="600" fill="url(#pc-wall)" />
      <rect width="800" height="600" fill="url(#pc-spot)" />
      <rect width="800" height="600" filter="url(#pc-fine)" opacity=".4" />

      {/* Soft glow from lantern */}
      <ellipse cx="180" cy="120" rx="180" ry="140" fill="url(#pc-lantern)" opacity=".5"/>
      <ellipse cx="640" cy="100" rx="160" ry="120" fill="url(#pc-lantern)" opacity=".35"/>

      {/* Distant noren curtain — out of focus */}
      <g filter="url(#pc-blur)" opacity=".7">
        <rect x="260" y="60" width="280" height="180" fill="#1A0E0C" />
        <rect x="260" y="60" width="58" height="180" fill="#0A0605" />
        <rect x="324" y="60" width="58" height="180" fill="#0A0605" />
        <rect x="388" y="60" width="58" height="180" fill="#0A0605" />
        <rect x="452" y="60" width="58" height="180" fill="#0A0605" />
        <text x="400" y="170" fontFamily="serif" fontSize="78" fill="#C9A961" textAnchor="middle" opacity=".75" style={{ fontWeight: 500 }}>華</text>
      </g>

      {/* Shadow under counter edge */}
      <ellipse cx="400" cy="385" rx="500" ry="22" fill="#000" opacity=".7" filter="url(#pc-soft)"/>

      {/* Counter top — hinoki, perspective slab */}
      <polygon points="-30,390 830,360 830,440 -30,470" fill="url(#pc-counter)" />
      {/* Wood grain via turbulence overlay */}
      <polygon points="-30,390 830,360 830,440 -30,470" filter="url(#pc-grain)" opacity=".75"/>
      {/* Subtle grain lines drawn */}
      <g stroke="#8C6940" strokeWidth=".7" fill="none" opacity=".45">
        <path d="M -30 400 Q 200 396 400 398 Q 600 400 830 372" />
        <path d="M -30 412 Q 220 408 420 411 Q 620 413 830 384" />
        <path d="M -30 422 Q 260 418 460 421 Q 660 423 830 394" />
        <path d="M -30 432 Q 230 428 430 430 Q 630 432 830 402" />
        <path d="M -30 446 Q 250 442 450 444 Q 650 446 830 416" />
        <path d="M -30 458 Q 270 454 470 456 Q 670 458 830 428" />
      </g>
      {/* Highlight along front edge */}
      <polygon points="-30,388 830,358 830,365 -30,395" fill="#F0D7A8" opacity=".55"/>
      {/* Counter front face — darker, perspective */}
      <polygon points="-30,440 830,410 830,600 -30,600" fill="url(#pc-counter-side)" />
      <polygon points="-30,440 830,410 830,418 -30,448" fill="#3A2616" opacity=".7"/>

      {/* Reflection of overhead light on counter */}
      <ellipse cx="400" cy="400" rx="280" ry="14" fill="#FFE0B0" opacity=".18" filter="url(#pc-soft)"/>
      <ellipse cx="400" cy="402" rx="200" ry="6" fill="#FFFFFF" opacity=".18"/>

      {/* Tane-bako (fish case) at left — out of focus */}
      <g filter="url(#pc-blur)" opacity=".85">
        <rect x="20" y="320" width="160" height="70" fill="#2A1A12" />
        <rect x="20" y="320" width="160" height="14" fill="#0A0605" />
        <rect x="30" y="340" width="60" height="44" fill="#D87767" opacity=".6" />
        <rect x="100" y="340" width="70" height="44" fill="#E8B090" opacity=".7" />
      </g>

      {/* Three nigiri on counter — center, in focus */}
      <g>
        {[340, 410, 480].map((x, i) => {
          const fillTop = i === 0 ? "#D87767" : i === 1 ? "#C9523A" : "#E8B090";
          return (
            <g key={i} transform={`translate(${x} 400)`}>
              <ellipse cx="0" cy="14" rx="40" ry="6" fill="#000" opacity=".7" filter="url(#pc-soft)"/>
              <path d="M -36 4 Q -36 -8 -22 -10 L 22 -10 Q 36 -8 36 4 Q 36 12 22 14 L -22 14 Q -36 12 -36 4 Z" fill="#EFE0BC" />
              <path d="M -36 4 Q -36 12 -22 14 L 22 14 Q 36 12 36 4 L 36 12 L -36 12 Z" fill="#000" opacity=".15"/>
              {/* rice grains */}
              {Array.from({length: 14}).map((_, k) => (
                <ellipse key={k} cx={-30 + k*4.5 + (k%2)*1.2} cy={-5 + (k%3)*5} rx="1.4" ry=".7" fill="#A87E45" opacity=".4"/>
              ))}
              <path d="M -38 -12 Q -38 -22 -24 -23 L 24 -23 Q 38 -22 38 -12 L 38 -4 Q 38 -1 28 0 L -28 0 Q -38 -1 -38 -4 Z" fill={fillTop}/>
              <path d="M -34 -19 Q -10 -22 18 -19 Q 28 -18 32 -19" stroke="#FFFFFF" strokeWidth=".8" fill="none" opacity=".55"/>
              <path d="M -30 -14 Q 0 -16 22 -14" stroke="#FFFFFF" strokeWidth=".5" fill="none" opacity=".4"/>
              <ellipse cx="-10" cy="-17" rx="14" ry="2" fill="#FFFFFF" opacity=".3"/>
            </g>
          );
        })}
      </g>

      {/* Stool silhouettes — far, blurred */}
      <g filter="url(#pc-blur)" opacity=".95">
        <rect x="80" y="510" width="40" height="90" fill="#050302" />
        <rect x="250" y="500" width="40" height="100" fill="#050302" />
        <rect x="430" y="490" width="40" height="110" fill="#050302" />
        <rect x="610" y="480" width="40" height="120" fill="#050302" />
      </g>

      {/* Vignette */}
      <radialGradient id="pc-vign" cx="50%" cy="50%" r="70%">
        <stop offset="50%" stopColor="#000" stopOpacity="0"/>
        <stop offset="100%" stopColor="#000" stopOpacity=".8"/>
      </radialGradient>
      <rect width="800" height="600" fill="url(#pc-vign)" />
    </svg>
  );
}

function PhFish() {
  return (
    <svg viewBox="0 0 800 600" preserveAspectRatio="xMidYMid slice" style={{ width: "100%", height: "100%" }}>
      <defs>
        <radialGradient id="pf-bg" cx="50%" cy="45%" r="75%">
          <stop offset="0%" stopColor="#1F1815" />
          <stop offset="60%" stopColor="#0D0908" />
          <stop offset="100%" stopColor="#020101" />
        </radialGradient>
        <linearGradient id="pf-tuna" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#F4B8A6" />
          <stop offset="30%" stopColor="#E68874" />
          <stop offset="70%" stopColor="#A84A38" />
          <stop offset="100%" stopColor="#5A1F18" />
        </linearGradient>
        <linearGradient id="pf-tuna-side" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#8E3A2F"/><stop offset="100%" stopColor="#3A1410"/>
        </linearGradient>
        <radialGradient id="pf-gloss" cx="30%" cy="20%" r="40%">
          <stop offset="0%" stopColor="#FFFFFF" stopOpacity=".55"/>
          <stop offset="100%" stopColor="#FFFFFF" stopOpacity="0"/>
        </radialGradient>
        <filter id="pf-blur"><feGaussianBlur stdDeviation="4"/></filter>
        <filter id="pf-soft"><feGaussianBlur stdDeviation="1"/></filter>
        <filter id="pf-roughen">
          <feTurbulence baseFrequency=".7" numOctaves="2" seed="5"/>
          <feDisplacementMap in="SourceGraphic" scale="2"/>
        </filter>
        <filter id="pf-board">
          <feTurbulence baseFrequency=".006 .7" numOctaves="3" seed="2"/>
          <feColorMatrix values="0 0 0 0 .15 0 0 0 0 .08 0 0 0 0 .04 0 0 0 .8 0"/>
        </filter>
      </defs>

      <rect width="800" height="600" fill="url(#pf-bg)" />
      {/* Warm key light from upper-right */}
      <ellipse cx="560" cy="180" rx="500" ry="240" fill="#C9A961" opacity=".12" />
      <ellipse cx="420" cy="240" rx="320" ry="120" fill="#FFE0B0" opacity=".08" />

      {/* Cutting board — dark hinoki */}
      <polygon points="40,200 760,180 780,500 20,520" fill="#1A0D06"/>
      <polygon points="40,200 760,180 780,500 20,520" filter="url(#pf-board)" opacity=".85"/>
      {/* Board grain lines */}
      <g stroke="#3A2010" strokeWidth=".6" fill="none" opacity=".5">
        <path d="M 20 240 Q 400 224 780 220"/>
        <path d="M 20 280 Q 400 264 780 260"/>
        <path d="M 20 320 Q 400 304 780 300"/>
        <path d="M 20 360 Q 400 344 780 340"/>
        <path d="M 20 400 Q 400 384 780 380"/>
        <path d="M 20 440 Q 400 424 780 420"/>
        <path d="M 20 480 Q 400 464 780 460"/>
      </g>
      {/* Board edge */}
      <polygon points="40,200 760,180 760,188 40,208" fill="#5A3318" opacity=".7"/>

      {/* Shadow under fillet */}
      <ellipse cx="420" cy="400" rx="280" ry="22" fill="#000" opacity=".7" filter="url(#pf-soft)"/>

      {/* Tuna fillet — large block of toro */}
      <g transform="translate(420 340)">
        {/* Bottom shadow stripe */}
        <path d="M -240 50 Q -240 60 -220 62 L 220 58 Q 240 56 240 46 L 240 60 L -240 60 Z" fill="url(#pf-tuna-side)"/>
        {/* Main body */}
        <path d="M -240 -40 Q -240 -70 -200 -75 L 210 -68 Q 245 -65 245 -38 Q 245 30 220 48 L -215 55 Q -240 50 -240 30 Z" fill="url(#pf-tuna)"/>

        {/* Fat marbling — many fine lines */}
        <g stroke="#FFFFFF" fill="none" strokeLinecap="round">
          <path d="M -220 -55 Q -100 -70 60 -55 Q 160 -45 230 -55" strokeWidth="2.8" opacity=".55"/>
          <path d="M -210 -38 Q -80 -52 80 -38 Q 170 -28 220 -38" strokeWidth="2.2" opacity=".5"/>
          <path d="M -225 -20 Q -100 -32 80 -18 Q 180 -8 230 -20" strokeWidth="1.8" opacity=".4"/>
          <path d="M -200 -8 Q -60 -18 100 -4 Q 180 4 225 -6" strokeWidth="1.4" opacity=".35"/>
          <path d="M -215 8 Q -60 -2 120 12 Q 200 20 230 12" strokeWidth="1.2" opacity=".3"/>
          <path d="M -220 24 Q -90 14 90 28 Q 180 36 220 28" strokeWidth=".9" opacity=".26"/>
          {/* Wavy short marbling */}
          <path d="M -180 -62 Q -160 -65 -140 -62" strokeWidth="1.6" opacity=".5"/>
          <path d="M -90 -68 Q -70 -71 -50 -68" strokeWidth="1.4" opacity=".45"/>
          <path d="M 40 -64 Q 60 -67 80 -64" strokeWidth="1.4" opacity=".45"/>
          <path d="M 130 -60 Q 150 -63 170 -60" strokeWidth="1.2" opacity=".4"/>
        </g>

        {/* Top gloss highlight */}
        <ellipse cx="-30" cy="-58" rx="200" ry="10" fill="url(#pf-gloss)" />
        <ellipse cx="-80" cy="-48" rx="100" ry="4" fill="#FFFFFF" opacity=".35"/>

        {/* Cut end (right side) — visible cross-section */}
        <path d="M 230 -68 Q 248 -60 248 -38 Q 250 0 235 30 L 240 -10 L 245 -55 Z" fill="#7A2A1F" opacity=".7"/>
      </g>

      {/* Knife — yanagiba, mirror-polished */}
      <g transform="translate(160 450) rotate(-3)">
        <polygon points="0,0 480,-10 484,8 0,18" fill="#D8D8DC" />
        <polygon points="0,0 480,-10 484,-4 0,6" fill="#FFFFFF" opacity=".75" />
        <polygon points="0,8 480,-2 484,8 0,18" fill="#888892" opacity=".6"/>
        {/* Edge bevel */}
        <polyline points="0,16 484,6" stroke="#3A3A40" strokeWidth=".6" />
        {/* Handle — magnolia wood */}
        <rect x="-130" y="-6" width="138" height="28" fill="#3A2820" rx="3"/>
        <rect x="-130" y="-6" width="138" height="8" fill="#5A3E2A" rx="3"/>
        {/* Ferrule */}
        <rect x="-8" y="-8" width="14" height="32" fill="#1A1411"/>
      </g>

      {/* Salt (shio) — tiny scattered crystals near fillet */}
      <g fill="#F5F0E6" opacity=".9">
        {Array.from({length: 14}).map((_, i) => (
          <rect key={i} x={150 + i*36 + (i%3)*4} y={250 + (i%4)*5} width="1.5" height="1.5" />
        ))}
      </g>

      {/* Vignette */}
      <radialGradient id="pf-vign" cx="50%" cy="50%" r="75%">
        <stop offset="55%" stopColor="#000" stopOpacity="0"/>
        <stop offset="100%" stopColor="#000" stopOpacity=".85"/>
      </radialGradient>
      <rect width="800" height="600" fill="url(#pf-vign)" />
    </svg>
  );
}

function PhSake() {
  return (
    <svg viewBox="0 0 800 600" preserveAspectRatio="xMidYMid slice" style={{ width: "100%", height: "100%" }}>
      <defs>
        <radialGradient id="ps-bg" cx="50%" cy="50%" r="80%">
          <stop offset="0%" stopColor="#241A14"/><stop offset="60%" stopColor="#0A0706"/><stop offset="100%" stopColor="#040201"/>
        </radialGradient>
        {/* Dark green glass bottle */}
        <linearGradient id="ps-b1" x1="0" y1="0" x2="1" y2="0">
          <stop offset="0%" stopColor="#020806" />
          <stop offset="30%" stopColor="#0E2A1E" />
          <stop offset="55%" stopColor="#163A28" />
          <stop offset="80%" stopColor="#08180F" />
          <stop offset="100%" stopColor="#020606" />
        </linearGradient>
        {/* Amber bottle */}
        <linearGradient id="ps-b2" x1="0" y1="0" x2="1" y2="0">
          <stop offset="0%" stopColor="#1A0805"/>
          <stop offset="40%" stopColor="#5A2A18"/>
          <stop offset="55%" stopColor="#7A3820"/>
          <stop offset="80%" stopColor="#3A1A0E"/>
          <stop offset="100%" stopColor="#0A0403"/>
        </linearGradient>
        {/* Clear sake bottle */}
        <linearGradient id="ps-b3" x1="0" y1="0" x2="1" y2="0">
          <stop offset="0%" stopColor="#0A0A0A"/>
          <stop offset="40%" stopColor="#3A3838"/>
          <stop offset="55%" stopColor="#4A4845"/>
          <stop offset="80%" stopColor="#1A1818"/>
          <stop offset="100%" stopColor="#050505"/>
        </linearGradient>
        <linearGradient id="ps-label" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#FAF5E8"/><stop offset="100%" stopColor="#D8CDB0"/>
        </linearGradient>
        <linearGradient id="ps-label-gold" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#E8C870"/><stop offset="100%" stopColor="#9A7838"/>
        </linearGradient>
        <radialGradient id="ps-spot" cx="50%" cy="30%" r="60%">
          <stop offset="0%" stopColor="#FFE0B0" stopOpacity=".18"/>
          <stop offset="100%" stopColor="#000" stopOpacity="0"/>
        </radialGradient>
        <filter id="ps-soft"><feGaussianBlur stdDeviation="1.4"/></filter>
        <filter id="ps-blur"><feGaussianBlur stdDeviation="4"/></filter>
      </defs>

      <rect width="800" height="600" fill="url(#ps-bg)" />
      <rect width="800" height="600" fill="url(#ps-spot)" />

      {/* Reflective surface */}
      <rect x="0" y="500" width="800" height="100" fill="#0A0605"/>
      <ellipse cx="400" cy="500" rx="800" ry="6" fill="#1A1411"/>

      {/* Shadows */}
      <ellipse cx="240" cy="500" rx="80" ry="9" fill="#000" opacity=".85" filter="url(#ps-soft)"/>
      <ellipse cx="400" cy="500" rx="90" ry="10" fill="#000" opacity=".9" filter="url(#ps-soft)"/>
      <ellipse cx="560" cy="500" rx="75" ry="8" fill="#000" opacity=".8" filter="url(#ps-soft)"/>

      {/* BOTTLE 1 — left, dark green */}
      <g>
        {/* Neck */}
        <path d="M 222 200 Q 222 195 232 195 L 248 195 Q 258 195 258 200 L 258 260 Q 258 268 252 270 L 228 270 Q 222 268 222 260 Z" fill="url(#ps-b1)"/>
        {/* Cap — washi paper with twine */}
        <rect x="220" y="190" width="40" height="14" fill="#3A2820" />
        <rect x="218" y="186" width="44" height="6" fill="#F5F0E6" opacity=".9"/>
        <rect x="220" y="200" width="40" height="2" fill="#C9A961"/>
        {/* Shoulder transition */}
        <path d="M 222 260 Q 222 280 200 290 L 200 310 L 280 310 L 280 290 Q 258 280 258 260 Z" fill="url(#ps-b1)"/>
        {/* Body */}
        <rect x="200" y="305" width="80" height="200" rx="6" fill="url(#ps-b1)" />
        {/* Highlight */}
        <rect x="208" y="312" width="6" height="180" fill="#7AB89A" opacity=".5" rx="3"/>
        <rect x="216" y="318" width="3" height="160" fill="#FFFFFF" opacity=".7" rx="2"/>
        {/* Edge highlight right */}
        <rect x="268" y="315" width="3" height="180" fill="#5A8870" opacity=".3" rx="2"/>
        {/* Label */}
        <rect x="206" y="350" width="68" height="120" fill="url(#ps-label)" />
        <rect x="206" y="350" width="68" height="120" fill="none" stroke="#9A8050" strokeWidth=".5" opacity=".4"/>
        <rect x="210" y="354" width="60" height="112" fill="none" stroke="#3A2820" strokeWidth=".4"/>
        <text x="240" y="394" fontFamily="serif" fontSize="22" fill="#1A1411" textAnchor="middle" style={{ writingMode: "vertical-rl", letterSpacing: ".3em" }}>十四代</text>
        <text x="240" y="424" fontFamily="serif" fontSize="9" fill="#8B1A1A" textAnchor="middle">純米大吟醸</text>
        <rect x="232" y="446" width="16" height="16" fill="#8B1A1A"/>
        <text x="240" y="458" fontFamily="serif" fontSize="9" fill="#F5F0E6" textAnchor="middle">曜</text>
      </g>

      {/* BOTTLE 2 — center, amber, taller */}
      <g>
        <path d="M 380 160 Q 380 155 392 155 L 408 155 Q 420 155 420 160 L 420 230 Q 420 238 412 240 L 388 240 Q 380 238 380 230 Z" fill="url(#ps-b2)"/>
        <rect x="378" y="148" width="44" height="14" fill="#1A0A06" />
        <rect x="376" y="144" width="48" height="6" fill="#C9A961" opacity=".9"/>
        <rect x="378" y="158" width="44" height="2" fill="#E4CC8A"/>
        <path d="M 380 230 Q 380 260 358 275 L 358 300 L 442 300 L 442 275 Q 420 260 420 230 Z" fill="url(#ps-b2)"/>
        <rect x="358" y="295" width="84" height="210" rx="6" fill="url(#ps-b2)"/>
        <rect x="366" y="304" width="5" height="190" fill="#E8B070" opacity=".55" rx="2"/>
        <rect x="372" y="312" width="3" height="170" fill="#FFFFFF" opacity=".7" rx="2"/>
        <rect x="430" y="308" width="3" height="190" fill="#3A1A0E" opacity=".4" rx="2"/>
        {/* Gold label */}
        <rect x="364" y="350" width="72" height="130" fill="url(#ps-label-gold)"/>
        <rect x="364" y="350" width="72" height="130" fill="none" stroke="#1A1411" strokeWidth=".5"/>
        <rect x="368" y="354" width="64" height="122" fill="none" stroke="#1A1411" strokeWidth=".4"/>
        <text x="400" y="396" fontFamily="serif" fontSize="22" fill="#1A1411" textAnchor="middle" style={{ writingMode: "vertical-rl", letterSpacing: ".25em" }}>新政</text>
        <text x="400" y="438" fontFamily="serif" fontSize="10" fill="#1A1411" textAnchor="middle">No. 6</text>
        <text x="400" y="456" fontFamily="serif" fontSize="8" fill="#1A1411" textAnchor="middle">生酛純米</text>
        <text x="400" y="470" fontFamily="serif" fontSize="7" fill="#1A1411" textAnchor="middle" opacity=".7">秋田 · AKITA</text>
      </g>

      {/* BOTTLE 3 — right, clear glass / dark contents */}
      <g>
        <path d="M 540 200 Q 540 195 550 195 L 564 195 Q 574 195 574 200 L 574 250 Q 574 258 568 260 L 546 260 Q 540 258 540 250 Z" fill="url(#ps-b3)"/>
        <rect x="538" y="188" width="38" height="14" fill="#3A2820"/>
        <rect x="536" y="184" width="42" height="6" fill="#F5F0E6" opacity=".9"/>
        <path d="M 540 250 Q 540 275 520 290 L 520 310 L 594 310 L 594 290 Q 574 275 574 250 Z" fill="url(#ps-b3)"/>
        <rect x="520" y="305" width="74" height="200" rx="6" fill="url(#ps-b3)"/>
        <rect x="527" y="312" width="5" height="180" fill="#FFFFFF" opacity=".55" rx="2"/>
        <rect x="534" y="320" width="3" height="160" fill="#FFFFFF" opacity=".7" rx="2"/>
        <rect x="584" y="310" width="3" height="180" fill="#FFFFFF" opacity=".25" rx="2"/>
        <rect x="526" y="350" width="62" height="120" fill="url(#ps-label)"/>
        <rect x="526" y="350" width="62" height="120" fill="none" stroke="#3A2820" strokeWidth=".5"/>
        <rect x="530" y="354" width="54" height="112" fill="none" stroke="#8B1A1A" strokeWidth=".4"/>
        <text x="557" y="396" fontFamily="serif" fontSize="20" fill="#1A1411" textAnchor="middle" style={{ writingMode: "vertical-rl", letterSpacing: ".3em" }}>獺祭</text>
        <text x="557" y="438" fontFamily="serif" fontSize="9" fill="#8B1A1A" textAnchor="middle">磨き二割三分</text>
        <text x="557" y="455" fontFamily="serif" fontSize="7" fill="#1A1411" opacity=".7" textAnchor="middle">山口 · YAMAGUCHI</text>
      </g>

      {/* Choko (sake cup) in foreground */}
      <g transform="translate(680 470)">
        <ellipse cx="0" cy="34" rx="34" ry="5" fill="#000" opacity=".85" filter="url(#ps-soft)"/>
        <path d="M -28 -6 Q -28 22 -8 30 L 8 30 Q 28 22 28 -6 Z" fill="#EFE4CC" />
        <path d="M -28 -6 Q -28 22 -8 30 L 8 30 Q 28 22 28 -6 L 24 -6 Q 24 20 6 26 L -6 26 Q -24 20 -24 -6 Z" fill="#000" opacity=".15"/>
        <ellipse cx="0" cy="-6" rx="28" ry="6" fill="#1A1411"/>
        <ellipse cx="0" cy="-7" rx="26" ry="5" fill="#3A2820" />
        <ellipse cx="0" cy="-9" rx="24" ry="4" fill="#5A3818"/>
        {/* sake liquid */}
        <ellipse cx="0" cy="-8" rx="22" ry="3.5" fill="#E8D5A8" opacity=".7"/>
        <ellipse cx="-5" cy="-9" rx="8" ry="1" fill="#FFFFFF" opacity=".6"/>
      </g>

      {/* Tokkuri vessel — out of focus, far right */}
      <g filter="url(#ps-blur)" opacity=".55">
        <path d="M 720 280 Q 720 290 710 295 L 710 380 Q 710 410 740 415 L 760 415 Q 790 410 790 380 L 790 295 Q 780 290 780 280 Z" fill="#1A1411"/>
      </g>

      {/* Soft top vignette */}
      <radialGradient id="ps-vign" cx="50%" cy="50%" r="80%">
        <stop offset="55%" stopColor="#000" stopOpacity="0"/>
        <stop offset="100%" stopColor="#000" stopOpacity=".75"/>
      </radialGradient>
      <rect width="800" height="600" fill="url(#ps-vign)" />
    </svg>
  );
}

function PhTatami() {
  return (
    <svg viewBox="0 0 800 600" preserveAspectRatio="xMidYMid slice" style={{ width: "100%", height: "100%" }}>
      <defs>
        <linearGradient id="pt-wall" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#1A1612"/><stop offset="100%" stopColor="#0A0706"/>
        </linearGradient>
        <linearGradient id="pt-shoji" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#FFE8C0" stopOpacity=".5"/>
          <stop offset="50%" stopColor="#F5E0B0" stopOpacity=".4"/>
          <stop offset="100%" stopColor="#C9A961" stopOpacity=".22"/>
        </linearGradient>
        <filter id="pt-paper">
          <feTurbulence baseFrequency=".9" numOctaves="2" seed="1"/>
          <feColorMatrix values="0 0 0 0 .95 0 0 0 0 .85 0 0 0 0 .65 0 0 0 .12 0"/>
        </filter>
        <linearGradient id="pt-tatami" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#A48848"/>
          <stop offset="60%" stopColor="#7A6332"/>
          <stop offset="100%" stopColor="#4A3A18"/>
        </linearGradient>
        <filter id="pt-mat">
          <feTurbulence baseFrequency=".8 .04" numOctaves="2" seed="6"/>
          <feColorMatrix values="0 0 0 0 .2 0 0 0 0 .15 0 0 0 0 .08 0 0 0 .4 0"/>
        </filter>
        <radialGradient id="pt-lant" cx="50%" cy="50%" r="60%">
          <stop offset="0%" stopColor="#FFEFC8" stopOpacity=".9"/>
          <stop offset="60%" stopColor="#E8B870" stopOpacity=".5"/>
          <stop offset="100%" stopColor="#C9A961" stopOpacity="0"/>
        </radialGradient>
        <filter id="pt-glow"><feGaussianBlur stdDeviation="14"/></filter>
      </defs>

      <rect width="800" height="600" fill="url(#pt-wall)" />
      {/* Andon lantern glow on wall */}
      <ellipse cx="400" cy="60" rx="320" ry="160" fill="url(#pt-lant)" opacity=".6"/>

      {/* Shoji screen — full grid */}
      <g>
        <rect x="80" y="60" width="640" height="360" fill="url(#pt-shoji)"/>
        <rect x="80" y="60" width="640" height="360" filter="url(#pt-paper)" opacity=".5"/>
        {/* Kumiko grid — fine wooden lattice */}
        <g stroke="#1A0E08" strokeWidth="1.5">
          {Array.from({length: 9}).map((_, i) => <line key={"v"+i} x1={80 + 80*i} y1="60" x2={80 + 80*i} y2="420"/>)}
          {Array.from({length: 5}).map((_, i) => <line key={"h"+i} x1="80" y1={60 + 90*i} x2="720" y2={60 + 90*i}/>)}
        </g>
        {/* Inner fine grid (kumiko inside each cell) */}
        <g stroke="#3A1F12" strokeWidth=".4" opacity=".7">
          {Array.from({length: 33}).map((_, i) => <line key={"vf"+i} x1={80 + 20*i} y1="60" x2={80 + 20*i} y2="420"/>)}
          {Array.from({length: 19}).map((_, i) => <line key={"hf"+i} x1="80" y1={60 + 20*i} x2="720" y2={60 + 20*i}/>)}
        </g>
        {/* Frame */}
        <rect x="78" y="58" width="644" height="364" fill="none" stroke="#0A0605" strokeWidth="6"/>
        <rect x="74" y="54" width="652" height="372" fill="none" stroke="#241814" strokeWidth="4"/>
      </g>

      {/* Hanging silhouette — small chabin / ikebana visible through shoji (subtle) */}
      <g opacity=".22">
        <path d="M 380 200 Q 380 180 400 175 Q 420 180 420 200 L 420 240 L 380 240 Z" fill="#1A0E08"/>
      </g>

      {/* Floor — tatami mats */}
      <polygon points="0,430 800,430 800,600 0,600" fill="url(#pt-tatami)"/>
      <polygon points="0,430 800,430 800,600 0,600" filter="url(#pt-mat)" opacity=".7"/>
      {/* Mat seams — heri (dark fabric edges) */}
      <g stroke="#1A1006" strokeWidth="4" opacity=".8">
        <line x1="0" y1="430" x2="800" y2="430"/>
        <line x1="0" y1="495" x2="800" y2="495"/>
        <line x1="0" y1="555" x2="800" y2="555"/>
        <line x1="400" y1="430" x2="400" y2="600"/>
      </g>
      <g stroke="#3A2810" strokeWidth="1" opacity=".5">
        <line x1="0" y1="497" x2="800" y2="497"/>
        <line x1="0" y1="557" x2="800" y2="557"/>
        <line x1="402" y1="430" x2="402" y2="600"/>
      </g>
      {/* Fine i-gusa (rush) horizontal lines */}
      <g stroke="#6A5028" strokeWidth=".4" opacity=".5">
        {Array.from({length: 80}).map((_, i) => <line key={i} x1="0" y1={432 + i*2.1} x2="800" y2={432 + i*2.1}/>)}
      </g>

      {/* Light spill on tatami */}
      <ellipse cx="400" cy="450" rx="380" ry="40" fill="#FFE0B0" opacity=".18"/>

      {/* Hanging andon lantern */}
      <g transform="translate(400 0)">
        <line x1="0" y1="0" x2="0" y2="20" stroke="#3A2820" strokeWidth="1"/>
        <ellipse cx="0" cy="50" rx="64" ry="52" fill="#F5E0B0" opacity=".85" filter="url(#pt-glow)"/>
        <ellipse cx="0" cy="50" rx="52" ry="44" fill="#FFEFC8"/>
        <ellipse cx="0" cy="50" rx="48" ry="40" fill="#FFE5B5"/>
        {/* Frame */}
        <g stroke="#3A2010" strokeWidth="1" fill="none">
          <ellipse cx="0" cy="50" rx="52" ry="44"/>
          <line x1="-52" y1="50" x2="52" y2="50"/>
          <line x1="-40" y1="22" x2="-40" y2="78"/>
          <line x1="40" y1="22" x2="40" y2="78"/>
          <line x1="0" y1="6" x2="0" y2="94"/>
        </g>
        <text x="0" y="58" fontFamily="serif" fontSize="22" fill="#3A1818" textAnchor="middle" opacity=".75">華</text>
      </g>
    </svg>
  );
}

function PhWashi() {
  return (
    <svg viewBox="0 0 800 600" preserveAspectRatio="xMidYMid slice" style={{ width: "100%", height: "100%" }}>
      <defs>
        <filter id="pw-fiber">
          <feTurbulence baseFrequency=".6 .05" numOctaves="2" seed="3"/>
          <feColorMatrix values="0 0 0 0 .8  0 0 0 0 .72  0 0 0 0 .6  0 0 0 .15 0"/>
        </filter>
        <filter id="pw-grain">
          <feTurbulence baseFrequency=".9" numOctaves="2" seed="9"/>
          <feColorMatrix values="0 0 0 0 .75  0 0 0 0 .68  0 0 0 0 .55  0 0 0 .12 0"/>
        </filter>
        <radialGradient id="pw-light" cx="40%" cy="30%" r="70%">
          <stop offset="0%" stopColor="#FFFAEC" stopOpacity=".8"/>
          <stop offset="100%" stopColor="#D8C8A0" stopOpacity="0"/>
        </radialGradient>
        <radialGradient id="pw-shadow" cx="50%" cy="50%" r="60%">
          <stop offset="60%" stopColor="#000" stopOpacity="0"/>
          <stop offset="100%" stopColor="#5A4A28" stopOpacity=".35"/>
        </radialGradient>
        {/* Ink wetness gradient for brushstroke */}
        <linearGradient id="pw-ink" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#1A1006"/>
          <stop offset="50%" stopColor="#0A0605"/>
          <stop offset="100%" stopColor="#000"/>
        </linearGradient>
        <filter id="pw-bleed">
          <feGaussianBlur stdDeviation=".6"/>
        </filter>
      </defs>

      {/* Washi base */}
      <rect width="800" height="600" fill="#E8DFC8"/>
      <rect width="800" height="600" fill="url(#pw-light)"/>
      <rect width="800" height="600" filter="url(#pw-fiber)" opacity=".7"/>
      <rect width="800" height="600" filter="url(#pw-grain)" opacity=".5"/>
      <rect width="800" height="600" fill="url(#pw-shadow)"/>

      {/* Long fibers — characteristic of handmade washi */}
      <g stroke="#A89568" strokeWidth=".3" opacity=".5" fill="none">
        {Array.from({length: 24}).map((_, i) => {
          const y = 30 + i * 23 + (i%3)*4;
          return <path key={i} d={`M ${-20 + (i%5)*4} ${y} Q 400 ${y + (i%2?6:-4)} ${820 + (i%5)*4} ${y + (i%2?-2:6)}`}/>;
        })}
      </g>
      {/* Specks */}
      <g fill="#3A2818" opacity=".25">
        {Array.from({length: 40}).map((_, i) => (
          <circle key={i} cx={(i*53)%800} cy={(i*97)%600} r={(i%3)?.6:1.1}/>
        ))}
      </g>

      {/* Calligraphy 華 — large brushstroke with ink bleed */}
      <g filter="url(#pw-bleed)">
        <text x="380" y="430" fontFamily="serif" fontSize="380" fill="url(#pw-ink)" textAnchor="middle" style={{ fontWeight: 500 }}>華</text>
      </g>
      {/* Hairline ink "kasure" — dry brush effect overlay */}
      <g opacity=".15">
        <text x="380" y="430" fontFamily="serif" fontSize="380" fill="#5A4828" textAnchor="middle" style={{ fontWeight: 500 }}>華</text>
      </g>

      {/* Side calligraphy text vertical */}
      <g>
        <text x="120" y="120" fontFamily="serif" fontSize="32" fill="#0A0605" style={{ writingMode: "vertical-rl", letterSpacing: ".4em" }}>一期一会</text>
      </g>

      {/* Hanko seal — red square with white kanji, slightly imperfect */}
      <g transform="translate(640 460) rotate(-3)">
        <rect width="80" height="80" fill="#8B1A1A" opacity=".88"/>
        <rect width="80" height="80" fill="none" stroke="#6A1010" strokeWidth="1"/>
        <rect x="6" y="6" width="68" height="68" fill="none" stroke="#F5F0E6" strokeWidth="2"/>
        <text x="40" y="56" fontFamily="serif" fontSize="40" fill="#F5F0E6" textAnchor="middle" style={{ fontWeight: 600 }}>曜</text>
        {/* Ink imperfections */}
        <rect x="14" y="14" width="3" height="3" fill="#F5F0E6" opacity=".4"/>
        <rect x="58" y="68" width="2" height="2" fill="#F5F0E6" opacity=".3"/>
      </g>

      {/* Right-side small note */}
      <text x="700" y="120" fontFamily="serif" fontStyle="italic" fontSize="14" fill="#3A2818" opacity=".5" textAnchor="end" style={{ letterSpacing: ".3em" }}>SUSHI KAYOU</text>
    </svg>
  );
}

function PhPlate() {
  return (
    <svg viewBox="0 0 800 600" preserveAspectRatio="xMidYMid slice" style={{ width: "100%", height: "100%" }}>
      <defs>
        <radialGradient id="pp-bg" cx="50%" cy="40%" r="65%">
          <stop offset="0%" stopColor="#1F1614"/><stop offset="70%" stopColor="#0A0605"/><stop offset="100%" stopColor="#020101"/>
        </radialGradient>
        <radialGradient id="pp-plate" cx="50%" cy="40%" r="60%">
          <stop offset="0%" stopColor="#2A1F1A"/>
          <stop offset="50%" stopColor="#0E0907"/>
          <stop offset="100%" stopColor="#020101"/>
        </radialGradient>
        <radialGradient id="pp-plate-shine" cx="35%" cy="20%" r="50%">
          <stop offset="0%" stopColor="#C9A961" stopOpacity=".35"/>
          <stop offset="100%" stopColor="#C9A961" stopOpacity="0"/>
        </radialGradient>
        <linearGradient id="pp-rice" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#F8EFD8"/>
          <stop offset="50%" stopColor="#EBDAB0"/>
          <stop offset="100%" stopColor="#BD9E70"/>
        </linearGradient>
        <radialGradient id="pp-gloss" cx="30%" cy="20%" r="40%">
          <stop offset="0%" stopColor="#FFFFFF" stopOpacity=".55"/>
          <stop offset="100%" stopColor="#FFFFFF" stopOpacity="0"/>
        </radialGradient>
        <filter id="pp-soft"><feGaussianBlur stdDeviation="1.4"/></filter>
      </defs>

      <rect width="800" height="600" fill="url(#pp-bg)" />
      {/* Soft overhead light */}
      <ellipse cx="400" cy="200" rx="500" ry="180" fill="#C9A961" opacity=".1"/>

      {/* Shadow under plate */}
      <ellipse cx="400" cy="430" rx="340" ry="42" fill="#000" opacity=".7" filter="url(#pp-soft)"/>

      {/* Black lacquer plate — long, rectangular tray */}
      <g>
        <path d="M 80 350 Q 80 320 130 318 L 670 312 Q 720 314 720 344 L 720 384 Q 720 414 670 416 L 130 422 Q 80 420 80 390 Z" fill="url(#pp-plate)" />
        {/* Inner shine */}
        <path d="M 80 350 Q 80 320 130 318 L 670 312 Q 720 314 720 344 L 720 384 Q 720 414 670 416 L 130 422 Q 80 420 80 390 Z" fill="url(#pp-plate-shine)" />
        {/* Gold rim — hairline */}
        <path d="M 80 350 Q 80 320 130 318 L 670 312 Q 720 314 720 344 L 720 384 Q 720 414 670 416 L 130 422 Q 80 420 80 390 Z" fill="none" stroke="#C9A961" strokeWidth="1" opacity=".7"/>
        {/* Top edge highlight */}
        <path d="M 100 322 Q 200 318 400 316 Q 600 314 700 318" stroke="#5A4828" strokeWidth=".5" fill="none" opacity=".5"/>
      </g>

      {/* Three nigiri — equal spacing on plate */}
      {[
        { x: 240, fill: "#D87767", marb: 4, label: "中とろ" },
        { x: 400, fill: "#A84030", marb: 3, label: "赤身" },
        { x: 560, fill: "#E8B090", marb: 2, label: "大とろ" }
      ].map((n, i) => (
        <g key={i} transform={`translate(${n.x} 358)`}>
          {/* Shadow */}
          <ellipse cx="0" cy="18" rx="58" ry="6" fill="#000" opacity=".75" filter="url(#pp-soft)"/>
          {/* Rice base */}
          <path d="M -52 6 Q -52 -10 -32 -14 L 32 -14 Q 52 -10 52 6 Q 52 18 32 22 L -32 22 Q -52 18 -52 6 Z" fill="url(#pp-rice)"/>
          {/* Rice grain texture */}
          {Array.from({length: 22}).map((_, k) => (
            <ellipse key={k} cx={-46 + k*4.4} cy={-7 + (k%3)*5 + (k%2)*2} rx="1.6" ry=".8" fill="#9C7240" opacity=".5"/>
          ))}
          {Array.from({length: 22}).map((_, k) => (
            <ellipse key={k} cx={-45 + k*4.4 + 1.5} cy={-5 + (k%3)*5} rx="1.2" ry=".7" fill="#FFFFFF" opacity=".4"/>
          ))}
          {/* Underside shadow on rice */}
          <path d="M -52 6 Q -52 18 -32 22 L 32 22 Q 52 18 52 6 L 52 22 L -52 22 Z" fill="#000" opacity=".18"/>
          {/* Neta — fish slice */}
          <path d="M -54 -20 Q -54 -32 -34 -34 L 34 -34 Q 54 -32 54 -20 L 54 -8 Q 54 -3 42 -2 L -42 -2 Q -54 -3 -54 -8 Z" fill={n.fill}/>
          {/* Marbling stripes */}
          <path d="M -48 -28 Q -10 -32 24 -28 Q 38 -26 48 -28" stroke="#FFFFFF" strokeWidth="1.6" fill="none" opacity=".6"/>
          <path d="M -42 -20 Q 0 -23 32 -19 Q 42 -17 46 -19" stroke="#FFFFFF" strokeWidth="1.1" fill="none" opacity=".45"/>
          <path d="M -34 -12 Q -8 -16 20 -12" stroke="#FFFFFF" strokeWidth=".7" fill="none" opacity=".4"/>
          {/* Gloss */}
          <ellipse cx="-14" cy="-24" rx="34" ry="3.5" fill="url(#pp-gloss)"/>
          {/* Tiny brush of nikiri on edge */}
          <ellipse cx="22" cy="-18" rx="8" ry="1.2" fill="#1A0A06" opacity=".4"/>
          {/* Wasabi dot peeking out */}
          {i === 1 && <ellipse cx="6" cy="-10" rx="3" ry="1.5" fill="#5A7A38" opacity=".7"/>}
        </g>
      ))}

      {/* Gari (ginger) — small pile, right of plate */}
      <g transform="translate(640 360)">
        <path d="M -28 6 Q -32 -6 -18 -10 Q -6 -14 8 -10 Q 22 -6 26 6 Q 22 14 0 16 Q -22 14 -28 6 Z" fill="#F5D8C8" opacity=".9"/>
        <path d="M -20 0 Q -10 -6 6 -2 Q 18 2 22 8" stroke="#E8B8A0" strokeWidth=".6" fill="none" opacity=".7"/>
        <path d="M -15 4 Q 0 -2 14 4" stroke="#E8B8A0" strokeWidth=".5" fill="none" opacity=".5"/>
      </g>

      {/* Vignette */}
      <radialGradient id="pp-vign" cx="50%" cy="50%" r="75%">
        <stop offset="55%" stopColor="#000" stopOpacity="0"/>
        <stop offset="100%" stopColor="#000" stopOpacity=".75"/>
      </radialGradient>
      <rect width="800" height="600" fill="url(#pp-vign)" />
    </svg>
  );
}

function PhMoon() {
  return (
    <svg viewBox="0 0 800 600" preserveAspectRatio="xMidYMid slice" style={{ width: "100%", height: "100%" }}>
      <defs>
        <linearGradient id="pmo-sky" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#0A1218"/>
          <stop offset="40%" stopColor="#0F1A24"/>
          <stop offset="80%" stopColor="#1A1812"/>
          <stop offset="100%" stopColor="#0A0605"/>
        </linearGradient>
        <radialGradient id="pmo-halo" cx="50%" cy="50%" r="50%">
          <stop offset="0%" stopColor="#FFE8C0" stopOpacity=".5"/>
          <stop offset="50%" stopColor="#E8C870" stopOpacity=".18"/>
          <stop offset="100%" stopColor="#C9A961" stopOpacity="0"/>
        </radialGradient>
        <radialGradient id="pmo-moon" cx="40%" cy="40%" r="60%">
          <stop offset="0%" stopColor="#FFFAEC"/>
          <stop offset="60%" stopColor="#F5E5C0"/>
          <stop offset="100%" stopColor="#E8C880"/>
        </radialGradient>
        <filter id="pmo-glow"><feGaussianBlur stdDeviation="22"/></filter>
        <filter id="pmo-soft"><feGaussianBlur stdDeviation="1.4"/></filter>
        <filter id="pmo-cloud">
          <feTurbulence baseFrequency=".008 .02" numOctaves="2" seed="2"/>
          <feColorMatrix values="0 0 0 0 .15  0 0 0 0 .1  0 0 0 0 .08  0 0 0 .25 0"/>
        </filter>
      </defs>

      <rect width="800" height="600" fill="url(#pmo-sky)"/>
      {/* Soft clouds */}
      <rect width="800" height="600" filter="url(#pmo-cloud)" opacity=".7"/>

      {/* Stars */}
      <g fill="#F5F0E6">
        {Array.from({length: 28}).map((_, i) => {
          const x = (i * 67 + 41) % 800;
          const y = (i * 31) % 380;
          const r = (i % 5) === 0 ? 1.4 : 0.6;
          return <circle key={i} cx={x} cy={y} r={r} opacity={.4 + (i%3)*.2}/>;
        })}
      </g>

      {/* Moon halo + moon */}
      <ellipse cx="580" cy="190" rx="180" ry="180" fill="url(#pmo-halo)" filter="url(#pmo-glow)"/>
      <circle cx="580" cy="190" r="70" fill="url(#pmo-moon)"/>
      {/* Moon craters / texture */}
      <g fill="#D8C088" opacity=".35">
        <circle cx="568" cy="180" r="6"/>
        <circle cx="598" cy="200" r="4"/>
        <circle cx="582" cy="218" r="5"/>
        <circle cx="562" cy="208" r="3"/>
      </g>
      <circle cx="580" cy="190" r="70" fill="none" stroke="#FFFAEC" strokeWidth=".5" opacity=".7"/>

      {/* Plum branch — wabi-sabi */}
      <g>
        <path d="M -30 520 Q 100 460 220 470 Q 360 482 460 458 Q 580 432 700 442 Q 770 446 830 432" stroke="#1F1208" strokeWidth="5" fill="none"/>
        <path d="M -30 520 Q 100 460 220 470 Q 360 482 460 458 Q 580 432 700 442 Q 770 446 830 432" stroke="#3A2410" strokeWidth="2" fill="none" opacity=".7"/>
        {/* Small twigs */}
        <path d="M 160 466 Q 168 440 178 420" stroke="#1F1208" strokeWidth="2.5" fill="none"/>
        <path d="M 300 478 Q 308 450 320 432" stroke="#1F1208" strokeWidth="2.5" fill="none"/>
        <path d="M 500 450 Q 510 420 524 400" stroke="#1F1208" strokeWidth="2.5" fill="none"/>
        <path d="M 660 442 Q 670 412 686 392" stroke="#1F1208" strokeWidth="2.5" fill="none"/>
        <path d="M 380 472 Q 376 500 366 528" stroke="#1F1208" strokeWidth="2" fill="none"/>
      </g>

      {/* Plum blossoms — 5 petals each */}
      {[[110,478,1],[178,418,.8],[222,464,.9],[320,430,1.1],[388,470,.7],[460,452,1],[524,398,.9],[600,436,1],[688,390,.95],[760,438,.8]].map(([x,y,s], i) => (
        <g key={i} transform={`translate(${x} ${y}) scale(${s})`}>
          {[0, 72, 144, 216, 288].map(a => (
            <ellipse key={a} cx={Math.cos((a-90)*Math.PI/180)*7} cy={Math.sin((a-90)*Math.PI/180)*7} rx="6" ry="5" fill="#FFFAEC" transform={`rotate(${a})`} opacity=".96"/>
          ))}
          {[0, 72, 144, 216, 288].map(a => (
            <ellipse key={a+"s"} cx={Math.cos((a-90)*Math.PI/180)*7} cy={Math.sin((a-90)*Math.PI/180)*7} rx="6" ry="5" fill="#F8E8E0" transform={`rotate(${a})`} opacity=".3"/>
          ))}
          <circle cx="0" cy="0" r="2" fill="#C9A961"/>
          {/* Stamens */}
          {[0, 60, 120, 180, 240, 300].map(a => (
            <line key={"st"+a} x1="0" y1="0" x2={Math.cos(a*Math.PI/180)*4} y2={Math.sin(a*Math.PI/180)*4} stroke="#C9A961" strokeWidth=".4"/>
          ))}
        </g>
      ))}

      {/* Falling petal */}
      <g transform="translate(340 240) rotate(20)" opacity=".85">
        <ellipse cx="0" cy="0" rx="5" ry="3.5" fill="#FFFAEC"/>
      </g>
      <g transform="translate(220 320) rotate(-30)" opacity=".7">
        <ellipse cx="0" cy="0" rx="4" ry="3" fill="#FFFAEC"/>
      </g>

      {/* Soft vignette top to focus moon */}
      <radialGradient id="pmo-vign" cx="50%" cy="50%" r="75%">
        <stop offset="55%" stopColor="#000" stopOpacity="0"/>
        <stop offset="100%" stopColor="#000" stopOpacity=".55"/>
      </radialGradient>
      <rect width="800" height="600" fill="url(#pmo-vign)" />
    </svg>
  );
}

Object.assign(window, { PhCounter, PhFish, PhSake, PhTatami, PhWashi, PhPlate, PhMoon });
