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 800 600">
  <rect x="0" y="0" width="800" height="600" fill="#071525"/>
  <!-- sky glow -->
  <path d="M0,0 C140,80 260,70 380,50 C520,25 650,35 800,70 L800,0 Z" fill="#0b2a45"/>
  <!-- clouds (wind) -->
  <path d="M-20,140 C120,90 250,150 360,120 C460,95 560,95 690,130 C760,150 820,140 860,120"
        fill="none" stroke="#164a6b" stroke-width="10" stroke-linecap="round" opacity="0.55"/>
  <path d="M-20,185 C100,145 220,205 340,175 C480,140 590,160 710,190 C790,210 840,200 860,185"
        fill="none" stroke="#164a6b" stroke-width="8" stroke-linecap="round" opacity="0.45"/>
  <!-- rain streaks -->
  <g stroke-linecap="round">
    <path d="M120,70 L65,340" stroke="#9ad1ff" stroke-width="2" opacity="0.55"/>
    <path d="M165,85 L110,355" stroke="#9ad1ff" stroke-width="2" opacity="0.5"/>
    <path d="M210,95 L150,360" stroke="#9ad1ff" stroke-width="2" opacity="0.55"/>
    <path d="M265,90 L205,370" stroke="#9ad1ff" stroke-width="2" opacity="0.5"/>
    <path d="M310,80 L255,350" stroke="#9ad1ff" stroke-width="2" opacity="0.55"/>
    <path d="M355,85 L300,360" stroke="#9ad1ff" stroke-width="2" opacity="0.48"/>
    <path d="M405,75 L350,345" stroke="#9ad1ff" stroke-width="2" opacity="0.55"/>
    <path d="M455,95 L400,365" stroke="#9ad1ff" stroke-width="2" opacity="0.52"/>
    <path d="M505,90 L450,370" stroke="#9ad1ff" stroke-width="2" opacity="0.55"/>
    <path d="M555,95 L500,370" stroke="#9ad1ff" stroke-width="2" opacity="0.5"/>
    <path d="M605,80 L545,350" stroke="#9ad1ff" stroke-width="2" opacity="0.55"/>
    <path d="M650,90 L595,360" stroke="#9ad1ff" stroke-width="2" opacity="0.48"/>
    <path d="M695,85 L640,350" stroke="#9ad1ff" stroke-width="2" opacity="0.55"/>
    <path d="M740,75 L680,340" stroke="#9ad1ff" stroke-width="2" opacity="0.5"/>
  </g>

  <!-- distant sea line -->
  <path d="M0,380 C150,360 250,395 380,375 C520,352 640,380 800,365 L800,600 L0,600 Z" fill="#06111f" opacity="0.85"/>

  <!-- waves on rocks -->
  <g fill="none" stroke-linecap="round">
    <path d="M60,420 C95,405 135,430 170,415" stroke="#0f5d7f" stroke-width="4" opacity="0.7"/>
    <path d="M190,440 C230,420 280,460 320,438" stroke="#0f5d7f" stroke-width="4" opacity="0.7"/>
    <path d="M330,420 C370,405 420,435 465,418" stroke="#0f5d7f" stroke-width="4" opacity="0.7"/>
    <path d="M470,450 C520,425 580,480 635,445" stroke="#0f5d7f" stroke-width="4" opacity="0.7"/>
    <path d="M640,420 C690,405 735,430 780,412" stroke="#0f5d7f" stroke-width="4" opacity="0.7"/>
  </g>

  <!-- rocky outcrop -->
  <path d="M245,330
           C210,365 210,420 235,450
           C260,480 270,515 315,530
           C370,550 430,560 480,535
           C525,513 555,465 590,435
           C625,405 625,360 590,335
           C555,310 500,285 440,288
           C375,292 280,300 245,330 Z"
        fill="#2b2f36" opacity="0.95"/>
  <path d="M250,350
           C230,380 240,420 265,445
           C290,470 300,505 345,520
           C395,537 445,545 485,525
           C520,508 545,470 570,450
           C595,430 600,385 575,360
           C550,335 500,315 440,318
           C382,322 270,323 250,350 Z"
        fill="#1e2127" opacity="0.95"/>

  <!-- lighthouse base shadow -->
  <path d="M395,320
           C380,350 370,410 380,470
           C390,530 420,545 445,535
           C470,525 492,495 500,455
           C510,405 495,350 480,320
           C465,290 410,290 395,320 Z"
        fill="#171a20" opacity="0.9"/>

  <!-- lighthouse body -->
  <g>
    <!-- tower -->
    <path d="M420,110
             C450,145 460,205 458,250
             C455,330 440,380 435,440
             C430,495 438,520 422,540
             C405,520 412,492 408,440
             C402,360 388,320 390,250
             C392,205 405,145 420,110 Z"
          fill="#f2f2f2"/>
    <!-- banding -->
    <path d="M402,250 C425,262 448,262 468,250 L468,290 C448,300 425,300 402,290 Z" fill="#d14b4b" opacity="0.95"/>
    <path d="M392,170 C420,185 452,185 478,170 L478,215 C452,230 420,230 392,215 Z" fill="#d14b4b" opacity="0.95"/>
    <path d="M405,320 C425,330 448,330 465,320 L465,360 C445,370 423,370 405,360 Z" fill="#d14b4b" opacity="0.95"/>

    <!-- tower vertical edges -->
    <path d="M418,110 C414,155 410,210 410,255
             C410,320 418,370 414,440
             C410,498 405,525 422,540"
          fill="none" stroke="#cfcfcf" stroke-width="6" stroke-linecap="round" opacity="0.9"/>
    <path d="M422,110 C428,155 436,210 436,255
             C436,320 428,370 432,440
             C436,498 441,525 424,540"
          fill="none" stroke="#bcbcbc" stroke-width="6" stroke-linecap="round" opacity="0.8"/>

    <!-- base lantern room -->
    <path d="M395,92
             C405,70 415,56 420,55
             C425,56 435,70 445,92
             L445,120
             C435,130 410,130 395,120 Z"
          fill="#f2f2f2"/>
    <!-- dome -->
    <path d="M412,52
             C418,42 423,42 429,52
             C435,62 440,70 438,82
             C432,92 409,92 404,82
             C402,70 406,62 412,52 Z"
          fill="#2b2f36"/>

    <!-- windows -->
    <rect x="402" y="98" width="36" height="32" rx="8" fill="#143a55" opacity="0.95"/>
    <path d="M402,115 L438,115" stroke="#9ad1ff" stroke-width="3" opacity="0.55"/>
    <path d="M420,98 L420,130" stroke="#9ad1ff" stroke-width="3" opacity="0.55"/>
    <rect x="412" y="104" width="16" height="20" rx="4" fill="#0b2a45" opacity="0.7"/>

    <!-- railing -->
    <path d="M392,120 C405,130 435,130 448,120" fill="none" stroke="#2b2f36" stroke-width="6" stroke-linecap="round"/>
  </g>

  <!-- lighthouse beam -->
  <g>
    <!-- rotate-like sweep using fan shape -->
    <path d="M420,122
             L800,345
             L800,470
             L430,210
             Z"
          fill="#9ad1ff" opacity="0.22"/>
    <path d="M420,122
             L740,325
             L740,395
             L430,220
             Z"
          fill="#9ad1ff" opacity="0.18"/>
    <!-- beam core -->
    <path d="M420,122
             L800,345
             L800,385
             L428,230
             Z"
          fill="none" stroke="#9ad1ff" stroke-width="4" opacity="0.55" stroke-linejoin="round"/>
    <!-- beam rays -->
    <path d="M420,122 L560,245" stroke="#9ad1ff" stroke-width="3" opacity="0.35"/>
    <path d="M420,122 L610,270" stroke="#9ad1ff" stroke-width="2" opacity="0.25"/>
    <path d="M420,122 L655,295" stroke="#9ad1ff" stroke-width="2" opacity="0.22"/>
    <path d="M420,122 L700,315" stroke="#9ad1ff" stroke-width="2" opacity="0.18"/>
  </g>

  <!-- foreground rain hitting rocks -->
  <g stroke="#9ad1ff" stroke-width="2" opacity="0.45" stroke-linecap="round">
    <path d="M300,430 L255,560"/>
    <path d="M360,420 L320,565"/>
    <path d="M430,430 L395,565"/>
    <path d="M500,420 L470,560"/>
    <path d="M565,415 L540,545"/>
    <path d="M630,420 L610,540"/>
  </g>

  <!-- wind streaks (horizontal) -->
  <g stroke="#164a6b" stroke-width="6" opacity="0.45" stroke-linecap="round" fill="none">
    <path d="M80,230 C140,210 210,235 270,220"/>
    <path d="M430,245 C505,220 590,250 670,225"/>
  </g>

  <!-- minor rock cracks -->
  <g stroke="#9ad1ff" stroke-width="2" opacity="0.22" fill="none" stroke-linecap="round">
    <path d="M310,485 C330,470 350,460 380,455"/>
    <path d="M465,480 C485,465 505,450 540,445"/>
    <path d="M395,420 C410,410 430,405 455,403"/>
  </g>

  <!-- sea mist -->
  <path d="M0,420 C120,410 220,435 330,428 C450,420 560,435 800,410 L800,460 C600,490 420,485 0,485 Z"
        fill="#0f5d7f" opacity="0.15"/>
</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"
}