lighthouse-storm
rendered
the brief, redacted

Draw a lighthouse on a rocky outcrop during a storm, as a single self-contained SVG. Tests composition, layering, and whether a model can suggest weather without raster effects.

338 chars · 53 words · fingerprint 0b46c0c31095

raw output — byte exact

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 600">
  <!-- Palette: #0B1630 (deep navy), #163E6E (mid blue), #6EC6FF (light sky), #E9F4FF (beam/foam), #F2F2F2 (stone/paint), #B24A4A (red accents) -->
  <rect x="0" y="0" width="900" height="600" fill="#0B1630"/>
  
  <!-- Sky gradients via simple shapes (no external defs) -->
  <path d="M0,0 H900 V360 C760,320 700,360 560,330 C410,295 310,350 190,330 C95,314 45,275 0,290 Z" fill="#163E6E" opacity="0.35"/>
  <path d="M0,0 H900 V240 C760,210 680,250 540,225 C420,205 305,250 180,235 C95,225 45,190 0,200 Z" fill="#163E6E" opacity="0.18"/>

  <!-- Wind streaks -->
  <g stroke="#6EC6FF" stroke-width="2" opacity="0.55" stroke-linecap="round">
    <path d="M80,85 C140,55 210,55 270,80"/>
    <path d="M110,115 C165,92 235,92 295,112"/>
    <path d="M560,70 C625,40 700,42 760,68"/>
    <path d="M590,100 C650,78 720,78 780,98"/>
    <path d="M250,60 C320,35 385,38 450,60"/>
    <path d="M420,45 C475,28 545,30 600,52"/>
  </g>

  <!-- Rain -->
  <g stroke="#6EC6FF" stroke-width="2" opacity="0.65" stroke-linecap="round">
    <path d="M60,110 L140,560"/>
    <path d="M120,95 L200,545"/>
    <path d="M190,80 L280,560"/>
    <path d="M260,95 L350,565"/>
    <path d="M330,85 L420,575"/>
    <path d="M410,95 L505,575"/>
    <path d="M490,80 L585,565"/>
    <path d="M565,95 L655,575"/>
    <path d="M640,85 L735,570"/>
    <path d="M715,95 L805,560"/>
    <path d="M760,110 L860,540"/>
    <path d="M30,150 L110,560" opacity="0.45"/>
    <path d="M760,150 L845,535" opacity="0.45"/>
  </g>

  <!-- Distant clouds / storm haze -->
  <g fill="#6EC6FF" opacity="0.12">
    <path d="M-20,190 C60,150 150,165 220,190 C285,212 360,175 430,195 C520,220 610,175 690,198 C760,218 820,210 940,190 L940,260 L-20,260 Z"/>
    <path d="M-20,260 C70,235 145,250 220,270 C300,292 360,260 450,275 C540,292 620,255 710,273 C800,295 845,292 940,270 L940,330 L-20,330 Z"/>
  </g>

  <!-- Lighthouse base silhouette and rocky outcrop -->
  <g>
    <!-- Rock outcrop -->
    <path d="M140,520
             C160,480 205,455 250,448
             C300,440 328,405 360,392
             C410,372 450,390 475,420
             C498,448 530,445 555,462
             C595,490 625,465 660,470
             C710,478 748,520 760,535
             C770,548 772,565 760,580
             L140,580
             C126,565 127,545 140,520 Z" fill="#F2F2F2" opacity="0.92"/>
    <!-- Rock shadow -->
    <path d="M165,528
             C190,490 240,470 278,464
             C320,459 346,430 380,420
             C420,407 450,422 470,444
             C490,468 528,468 558,480
             C595,496 625,486 650,490
             C694,497 726,530 735,545
             C742,556 740,570 732,580
             L165,580
             C152,565 155,548 165,528 Z" fill="#163E6E" opacity="0.25"/>
  </g>

  <!-- Water surface -->
  <g>
    <path d="M0,555 C110,520 230,560 330,545 C430,530 520,565 620,548 C720,531 810,555 900,540 L900,600 L0,600 Z" fill="#163E6E" opacity="0.55"/>
    <path d="M0,575 C120,545 240,585 340,565 C440,545 540,585 635,568 C735,550 820,575 900,555 L900,600 L0,600 Z" fill="#6EC6FF" opacity="0.12"/>
    <!-- Sea spray strokes -->
    <g stroke="#E9F4FF" stroke-width="2" opacity="0.45" stroke-linecap="round">
      <path d="M120,560 C140,545 160,548 180,560"/>
      <path d="M260,565 C285,548 310,552 335,565"/>
      <path d="M405,560 C430,545 455,548 480,560"/>
      <path d="M545,568 C570,552 595,556 620,568"/>
      <path d="M700,562 C725,548 750,551 775,562"/>
    </g>
  </g>

  <!-- Lighthouse body -->
  <g>
    <!-- Tower -->
    <path d="M430,170
             C408,205 388,250 388,315
             L388,560
             L512,560
             L512,315
             C512,250 492,205 470,170
             Z" fill="#F2F2F2"/>
    <!-- Tower left shadow -->
    <path d="M430,170
             C408,205 400,245 402,305
             L402,560
             L470,560
             L470,170
             Z" fill="#163E6E" opacity="0.18"/>
    <!-- Tower stripes (simple bands) -->
    <g opacity="0.9">
      <rect x="395" y="260" width="110" height="34" fill="#F2F2F2"/>
      <rect x="395" y="260" width="110" height="34" fill="#0B1630" opacity="0.06"/>
      <rect x="395" y="310" width="110" height="34" fill="#0B1630" opacity="0.08"/>
      <rect x="395" y="362" width="110" height="34" fill="#F2F2F2"/>
      <rect x="395" y="362" width="110" height="34" fill="#0B1630" opacity="0.06"/>
      <rect x="395" y="414" width="110" height="34" fill="#0B1630" opacity="0.08"/>
    </g>

    <!-- Base ledge -->
    <path d="M388,500
             C400,520 412,530 426,534
             C450,540 480,540 506,534
             C520,530 532,520 512,500
             L512,560
             L388,560 Z" fill="#F2F2F2" opacity="0.98"/>
  </g>

  <!-- Lighthouse top -->
  <g>
    <!-- Lantern section -->
    <path d="M405,150
             C412,132 420,120 430,105
             C440,120 448,132 455,150
             L455,195
             L405,195 Z" fill="#F2F2F2" opacity="0.98"/>
    <!-- Dome cap -->
    <path d="M428,92
             C428,92 438,92 438,92
             C458,92 468,110 458,122
             C448,136 440,140 433,132
             C426,140 418,136 408,122
             C398,110 408,92 428,92 Z" fill="#B24A4A" opacity="0.75"/>
    <!-- Rails -->
    <path d="M420,186 C435,176 445,176 460,186" fill="none" stroke="#163E6E" stroke-width="3" opacity="0.45" stroke-linecap="round"/>
    <rect x="425" y="145" width="26" height="40" rx="6" fill="#0B1630" opacity="0.2"/>
    <rect x="430" y="158" width="16" height="18" rx="4" fill="#E9F4FF" opacity="0.2"/>
  </g>

  <!-- Light beam -->
  <g>
    <!-- Beam core -->
    <path d="M455,195
             C520,230 575,305 640,465
             C652,494 666,515 690,530
             L690,540
             C660,525 628,500 595,460
             C535,385 490,280 455,235 Z" fill="#E9F4FF" opacity="0.78"/>
    <!-- Beam flare -->
    <path d="M455,205
             C535,245 600,330 655,465
             C667,494 680,512 710,525
             C700,536 684,544 665,548
             C640,552 610,538 590,515
             C540,455 500,340 455,245 Z" fill="#E9F4FF" opacity="0.45"/>
    <!-- Beam edge -->
    <path d="M455,195
             C545,245 610,330 675,505" fill="none" stroke="#E9F4FF" stroke-width="3" opacity="0.65" stroke-linecap="round"/>
  </g>

  <!-- Glassy rain streaks passing tower (subtle) -->
  <g stroke="#6EC6FF" stroke-width="2" opacity="0.55" stroke-linecap="round">
    <path d="M440,210 L420,545"/>
    <path d="M465,210 L450,545"/>
    <path d="M410,240 L405,560" opacity="0.35"/>
    <path d="M500,240 L495,560" opacity="0.35"/>
  </g>

  <!-- Foreground wet rock highlights -->
  <g opacity="0.55">
    <path d="M175,540 C210,515 260,505 295,512 C330,520 365,500 410,498 C455,496 490,520 525,508 C570,492 615,510 650,530 C685,550 710,560 720,575
             L760,535
             C748,520 710,478 660,470 C625,465 595,490 555,462 C530,445 498,448 475,420 C450,390 410,372 360,392 C328,405 300,440 250,448 C205,455 160,480 140,520 C132,535 130,550 140,565 L165,580 Z"
          fill="#6EC6FF" opacity="0.10"/>
  </g>
</svg>

request envelope — prompt redacted

{
  "model": "openai/gpt-5.4-nano",
  "system": "Respond with a single complete <svg> element and nothing else. No markdown fences, no explanation. Include an explicit viewBox. Do not reference external fonts, images, or stylesheets — the SVG must be fully self-contained.",
  "messages": [
    {
      "role": "user",
      "content": "«REDACTED — 58 words, 338 chars»"
    }
  ],
  "maxOutputTokens": 16000,
  "gatewayStringId": "68b9ca2e-24f6-4b26-96f8-029a2a0acdf1"
}