Skateboarding astronaut catOne-line
MiniMax M3.1 Flash
by MiniMaxReasoningClean
Running live in a sandboxed frame. Click inside it before using the keyboard.
How it went
- Total time
- 1 min 21 s
- Cost
- $0.0086
- Output tokens
- 14,202
- Spent thinking
- 6,029 tokens
- Speed
- 175.4 tok/s
- Console errors
- 0
- First token after
- 384 ms
- First visible text after
- 50.6 s
- Prompt tokens
- 532
- Code size
- 21.3 KB
- Finish reason
- stop
- Served by
- Parasail
- Model id
minimax/minimax-m3.1-flash- Reasoning sent
{"effort":"xhigh"}- Max output
- 64,000 tokens
- Generated
- Nov 11, 2026
What it was asked
The prompt
“draw me an SVG of an astronaut cat skateboarding on the moon”
System prompt, sent with every prompt
You are generating a self-contained web demo. It will be rendered automatically in a sandboxed iframe and compared side by side with the output of other AI models given the exact same task. Output rules: - Reply with exactly ONE fenced code block containing the complete file: ```html (or ```svg when the task asks for an SVG). No text before or after the code block. - Everything must be inline: CSS in <style>, JavaScript in <script>. No external files, images, fonts or network requests, except the CDN URLs explicitly allowed by the task. - Do not use localStorage, sessionStorage, cookies, IndexedDB, alert(), confirm(), prompt() or window.open(): they are blocked in the sandbox and will throw. - The page must look right in a 1280×800 viewport and adapt gracefully down to 375px wide. No horizontal scrollbar. - Something meaningful must be visible on first paint: a screenshot is taken automatically about 3 seconds after load, without any interaction. - Everything that makes the demo interesting must be visible within the first seconds: nothing hidden behind a high score, a later level or a long play session. - Games must start in a self-playing demo mode (a simple AI plays) behind a "Click or press a key to start" message, so the game can be judged in action without playing. - The iframe only receives keyboard events after the user clicks it: if the demo uses the keyboard, display a clear "Click or press a key to start" message. - The code must run with zero errors in the console of the latest Chrome.
Code run-1.svg · 393 lines
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Astronaut Cat Skateboarding on the Moon</title>
<style>
html,body{margin:0;padding:0;background:#04060f;height:100%;}
body{display:flex;align-items:center;justify-content:center;overflow:hidden;}
.wrap{width:100%;max-width:1200px;}
svg{width:100%;height:auto;display:block;}
.tw{animation:tw 4.2s ease-in-out infinite;}
@keyframes tw{0%,100%{opacity:.15}50%{opacity:1}}
.tw2{animation:tw 5.6s ease-in-out infinite .9s;}
@keyframes tw2{0%,100%{opacity:.9}50%{opacity:.25}}
.float{animation:fl 9s ease-in-out infinite;}
@keyframes fl{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@media (prefers-reduced-motion:reduce){.tw,.tw2,.float{animation:none}}
</style>
</head>
<body>
<div class="wrap">
<svg viewBox="0 0 1200 800" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="An astronaut cat riding a skateboard on the surface of the moon, with Earth in the sky">
<defs>
<radialGradient id="sky" cx="50%" cy="36%" r="80%">
<stop offset="0%" stop-color="#17274f"/>
<stop offset="55%" stop-color="#0a1026"/>
<stop offset="100%" stop-color="#04060f"/>
</radialGradient>
<radialGradient id="earth" cx="34%" cy="30%" r="75%">
<stop offset="0%" stop-color="#8fdcff"/>
<stop offset="45%" stop-color="#2b7fd0"/>
<stop offset="100%" stop-color="#123c7d"/>
</radialGradient>
<linearGradient id="moon" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#c3cbdf"/>
<stop offset="45%" stop-color="#9aa4bd"/>
<stop offset="100%" stop-color="#5f6a83"/>
</linearGradient>
<linearGradient id="suit" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#ffffff"/>
<stop offset="100%" stop-color="#c2cbdd"/>
</linearGradient>
<linearGradient id="fur" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#ffffff"/>
<stop offset="100%" stop-color="#dde3ef"/>
</linearGradient>
<linearGradient id="glass" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#ffffff" stop-opacity=".42"/>
<stop offset="45%" stop-color="#bfe4ff" stop-opacity=".12"/>
<stop offset="100%" stop-color="#8fd0ff" stop-opacity=".06"/>
</linearGradient>
<linearGradient id="gold" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#ffe08a"/>
<stop offset="55%" stop-color="#e0a93a"/>
<stop offset="100%" stop-color="#a9721a"/>
</linearGradient>
<linearGradient id="deck" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#ffb066"/>
<stop offset="55%" stop-color="#f4783c"/>
<stop offset="100%" stop-color="#b3471c"/>
</linearGradient>
<filter id="glow" x="-60%" y="-60%" width="220%" height="220%">
<feGaussianBlur stdDeviation="10" result="b"/>
<feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="soft" x="-60%" y="-60%" width="220%" height="220%">
<feGaussianBlur stdDeviation="7"/>
</filter>
<filter id="soft2" x="-80%" y="-80%" width="260%" height="260%">
<feGaussianBlur stdDeviation="16"/>
</filter>
<g id="star4">
<path d="M0,-11 L2.6,-2.6 L11,0 L2.6,2.6 L0,11 L-2.6,2.6 L-11,0 L-2.6,-2.6 Z"/>
</g>
<g id="paw">
<ellipse cx="0" cy="4" rx="8.5" ry="7"/>
<ellipse cx="-9" cy="-6" rx="3.6" ry="4.6" transform="rotate(-22 -9 -6)"/>
<ellipse cx="-3" cy="-11" rx="3.4" ry="4.4" transform="rotate(-8 -3 -11)"/>
<ellipse cx="4" cy="-11" rx="3.4" ry="4.4" transform="rotate(8 4 -11)"/>
<ellipse cx="10" cy="-6" rx="3.6" ry="4.6" transform="rotate(22 10 -6)"/>
</g>
</defs>
<!-- ================= SKY ================= -->
<rect width="1200" height="800" fill="url(#sky)"/>
<g fill="#ffffff">
<circle cx="60" cy="60" r="1.6" opacity=".9"/>
<circle cx="140" cy="130" r="1.2" opacity=".6"/>
<circle cx="210" cy="55" r="1.8" opacity=".8"/>
<circle cx="280" cy="160" r="1.1" opacity=".5"/>
<circle cx="330" cy="90" r="1.5" opacity=".85"/>
<circle cx="395" cy="45" r="1.2" opacity=".55"/>
<circle cx="470" cy="120" r="1.7" opacity=".8"/>
<circle cx="530" cy="35" r="1.2" opacity=".6"/>
<circle cx="600" cy="95" r="1.4" opacity=".7"/>
<circle cx="655" cy="170" r="1.1" opacity=".45"/>
<circle cx="720" cy="60" r="1.6" opacity=".85"/>
<circle cx="790" cy="130" r="1.2" opacity=".55"/>
<circle cx="855" cy="45" r="1.5" opacity=".75"/>
<circle cx="905" cy="235" r="1.2" opacity=".5"/>
<circle cx="1080" cy="70" r="1.6" opacity=".8"/>
<circle cx="1140" cy="150" r="1.2" opacity=".6"/>
<circle cx="1170" cy="40" r="1.4" opacity=".7"/>
<circle cx="1010" cy="300" r="1.1" opacity=".45"/>
<circle cx="120" cy="265" r="1.3" opacity=".55"/>
<circle cx="35" cy="185" r="1.1" opacity=".5"/>
<circle cx="250" cy="300" r="1.2" opacity=".4"/>
<circle cx="445" cy="225" r="1.3" opacity=".5"/>
<circle cx="560" cy="300" r="1.1" opacity=".4"/>
<circle cx="700" cy="255" r="1.4" opacity=".45"/>
<circle cx="800" cy="310" r="1.1" opacity=".4"/>
<circle cx="60" cy="400" r="1.3" opacity=".35"/>
<circle cx="150" cy="470" r="1.1" opacity=".3"/>
<circle cx="960" cy="420" r="1.3" opacity=".4"/>
<circle cx="1105" cy="360" r="1.1" opacity=".35"/>
<circle cx="1160" cy="470" r="1.4" opacity=".45"/>
<circle cx="240" cy="430" r="1.2" opacity=".3"/>
<circle cx="360" cy="350" r="1.1" opacity=".3"/>
</g>
<g fill="#ffffff" class="tw">
<use href="#star4" transform="translate(190,205) scale(.85)"/>
<use href="#star4" transform="translate(640,225) scale(.6)"/>
<use href="#star4" transform="translate(1120,255) scale(.75)"/>
</g>
<g fill="#ffffff" class="tw2">
<use href="#star4" transform="translate(430,90) scale(.55)"/>
<use href="#star4" transform="translate(890,95) scale(.7)"/>
<use href="#star4" transform="translate(70,330) scale(.5)"/>
</g>
<g fill="#dfe9ff" opacity=".9">
<use href="#star4" transform="translate(1020,45) scale(.5)"/>
<use href="#star4" transform="translate(300,470) scale(.45)"/>
</g>
<!-- ================= EARTH ================= -->
<g class="float">
<circle cx="985" cy="170" r="96" fill="#4aa3ff" opacity=".22" filter="url(#soft2)"/>
<circle cx="985" cy="170" r="84" fill="url(#earth)"/>
<g fill="#4fae63">
<path d="M948,128 C962,116 984,120 990,134 C994,146 980,150 972,146 C962,141 948,148 944,140 C941,134 942,131 948,128 Z"/>
<path d="M1006,180 C1022,172 1042,178 1046,192 C1049,204 1034,210 1024,204 C1013,197 999,206 996,197 C994,190 998,184 1006,180 Z"/>
<path d="M955,190 C964,182 978,186 978,197 C978,207 964,214 957,206 C953,201 951,193 955,190 Z"/>
</g>
<g fill="#ffffff" opacity=".55">
<ellipse cx="972" cy="108" rx="30" ry="10" transform="rotate(-18 972 108)"/>
<ellipse cx="1012" cy="150" rx="26" ry="8" transform="rotate(12 1012 150)"/>
<ellipse cx="975" cy="224" rx="22" ry="7" transform="rotate(-8 975 224)"/>
</g>
<path d="M935,120 C922,140 920,170 932,196 C944,220 966,232 985,232" fill="none" stroke="#0b2a55" stroke-opacity=".35" stroke-width="16" stroke-linecap="round"/>
<circle cx="985" cy="170" r="84" fill="none" stroke="#a8dcff" stroke-opacity=".7" stroke-width="3"/>
</g>
<!-- ================= MOON GROUND ================= -->
<path d="M0,602 C190,566 420,592 620,578 C840,564 1010,548 1200,566 L1200,800 L0,800 Z" fill="url(#moon)"/>
<path d="M0,602 C190,566 420,592 620,578 C840,564 1010,548 1200,566" fill="none" stroke="#eef2fb" stroke-opacity=".55" stroke-width="6" stroke-linecap="round"/>
<path d="M0,616 C190,580 420,606 620,592 C840,578 1010,562 1200,580 L1200,800 L0,800 Z" fill="#8e99b2" opacity=".35"/>
<!-- craters -->
<g>
<ellipse cx="150" cy="712" rx="120" ry="38" fill="#6f7a93"/>
<ellipse cx="150" cy="704" rx="120" ry="36" fill="#7f8aa3"/>
<path d="M40,700 C80,678 220,678 260,700" fill="none" stroke="#c8d1e4" stroke-opacity=".8" stroke-width="7" stroke-linecap="round"/>
<ellipse cx="905" cy="668" rx="88" ry="26" fill="#6f7a93"/>
<path d="M822,660 C852,644 958,644 988,660" fill="none" stroke="#c8d1e4" stroke-opacity=".7" stroke-width="6" stroke-linecap="round"/>
<ellipse cx="640" cy="762" rx="86" ry="26" fill="#69748d"/>
<path d="M558,756 C588,740 692,740 722,756" fill="none" stroke="#c3ccdf" stroke-opacity=".6" stroke-width="6" stroke-linecap="round"/>
<ellipse cx="330" cy="640" rx="46" ry="15" fill="#6c7791"/>
<ellipse cx="1120" cy="742" rx="70" ry="22" fill="#6c7791"/>
<ellipse cx="110" cy="560" rx="34" ry="11" fill="#6c7791"/>
</g>
<!-- small rocks -->
<g fill="#8b96ae">
<ellipse cx="245" cy="620" rx="12" ry="6"/>
<ellipse cx="255" cy="612" rx="7" ry="5"/>
<ellipse cx="700" cy="600" rx="10" ry="5"/>
<ellipse cx="1010" cy="618" rx="14" ry="7"/>
<ellipse cx="420" cy="770" rx="16" ry="7"/>
<ellipse cx="980" cy="782" rx="13" ry="6"/>
</g>
<!-- flag -->
<g>
<path d="M1012,566 L1012,462" stroke="#d9e0ef" stroke-width="6" stroke-linecap="round"/>
<path d="M1012,566 L1012,462" stroke="#8f9ab3" stroke-width="2" stroke-linecap="round"/>
<circle cx="1012" cy="458" r="6" fill="url(#gold)"/>
<path d="M1014,466 C1044,454 1076,478 1110,464 L1110,504 C1076,518 1044,494 1014,506 Z" fill="#e4573f"/>
<path d="M1014,466 C1044,454 1076,478 1110,464" fill="none" stroke="#f79d84" stroke-width="3" opacity=".7"/>
<g transform="translate(1058,485) scale(.62)" fill="#ffffff" opacity=".92"><use href="#paw"/></g>
<ellipse cx="1012" cy="568" rx="26" ry="7" fill="#5d6880" opacity=".55"/>
</g>
<!-- ================= MOTION / DUST ================= -->
<g opacity=".55">
<g fill="#dfe7f6" filter="url(#soft)">
<circle cx="404" cy="606" r="22"/>
<circle cx="360" cy="618" r="18"/>
<circle cx="320" cy="604" r="14"/>
<circle cx="440" cy="632" r="16"/>
<circle cx="278" cy="626" r="10"/>
</g>
</g>
<g fill="none" stroke="#ffffff" stroke-linecap="round" opacity=".28">
<path d="M330,560 C280,572 240,586 200,596" stroke-width="4"/>
<path d="M300,592 C250,604 214,616 170,624" stroke-width="3"/>
<path d="M352,640 C300,652 262,662 220,670" stroke-width="3"/>
<path d="M392,532 C360,540 330,552 300,560" stroke-width="2.5" opacity=".7"/>
</g>
<g fill="#ffffff" opacity=".35">
<circle cx="300" cy="560" r="3"/>
<circle cx="255" cy="592" r="2.5"/>
<circle cx="352" cy="672" r="2.5"/>
<circle cx="212" cy="600" r="2"/>
</g>
<!-- ================= CAT ASTRONAUT ================= -->
<g id="cat">
<!-- shadow -->
<ellipse cx="545" cy="662" rx="150" ry="26" fill="#2b3348" opacity=".45" filter="url(#soft)"/>
<!-- tail (behind body) -->
<g>
<path d="M482,462 C430,452 398,486 414,516 C428,542 470,540 470,510" fill="none" stroke="#e3e9f4" stroke-width="22" stroke-linecap="round"/>
<path d="M482,462 C430,452 398,486 414,516 C428,542 470,540 470,510" fill="none" stroke="#f2a65a" stroke-width="22" stroke-linecap="round" stroke-dasharray="16 34" stroke-dashoffset="6"/>
<path d="M482,462 C430,452 398,486 414,516 C428,542 470,540 470,510" fill="none" stroke="#dde4f0" stroke-width="22" stroke-linecap="round" stroke-dasharray="0 50" stroke-dashoffset="30" opacity=".9"/>
</g>
<!-- backpack -->
<g>
<rect x="438" y="404" width="56" height="104" rx="18" fill="#97a2ba" stroke="#7a869f" stroke-width="3"/>
<rect x="446" y="424" width="40" height="26" rx="8" fill="#7f8ba4"/>
<path d="M452,406 L444,352" stroke="#c3ccdd" stroke-width="6" stroke-linecap="round"/>
<circle cx="444" cy="348" r="7" fill="#ff5c5c" class="tw"/>
<circle cx="444" cy="348" r="7" fill="none" stroke="#ff9d9d" stroke-width="2"/>
</g>
<!-- back arm (trailing, for balance) -->
<g>
<path d="M488,420 C452,398 424,372 398,348" fill="none" stroke="url(#suit)" stroke-width="26" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M488,420 C452,398 424,372 398,348" fill="none" stroke="#eef2f9" stroke-width="26" stroke-linecap="round" stroke-dasharray="0 999" opacity="0"/>
<path d="M430,382 L444,398" stroke="#f2a65a" stroke-width="26" stroke-linecap="round"/>
<circle cx="396" cy="346" r="17" fill="#eef3fb" stroke="#a9b4c8" stroke-width="3"/>
<path d="M386,340 C380,332 380,326 384,325 C388,324 390,330 392,334 M396,336 C392,328 393,322 397,322 C401,322 401,329 402,334" fill="#eef3fb" stroke="#a9b4c8" stroke-width="2.5" stroke-linecap="round"/>
</g>
<!-- legs -->
<g>
<path d="M508,498 C500,522 492,540 495,566" fill="none" stroke="url(#suit)" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M508,498 C500,522 492,540 495,566" fill="none" stroke="none"/>
<path d="M500,516 L516,512" stroke="#f2a65a" stroke-width="28" stroke-linecap="round"/>
<path d="M566,494 C578,516 586,536 592,562" fill="none" stroke="url(#suit)" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M568,516 L584,510" stroke="#f2a65a" stroke-width="28" stroke-linecap="round"/>
<!-- boots -->
<path d="M478,566 C474,574 478,584 490,585 L534,586 C544,586 549,591 547,598 C546,604 540,606 532,606 L488,604 C478,603 472,596 473,586 Z" fill="#f5f8fd" stroke="#a3aec4" stroke-width="3" stroke-linejoin="round"/>
<path d="M574,562 C572,570 578,580 590,581 L632,582 C642,582 647,588 645,595 C644,601 638,603 630,603 L590,601 C580,600 574,592 575,582 Z" fill="#f5f8fd" stroke="#a3aec4" stroke-width="3" stroke-linejoin="round"/>
<path d="M477,596 L546,598" stroke="#6f7b93" stroke-width="4" stroke-linecap="round"/>
<path d="M578,592 L643,594" stroke="#6f7b93" stroke-width="4" stroke-linecap="round"/>
</g>
<!-- torso -->
<g>
<path d="M482,396 C482,384 500,378 540,378 C580,378 598,384 598,396 L596,462 C596,502 574,518 540,518 C506,518 484,502 484,462 Z" fill="url(#suit)" stroke="#9aa6bd" stroke-width="3.5" stroke-linejoin="round"/>
<!-- chest panel -->
<rect x="508" y="404" width="64" height="46" rx="11" fill="#e7edf7" stroke="#a9b4c8" stroke-width="3"/>
<rect x="518" y="414" width="34" height="12" rx="4" fill="#f2a65a"/>
<circle cx="522" cy="438" r="5" fill="#7f8ba4"/>
<circle cx="538" cy="438" r="5" fill="#7f8ba4"/>
<circle cx="554" cy="438" r="5" fill="#63c06a"/>
<!-- mission patch -->
<circle cx="540" cy="478" r="17" fill="url(#gold)" stroke="#a9721a" stroke-width="2.5"/>
<g transform="translate(540,480) scale(.55)" fill="#3a2c10"><use href="#paw"/></g>
<!-- belt -->
<path d="M486,486 C508,500 572,500 594,486" fill="none" stroke="#b9c3d6" stroke-width="10" stroke-linecap="round"/>
<rect x="528" y="490" width="26" height="16" rx="5" fill="#e0e7f3" stroke="#9aa6bd" stroke-width="2.5"/>
</g>
<!-- front arm (waving forward) -->
<g>
<path d="M596,414 C628,392 652,362 668,336" fill="none" stroke="url(#suit)" stroke-width="26" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M622,392 L614,378" stroke="#f2a65a" stroke-width="26" stroke-linecap="round"/>
<circle cx="672" cy="332" r="17" fill="#eef3fb" stroke="#a9b4c8" stroke-width="3"/>
<path d="M664,320 C658,311 659,305 663,305 C667,305 668,312 670,317 M674,315 C670,306 671,300 675,300 C679,300 679,308 679,314" fill="#eef3fb" stroke="#a9b4c8" stroke-width="2.5" stroke-linecap="round"/>
</g>
<!-- neck ring -->
<rect x="506" y="366" width="68" height="20" rx="10" fill="#cfd7e6" stroke="#98a3ba" stroke-width="3"/>
<!-- helmet back / cat head -->
<g>
<!-- ears -->
<path d="M474,268 L492,214 L520,250 Z" fill="#f3f6fc" stroke="#a3aec4" stroke-width="3" stroke-linejoin="round"/>
<path d="M482,262 L494,232 L509,253 Z" fill="#f5a9b8" opacity=".9"/>
<path d="M606,268 L588,214 L560,250 Z" fill="#f3f6fc" stroke="#a3aec4" stroke-width="3" stroke-linejoin="round"/>
<path d="M598,262 L586,232 L571,253 Z" fill="#f5a9b8" opacity=".9"/>
<!-- head -->
<circle cx="540" cy="296" r="60" fill="url(#fur)" stroke="#a3aec4" stroke-width="3.5"/>
<!-- tabby patches -->
<path d="M540,238 C556,238 566,246 570,254 L558,252 C556,246 550,242 540,242 Z" fill="#f2a65a"/>
<path d="M482,300 C482,282 490,268 500,262 L504,278 C498,284 496,292 497,300 Z" fill="#f2a65a"/>
<path d="M598,300 C598,284 590,270 581,264 L577,280 C583,286 585,293 584,301 Z" fill="#f2a65a"/>
<ellipse cx="513" cy="316" rx="11" ry="7" fill="#f7b9c4" opacity=".75"/>
<ellipse cx="567" cy="316" rx="11" ry="7" fill="#f7b9c4" opacity=".75"/>
<!-- eyes -->
<g>
<ellipse cx="515" cy="292" rx="13" ry="14" fill="#22304a"/>
<ellipse cx="567" cy="292" rx="13" ry="14" fill="#22304a"/>
<circle cx="519" cy="287" r="4.5" fill="#ffffff"/>
<circle cx="571" cy="287" r="4.5" fill="#ffffff"/>
<circle cx="511" cy="297" r="2.4" fill="#ffffff" opacity=".8"/>
<circle cx="563" cy="297" r="2.4" fill="#ffffff" opacity=".8"/>
</g>
<!-- nose + mouth -->
<path d="M534,312 L546,312 L540,320 Z" fill="#f090a4" stroke="#d4738a" stroke-width="1.5" stroke-linejoin="round"/>
<path d="M540,320 L540,325 M540,325 C535,331 528,329 526,324 M540,325 C545,331 552,329 554,324" fill="none" stroke="#6c7791" stroke-width="2.6" stroke-linecap="round"/>
<!-- whiskers -->
<g stroke="#9aa6bd" stroke-width="2" stroke-linecap="round" opacity=".9">
<path d="M498,308 L466,300"/>
<path d="M497,316 L464,315"/>
<path d="M500,324 L470,332"/>
<path d="M582,308 L614,300"/>
<path d="M583,316 L616,315"/>
<path d="M580,324 L610,332"/>
</g>
</g>
<!-- helmet -->
<g>
<circle cx="540" cy="290" r="94" fill="url(#glass)"/>
<circle cx="540" cy="290" r="94" fill="none" stroke="url(#gold)" stroke-width="9"/>
<circle cx="540" cy="290" r="99" fill="none" stroke="#8f6a1c" stroke-width="3" opacity=".7"/>
<!-- side comms pods -->
<rect x="432" y="272" width="22" height="36" rx="10" fill="#d8b45a" stroke="#8f6a1c" stroke-width="3"/>
<rect x="626" y="272" width="22" height="36" rx="10" fill="#d8b45a" stroke="#8f6a1c" stroke-width="3"/>
<circle cx="443" cy="290" r="5" fill="#7a5a12"/>
<circle cx="637" cy="290" r="5" fill="#7a5a12"/>
<!-- lamp -->
<rect x="526" y="186" width="28" height="14" rx="6" fill="#d8b45a" stroke="#8f6a1c" stroke-width="3"/>
<circle cx="540" cy="196" r="9" fill="#fff2c4" opacity=".85" filter="url(#glow)"/>
<!-- reflections -->
<path d="M478,232 C492,208 522,194 548,196 C520,206 498,224 486,248 Z" fill="#ffffff" opacity=".42"/>
<path d="M598,240 C610,254 616,272 616,288 C608,270 600,254 590,246 Z" fill="#ffffff" opacity=".3"/>
<ellipse cx="497" cy="222" rx="16" ry="8" transform="rotate(-28 497 222)" fill="#ffffff" opacity=".55"/>
</g>
</g>
<!-- ================= SKATEBOARD ================= -->
<g id="board">
<!-- deck -->
<path d="M446,612 C446,602 454,594 466,594 C520,591 572,593 628,596 C644,597 652,603 651,611 C650,620 641,624 627,623 L468,620 C454,620 446,618 446,612 Z" fill="url(#deck)" stroke="#8a3713" stroke-width="3.5" stroke-linejoin="round"/>
<path d="M452,599 C512,596 576,598 640,601 C646,601 649,603 649,606 C586,602 512,600 452,603 Z" fill="#ffd0a8" opacity=".85"/>
<g fill="#fff4e4" opacity=".9">
<rect x="476" y="596" width="12" height="24" rx="4" transform="rotate(-1 482 608)"/>
<rect x="528" y="597" width="12" height="24" rx="4" transform="rotate(-1 534 609)"/>
<rect x="580" y="598" width="12" height="24" rx="4" transform="rotate(-1 586 610)"/>
</g>
<!-- trucks -->
<path d="M486,620 L498,634 L506,620 Z" fill="#b9c3d6" stroke="#7d899f" stroke-width="2.5" stroke-linejoin="round"/>
<path d="M600,622 L612,636 L620,622 Z" fill="#b9c3d6" stroke="#7d899f" stroke-width="2.5" stroke-linejoin="round"/>
<!-- wheels -->
<g>
<circle cx="500" cy="640" r="15" fill="#2e3a55" stroke="#1b2438" stroke-width="3"/>
<circle cx="500" cy="640" r="6" fill="#cfd8e8"/>
<circle cx="500" cy="640" r="2.5" fill="#5c6880"/>
<circle cx="614" cy="642" r="15" fill="#2e3a55" stroke="#1b2438" stroke-width="3"/>
<circle cx="614" cy="642" r="6" fill="#cfd8e8"/>
<circle cx="614" cy="642" r="2.5" fill="#5c6880"/>
</g>
<!-- motion arcs -->
<g fill="none" stroke="#ffd8b0" stroke-width="4" stroke-linecap="round" opacity=".65">
<path d="M452,650 C420,654 396,656 372,656"/>
<path d="M456,666 C424,670 400,672 378,672"/>
</g>
</g>
<!-- ================= FOREGROUND TEXT ================= -->
<g font-family="'Trebuchet MS', 'Segoe UI', Verdana, sans-serif">
<text x="58" y="742" fill="#9fb0d2" font-size="23" letter-spacing="7">LUNA MEOW-1</text>
<text x="58" y="766" fill="#61729a" font-size="13" letter-spacing="3.4">EXTRAVEHICULAR CAT · SKATEBOARD DIVISION</text>
</g>
<!-- corner badge -->
<g transform="translate(96,96)">
<circle r="36" fill="none" stroke="#e0a93a" stroke-width="2.5" opacity=".9"/>
<circle r="30" fill="none" stroke="#e0a93a" stroke-width="1" opacity=".5"/>
<g transform="scale(.85)" fill="#e0a93a" opacity=".95"><use href="#paw"/></g>
</g>
<!-- vignette -->
<rect width="1200" height="800" fill="none" stroke="#000" stroke-opacity=".35" stroke-width="40" style="stroke-linejoin:round"/>
</svg>
</div>
</body>
</html>Reasoning trace (6,029 tokens)
The task asks for an SVG drawing. I should output a single fenced code block with ```svg or ```html containing the complete file. Since it's an SVG, I could output an SVG file directly. But maybe an HTML wrapper with inline SVG is safer for rendering. The task says "draw me an SVG of an astronaut cat skateboarding on the moon". The output rules say "```html (or ```svg when the task asks for an SVG)".
I'll produce an SVG file (standalone .svg) with rich detail: moon surface with craters, stars, Earth in sky, an astronaut cat wearing a helmet with visor, riding a skateboard, with a board trail, motion lines, maybe a small flag.
Let me design carefully with a 1200x800 viewBox.
Composition:
- Background: dark space gradient, stars.
- Earth in the upper right/left.
- Moon surface: curved horizon at the bottom with craters.
- Cat astronaut: helmet (glass dome with reflection), ears poking out of helmet? A cat in a spacesuit with helmet, scarf, tail curling out, waving.
- Skateboard: deck with wheels, tilted.
- Motion dust, footprints.
Let's carefully craft shapes.
Canvas 1200x800.
Space sky: rect 0,0,1200,800 with radial gradient dark blue-black.
Stars: various small circles.
Earth: circle at (980, 150) radius 70 with blue gradient + green continents + white clouds, glow.
Moon ground: horizon curve. Use a path from (0, 640) curving. Let's make ground from y=620 to 800 with slight bumps. Add craters as ellipses with lighter rims.
Main character: cat astronaut centered around x=520, y=380 (body), skateboard at y=560.
Let me define the cat:
- Body: white/orange tabby suit. Let's do a grayish-white suit with orange accents.
- Head: circle at (520, 300) r=70, with cat ears (triangles) on top, inside the helmet.
- Helmet: circle r=85 around head, glass with reflection arc, gold-ish rim.
- Visor: dark tinted region covering face? A cat face with two eyes visible inside helmet.
- Body: rounded rect from (470,355) to (570,500) with backpack behind (rect left of body), arms: one arm extended forward waving, one holding board? Let's have the front arm extended upward/outward (waving) and the back arm holding the skateboard? Actually a skateboard under the feet, arms out for balance — classic pose. One arm raised.
Let's do pose: cat leaning forward slightly, left arm (viewer's left) extended back-up, right arm extended forward-up. Both arms out for balance.
- Legs: bent, feet on the board.
- Tail: curly tail behind, with stripes.
Skateboard: deck drawn in perspective as an ellipse-ish shape. Simpler: side view slightly angled board: path with curved nose/tail, at (520, 610), rotated slightly -8deg. Two wheels visible as circles, plus truck.
Motion: dust puffs behind board, speed lines, small "hop" arc.
Also add a small flag planted on moon at right, maybe a little trail of footprints leading in from the left.
Let me write the SVG with defs: gradients (space, earth, moon, helmet glass, visor, suit), filters (glow for stars, soft shadow). Use feGaussianBlur sparingly — fine in Chrome.
Let me plan coordinates more concretely.
Ground: horizon at y ~ 600 on the right side rising? For perspective, the ground line: path M0,640 Q300,600 600,610 T1200,585 L1200,800 L0,800 Z. Craters on ground.
Cat center x=540.
Head center: (540, 300). Helmet outer circle r=95 → spans 445..635, 205..395.
Ears: triangles at top of head inside helmet: left ear path M470,250 L490,195 L515,235 Z; right ear M570,250 L595,195 L612,238 Z. Inner ear pink.
Actually cat head inside helmet at r=60: circle center (540,300) r=60.
Face: eyes at (515,295) and (565,295) — almond shapes with pupils. Nose triangle at (540,318). Whiskers lines. Mouth.
Helmet: circle r=95 with glass fill semi-transparent blue-white, rim stroke gold/silver width 10. Reflection: a white translucent crescent in upper-left.
Also a collar ring at bottom of helmet: rect at y=380.
Body: suit torso from (480,390) to (600,520) rounded. Backpack: rounded rect behind at x=455..490, y=400..500 with antenna.
Arms: back arm from shoulder (490,410) going up-left to elbow (420,350) to hand (375,300)? Hmm, for balance arms out horizontally is typical. Let's do: back arm extended up-left: path with stroke width 22 round cap from (492,415) Q(440,370) (400,345). Glove circle at (398,343) r=16.
Front arm: from shoulder (588,410) Q(640,365) (672,330)? maybe waving. Glove at (676,325) r=16 with fingers.
Hmm, arms should attach to shoulders just below helmet collar (helmet bottom ~395). Shoulders at y=405.
Legs: from hips (540,510) → knees → feet on board at y=600. Two legs: back leg (500,510) to knee (490,565) to foot (505,598); front leg (565,510) to knee (580,560) to foot (600,596). Suited legs with boot shapes.
Tail: from (585,505) curling right-up: path M590,500 C640,480 660,440 640,420 C625,405 600,415 608,432. stroke width 18 round, with stripes via overlay strokes darker.
Skateboard at (540, 615): deck path: M455,600 Q455,585 480,582 L610,585 Q635,588 632,602 ... Let's define a slightly perspective deck:
Deck top: M460,598 C455,585 470,578 490,579 L615,586 C638,588 645,600 638,610 C632,618 618,620 600,618 L480,610 C468,609 462,605 460,598 Z — that's the deck silhouette (side-ish 3/4 view).
Simpler: draw a deck as a rounded parallelogram tilted: group transform rotate(-6, 540,610).
Deck: rect x=460 y=598 width=180 height=16 rx=8 with nose/tail upturned curves. Use path: M455,606 Q455,592 470,592 L630,592 Q645,592 645,606 Q645,620 630,620 L470,620 Q455,620 455,606 Z plus upturned tips.
Wheels: circles at (490,634) r=16 and (610,634) r=16, with hubs.
Truck: small trapezoid between deck and wheels.
Motion effects: dust plume behind (left of) board: several translucent circles, speed lines to the left, a small arc trail.
Also floating particles, and a tiny flag at (980, 590) on the moon: pole + flag waving with a paw print emblem? Nice.
Also Earth in sky upper-left maybe, plus a small rocket in the distance.
Add title text? Maybe "MOON CAT" small caption at bottom-left. Could be nice but the task is just a drawing. A subtle caption is fine. I'll add small tasteful text at bottom-left in the style of a mission patch? Let's add a small mission patch badge with a cat paw and text "LUNA MEOW-1". That's charming. Keep it subtle.
Font: use generic sans-serif (no external fonts).
Let me write the code.
Gradients:
- skyGrad: radial from center (600,300) r 800: #1b2a4a → #070b16.
- earthGrad: linear #4aa8ff → #1b4f9c.
- moonGrad: linear #cfd6e4 → #8d97ad (top lighter).
- glassGrad: linear white 0.35 → white 0.05.
- suitGrad: linear #f2f5fb → #b9c3d6.
- helmetRim: linear #ffd76a → #c98b1f.
Filters: glow (feGaussianBlur stdDeviation 6 + merge), softBlur for dust.
Now write stars: a bunch of small circles with varying opacity, plus 4-point sparkle stars.
Let me produce final SVG. I'll keep everything as one SVG file with width/height set to 100%? For standalone SVG, set viewBox and width="1200" height="800". Since it may be rendered in an iframe, an HTML wrapper might be more flexible for responsiveness (scales to 375px width). The rules say the page must look right in 1280x800 and adapt down to 375px. An SVG file rendered standalone in iframe would scale? If width=1200 fixed, at 375 viewport it'd overflow. Safer: wrap in HTML with inline SVG with width:100%, height:auto, max-width. But the task says SVG... The output rules allow html. I'll do HTML with inline SVG for responsiveness. Hmm, but "draw me an SVG" — the grader likely renders the code block. If it's ```html with inline SVG, it renders fine in browser. If ```svg, the iframe might render the SVG document directly which also scales? SVG with viewBox and width="100%" height="100%" inside iframe would scale to the iframe. Actually if the sandbox renders the html code block into an iframe as text/html, then ```svg content would be parsed as HTML and the svg root would still render inline (HTML parser handles inline svg). Either works. But HTML gives better control.
I'll output HTML with a centered inline SVG that scales with preserveAspectRatio, plus a nice dark background page matching.
Let me write it.
Details for the cat face inside helmet:
- head fill: suitGrad white with orange tabby patches: a patch over left ear and side of head.
- eyes: two rounded almond shapes (fill #1b1b2a), with white highlight dots and green iris? Let's do simple dark eyes with white sparkle.
- nose: small triangle pink #f19fb0.
- mouth: two small curves (w shape).
- whiskers: 3 lines each side, thin gray.
- cheeks: soft pink blush ellipses.
Helmet glass over face: circle fill glassGrad opacity plus a diagonal reflection streak (white 0.25) and a rim.
Order: draw helmet back rim (a thicker circle), then head, then glass overlay, then rim front? Simpler: draw head+ears, then helmet glass circle (semi-transparent), then rim stroke on top, then reflection.
Also add a small antenna on the backpack with a blinking red light.
Ok let's write out coordinates carefully.
Ground path: M0,655 C180,625 380,640 560,628 C760,614 980,600 1200,615 L1200,800 L0,800 Z
Craters:
1. (180,730) ellipse rx=110 ry=34, fill darker, rim light stroke on top arc.
2. (900,700) ellipse rx=90 ry=28.
3. (640,760) ellipse rx=70 ry=22.
4. small (380,690) rx=45 ry=14.
Shadow under cat on ground: ellipse at (540,655) rx=140 ry=30 fill black opacity .18 blur.
Wait — the cat's board wheels at y~634, ground horizon near x=540 is ~630. So the board sits right at the horizon line. Maybe raise the cat so ground line is below: make the moon ground start at y=650 in the middle. Let's shift the cat up: scale the character group by translating. Character head center 300, board 634. Ground at 640 → board wheels touching around y=650. Good: shadow ellipse at (540,655).
Hmm but the cat is in front of the horizon so it looks like it's standing on the near ground, whose surface at x=540 is y=628 per my curve. Let's adjust curve so mid ground around x=540 is y=680: M0,700 C200,672 380,690 560,678 C780,664 980,650 1200,668. Then the cat (board at 634) floats above? The near ground plane is below the horizon; the cat standing on near ground would have feet lower than the horizon line... Actually the horizon line is the far edge; objects standing on the near ground appear with feet below the horizon line. So the board at y=634 with horizon at ~678 would put the cat above the ground—floating.
Better: put horizon high (e.g., y=560) so the ground occupies from 560 down to 800, and place the cat's wheels at y=650. Then cat stands on the near ground plane. Let's redo:
Ground: M0,600 C200,570 420,590 620,578 C840,565 1020,552 1200,566 L1200,800 L0,800 Z — hmm, moon curvature: the far edge of a small moon's surface. Fine.
Let's set ground top edge around y=585 average. Then the cat board at y=650 with shadow ellipse at (540,655). Character: shift the whole character down by 25? Let's define character coordinates so board wheels bottom at y=650, deck at ~615.
Revised character layout (ground ~585-600 at center):
- Board deck top surface at y=612, deck bottom 626, wheels center 640, wheel bottom 656. So wheels bottom 656 — on the ground at 656 which is below horizon 585.
- Feet on deck at y~600.
- Legs from hips y=505 to feet 600.
- Torso y 395..510.
- Head center (540, 292), helmet r=92 → 200..384.
- Shoulders y=400.
Ears top at ~195 (inside helmet top 200 → ears would poke out of helmet, which is cute: cat ears poking through the helmet? Not physically but cute). Keep ears inside: ear tips at y=225.
Head circle r=58 at (540,295): spans 237..353. Ears: triangles from (472,262) to (492,215) to (518,245); right (570,260)-(592,212)-(612,248). Tips at 212-215, helmet top at 295-92=203. So ear tips inside helmet.
Helmet: circle cx=540 cy=295 r=92. Rim stroke width 9 gold. Glass fill gradient.
Collar/neck ring: rect x=505 y=372 w=70 h=18 rx=9 (below head, above torso top at 395? torso top 390). Fine.
Backpack: behind torso on left: rounded rect x=440 y=400 w=48 h=95 rx=16, fill #9aa6bd, with antenna line from (452,400) up to (440,345) and red dot.
Torso: path M478,392 Q540,378 602,392 L600,470 Q600,512 540,516 Q480,512 480,470 Z — a suit torso. Add chest panel: rect with orange stripe, small badge circle with paw.
Arms:
- Back arm (viewer's left): from (485,415) → elbow (430,372) → hand (382,342). Draw as a path stroke #dde3ef width 24 with round caps; glove at end circle r=17 fill #e8edf7 with cuff.
- Front arm (viewer's right): from (595,410) → elbow (650,360) → hand (700,318)? Maybe hand waving up near head level. Let's do hand at (686,330) with a waving gesture, fingers implied.
Actually for balance while skateboarding, arms out to sides: left arm extended back-up, right arm extended forward-up and slightly bent. Good.
Legs:
- Back leg: hip (505,505) → knee (492,555) → ankle (500,588), foot on deck pointing right: boot ellipse/path from (488,588) to (540,600).
- Front leg: hip (570,505) → knee (585,550) → ankle (598,585), boot from (585,585) to (640,597).
Boots: rounded shapes white with dark sole.
Tail: from behind torso right side (598,470) curving right and up: M600,470 C648,455 676,420 656,392 C640,370 610,378 616,398 with stroke 20 #e6ebf5 and orange stripe overlays.
Hmm the tail might collide with the front arm region (arm goes to 686,330). Tail at x 600-676, y 370-470; arm path from (595,410) to (650,360) to (686,330) passes near (650,360) — tail at (656,392) is close. Let me route the tail lower-right: from (600,480) C660,480 700,450 690,420. Then it curls. Or put tail on the left behind the body: from (480,480) curving left-down to (430,530) then up (400,500)? Let's put the tail to the left (behind the backpack), curling: M470,470 C420,470 395,500 415,528 C432,552 470,545 468,515. With stripes.
That works: tail on left, away from arms (back arm passes through (430,372)-(382,342), tail at y 470-550, fine).
Dust/motion: at board rear (left) around x 380-460, y 600-640: overlapping translucent light circles (dust kicked up), plus curved speed lines trailing left from the wheels, plus a small arc of "hop" mark. Also small debris rocks on the ground.
Earth: place at (990,170) r=78, with atmosphere glow. Continents: a few green blobs. Clouds: white translucent paths. Also a crescent shadow? Keep it simple: circle gradient + green blobs + white cloud ellipse + glow ring.
Also a distant rocket? Maybe a small satellite. Let's add a small rocket at (170,200) tilted, tiny, with flame — adds story. Or a small flag. I'll add flag on the right ground at (1010, 560) — pole from (1010,560) up to (1010,470), flag waving right with a paw print.
And footprints trail from left bottom into the scene? The cat is skateboarding so footprints aren't needed; instead a trail of dust.
Text: bottom-left "LUNA MEOW-1" in letter-spaced uppercase, with a small line. And maybe a "MISSION" label. Keep subtle white opacity .5.
Now the "adapt to 375px" — with inline SVG width 100%, the drawing scales down; small text may be tiny but fine.
Let me write the final code now.
I'll add a CSS animation? Maybe gentle floating of Earth? Could add subtle CSS animation for stars twinkling and dust. Keep minimal but nice: twinkle on some stars via CSS animation with delays.
Careful: SVG CSS animations inside SVG work in Chrome. Use <style> inside svg.
Write it.
For dust: group of circles with fill #c9d3e6 opacity .3, blur filter.
Let me draft the SVG code.
```svg
<svg viewBox="0 0 1200 800" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="An astronaut cat skateboarding on the moon">
<defs>
<radialGradient id="sky" cx="50%" cy="38%" r="78%">
<stop offset="0%" stop-color="#16244a"/>
<stop offset="55%" stop-color="#0a1026"/>
<stop offset="100%" stop-color="#04060f"/>
</radialGradient>
...
</defs>
```
Earth gradient: radial cx 35% cy 30%: #7fd4ff → #1f6fc4 → #123c7d.
Moon ground gradient: linear y1=0 y2=1: #b9c2d6 → #6e7891.
Suit gradient: linear x: #ffffff → #c3ccdd.
Glass gradient: linear: rgba(255,255,255,.38) → rgba(180,220,255,.08).
Glow filter for Earth: feGaussianBlur stdDeviation 12 on a circle behind.
Soft blur: stdDeviation 6 for dust and shadow.
Star sparkle path: a 4-point star path: M0,-10 L2.5,-2.5 L10,0 L2.5,2.5 L0,10 L-2.5,2.5 L-10,0 L-2.5,-2.5 Z.
Let's write everything out. I'll count stars ~50 with random-ish positions, avoid the moon area and Earth.
I'll write the code now in full.
Also need the "click to start" thing? No, this is not a game — it's a drawing. No interaction needed. Fine.
Let me write.
One more detail: helmet glass reflection: an ellipse rotated at upper-left of helmet, fill white opacity .3, plus a small white ellipse highlight.
Helmet also has side "ear" speaker circles on the rim at left/right (like an astronaut helmet attachment): small circles at (455,295) and (625,295) r=12 fill #d8b45a.
Also a small light on top of helmet.
Let me write the final file.
For the paw print emblem on flag: small ellipses.
Flag path waving: M1010,470 C1040,458 1070,482 1105,468 L1105,505 C1070,519 1040,495 1010,507 Z.
Add paw on flag at (1040,485) scale small.
Alright, writing.
Also add subtle crater rim highlights on the moon ground.
I'll now write out the HTML.
Extra: a soft "moon glow" band along the horizon (light edge). Add a path along the ground top with a stroke of light #e8eefb width 6 opacity .5 for the far rim lit.
Also add a couple of small rocks near the cat.
Let me write final code carefully, ensuring no syntax errors.
Character group: I'll write it as a single <g id="cat">.
Body details:
- Torso outline path with stroke #9aa6bd width 3.
- Chest control panel: rect x=505 y=415 w=70 h=45 rx=10 fill #dfe6f2 stroke #a9b4c8, with small circles and orange rectangle display.
- Suit patches: orange stripes on the arm and legs (band segments): draw short strokes across arms.
Arm stripes: on the back arm at (420,382) a band; use stroke #f2a65a width 24 segment? Easier: draw a short line perpendicular. Let's draw orange bands as short strokes: e.g., path M425,357 L445,378 stroke #f2a65a width 22 (round cap) to make a band across the arm. Similarly legs: band across thigh.
Legs as strokes: back leg path M505,505 L492,552 L500,585 stroke #eef2f9 width 26 round join/cap. Then boot.
Front leg: M568,505 L585,548 L596,582 stroke #eef2f9 width 26.
Boots: path for back boot: M482,585 Q482,575 496,574 L534,576 Q546,578 546,588 L546,596 Q546,602 538,602 L490,600 Q482,599 482,592 Z fill #f4f7fc stroke #a9b4c8. Hmm feet should point right (direction of travel right).
Front boot similar shifted +90.
Let's set deck top surface at y=600 and boots bottom at 602 → slight overlap, fine (standing on deck).
Board deck:
- deck shape: path M455,612 Q455,598 472,597 L625,602 Q645,603 644,616 Q643,630 625,629 L472,622 Q455,621 455,612 Z fill #7b5a3c? Let's make the board a colorful space board: deck top #ff8a4c with stripes, bottom darker.
Simpler approach: draw deck as a side view: a long rounded shape with upturned nose at right (travel direction right) and tail at left:
path: M450,614 C450,604 456,598 466,598 C520,596 570,598 626,600 C640,601 648,606 648,612 C648,618 640,622 628,621 L468,619 C456,619 450,617 450,614 Z
Wheels: (492,640) and (612,641) r=15. Truck: small rects connecting deck to wheels.
Nose upturn: at the right end, the board tips up: add path M648,612 C656,608 662,600 660,596 C652,598 646,602 644,606 Z. Eh, keep simple with a rounded deck and maybe a slight tilt via rotate(-4) around (548,610) for the whole board group. The tilt adds dynamism. But then wheels positions rotate too — fine.
Actually a slight tilt means the right (front) wheel is higher, giving motion. Let's rotate the board group by -6 degrees around (548,615).
Then cat feet should align with the tilted deck. To avoid complexity, don't rotate; instead make the board horizontal but add motion lines and dust. Or rotate cat+board together slightly? Let's keep board horizontal but draw it in slight 3/4 perspective: the deck as a long rounded shape, and add a visible top surface (a lighter stripe) suggesting 3/4 view. I'll add a thin lighter parallelogram along the top of the deck to suggest the top face.
Good enough.
Motion lines: 3 curved lines to the left of the board at y 560-600, stroke #ffffff opacity .25, width 4, with rounded caps, plus trailing arcs.
Dust: group of circles at (380,610),(400,625),(360,600),(430,640),(340,615) r 10-22, fill #cfd8ea opacity .25 filter blur.
Now let me write.
Text at bottom:
<text x="60" y="740" fill="#8fa0c4" font-family="..." font-size="22" letter-spacing="6">LUNA MEOW-1</text>
<text x="60" y="764" fill="#5c6b8c" font-size="14" letter-spacing="3">EXTRAVEHICULAR CAT · SKATEBOARD MISSION</text>
Also maybe a small badge circle top-left with paw print and "MMXXV". Let's add a paw print badge at (95,95): circle r=34 stroke gold, paw inside. Nice.
OK writing final answer now.
Careful with the SVG transform on groups and ensure well-formed XML.
Also include HTML wrapper: body background #05070f, flex center, svg width min(100%, 1200px) height auto. Add overflow hidden to avoid scrollbars.
Let me write the whole thing.Raw response
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Astronaut Cat Skateboarding on the Moon</title>
<style>
html,body{margin:0;padding:0;background:#04060f;height:100%;}
body{display:flex;align-items:center;justify-content:center;overflow:hidden;}
.wrap{width:100%;max-width:1200px;}
svg{width:100%;height:auto;display:block;}
.tw{animation:tw 4.2s ease-in-out infinite;}
@keyframes tw{0%,100%{opacity:.15}50%{opacity:1}}
.tw2{animation:tw 5.6s ease-in-out infinite .9s;}
@keyframes tw2{0%,100%{opacity:.9}50%{opacity:.25}}
.float{animation:fl 9s ease-in-out infinite;}
@keyframes fl{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@media (prefers-reduced-motion:reduce){.tw,.tw2,.float{animation:none}}
</style>
</head>
<body>
<div class="wrap">
<svg viewBox="0 0 1200 800" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="An astronaut cat riding a skateboard on the surface of the moon, with Earth in the sky">
<defs>
<radialGradient id="sky" cx="50%" cy="36%" r="80%">
<stop offset="0%" stop-color="#17274f"/>
<stop offset="55%" stop-color="#0a1026"/>
<stop offset="100%" stop-color="#04060f"/>
</radialGradient>
<radialGradient id="earth" cx="34%" cy="30%" r="75%">
<stop offset="0%" stop-color="#8fdcff"/>
<stop offset="45%" stop-color="#2b7fd0"/>
<stop offset="100%" stop-color="#123c7d"/>
</radialGradient>
<linearGradient id="moon" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#c3cbdf"/>
<stop offset="45%" stop-color="#9aa4bd"/>
<stop offset="100%" stop-color="#5f6a83"/>
</linearGradient>
<linearGradient id="suit" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#ffffff"/>
<stop offset="100%" stop-color="#c2cbdd"/>
</linearGradient>
<linearGradient id="fur" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#ffffff"/>
<stop offset="100%" stop-color="#dde3ef"/>
</linearGradient>
<linearGradient id="glass" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#ffffff" stop-opacity=".42"/>
<stop offset="45%" stop-color="#bfe4ff" stop-opacity=".12"/>
<stop offset="100%" stop-color="#8fd0ff" stop-opacity=".06"/>
</linearGradient>
<linearGradient id="gold" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#ffe08a"/>
<stop offset="55%" stop-color="#e0a93a"/>
<stop offset="100%" stop-color="#a9721a"/>
</linearGradient>
<linearGradient id="deck" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#ffb066"/>
<stop offset="55%" stop-color="#f4783c"/>
<stop offset="100%" stop-color="#b3471c"/>
</linearGradient>
<filter id="glow" x="-60%" y="-60%" width="220%" height="220%">
<feGaussianBlur stdDeviation="10" result="b"/>
<feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="soft" x="-60%" y="-60%" width="220%" height="220%">
<feGaussianBlur stdDeviation="7"/>
</filter>
<filter id="soft2" x="-80%" y="-80%" width="260%" height="260%">
<feGaussianBlur stdDeviation="16"/>
</filter>
<g id="star4">
<path d="M0,-11 L2.6,-2.6 L11,0 L2.6,2.6 L0,11 L-2.6,2.6 L-11,0 L-2.6,-2.6 Z"/>
</g>
<g id="paw">
<ellipse cx="0" cy="4" rx="8.5" ry="7"/>
<ellipse cx="-9" cy="-6" rx="3.6" ry="4.6" transform="rotate(-22 -9 -6)"/>
<ellipse cx="-3" cy="-11" rx="3.4" ry="4.4" transform="rotate(-8 -3 -11)"/>
<ellipse cx="4" cy="-11" rx="3.4" ry="4.4" transform="rotate(8 4 -11)"/>
<ellipse cx="10" cy="-6" rx="3.6" ry="4.6" transform="rotate(22 10 -6)"/>
</g>
</defs>
<!-- ================= SKY ================= -->
<rect width="1200" height="800" fill="url(#sky)"/>
<g fill="#ffffff">
<circle cx="60" cy="60" r="1.6" opacity=".9"/>
<circle cx="140" cy="130" r="1.2" opacity=".6"/>
<circle cx="210" cy="55" r="1.8" opacity=".8"/>
<circle cx="280" cy="160" r="1.1" opacity=".5"/>
<circle cx="330" cy="90" r="1.5" opacity=".85"/>
<circle cx="395" cy="45" r="1.2" opacity=".55"/>
<circle cx="470" cy="120" r="1.7" opacity=".8"/>
<circle cx="530" cy="35" r="1.2" opacity=".6"/>
<circle cx="600" cy="95" r="1.4" opacity=".7"/>
<circle cx="655" cy="170" r="1.1" opacity=".45"/>
<circle cx="720" cy="60" r="1.6" opacity=".85"/>
<circle cx="790" cy="130" r="1.2" opacity=".55"/>
<circle cx="855" cy="45" r="1.5" opacity=".75"/>
<circle cx="905" cy="235" r="1.2" opacity=".5"/>
<circle cx="1080" cy="70" r="1.6" opacity=".8"/>
<circle cx="1140" cy="150" r="1.2" opacity=".6"/>
<circle cx="1170" cy="40" r="1.4" opacity=".7"/>
<circle cx="1010" cy="300" r="1.1" opacity=".45"/>
<circle cx="120" cy="265" r="1.3" opacity=".55"/>
<circle cx="35" cy="185" r="1.1" opacity=".5"/>
<circle cx="250" cy="300" r="1.2" opacity=".4"/>
<circle cx="445" cy="225" r="1.3" opacity=".5"/>
<circle cx="560" cy="300" r="1.1" opacity=".4"/>
<circle cx="700" cy="255" r="1.4" opacity=".45"/>
<circle cx="800" cy="310" r="1.1" opacity=".4"/>
<circle cx="60" cy="400" r="1.3" opacity=".35"/>
<circle cx="150" cy="470" r="1.1" opacity=".3"/>
<circle cx="960" cy="420" r="1.3" opacity=".4"/>
<circle cx="1105" cy="360" r="1.1" opacity=".35"/>
<circle cx="1160" cy="470" r="1.4" opacity=".45"/>
<circle cx="240" cy="430" r="1.2" opacity=".3"/>
<circle cx="360" cy="350" r="1.1" opacity=".3"/>
</g>
<g fill="#ffffff" class="tw">
<use href="#star4" transform="translate(190,205) scale(.85)"/>
<use href="#star4" transform="translate(640,225) scale(.6)"/>
<use href="#star4" transform="translate(1120,255) scale(.75)"/>
</g>
<g fill="#ffffff" class="tw2">
<use href="#star4" transform="translate(430,90) scale(.55)"/>
<use href="#star4" transform="translate(890,95) scale(.7)"/>
<use href="#star4" transform="translate(70,330) scale(.5)"/>
</g>
<g fill="#dfe9ff" opacity=".9">
<use href="#star4" transform="translate(1020,45) scale(.5)"/>
<use href="#star4" transform="translate(300,470) scale(.45)"/>
</g>
<!-- ================= EARTH ================= -->
<g class="float">
<circle cx="985" cy="170" r="96" fill="#4aa3ff" opacity=".22" filter="url(#soft2)"/>
<circle cx="985" cy="170" r="84" fill="url(#earth)"/>
<g fill="#4fae63">
<path d="M948,128 C962,116 984,120 990,134 C994,146 980,150 972,146 C962,141 948,148 944,140 C941,134 942,131 948,128 Z"/>
<path d="M1006,180 C1022,172 1042,178 1046,192 C1049,204 1034,210 1024,204 C1013,197 999,206 996,197 C994,190 998,184 1006,180 Z"/>
<path d="M955,190 C964,182 978,186 978,197 C978,207 964,214 957,206 C953,201 951,193 955,190 Z"/>
</g>
<g fill="#ffffff" opacity=".55">
<ellipse cx="972" cy="108" rx="30" ry="10" transform="rotate(-18 972 108)"/>
<ellipse cx="1012" cy="150" rx="26" ry="8" transform="rotate(12 1012 150)"/>
<ellipse cx="975" cy="224" rx="22" ry="7" transform="rotate(-8 975 224)"/>
</g>
<path d="M935,120 C922,140 920,170 932,196 C944,220 966,232 985,232" fill="none" stroke="#0b2a55" stroke-opacity=".35" stroke-width="16" stroke-linecap="round"/>
<circle cx="985" cy="170" r="84" fill="none" stroke="#a8dcff" stroke-opacity=".7" stroke-width="3"/>
</g>
<!-- ================= MOON GROUND ================= -->
<path d="M0,602 C190,566 420,592 620,578 C840,564 1010,548 1200,566 L1200,800 L0,800 Z" fill="url(#moon)"/>
<path d="M0,602 C190,566 420,592 620,578 C840,564 1010,548 1200,566" fill="none" stroke="#eef2fb" stroke-opacity=".55" stroke-width="6" stroke-linecap="round"/>
<path d="M0,616 C190,580 420,606 620,592 C840,578 1010,562 1200,580 L1200,800 L0,800 Z" fill="#8e99b2" opacity=".35"/>
<!-- craters -->
<g>
<ellipse cx="150" cy="712" rx="120" ry="38" fill="#6f7a93"/>
<ellipse cx="150" cy="704" rx="120" ry="36" fill="#7f8aa3"/>
<path d="M40,700 C80,678 220,678 260,700" fill="none" stroke="#c8d1e4" stroke-opacity=".8" stroke-width="7" stroke-linecap="round"/>
<ellipse cx="905" cy="668" rx="88" ry="26" fill="#6f7a93"/>
<path d="M822,660 C852,644 958,644 988,660" fill="none" stroke="#c8d1e4" stroke-opacity=".7" stroke-width="6" stroke-linecap="round"/>
<ellipse cx="640" cy="762" rx="86" ry="26" fill="#69748d"/>
<path d="M558,756 C588,740 692,740 722,756" fill="none" stroke="#c3ccdf" stroke-opacity=".6" stroke-width="6" stroke-linecap="round"/>
<ellipse cx="330" cy="640" rx="46" ry="15" fill="#6c7791"/>
<ellipse cx="1120" cy="742" rx="70" ry="22" fill="#6c7791"/>
<ellipse cx="110" cy="560" rx="34" ry="11" fill="#6c7791"/>
</g>
<!-- small rocks -->
<g fill="#8b96ae">
<ellipse cx="245" cy="620" rx="12" ry="6"/>
<ellipse cx="255" cy="612" rx="7" ry="5"/>
<ellipse cx="700" cy="600" rx="10" ry="5"/>
<ellipse cx="1010" cy="618" rx="14" ry="7"/>
<ellipse cx="420" cy="770" rx="16" ry="7"/>
<ellipse cx="980" cy="782" rx="13" ry="6"/>
</g>
<!-- flag -->
<g>
<path d="M1012,566 L1012,462" stroke="#d9e0ef" stroke-width="6" stroke-linecap="round"/>
<path d="M1012,566 L1012,462" stroke="#8f9ab3" stroke-width="2" stroke-linecap="round"/>
<circle cx="1012" cy="458" r="6" fill="url(#gold)"/>
<path d="M1014,466 C1044,454 1076,478 1110,464 L1110,504 C1076,518 1044,494 1014,506 Z" fill="#e4573f"/>
<path d="M1014,466 C1044,454 1076,478 1110,464" fill="none" stroke="#f79d84" stroke-width="3" opacity=".7"/>
<g transform="translate(1058,485) scale(.62)" fill="#ffffff" opacity=".92"><use href="#paw"/></g>
<ellipse cx="1012" cy="568" rx="26" ry="7" fill="#5d6880" opacity=".55"/>
</g>
<!-- ================= MOTION / DUST ================= -->
<g opacity=".55">
<g fill="#dfe7f6" filter="url(#soft)">
<circle cx="404" cy="606" r="22"/>
<circle cx="360" cy="618" r="18"/>
<circle cx="320" cy="604" r="14"/>
<circle cx="440" cy="632" r="16"/>
<circle cx="278" cy="626" r="10"/>
</g>
</g>
<g fill="none" stroke="#ffffff" stroke-linecap="round" opacity=".28">
<path d="M330,560 C280,572 240,586 200,596" stroke-width="4"/>
<path d="M300,592 C250,604 214,616 170,624" stroke-width="3"/>
<path d="M352,640 C300,652 262,662 220,670" stroke-width="3"/>
<path d="M392,532 C360,540 330,552 300,560" stroke-width="2.5" opacity=".7"/>
</g>
<g fill="#ffffff" opacity=".35">
<circle cx="300" cy="560" r="3"/>
<circle cx="255" cy="592" r="2.5"/>
<circle cx="352" cy="672" r="2.5"/>
<circle cx="212" cy="600" r="2"/>
</g>
<!-- ================= CAT ASTRONAUT ================= -->
<g id="cat">
<!-- shadow -->
<ellipse cx="545" cy="662" rx="150" ry="26" fill="#2b3348" opacity=".45" filter="url(#soft)"/>
<!-- tail (behind body) -->
<g>
<path d="M482,462 C430,452 398,486 414,516 C428,542 470,540 470,510" fill="none" stroke="#e3e9f4" stroke-width="22" stroke-linecap="round"/>
<path d="M482,462 C430,452 398,486 414,516 C428,542 470,540 470,510" fill="none" stroke="#f2a65a" stroke-width="22" stroke-linecap="round" stroke-dasharray="16 34" stroke-dashoffset="6"/>
<path d="M482,462 C430,452 398,486 414,516 C428,542 470,540 470,510" fill="none" stroke="#dde4f0" stroke-width="22" stroke-linecap="round" stroke-dasharray="0 50" stroke-dashoffset="30" opacity=".9"/>
</g>
<!-- backpack -->
<g>
<rect x="438" y="404" width="56" height="104" rx="18" fill="#97a2ba" stroke="#7a869f" stroke-width="3"/>
<rect x="446" y="424" width="40" height="26" rx="8" fill="#7f8ba4"/>
<path d="M452,406 L444,352" stroke="#c3ccdd" stroke-width="6" stroke-linecap="round"/>
<circle cx="444" cy="348" r="7" fill="#ff5c5c" class="tw"/>
<circle cx="444" cy="348" r="7" fill="none" stroke="#ff9d9d" stroke-width="2"/>
</g>
<!-- back arm (trailing, for balance) -->
<g>
<path d="M488,420 C452,398 424,372 398,348" fill="none" stroke="url(#suit)" stroke-width="26" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M488,420 C452,398 424,372 398,348" fill="none" stroke="#eef2f9" stroke-width="26" stroke-linecap="round" stroke-dasharray="0 999" opacity="0"/>
<path d="M430,382 L444,398" stroke="#f2a65a" stroke-width="26" stroke-linecap="round"/>
<circle cx="396" cy="346" r="17" fill="#eef3fb" stroke="#a9b4c8" stroke-width="3"/>
<path d="M386,340 C380,332 380,326 384,325 C388,324 390,330 392,334 M396,336 C392,328 393,322 397,322 C401,322 401,329 402,334" fill="#eef3fb" stroke="#a9b4c8" stroke-width="2.5" stroke-linecap="round"/>
</g>
<!-- legs -->
<g>
<path d="M508,498 C500,522 492,540 495,566" fill="none" stroke="url(#suit)" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M508,498 C500,522 492,540 495,566" fill="none" stroke="none"/>
<path d="M500,516 L516,512" stroke="#f2a65a" stroke-width="28" stroke-linecap="round"/>
<path d="M566,494 C578,516 586,536 592,562" fill="none" stroke="url(#suit)" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M568,516 L584,510" stroke="#f2a65a" stroke-width="28" stroke-linecap="round"/>
<!-- boots -->
<path d="M478,566 C474,574 478,584 490,585 L534,586 C544,586 549,591 547,598 C546,604 540,606 532,606 L488,604 C478,603 472,596 473,586 Z" fill="#f5f8fd" stroke="#a3aec4" stroke-width="3" stroke-linejoin="round"/>
<path d="M574,562 C572,570 578,580 590,581 L632,582 C642,582 647,588 645,595 C644,601 638,603 630,603 L590,601 C580,600 574,592 575,582 Z" fill="#f5f8fd" stroke="#a3aec4" stroke-width="3" stroke-linejoin="round"/>
<path d="M477,596 L546,598" stroke="#6f7b93" stroke-width="4" stroke-linecap="round"/>
<path d="M578,592 L643,594" stroke="#6f7b93" stroke-width="4" stroke-linecap="round"/>
</g>
<!-- torso -->
<g>
<path d="M482,396 C482,384 500,378 540,378 C580,378 598,384 598,396 L596,462 C596,502 574,518 540,518 C506,518 484,502 484,462 Z" fill="url(#suit)" stroke="#9aa6bd" stroke-width="3.5" stroke-linejoin="round"/>
<!-- chest panel -->
<rect x="508" y="404" width="64" height="46" rx="11" fill="#e7edf7" stroke="#a9b4c8" stroke-width="3"/>
<rect x="518" y="414" width="34" height="12" rx="4" fill="#f2a65a"/>
<circle cx="522" cy="438" r="5" fill="#7f8ba4"/>
<circle cx="538" cy="438" r="5" fill="#7f8ba4"/>
<circle cx="554" cy="438" r="5" fill="#63c06a"/>
<!-- mission patch -->
<circle cx="540" cy="478" r="17" fill="url(#gold)" stroke="#a9721a" stroke-width="2.5"/>
<g transform="translate(540,480) scale(.55)" fill="#3a2c10"><use href="#paw"/></g>
<!-- belt -->
<path d="M486,486 C508,500 572,500 594,486" fill="none" stroke="#b9c3d6" stroke-width="10" stroke-linecap="round"/>
<rect x="528" y="490" width="26" height="16" rx="5" fill="#e0e7f3" stroke="#9aa6bd" stroke-width="2.5"/>
</g>
<!-- front arm (waving forward) -->
<g>
<path d="M596,414 C628,392 652,362 668,336" fill="none" stroke="url(#suit)" stroke-width="26" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M622,392 L614,378" stroke="#f2a65a" stroke-width="26" stroke-linecap="round"/>
<circle cx="672" cy="332" r="17" fill="#eef3fb" stroke="#a9b4c8" stroke-width="3"/>
<path d="M664,320 C658,311 659,305 663,305 C667,305 668,312 670,317 M674,315 C670,306 671,300 675,300 C679,300 679,308 679,314" fill="#eef3fb" stroke="#a9b4c8" stroke-width="2.5" stroke-linecap="round"/>
</g>
<!-- neck ring -->
<rect x="506" y="366" width="68" height="20" rx="10" fill="#cfd7e6" stroke="#98a3ba" stroke-width="3"/>
<!-- helmet back / cat head -->
<g>
<!-- ears -->
<path d="M474,268 L492,214 L520,250 Z" fill="#f3f6fc" stroke="#a3aec4" stroke-width="3" stroke-linejoin="round"/>
<path d="M482,262 L494,232 L509,253 Z" fill="#f5a9b8" opacity=".9"/>
<path d="M606,268 L588,214 L560,250 Z" fill="#f3f6fc" stroke="#a3aec4" stroke-width="3" stroke-linejoin="round"/>
<path d="M598,262 L586,232 L571,253 Z" fill="#f5a9b8" opacity=".9"/>
<!-- head -->
<circle cx="540" cy="296" r="60" fill="url(#fur)" stroke="#a3aec4" stroke-width="3.5"/>
<!-- tabby patches -->
<path d="M540,238 C556,238 566,246 570,254 L558,252 C556,246 550,242 540,242 Z" fill="#f2a65a"/>
<path d="M482,300 C482,282 490,268 500,262 L504,278 C498,284 496,292 497,300 Z" fill="#f2a65a"/>
<path d="M598,300 C598,284 590,270 581,264 L577,280 C583,286 585,293 584,301 Z" fill="#f2a65a"/>
<ellipse cx="513" cy="316" rx="11" ry="7" fill="#f7b9c4" opacity=".75"/>
<ellipse cx="567" cy="316" rx="11" ry="7" fill="#f7b9c4" opacity=".75"/>
<!-- eyes -->
<g>
<ellipse cx="515" cy="292" rx="13" ry="14" fill="#22304a"/>
<ellipse cx="567" cy="292" rx="13" ry="14" fill="#22304a"/>
<circle cx="519" cy="287" r="4.5" fill="#ffffff"/>
<circle cx="571" cy="287" r="4.5" fill="#ffffff"/>
<circle cx="511" cy="297" r="2.4" fill="#ffffff" opacity=".8"/>
<circle cx="563" cy="297" r="2.4" fill="#ffffff" opacity=".8"/>
</g>
<!-- nose + mouth -->
<path d="M534,312 L546,312 L540,320 Z" fill="#f090a4" stroke="#d4738a" stroke-width="1.5" stroke-linejoin="round"/>
<path d="M540,320 L540,325 M540,325 C535,331 528,329 526,324 M540,325 C545,331 552,329 554,324" fill="none" stroke="#6c7791" stroke-width="2.6" stroke-linecap="round"/>
<!-- whiskers -->
<g stroke="#9aa6bd" stroke-width="2" stroke-linecap="round" opacity=".9">
<path d="M498,308 L466,300"/>
<path d="M497,316 L464,315"/>
<path d="M500,324 L470,332"/>
<path d="M582,308 L614,300"/>
<path d="M583,316 L616,315"/>
<path d="M580,324 L610,332"/>
</g>
</g>
<!-- helmet -->
<g>
<circle cx="540" cy="290" r="94" fill="url(#glass)"/>
<circle cx="540" cy="290" r="94" fill="none" stroke="url(#gold)" stroke-width="9"/>
<circle cx="540" cy="290" r="99" fill="none" stroke="#8f6a1c" stroke-width="3" opacity=".7"/>
<!-- side comms pods -->
<rect x="432" y="272" width="22" height="36" rx="10" fill="#d8b45a" stroke="#8f6a1c" stroke-width="3"/>
<rect x="626" y="272" width="22" height="36" rx="10" fill="#d8b45a" stroke="#8f6a1c" stroke-width="3"/>
<circle cx="443" cy="290" r="5" fill="#7a5a12"/>
<circle cx="637" cy="290" r="5" fill="#7a5a12"/>
<!-- lamp -->
<rect x="526" y="186" width="28" height="14" rx="6" fill="#d8b45a" stroke="#8f6a1c" stroke-width="3"/>
<circle cx="540" cy="196" r="9" fill="#fff2c4" opacity=".85" filter="url(#glow)"/>
<!-- reflections -->
<path d="M478,232 C492,208 522,194 548,196 C520,206 498,224 486,248 Z" fill="#ffffff" opacity=".42"/>
<path d="M598,240 C610,254 616,272 616,288 C608,270 600,254 590,246 Z" fill="#ffffff" opacity=".3"/>
<ellipse cx="497" cy="222" rx="16" ry="8" transform="rotate(-28 497 222)" fill="#ffffff" opacity=".55"/>
</g>
</g>
<!-- ================= SKATEBOARD ================= -->
<g id="board">
<!-- deck -->
<path d="M446,612 C446,602 454,594 466,594 C520,591 572,593 628,596 C644,597 652,603 651,611 C650,620 641,624 627,623 L468,620 C454,620 446,618 446,612 Z" fill="url(#deck)" stroke="#8a3713" stroke-width="3.5" stroke-linejoin="round"/>
<path d="M452,599 C512,596 576,598 640,601 C646,601 649,603 649,606 C586,602 512,600 452,603 Z" fill="#ffd0a8" opacity=".85"/>
<g fill="#fff4e4" opacity=".9">
<rect x="476" y="596" width="12" height="24" rx="4" transform="rotate(-1 482 608)"/>
<rect x="528" y="597" width="12" height="24" rx="4" transform="rotate(-1 534 609)"/>
<rect x="580" y="598" width="12" height="24" rx="4" transform="rotate(-1 586 610)"/>
</g>
<!-- trucks -->
<path d="M486,620 L498,634 L506,620 Z" fill="#b9c3d6" stroke="#7d899f" stroke-width="2.5" stroke-linejoin="round"/>
<path d="M600,622 L612,636 L620,622 Z" fill="#b9c3d6" stroke="#7d899f" stroke-width="2.5" stroke-linejoin="round"/>
<!-- wheels -->
<g>
<circle cx="500" cy="640" r="15" fill="#2e3a55" stroke="#1b2438" stroke-width="3"/>
<circle cx="500" cy="640" r="6" fill="#cfd8e8"/>
<circle cx="500" cy="640" r="2.5" fill="#5c6880"/>
<circle cx="614" cy="642" r="15" fill="#2e3a55" stroke="#1b2438" stroke-width="3"/>
<circle cx="614" cy="642" r="6" fill="#cfd8e8"/>
<circle cx="614" cy="642" r="2.5" fill="#5c6880"/>
</g>
<!-- motion arcs -->
<g fill="none" stroke="#ffd8b0" stroke-width="4" stroke-linecap="round" opacity=".65">
<path d="M452,650 C420,654 396,656 372,656"/>
<path d="M456,666 C424,670 400,672 378,672"/>
</g>
</g>
<!-- ================= FOREGROUND TEXT ================= -->
<g font-family="'Trebuchet MS', 'Segoe UI', Verdana, sans-serif">
<text x="58" y="742" fill="#9fb0d2" font-size="23" letter-spacing="7">LUNA MEOW-1</text>
<text x="58" y="766" fill="#61729a" font-size="13" letter-spacing="3.4">EXTRAVEHICULAR CAT · SKATEBOARD DIVISION</text>
</g>
<!-- corner badge -->
<g transform="translate(96,96)">
<circle r="36" fill="none" stroke="#e0a93a" stroke-width="2.5" opacity=".9"/>
<circle r="30" fill="none" stroke="#e0a93a" stroke-width="1" opacity=".5"/>
<g transform="scale(.85)" fill="#e0a93a" opacity=".95"><use href="#paw"/></g>
</g>
<!-- vignette -->
<rect width="1200" height="800" fill="none" stroke="#000" stroke-opacity=".35" stroke-width="40" style="stroke-linejoin:round"/>
</svg>
</div>
</body>
</html>
```