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" width="100%" height="100%">
  <defs>
    <!-- Lighthouse beam gradient -->
    <linearGradient id="beamGrad" x1="0%" y1="50%" x2="100%" y2="50%">
      <stop offset="0%" stop-color="#FFF5CC" stop-opacity="0.8"/>
      <stop offset="30%" stop-color="#FFF099" stop-opacity="0.4"/>
      <stop offset="100%" stop-color="#FFF099" stop-opacity="0"/>
    </linearGradient>
  </defs>

  <!-- Palette:
       #0B132B (Deep Navy) - Sky/Background
       #1C2541 (Dark Slate) - Distant waves/Clouds
       #3A506B (Muted Blue) - Midtones
       #E0FBFC (Pale Cyan) - Foam/Highlights
       #FFD166 (Warm Gold) - Light beam
       #C84B31 (Rust Red) - Lighthouse body accents
  -->

  <!-- Background Sky -->
  <rect width="800" height="600" fill="#0B132B"/>

  <!-- Dramatic storm clouds -->
  <path d="M-50,0 Q100,-20 250,30 Q400,80 550,20 Q700,-40 850,40 L850,-50 L-50,-50 Z" fill="#1C2541"/>
  <path d="M-50,80 Q150,40 350,100 Q550,160 750,90 L850,90 L850,-50 L-50,-50 Z" fill="#3A506B" opacity="0.4"/>

  <!-- LIGHTHOUSE BEAM (Layered behind light source, cutting across sky) -->
  <!-- Wide soft beam -->
  <polygon points="280,185 850,20 850,320" fill="url(#beamGrad)"/>
  <!-- Intense core beam -->
  <polygon points="280,185 850,140 850,200" fill="#FFFFFF" opacity="0.6"/>

  <!-- Distant Rough Sea/Waves -->
  <path d="M0,400 Q150,380 300,410 Q450,440 600,405 Q720,380 800,415 L800,600 L0,600 Z" fill="#1C2541"/>
  <path d="M0,450 Q200,430 400,460 Q600,490 800,445 L800,600 L0,600 Z" fill="#0B132B"/>

  <!-- Rocky Outcrop -->
  <!-- Base dark rock -->
  <path d="M150,600 L200,480 L230,470 L260,490 L310,460 L350,475 L420,430 L450,445 L500,420 L580,450 L650,600 Z" fill="#1C2541"/>
  <!-- Highlighted rock facets facing wind/light -->
  <path d="M200,480 L230,470 L260,490 L240,600 L150,600 Z" fill="#0B132B"/>
  <path d="M310,460 L350,475 L330,600 L260,490 Z" fill="#3A506B" opacity="0.5"/>
  <path d="M420,430 L450,445 L410,600 L350,475 Z" fill="#3A506B" opacity="0.3"/>
  <path d="M500,420 L580,450 L560,600 L450,445 Z" fill="#1C2541"/>

  <!-- Splashing waves against rocks -->
  <path d="M280,490 Q310,450 350,480 Q330,520 280,490 Z" fill="#E0FBFC" opacity="0.8"/>
  <path d="M400,450 Q430,410 470,440 Q450,480 400,450 Z" fill="#E0FBFC" opacity="0.7"/>
  <path d="M560,430 Q600,390 640,430 Q610,480 560,430 Z" fill="#E0FBFC" opacity="0.9"/>
  <!-- Foam sprays -->
  <circle cx="340" cy="460" r="8" fill="#E0FBFC" opacity="0.6"/>
  <circle cx="360" cy="450" r="5" fill="#E0FBFC" opacity="0.8"/>
  <circle cx="450" cy="430" r="10" fill="#E0FBFC" opacity="0.7"/>
  <circle cx="435" cy="420" r="6" fill="#E0FBFC" opacity="0.5"/>

  <!-- LIGHTHOUSE STRUCTURE -->
  <!-- Tapered Tower Body -->
  <polygon points="260,480 300,190 260,190 240,480" fill="#E0FBFC"/>
  <!-- Red Stripes (Diagonal/Perspective adjusted) -->
  <!-- Stripe 1 -->
  <polygon points="253,300 280,300 275,240 251,240" fill="#C84B31"/>
  <!-- Stripe 2 -->
  <polygon points="246,410 277,410 272,350 249,350" fill="#C84B31"/>

  <!-- Tower shading (left side) -->
  <polygon points="240,480 260,480 260,190 260,190" fill="#3A506B" opacity="0.3"/>

  <!-- Lighthouse Base/Platform -->
  <path d="M225,480 L275,480 L290,500 L210,500 Z" fill="#C84B31"/>
  <rect x="235" y="475" width="30" height="8" fill="#E0FBFC"/>

  <!-- Gallery / Balcony -->
  <rect x="235" y="180" width="45" height="10" rx="2" fill="#1C2541"/>
  <!-- Railing posts -->
  <line x1="240" y1="180" x2="240" y2="170" stroke="#1C2541" stroke-width="2"/>
  <line x1="250" y1="180" x2="250" y2="170" stroke="#1C2541" stroke-width="2"/>
  <line x1="260" y1="180" x2="260" y2="170" stroke="#1C2541" stroke-width="2"/>
  <line x1="270" y1="180" x2="270" y2="170" stroke="#1C2541" stroke-width="2"/>
  <line x1="238" y1="172" x2="272" y2="172" stroke="#1C2541" stroke-width="1.5"/>

  <!-- Lantern Room (Glass) -->
  <rect x="245" y="145" width="25" height="28" fill="#FFD166" opacity="0.9"/>
  <!-- Lantern frame lines -->
  <line x1="257" y1="145" x2="257" y2="173" stroke="#1C2541" stroke-width="2"/>
  <line x1="245" y1="159" x2="270" y2="159" stroke="#1C2541" stroke-width="1"/>

  <!-- Light Source Core -->
  <circle cx="257" cy="159" r="6" fill="#FFFFFF"/>
  <circle cx="257" cy="159" r="12" fill="#FFD166" opacity="0.5"/>

  <!-- Roof / Dome -->
  <path d="M240,145 Q257,120 275,145 Z" fill="#C84B31"/>
  <circle cx="257" cy="122" r="3" fill="#1C2541"/>

  <!-- WIND & RAIN (Diagonal streaks sweeping left to right) -->
  <g stroke="#E0FBFC" stroke-linecap="round" opacity="0.4">
    <!-- Long wind streaks -->
    <line x1="50" y1="50" x2="180" y2="70" stroke-width="1" />
    <line x1="120" y1="20" x2="250" y2="40" stroke-width="1.5" />
    <line x1="300" y1="80" x2="430" y2="100" stroke-width="1" />
    <line x1="450" y1="20" x2="580" y2="40" stroke-width="2" />
    <line x1="600" y1="90" x2="730" y2="110" stroke-width="1" />
    
    <line x1="20" y1="150" x2="150" y2="170" stroke-width="1" />
    <line x1="350" y1="180" x2="480" y2="200" stroke-width="1.5" />
    <line x1="550" y1="140" x2="680" y2="160" stroke-width="1" />
    
    <line x1="80" y1="250" x2="210" y2="270" stroke-width="1" />
    <line x1="320" y1="300" x2="450" y2="320" stroke-width="1" />
    <line x1="620" y1="260" x2="750" y2="280" stroke-width="1.5" />

    <line x1="30" y1="380" x2="160" y2="400" stroke-width="1" />
    <line x1="500" y1="350" x2="630" y2="370" stroke-width="1" />

    <!-- Heavier rain drops (shorter, denser) -->
    <line x1="100" y1="100" x2="130" y2="106" stroke-width="1.5" />
    <line x1="180" y1="60" x2="210" y2="66" stroke-width="1.5" />
    <line x1="220" y1="130" x2="250" y2="136" stroke-width="1" />
    <line x1="290" y1="40" x2="320" y2="46" stroke-width="2" />
    <line x1="380" y1="120" x2="410" y2="126" stroke-width="1" />
    <line x1="420" y1="70" x2="450" y2="76" stroke-width="1.5" />
    <line x1="510" y1="170" x2="540" y2="176" stroke-width="1.5" />
    <line x1="580" y1="50" x2="610" y2="56" stroke-width="2" />
    <line x1="670" y1="190" x2="700" y2="196" stroke-width="1" />
    <line x1="720" y1="80" x2="750" y2="86" stroke-width="1.5" />

    <line x1="70" y1="200" x2="100" y2="206" stroke-width="1.5" />
    <line x1="150" y1="230" x2="180" y2="236" stroke-width="1" />
    <line x1="280" y1="210" x2="310" y2="216" stroke-width="2" />
    <line x1="360" y1="270" x2="390" y2="276" stroke-width="1" />
    <line x1="480" y1="240" x2="510" y2="246" stroke-width="1.5" />
    <line x1="530" y1="290" x2="560" y2="296" stroke-width="1" />
    <line x1="660" y1="230" x2="690" y2="236" stroke-width="2" />

    <line x1="130" y1="320" x2="160" y2="326" stroke-width="1" />
    <line x1="210" y1="350" x2="240" y2="356" stroke-width="1.5" />
    <line x1="340" y1="380" x2="370" y2="386" stroke-width="1" />
    <line x1="430" y1="330" x2="460" y2="336" stroke-width="2" />
    <line x1="570" y1="370" x2="600" y2="376" stroke-width="1.5" />
    <line x1="680" y1="340" x2="710" y2="346" stroke-width="1" />

    <line x1="90" y1="430" x2="120" y2="436" stroke-width="1" />
    <line x1="190" y1="460" x2="220" y2="466" stroke-width="1.5" />
    <line x1="490" y1="450" x2="520" y2="456" stroke-width="1" />
    <line x1="640" y1="420" x2="670" y2="426" stroke-width="1.5" />
  </g>

  <!-- Foreground Wave Slamming Base -->
  <path d="M0,530 Q100,500 200,540 Q300,580 400,530 Q500,480 600,540 Q700,600 800,520 L800,600 L0,600 Z" fill="#1C2541" opacity="0.8"/>
  <path d="M0,560 Q150,530 300,570 Q450,610 600,550 Q720,510 800,560 L800,600 L0,600 Z" fill="#0B132B"/>
  
  <!-- Crest foam foreground -->
  <path d="M185,530 Q195,520 210,535 Q195,545 185,530 Z" fill="#E0FBFC" opacity="0.8"/>
  <path d="M385,525 Q400,510 415,530 Q400,540 385,525 Z" fill="#E0FBFC" opacity="0.9"/>
  <path d="M585,535 Q600,520 620,540 Q605,550 585,535 Z" fill="#E0FBFC" opacity="0.7"/>

</svg>

request envelope — prompt redacted

{
  "model": "google/gemini-3.5-flash-lite",
  "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": "8491f856-2274-4cba-9747-9c6bc0f0c4ae"
}