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">
  <defs>
    <clipPath id="tower">
      <path d="M464,424 L476,214 L524,214 L536,424 Z"/>
    </clipPath>
  </defs>

  <!-- sky and sea -->
  <rect x="0" y="0" width="800" height="600" fill="#101C26"/>
  <rect x="0" y="418" width="800" height="182" fill="#1D3446"/>
  <path d="M-10,424 q40,-9 80,0 t80,0 t80,0 t80,0 t80,0 t80,0 t80,0 t80,0 t80,0 t80,0 t80,0" fill="none" stroke="#3D5A73" stroke-width="2" opacity="0.55"/>

  <!-- storm clouds -->
  <g fill="#3D5A73">
    <ellipse cx="150" cy="58" rx="190" ry="48"/>
    <ellipse cx="360" cy="34" rx="180" ry="40"/>
    <ellipse cx="640" cy="52" rx="210" ry="52"/>
    <ellipse cx="470" cy="80" rx="150" ry="30"/>
  </g>
  <g fill="#101C26">
    <ellipse cx="170" cy="98" rx="150" ry="26"/>
    <ellipse cx="600" cy="102" rx="170" ry="28"/>
  </g>

  <!-- light beam -->
  <polygon points="498,176 0,26 0,344 498,194" fill="#F2C14E" opacity="0.16"/>
  <polygon points="497,179 0,78 0,292 497,191" fill="#F2C14E" opacity="0.26"/>
  <polygon points="496,181 0,120 0,242 496,189" fill="#F2C14E" opacity="0.36"/>
  <polygon points="503,178 800,116 800,214 503,190" fill="#F2C14E" opacity="0.12"/>

  <!-- wind-torn cloud streaks -->
  <g fill="#3D5A73">
    <ellipse cx="120" cy="152" rx="100" ry="12" opacity="0.8" transform="rotate(-5 120 152)"/>
    <ellipse cx="330" cy="122" rx="80" ry="9" opacity="0.5" transform="rotate(-5 330 122)"/>
    <ellipse cx="700" cy="150" rx="120" ry="13" opacity="0.8" transform="rotate(-5 700 150)"/>
  </g>

  <!-- lightning -->
  <g fill="none" stroke-linejoin="round" stroke-linecap="round">
    <polyline points="662,84 634,150 656,152 620,224 644,220 612,296" stroke="#F2C14E" stroke-width="6" opacity="0.9"/>
    <polyline points="662,84 634,150 656,152 620,224 644,220 612,296" stroke="#EDE7D6" stroke-width="2" opacity="0.9"/>
    <polyline points="634,150 604,190" stroke="#F2C14E" stroke-width="3" opacity="0.9"/>
  </g>

  <!-- rocky outcrop -->
  <path d="M392,600 L388,545 L402,500 L430,462 L470,442 L540,436 L585,448 L615,478 L628,520 L642,600 Z" fill="#3D5A73"/>
  <polygon points="430,462 470,442 512,438 496,516 438,544 410,512" fill="#101C26" opacity="0.55"/>
  <polygon points="585,448 615,478 628,520 600,560 560,505" fill="#101C26" opacity="0.45"/>
  <polyline points="430,462 470,442 540,436 585,448" fill="none" stroke="#EDE7D6" stroke-width="2" opacity="0.3"/>

  <!-- lighthouse -->
  <rect x="452" y="420" width="96" height="18" fill="#101C26"/>
  <rect x="452" y="420" width="96" height="3" fill="#EDE7D6" opacity="0.2"/>
  <g clip-path="url(#tower)">
    <rect x="458" y="214" width="84" height="36" fill="#EDE7D6"/>
    <rect x="458" y="250" width="84" height="42" fill="#B23A32"/>
    <rect x="458" y="292" width="84" height="42" fill="#EDE7D6"/>
    <rect x="458" y="334" width="84" height="42" fill="#B23A32"/>
    <rect x="458" y="376" width="84" height="48" fill="#EDE7D6"/>
    <polygon points="524,214 536,424 506,424 504,214" fill="#101C26" opacity="0.28"/>
  </g>
  <path d="M464,424 L476,214 L524,214 L536,424 Z" fill="none" stroke="#101C26" stroke-width="3"/>
  <line x1="476" y1="214" x2="464" y2="424" stroke="#EDE7D6" stroke-width="2" opacity="0.2"/>
  <rect x="493" y="224" width="9" height="14" fill="#101C26"/>
  <rect x="493" y="302" width="9" height="14" fill="#101C26"/>
  <path d="M490,424 L490,400 Q500,389 510,400 L510,424 Z" fill="#101C26"/>
  <circle cx="506" cy="411" r="1.6" fill="#EDE7D6"/>
  <!-- balcony and railing -->
  <rect x="456" y="204" width="88" height="11" fill="#B23A32"/>
  <g stroke="#EDE7D6" stroke-width="2" opacity="0.8">
    <line x1="460" y1="186" x2="540" y2="186" stroke-width="2.5"/>
    <line x1="464" y1="186" x2="464" y2="204"/>
    <line x1="476" y1="186" x2="476" y2="204"/>
    <line x1="488" y1="186" x2="488" y2="204"/>
    <line x1="512" y1="186" x2="512" y2="204"/>
    <line x1="524" y1="186" x2="524" y2="204"/>
    <line x1="536" y1="186" x2="536" y2="204"/>
  </g>
  <!-- lantern room -->
  <rect x="476" y="166" width="48" height="38" fill="#F2C14E" stroke="#101C26" stroke-width="4"/>
  <g stroke="#101C26" stroke-width="3">
    <line x1="488" y1="167" x2="488" y2="203"/>
    <line x1="500" y1="167" x2="500" y2="203"/>
    <line x1="512" y1="167" x2="512" y2="203"/>
  </g>
  <line x1="477" y1="185" x2="523" y2="185" stroke="#101C26" stroke-width="2.5"/>
  <path d="M472,167 Q500,132 528,167 Z" fill="#B23A32" stroke="#101C26" stroke-width="3"/>
  <line x1="500" y1="134" x2="500" y2="124" stroke="#101C26" stroke-width="3"/>
  <polygon points="500,124 466,131 500,138" fill="#B23A32"/>

  <!-- waves -->
  <path d="M-10,562 C70,526 145,522 208,550 C258,573 318,580 378,564 L400,600 L-10,600 Z" fill="#3D5A73"/>
  <path d="M-10,562 C70,526 145,522 208,550 C258,573 318,580 378,564" fill="none" stroke="#EDE7D6" stroke-width="4" opacity="0.85"/>
  <ellipse cx="95" cy="584" rx="62" ry="11" fill="#EDE7D6" opacity="0.22"/>
  <ellipse cx="255" cy="590" rx="56" ry="10" fill="#EDE7D6" opacity="0.2"/>
  <path d="M545,588 C615,556 705,552 810,576 L810,600 L545,600 Z" fill="#3D5A73"/>
  <path d="M545,588 C615,556 705,552 810,576" fill="none" stroke="#EDE7D6" stroke-width="4" opacity="0.8"/>
  <ellipse cx="690" cy="592" rx="70" ry="10" fill="#EDE7D6" opacity="0.2"/>
  <g fill="none" stroke="#EDE7D6" stroke-width="2.5" opacity="0.5">
    <path d="M55,472 q28,-11 56,0"/>
    <path d="M215,488 q28,-11 56,0"/>
    <path d="M655,482 q28,-11 56,0"/>
    <path d="M120,522 q32,-12 64,0"/>
    <path d="M325,508 q28,-11 56,0"/>
    <path d="M685,524 q32,-12 64,0"/>
    <path d="M30,548 q30,-11 60,0"/>
  </g>
  <g stroke="#EDE7D6" stroke-width="1.8" opacity="0.25">
    <line x1="180" y1="498" x2="250" y2="493"/>
    <line x1="480" y1="496" x2="560" y2="491"/>
    <line x1="640" y1="512" x2="720" y2="507"/>
    <line x1="90" y1="540" x2="170" y2="535"/>
  </g>

  <!-- spray crashing on rocks -->
  <g fill="none" stroke="#EDE7D6" stroke-linecap="round">
    <path d="M455,542 C428,516 423,478 445,455" stroke-width="5" opacity="0.8"/>
    <path d="M425,548 C403,526 401,498 416,480" stroke-width="3.5" opacity="0.55"/>
    <path d="M608,562 C630,542 633,516 620,500" stroke-width="4" opacity="0.6"/>
  </g>
  <g fill="#EDE7D6">
    <circle cx="420" cy="492" r="4.5"/>
    <circle cx="402" cy="458" r="3.5"/>
    <circle cx="382" cy="430" r="2.5"/>
    <circle cx="432" cy="448" r="3"/>
    <circle cx="448" cy="505" r="4"/>
    <circle cx="368" cy="462" r="2"/>
    <circle cx="638" cy="514" r="3"/>
    <circle cx="650" cy="494" r="2.5"/>
  </g>

  <!-- wind streaks -->
  <g fill="none" stroke="#EDE7D6" stroke-linecap="round">
    <path d="M-10,252 C130,230 235,264 385,244 S605,228 770,248" stroke-width="3" opacity="0.15"/>
    <path d="M30,342 C160,324 285,354 440,336" stroke-width="2.5" opacity="0.12"/>
    <path d="M430,168 C540,152 660,174 800,156" stroke-width="2" opacity="0.12"/>
  </g>

  <!-- driving rain -->
  <g stroke="#EDE7D6" stroke-width="2.5" stroke-linecap="round" opacity="0.2">
    <line x1="60" y1="20" x2="42" y2="54"/><line x1="150" y1="60" x2="132" y2="94"/><line x1="240" y1="15" x2="222" y2="49"/><line x1="330" y1="55" x2="312" y2="89"/><line x1="430" y1="25" x2="412" y2="59"/><line x1="520" y1="70" x2="502" y2="104"/><line x1="610" y1="30" x2="592" y2="64"/><line x1="700" y1="65" x2="682" y2="99"/><line x1="780" y1="25" x2="762" y2="59"/>
    <line x1="20" y1="140" x2="2" y2="174"/><line x1="110" y1="180" x2="92" y2="214"/><line x1="200" y1="130" x2="182" y2="164"/><line x1="290" y1="170" x2="272" y2="204"/><line x1="380" y1="135" x2="362" y2="169"/><line x1="470" y1="180" x2="452" y2="214"/><line x1="560" y1="140" x2="542" y2="174"/><line x1="650" y1="185" x2="632" y2="219"/><line x1="740" y1="145" x2="722" y2="179"/>
    <line x1="70" y1="260" x2="52" y2="294"/><line x1="160" y1="300" x2="142" y2="334"/><line x1="250" y1="255" x2="232" y2="289"/><line x1="340" y1="295" x2="322" y2="329"/><line x1="430" y1="260" x2="412" y2="294"/><line x1="520" y1="300" x2="502" y2="334"/><line x1="610" y1="265" x2="592" y2="299"/><line x1="700" y1="305" x2="682" y2="339"/><line x1="790" y1="270" x2="772" y2="304"/>
    <line x1="30" y1="380" x2="12" y2="414"/><line x1="120" y1="420" x2="102" y2="454"/><line x1="210" y1="385" x2="192" y2="419"/><line x1="300" y1="425" x2="282" y2="459"/><line x1="390" y1="390" x2="372" y2="424"/><line x1="670" y1="395" x2="652" y2="429"/><line x1="760" y1="430" x2="742" y2="464"/>
    <line x1="80" y1="500" x2="62" y2="534"/><line x1="170" y1="540" x2="152" y2="574"/><line x1="260" y1="505" x2="242" y2="539"/><line x1="350" y1="545" x2="332" y2="579"/><line x1="700" y1="505" x2="682" y2="539"/><line x1="790" y1="545" x2="772" y2="579"/>
  </g>
  <g stroke="#EDE7D6" stroke-width="1.6" stroke-linecap="round" opacity="0.38">
    <line x1="100" y1="40" x2="90" y2="58"/><line x1="200" y1="90" x2="190" y2="108"/><line x1="300" y1="45" x2="290" y2="63"/><line x1="400" y1="95" x2="390" y2="113"/><line x1="500" y1="50" x2="490" y2="68"/><line x1="600" y1="100" x2="590" y2="118"/><line x1="700" y1="50" x2="690" y2="68"/><line x1="790" y1="95" x2="780" y2="113"/>
    <line x1="50" y1="200" x2="40" y2="218"/><line x1="150" y1="240" x2="140" y2="258"/><line x1="250" y1="205" x2="240" y2="223"/><line x1="350" y1="250" x2="340" y2="268"/><line x1="450" y1="210" x2="440" y2="228"/><line x1="550" y1="255" x2="540" y2="273"/><line x1="650" y1="215" x2="640" y2="233"/><line x1="750" y1="250" x2="740" y2="268"/>
    <line x1="100" y1="340" x2="90" y2="358"/><line x1="200" y1="380" x2="190" y2="398"/><line x1="300" y1="345" x2="290" y2="363"/><line x1="400" y1="385" x2="390" y2="403"/><line x1="500" y1="350" x2="490" y2="368"/><line x1="600" y1="390" x2="590" y2="408"/><line x1="700" y1="350" x2="690" y2="368"/><line x1="780" y1="390" x2="770" y2="408"/>
    <line x1="140" y1="470" x2="130" y2="488"/><line x1="240" y1="510" x2="230" y2="528"/><line x1="340" y1="475" x2="330" y2="493"/><line x1="660" y1="475" x2="650" y2="493"/><line x1="740" y1="515" x2="730" y2="533"/>
  </g>

  <!-- lamp glow -->
  <circle cx="500" cy="185" r="34" fill="#F2C14E" opacity="0.22"/>
  <ellipse cx="500" cy="185" rx="40" ry="5" fill="#F2C14E" opacity="0.35"/>
  <circle cx="500" cy="185" r="16" fill="#F2C14E" opacity="0.75"/>
  <circle cx="500" cy="185" r="7" fill="#EDE7D6"/>
</svg>

request envelope — prompt redacted

{
  "model": "moonshotai/kimi-k3",
  "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": 32000,
  "gatewayStringId": "1bfbb92f-8faa-4d8c-820a-3bc9a9aa46b6"
}