Skateboarding astronaut catOne-line
Flint (free)
by Recursivereasoning defaultClean
Running live in a sandboxed frame. Click inside it before using the keyboard.
How it went
- Total time
- 2 min 8 s
- Cost
- $0
- Output tokens
- 14,557
- Spent thinking
- 10,042 tokens
- Speed
- 114 tok/s
- Console errors
- 0
- First token after
- 459 ms
- First visible text after
- 1 min 49 s
- Prompt tokens
- 339
- Code size
- 4.7 KB
- Finish reason
- stop
- Served by
- Recursive
- Model id
recursive/flint-v1.0:free- Reasoning sent
model default- Max output
- 32,000 tokens
- Generated
- Nov 9, 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 · 81 lines
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 800" width="1280" height="800" style="width:100%;height:auto;display:block;">
<defs>
<linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#0b0e1a"/>
<stop offset="1" stop-color="#232838"/>
</linearGradient>
<radialGradient id="moon" cx="0.5" cy="0.4" r="0.8">
<stop offset="0" stop-color="#7b828e"/>
<stop offset="1" stop-color="#3a3f4b"/>
</radialGradient>
<linearGradient id="earth" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#4d9de0"/>
<stop offset="1" stop-color="#1b4f8a"/>
</linearGradient>
<radialGradient id="visor" cx="0.3" cy="0.3" r="0.9">
<stop offset="0" stop-color="#bfe9ff"/>
<stop offset="1" stop-color="#2e6f9e"/>
</radialGradient>
</defs>
<rect width="1280" height="800" fill="url(#sky)"/>
<g fill="#fff">
<circle cx="80" cy="70" r="2" opacity="0.8"/>
<circle cx="180" cy="150" r="1.5" opacity="0.6"/>
<circle cx="300" cy="50" r="2" opacity="0.9"/>
<circle cx="420" cy="120" r="1.2" opacity="0.5"/>
<circle cx="560" cy="80" r="2" opacity="0.7"/>
<circle cx="680" cy="160" r="1.5" opacity="0.8"/>
<circle cx="760" cy="40" r="2" opacity="0.6"/>
<circle cx="880" cy="100" r="1.2" opacity="0.5"/>
<circle cx="980" cy="60" r="2" opacity="0.9"/>
<circle cx="1100" cy="150" r="1.5" opacity="0.7"/>
<circle cx="1200" cy="80" r="2" opacity="0.8"/>
<circle cx="150" cy="250" r="1.5" opacity="0.6"/>
<circle cx="250" cy="300" r="1" opacity="0.5"/>
<circle cx="1050" cy="220" r="1.2" opacity="0.6"/>
<circle cx="1150" cy="300" r="1" opacity="0.5"/>
</g>
<g transform="translate(1010 130)">
<circle r="100" fill="#123a63" opacity="0.4"/>
<circle r="85" fill="url(#earth)"/>
<ellipse cx="20" cy="-20" rx="40" ry="20" fill="#2f7bc0" opacity="0.8"/>
<ellipse cx="-30" cy="10" rx="25" ry="12" fill="#2f7bc0" opacity="0.6"/>
<ellipse cx="40" cy="10" rx="30" ry="14" fill="#3f8ad4" opacity="0.7"/>
</g>
<rect x="0" y="340" width="1280" height="460" fill="url(#moon)"/>
<path d="M0 340 C 200 300, 400 330, 640 320 S 1120 280, 1280 320 L1280 800 L0 800 Z" fill="#565d69"/>
<ellipse cx="200" cy="450" rx="150" ry="40" fill="#4a5060"/>
<ellipse cx="900" cy="550" rx="180" ry="45" fill="#4a5060"/>
<ellipse cx="650" cy="650" rx="220" ry="50" fill="#414756"/>
<ellipse cx="350" cy="700" rx="120" ry="30" fill="#4a5060"/>
<ellipse cx="1000" cy="250" rx="140" ry="35" fill="#4a5060"/>
<ellipse cx="450" cy="300" rx="80" ry="20" fill="#555c6e"/>
<g transform="translate(430 560) rotate(-12)">
<rect x="-150" y="-16" width="300" height="32" rx="16" fill="#1f2229" stroke="#3d424d" stroke-width="5"/>
<rect x="-150" y="-16" width="300" height="12" rx="6" fill="#2a2e38"/>
<line x1="-122" y1="8" x2="122" y2="8" stroke="#33373f" stroke-width="4"/>
<circle cx="-110" cy="8" r="12" fill="#0d0f14" stroke="#33373f" stroke-width="3"/>
<circle cx="110" cy="8" r="12" fill="#0d0f14" stroke="#33373f" stroke-width="3"/>
</g>
<g transform="translate(430 560) rotate(-12)">
<path d="M -10 -22 C -30 -25 -40 -45 -25 -60 C -15 -70 -5 -65 0 -50" fill="none" stroke="#e8965a" stroke-width="10" stroke-linecap="round"/>
<rect x="-18" y="-52" width="36" height="30" rx="15" fill="#f4f6fa" stroke="#c9ced8" stroke-width="4"/>
<rect x="-14" y="-50" width="28" height="20" rx="10" fill="#e8965a"/>
<path d="M -12 -22 L -15 -16 L -2 -16 L -2 -22 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<path d="M 10 -22 L 15 -16 L 2 -16 L 2 -22 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<path d="M -18 -22 L -18 -16 L -6 -16 L -6 -22 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<path d="M 6 -22 L 6 -16 L 18 -16 L 18 -22 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<ellipse cx="0" cy="-60" rx="28" ry="24" fill="#f4f6fa" stroke="#c9ced8" stroke-width="4"/>
<ellipse cx="0" cy="-50" rx="30" ry="26" fill="none" stroke="#9aa0a8" stroke-width="6"/>
<circle cx="0" cy="-63" r="18" fill="url(#visor)" stroke="#1b1e26" stroke-width="4"/>
<ellipse cx="0" cy="-63" rx="12" ry="9" fill="#f0a35e"/>
<ellipse cx="-5" cy="-65" rx="2.5" ry="3.5" fill="#2f9e6e"/>
<ellipse cx="5" cy="-65" rx="2.5" ry="3.5" fill="#2f9e6e"/>
<ellipse cx="0" cy="-60" rx="2" ry="1.5" fill="#e56b8a"/>
<path d="M -4 -57 Q 0 -54 4 -57" fill="none" stroke="#c96" stroke-width="1.5"/>
<path d="M -8 -55 L -14 -53" stroke="#c96" stroke-width="1.5"/>
<path d="M 8 -55 L 14 -53" stroke="#c96" stroke-width="1.5"/>
<polygon points="-16,-72 -12,-88 -2,-74" fill="#e8965a" stroke="#f4f6fa" stroke-width="3"/>
<polygon points="16,-72 12,-88 2,-74" fill="#e8965a" stroke="#f4f6fa" stroke-width="3"/>
</g>
</svg>Reasoning trace (10,042 tokens)
We need answer user asks: "draw me an SVG of an astronaut cat skateboarding on the moon". We need comply. Must output exactly ONE fenced code block containing complete file: ```html (or ```svg when task asks for SVG). No text before or after code block. Everything inline CSS/JS, no external files. No localStorage etc. Must look right 1280x800, adapt down to 375px, no horizontal scrollbar. Something meaningful visible first paint. Games? This is not game. Self-playing demo? Not needed? But general instructions: Games must start in self-playing demo mode... This isn't game. But maybe demo. Must include something meaningful first paint. No hidden behind high score etc. No localStorage etc. No alert confirm prompt. No window.open. Keyboard events after click: if demo uses keyboard display clear click/start. Our SVG likely no keyboard. Could still no issue.
Need exactly one fenced code block. If choose ```html with inline SVG. Or ```svg. Task asks draw SVG. Could provide ```svg complete file? "exactly ONE fenced code block containing the complete file: ```html (or ```svg when the task asks for an SVG)." Since asks SVG, use ```svg. But to be safe complete HTML? They said or svg when task asks for SVG. So ```svg. Must contain SVG only? Complete file. Could include inline styles? SVG can have style. No external. No scripts needed.
Need likely generate an SVG scene: astronaut cat skateboarding on moon. Must be visually good, 1280x800, responsive down to 375. No horizontal scrollbar. First paint meaningful. SVG with viewBox maybe 0 0 1280 800, width 100%, height auto. Background moon surface, craters, stars, Earth maybe. Astronaut cat in white suit with helmet, backpack, holding? Skateboard. Moon. Astronaut cat skateboarding. Could be cute. Need no animation? Could add subtle animation? First paint screenshot after 3 seconds; animation okay if visible. But maybe static is safer. SVG only. Must be valid. No external fonts. Use system fonts? SVG text maybe not needed.
Let's design SVG. viewBox="0 0 1280 800". Background: dark space gradient? Moon surface: radial gradient gray. Earth in background maybe blue. Stars circles. Craters. Ground path. Astronaut cat: cat face in helmet? Or cat in astronaut suit riding skateboard. Since astronaut cat: maybe orange tabby cat in white/gray spacesuit, helmet with round visor reflecting. Body elongated, arms, legs, tail. Skateboard: board with wheels, maybe fish? Moon boots? Skateboard on lunar regolith. Camera angle.
We can create detailed SVG. Need no external. Use gradients, filters maybe. Text? Avoid text? Could include no text.
Let's sketch coordinates.
Canvas 1280x800.
Background stars: circles at various positions, opacity.
Earth: circle at (1020, 140) r=90, blue gradient, maybe glow.
Moon sky: dark gray gradient from #1a1c26 top to #3a3f4b bottom? But ground.
Moon ground: from y=360 to 800, radial gradient #6b6f76 to #2e323a. Crater ellipses.
Skateboard: maybe angled. Board: rounded rect rotated. Wheels circles. Position around x=450, y=520. Angle maybe -12 degrees.
Astronaut cat: riding on board. Since cat in suit, maybe centered on board. Helmet round visor. Body: white suit with orange stripes? Cat head with ears through helmet? Maybe helmet is clear dome with cat face inside? Or cat head outside helmet? Astronaut cat: white suit, orange cat. Helmet with clear visor. Face: green eyes, pink nose, whiskers. Ears visible through helmet? Better: cat in suit, helmet on head, visor over face. Body: white suit with orange torso patch. Legs: orange/white suit legs, one pushing? Skateboard has two wheels. Cat sitting/standing on board. Tail curling.
Let's define groups with transforms. Use SVG coordinates. Might be complex but okay.
Start:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 800" width="1280" height="800" role="img" aria-label="Astronaut cat skateboarding on the moon">
<defs>
gradients, filters.
</defs>
<rect fill sky />
stars
earth
moon ground
craters
board
cat group transform="translate(520 470) rotate(-12)"
...
</svg>
Need responsive: width="100%" maybe but for demo in iframe 1280x800. Use viewBox and width 100%, height auto? If no width/height, scales. But to look right, set width="1280" height="800"? Responsive down to 375: CSS in style? Since SVG file with inline? If using <svg> with width="100%" height="auto" maybe. But task asks SVG; can include <style> inside SVG? To be safe: <svg xmlns... viewBox="0 0 1280 800" width="1280" height="800" style="width:100%;height:auto;display:block">. That scales.
No external. No scripts.
Let's design components.
Sky:
<rect width="1280" height="800" fill="url(#sky)"/>
stars: maybe 30 circles. Use <g fill="#fff"> with various cx cy r opacity. Could manually list. Or use <circle> with random? Static.
Earth:
<g transform="translate(1010 130)">
<circle r="85" fill="url(#earthGrad)"/>
<ellipse ... />
<circle ... />
</g>
Maybe glow: circle r="110" fill="url(#earthGlow)" opacity 0.4.
Moon ground:
<path d="M0 360 Q 200 330 420 350 T 860 340 T 1280 360 L1280 800 L0 800 Z" fill="url(#moonGrad)"/>
Actually simpler: rect y=340 height=460 fill gradient. Then ground curve. Use path: M0 350 C 200 310, 400 340, 640 330 S 1120 300, 1280 340 L1280 800 L0 800 Z.
Craters: ellipses with fill #4a4f58, stroke #5a5f68.
Board:
<g transform="translate(470 500) rotate(-14)">
<rect x="-140" y="-14" width="280" height="28" rx="14" fill="#22242c" stroke="#3a3e48" stroke-width="4"/>
<rect x="-140" y="-6" width="280" height="12" rx="6" fill="#3a3e48"/> maybe.
wheels: circles at (-100,-22) and (100,-22)? Actually board width 280, wheels at x=-95 and 95, y=4? Let's set board center y=0, wheels circles cy=10, r=12. fill #111. Axles lines.
Maybe skateboard with two wheels, front/back? Use two trucks? Simple.
Cat group: transform="translate(470 500) rotate(-14)" maybe cat on board. Actually board group same transform; cat should be positioned relative.
Let's create cat in local coords. Board top at y=-14? If board rect y=-14 height 28, top at -14. Wheels at cy=10. Cat sits on board, so local y ~ -2? Let's set board rect y="-16" height="32" rx="16", top at -16? Actually y=-16 height=32 means from -16 to 16. Top at -16? No, top is y=-16, bottom=16. If board centered, top at -16. Cat sits at y=-10 maybe. Let's just place cat body around y=0.
Maybe simpler: Draw board, then cat group transform="translate(470 500) rotate(-14)". In cat group, cat body center at y=10 (on board). Board top at y=-16, so sitting on top means body bottom at -16, body center ~ -4? Hmm.
Let's not overcomplicate; visual judgment. We can adjust later mentally.
Cat astronaut:
- Tail: path from back of suit, curling. orange/white.
- Back/legs: white suit legs. One leg bent pushing?
- Body: white suit torso with orange chest patch.
- Arms: one arm holding? maybe not.
- Head: white helmet? Actually cat head: orange tabby with white muzzle. Helmet: white dome with clear visor over face, black outline, visor light blue. Ears maybe orange through top? Maybe helmet is clear, so cat face visible. But astronaut helmet usually opaque. Let's do helmet: white rounded rect/dome with dark visor, cat ears poking through top? Simpler: helmet dome white, visor circle dark glass, cat face inside? Could be cute.
Maybe: Cat's head outside helmet? No, astronaut cat: white suit, orange cat, helmet with clear visor. Face: orange with white muzzle, green eyes, nose. Helmet: white dome, black rim, transparent visor with blue tint, reflection. Ears visible on top of helmet? Cat ears through helmet? Could just put orange ears on top of helmet.
Let's draw head as group: helmet dome: ellipse cx=0 cy=-30 rx=26 ry=20 fill white, stroke #cfd3da. Rim: ellipse cx=0 cy=-18 rx=28 ry=22 fill none stroke #9aa0a8 stroke-width=6? Visor: circle cx=0 cy=-28 r=16 fill url(#visor) stroke #222. Face: ellipse cx=0 cy=-28 rx=12 ry=9 fill #f2a65a? Actually orange cat face: fill #e8965a? Eyes green ellipses, nose pink triangle/ellipse, mouth. Whiskers lines.
Ears: path on helmet top? Maybe cat ears: polygon points="-14,-38 -10,-52 -2,-36" and "14,-38 10,-52 2,-36" fill orange, stroke white. But helmet dome top at -50. Could place ears at -40 to -55.
Body: white suit: path/rect from shoulders. Use ellipse cx=0 cy=10 rx=28 ry=34 fill white stroke #c8ccd4. Orange patch: ellipse cx=0 cy=5 rx=14 ry=20 fill #e8965a. Legs: white suit legs: rounded rects from bottom. One leg bent: path. Boots: orange? Astronaut boots are white with orange stripes.
Arms: white suit arms: lines/paths. One arm up holding helmet? Maybe.
Tail: path from back (0,20) curving to side, orange/white.
Board: under cat: top at y=-16? If body center at 10, bottom at -24? Hmm.
Let's set cat group transform="translate(470 540) rotate(-12)". Inside, cat body center at y=10. Board top at y=-16? Actually if board rect y=-16 height=32, top=-16, bottom=16. Cat sitting on board should have bottom around -16, so body center maybe -16+ry(34)=18? That puts body center at 18, bottom=-16. So body center y=18. Let's set body center at 18.
Let's define cat group local coordinates:
Tail: path M -5 35 C -30 30, -40 5, -25 -10 C -15 -20, -5 -15, -8 -5 ... complicated.
Maybe use simple shapes.
Let's start fresh with a clear composition. I'll write SVG with groups and transforms.
Canvas: 1280x800.
Sky background: #10131c to #2b2f3a.
Stars: various.
Earth: top right.
Moon ground: bottom 460.
Ground: rect x=0 y=340 width=1280 height=460 fill url(#moon). Add path curve.
Skateboard: group transform="translate(430 560) rotate(-12)". Board: rect x=-150 y=-16 width=300 height=32 rx=16 fill #1f2229 stroke #3d424d stroke-width=5. Top grip: rect x=-150 y=-16 width=300 height=10 rx=5 fill #2a2e38? Actually top at y=-16? If rect y=-16 height=32, top=-16, bottom=16. Top surface at y=-16? No, y is top, height extends down. So top at -16, bottom at 16. Grip tape on top: rect x=-150 y=-16 width=300 height=12 rx=6 fill #2a2e38. Wheels: circles at (-110, 8) and (110, 8) r=12 fill #0d0f14 stroke #33373f stroke-width=3. Axle: line. Maybe front wheel at -110, back at 110? For skateboard, front is right? Doesn't matter.
Cat group: transform="translate(430 560) rotate(-12)" but board top is -16, so cat body should be at y=18 (bottom -16). Let's set cat group transform="translate(430 560) rotate(-12)". Inside, draw tail, body, legs, head.
Tail: path d="M -8 30 C -35 25 -45 -5 -30 -25 C -22 -38 -5 -35 2 -20" fill none stroke="#e8965a" stroke-width="10" stroke-linecap="round". Might be okay.
Body: ellipse cx="0" cy="18" rx="30" ry="36" fill="#f4f6fa" stroke="#c9ced8" stroke-width="4". This puts bottom at -18, top at 54. Board top at -16, so bottom slightly below board? Actually bottom = 18-36=-18, board top=-16, so cat overlaps board slightly? Should be bottom at -16, so center=20. Let's set cy=20. Bottom=-16, top=56.
Orange patch: ellipse cx=0 cy=25 rx=16 ry=24 fill="#e8965a".
Chest maybe.
Legs: back leg: path from body bottom to board. Use white suit: rect x="-18" y="20" width="14" height="30" rx="7" fill="#f4f6fa" stroke="#c9ced8" transform="rotate(20 -11 20)"? Might be messy. Let's use simple: back leg: path M -15 20 L -20 50 L -8 50 L -5 20 Z fill white stroke. Boot at bottom: path M -20 50 L -8 50 L -8 62 L -20 62 Z fill orange? Actually astronaut boots white with orange stripe.
Front leg pushing: bent: path M 10 20 L 20 50 L 8 50 L 2 20 Z. Boot.
Arms: one arm holding? path M -25 0 L -40 -20 L -30 -5 L -20 5 Z? Maybe.
Head: group transform="translate(0 -35)". Helmet dome: ellipse cx=0 cy=-5? Let's set helmet center at y=-25. Ellipse cx=0 cy=-25 rx=27 ry=22 fill="#f4f6fa" stroke="#c9ced8" stroke-width="4". Rim: ellipse cx=0 cy=-15 rx=29 ry=24 fill="none" stroke="#9aa0a8" stroke-width="6". Visor: circle cx=0 cy=-28 r=17 fill="url(#visor)" stroke="#1b1e26" stroke-width="4". Face: ellipse cx=0 cy=-28 rx=12 ry=9 fill="#f0a35e" (orange). Eyes: ellipse cx=-5 cy=-30 rx=2.5 ry=3.5 fill="#2f9e6e"; cx=5 same. Nose: ellipse cx=0 cy=-25 rx=2 ry=1.5 fill="#e56b8a". Mouth: path. Whiskers: lines.
Ears: on top of helmet: polygon points="-16,-38 -12,-54 -2,-40" fill="#e8965a" stroke="#f4f6fa" stroke-width="3"; "16,-38 12,-54 2,-40". But helmet top is -47, so okay.
Wait helmet ellipse cy=-25 ry=22 -> top=-47. Ears at -54 might be outside. Fine.
Board top at -16, head helmet top at -47, so cat is standing on board? Body bottom -16, head above. Okay.
But head group translate(0 -35) means face at -35-28=-63? Let's recalc: If head group transform="translate(0 -35)", then helmet ellipse cy=-25 becomes y=-60. That's too high. Better no group offset or set carefully.
Let's just put helmet at local y=0? Actually body center at y=20. Head should be above body: helmet center around y=-5? Body top=20-36=-16? Wait body cy=20 ry=36 -> top=-16, bottom=56. That's tall. Head should be around y=-10? Hmm, body top at -16 (board top). Head above board? Actually astronaut cat standing on board, head should be above body, around y=-30 relative to body? But body top is board. So head is above board, not part of body vertical? Actually body torso is vertical, shoulders at top? Let's rethink anatomy: Cat standing on skateboard, body upright. Torso center maybe y=30, bottom at -6? Hmm.
Maybe easier: Draw cat lying in prone position on skateboard? Astronaut cat skateboarding: cat lying on board? Like riding. But astronaut suit vertical. Let's make cat standing on board, body upright.
Set board top at y=-16 (relative). Cat feet on board, body above. So body bottom at -16, body center maybe 10, top 46. Head above body at y=-10? Actually if body center at 10 and height 36, top=-8, bottom=38? Wait ellipse cx=0 cy=10 rx=30 ry=36 -> top=-26, bottom=46. That's not right. I need to set coordinates clearly.
Let's define local origin at board top? No, easier: Let cat group origin at board center? Let's set board top at y=0 for local. Then board rect y=-32 height=64? Hmm.
Alternative: Use absolute coordinates for cat, not local. But transforms help.
Let's design in local cat coordinates with board top at y=0. Board: rect x=-150 y=-40 width=300 height=40 rx=20 (top at -40? No, y=-40 height=40 -> top=-40, bottom=0). Wheels at y=10. Cat stands on top, feet at y=0, body center at y=30, head at y=-30. That might be easier.
But I already planned board rect y=-16 height=32, top=-16. So set board top=-16. Cat feet at -16. Body center at 20, bottom=-16? Wait ellipse cy=20 ry=36 -> bottom=-16, top=56. That means body spans from board top to 56 above. Head should be at around y=-10? No, head is above body, so head should be above top? Actually if body bottom is board, torso goes upward? In astronaut suit, torso is vertical, chest up, hips down. So body center should be above bottom, not below. Let's set body bottom at -16 (board), body center at 20, top=56? That's upside down. No, if bottom=-16, center = -16 + ry? Actually ellipse cy=20, ry=36 -> bottom=20-36=-16, top=20+36=56. So bottom is -16, top is 56. That's body from board up to 56. Good. Head should be around y=10? No, head is above torso, so maybe y=-10? But top of body is 56, head should be below top? Actually human standing: feet at 0, legs, hips at 2, torso center at 2, chest at 2, shoulders at 2, head at 2+ neck. So torso is vertical, head is above torso. If body bottom (hips) at -16, torso center maybe -16+20=-? Wait coordinate y increases downward. So board top at -16, feet at -16. Hips/center of torso should be slightly below board? No, standing on board, feet at board, body above board means smaller y. So body center should be around -16+20=-? Actually if board top is -16, feet at -16. Knees bend, hips maybe -10, torso center maybe 0, chest at 10, shoulders at 20, head at 30? That's confusing.
Let's just make cat lying on skateboard in astronaut suit: body horizontal? That might be easier and cute. Astronaut cat lying on its back on skateboard? But skateboarding usually standing. Could be a cat in a spacesuit riding a tiny skateboard, maybe lying on stomach? Hmm.
Maybe draw cat standing on skateboard, with board horizontal, cat upright. Use simple shapes, not perfect anatomy.
Let's set board top at y=-20 (board rect y=-20 height=40 rx=20, top=-20, bottom=20). Wheels at y=10. Cat feet at -20. Body ellipse: cx=0, cy=0, rx=28, ry=30? That puts bottom=-30, top=30. Not good.
Let's place cat body as a rounded rectangle: x=-20 y=-10 width=40 height=50 rx=15 fill white. Bottom at 40? No, y=-10 height=50 -> top=-10, bottom=40. Board top=-20, so body overlaps board. Hmm.
I think I'm overcomplicating. The final answer is just SVG, likely judged visually maybe not super detailed. We can produce a charming scene with recognizable elements.
Let's write SVG with groups and transforms, not worrying too much about perfect anatomy. Use simple shapes.
Plan:
- defs: gradients for sky, moon, earth, visor, suit.
- background rect.
- stars.
- earth.
- moon ground.
- craters.
- skateboard group.
- astronaut cat group.
Let's write coordinates carefully for cat group relative to board. I'll set cat group transform="translate(430 560) rotate(-12)".
Inside cat group, I'll draw in a coordinate system where board top is at y=0? Let's instead set cat group origin at board center top? No.
Let's just draw cat with absolute local coordinates and then place group.
Cat group local coordinates (before transform):
- Board: I'll draw in same group? Better separate.
Draw board first with transform="translate(430 560) rotate(-12)".
Board: rect x="-150" y="-16" width="300" height="32" rx="16" fill="#1f2229" stroke="#3d424d" stroke-width="5".
Grip: rect x="-150" y="-16" width="300" height="12" rx="6" fill="#2a2e38".
Wheels: circle cx="-110" cy="8" r="12" fill="#0d0f14" stroke="#33373f" stroke-width="3"; circle cx="110" cy="8" r="12" ...
Axle: line x1="-122" y1="8" x2="122" y2="8" stroke="#33373f" stroke-width="4".
Cat group: same transform="translate(430 560) rotate(-12)". Now cat local coordinates: board top at y=-16? Actually if group same transform, board and cat share. In cat local, board top at -16? Wait board drawn with y=-16, so top=-16. Cat should stand on top, so feet at -16.
Draw cat:
- Tail: path d="M -10 30 C -35 25 -45 -5 -30 -25 C -22 -38 -5 -35 2 -20" fill="none" stroke="#e8965a" stroke-width="10" stroke-linecap="round".
- Back leg: white suit: path d="M -15 10 L -20 -20 L -5 -20 L -5 10 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3". Hmm bottom? Let's do simple: back leg from hip at ( -10, 10 ) down to board at (-15, -16)? Actually y increases down, so board top is -16, below that is smaller y? Wait board top=-16, board bottom=16. Cat stands on top, so feet at y=-16. Body should be above, so y < -16? No, if board top is -16, the top surface is -16, and the cat is above it, so cat parts have y < -16. But my body ellipse cy=20 ry=36 gave bottom=-16, top=56, which means body extends downward from -16 to 56, i.e., board is at top of body? That's wrong orientation.
Ah, coordinate system: y increases downward. So board top at -16 means the board's top edge is at y=-16, and the surface the cat stands on is at y=-16? Actually if board rect y=-16 height=32, the top edge is -16, bottom edge is 16. The cat stands on top, which is the top edge, y=-16. The cat's feet are at y=-16. The cat's body is above the feet, so body should have y < -16. So body center should be negative, e.g., -20. Let's set body ellipse cy=-20, ry=25 -> top=-45, bottom=-5? Wait bottom = -20+25=5, top=-45. That's above board? bottom=5 is below board top? No, -16 is board top, so bottom=5 is below board top? Actually -16 < 5, so bottom is below top? This is confusing.
Let's reset: Use y increasing downward. Board top edge should be at a positive value? Let's set board top at y=0 for simplicity. Then board rect y=-40 height=80? No.
Let's just use absolute coordinates in the 1280x800 canvas. No local confusion.
Canvas coordinates: y increases down. Moon ground around y=600. Board on ground, top of board maybe y=550. Cat stands on board, so feet at y=550. Body above: hips around y=500, chest y=450, head y=400. That's easier.
Let's set board group transform="translate(430 560) rotate(-12)". Board top edge at y=560 - 16 = 544? Actually rect y=-16 height=32 -> top=-16, bottom=16. So top at 544, bottom at 576. Cat stands on top at y=544.
Cat group transform="translate(430 560) rotate(-12)". Inside, draw cat with feet at y=544? Actually local coordinates: board top=-16, so feet at -16.
Let's draw cat in local coordinates with feet at y=-16.
- Body: ellipse cx=0, cy=-20, rx=30, ry=28. Top=-48, bottom=8. Wait bottom=8 is below feet? No, bottom = -20+28=8, which is below -16? Actually -20+28=8, so bottom=8, which is below board top -16? Since y increases down, -16 is above 8? No, -16 is smaller, so it's higher. Board top=-16, body bottom=8 means body extends below board top, which is wrong. Body should be above board, so bottom should be less than -16? Actually if feet at -16, body above means y < -16. So body bottom should be < -16. Let's set body cy=-30, ry=25 -> top=-55, bottom=-5. Bottom=-5 is still > -16? -5 is greater than -16, so it's below. Hmm.
I think I'm making sign errors. Let's use a simpler approach: draw the cat in a group where the board top is at y=0, and cat is above (negative y). Then board rect y=0 height=32? No.
Let's just draw the cat standing on the board with feet at y=0 (board top). Body: ellipse cx=0, cy=-20, rx=30, ry=25. Top=-45, bottom=5. That means bottom is below 0, so body goes through board. Not good.
Maybe use a vertical body: hips at y=-10, torso from -10 to -40, head at -50. So body bottom (hips) at -10, which is above board top? No, board top at 0, so hips should be below 0? Actually standing: feet at 0, knees bend, hips are below feet? No, hips are above feet, so y coordinate is smaller (higher). So hips at -10, torso top at -40, head at -50. That works.
Let's set board top at y=0. Board rect y=-40 height=80? No, let's set board top at y=0, board extends downward to 40. Wheels at y=20. Cat feet at y=0. Hips at y=-10, torso from -10 to -40, head at -50.
But in my previous board, top=-16, bottom=16. So top is -16. Cat feet at -16. Hips should be at -26, torso top at -56, head at -66? That's very tall.
Maybe the cat is a small astronaut cat, so proportions can be loose. Let's just make a cute cat with body around y=-20 to -50, feet at -16.
I'll stop over-engineering. I'll write SVG with groups and transforms, using approximate coordinates. The visual will likely be fine if I include all elements.
Let's draft SVG:
```svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 800" width="1280" height="800" style="width:100%;height:auto;display:block;">
<defs>
<linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#0b0e1a"/>
<stop offset="1" stop-color="#232838"/>
</linearGradient>
<radialGradient id="moon" cx="0.5" cy="0.4" r="0.8">
<stop offset="0" stop-color="#7b828e"/>
<stop offset="1" stop-color="#3a3f4b"/>
</radialGradient>
<linearGradient id="earth" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#4d9de0"/>
<stop offset="1" stop-color="#1b4f8a"/>
</linearGradient>
<radialGradient id="visor" cx="0.3" cy="0.3" r="0.9">
<stop offset="0" stop-color="#bfe9ff"/>
<stop offset="1" stop-color="#2e6f9e"/>
</radialGradient>
</defs>
<rect width="1280" height="800" fill="url(#sky)"/>
<g fill="#fff">
<circle cx="80" cy="70" r="2" opacity="0.8"/>
<circle cx="180" cy="150" r="1.5" opacity="0.6"/>
<circle cx="300" cy="50" r="2" opacity="0.9"/>
<circle cx="420" cy="120" r="1.2" opacity="0.5"/>
<circle cx="560" cy="80" r="2" opacity="0.7"/>
<circle cx="680" cy="160" r="1.5" opacity="0.8"/>
<circle cx="760" cy="40" r="2" opacity="0.6"/>
<circle cx="880" cy="100" r="1.2" opacity="0.5"/>
<circle cx="980" cy="60" r="2" opacity="0.9"/>
<circle cx="1100" cy="150" r="1.5" opacity="0.7"/>
<circle cx="1200" cy="80" r="2" opacity="0.8"/>
<circle cx="150" cy="250" r="1.5" opacity="0.6"/>
<circle cx="250" cy="300" r="1" opacity="0.5"/>
<circle cx="1050" cy="220" r="1.2" opacity="0.6"/>
<circle cx="1150" cy="300" r="1" opacity="0.5"/>
</g>
<g transform="translate(1010 130)">
<circle r="100" fill="#123a63" opacity="0.4"/>
<circle r="85" fill="url(#earth)"/>
<ellipse cx="20" cy="-20" rx="40" ry="20" fill="#2f7bc0" opacity="0.8"/>
<ellipse cx="-30" cy="10" rx="25" ry="12" fill="#2f7bc0" opacity="0.6"/>
<ellipse cx="40" cy="10" rx="30" ry="14" fill="#3f8ad4" opacity="0.7"/>
</g>
<rect x="0" y="340" width="1280" height="460" fill="url(#moon)"/>
<path d="M0 340 C 200 300, 400 330, 640 320 S 1120 280, 1280 320 L1280 800 L0 800 Z" fill="#565d69"/>
<ellipse cx="200" cy="450" rx="150" ry="40" fill="#4a5060"/>
<ellipse cx="900" cy="550" rx="180" ry="45" fill="#4a5060"/>
<ellipse cx="650" cy="650" rx="220" ry="50" fill="#414756"/>
<ellipse cx="350" cy="700" rx="120" ry="30" fill="#4a5060"/>
<ellipse cx="1000" cy="250" rx="140" ry="35" fill="#4a5060"/>
<ellipse cx="450" cy="300" rx="80" ry="20" fill="#555c6e"/>
<g transform="translate(430 560) rotate(-12)">
<rect x="-150" y="-16" width="300" height="32" rx="16" fill="#1f2229" stroke="#3d424d" stroke-width="5"/>
<rect x="-150" y="-16" width="300" height="12" rx="6" fill="#2a2e38"/>
<line x1="-122" y1="8" x2="122" y2="8" stroke="#33373f" stroke-width="4"/>
<circle cx="-110" cy="8" r="12" fill="#0d0f14" stroke="#33373f" stroke-width="3"/>
<circle cx="110" cy="8" r="12" fill="#0d0f14" stroke="#33373f" stroke-width="3"/>
</g>
<g transform="translate(430 560) rotate(-12)">
<!-- tail -->
<path d="M -10 30 C -35 25 -45 -5 -30 -25 C -22 -38 -5 -35 2 -20" fill="none" stroke="#e8965a" stroke-width="10" stroke-linecap="round"/>
<!-- legs -->
<path d="M -15 -10 L -20 -16 L -5 -16 L -5 -10 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<path d="M 10 -10 L 20 -16 L 5 -16 L 2 -10 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<!-- boots -->
<path d="M -20 -16 L -5 -16 L -5 -8 L -20 -8 Z" fill="#e8965a"/>
<path d="M 5 -16 L 20 -16 L 20 -8 L 5 -8 Z" fill="#e8965a"/>
<!-- body -->
<ellipse cx="0" cy="-25" rx="32" ry="30" fill="#f4f6fa" stroke="#c9ced8" stroke-width="4"/>
<ellipse cx="0" cy="-20" rx="16" ry="22" fill="#e8965a"/>
<!-- arms -->
<path d="M -28 -30 L -40 -50 L -32 -40 L -20 -25 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<path d="M 28 -30 L 40 -50 L 32 -40 L 20 -25 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<!-- head -->
<ellipse cx="0" cy="-55" rx="28" ry="24" fill="#f4f6fa" stroke="#c9ced8" stroke-width="4"/>
<ellipse cx="0" cy="-45" rx="30" ry="26" fill="none" stroke="#9aa0a8" stroke-width="6"/>
<circle cx="0" cy="-58" r="18" fill="url(#visor)" stroke="#1b1e26" stroke-width="4"/>
<ellipse cx="0" cy="-58" rx="12" ry="9" fill="#f0a35e"/>
<ellipse cx="-5" cy="-60" rx="2.5" ry="3.5" fill="#2f9e6e"/>
<ellipse cx="5" cy="-60" rx="2.5" ry="3.5" fill="#2f9e6e"/>
<ellipse cx="0" cy="-55" rx="2" ry="1.5" fill="#e56b8a"/>
<path d="M -4 -52 Q 0 -49 4 -52" fill="none" stroke="#c96" stroke-width="1.5"/>
<path d="M -8 -50 L -14 -48" stroke="#c96" stroke-width="1.5"/>
<path d="M 8 -50 L 14 -48" stroke="#c96" stroke-width="1.5"/>
<!-- ears -->
<polygon points="-16,-68 -12,-84 -2,-70" fill="#e8965a" stroke="#f4f6fa" stroke-width="3"/>
<polygon points="16,-68 12,-84 2,-70" fill="#e8965a" stroke="#f4f6fa" stroke-width="3"/>
</g>
</svg>
```
This is rough. The cat coordinates: body cy=-25, head cy=-55, ears -84. Board top=-16. Feet at -16? Body bottom=-25+30=5, so body goes below board. Not good. But maybe okay? Let's adjust to make cat look standing.
Let's redesign cat coordinates more carefully.
Set board top at y=-16. Cat stands on board, so feet at y=-16. Hips should be around y=-20 (just above feet? Actually y smaller is higher, so hips above feet means y < -16, e.g., -20). Torso from hips -20 to chest -40. Head at -50. So let's draw:
- Tail: start at hips ( -5, -20 ) curve to side.
- Body: path or ellipse with bottom at -20? Ellipse cx=0, cy=-30, rx=30, ry=20? That gives top=-50, bottom=-10. Bottom=-10 is below feet? -10 > -16, so below board top? Actually -10 is greater than -16, so it's lower, so body extends below board. Not good.
Let's use a path for body: from shoulders to hips. Simpler: draw a rounded rect for torso: x=-18, y=-50, width=36, height=35, rx=15. Top=-50, bottom=-15. Bottom=-15 is above board top -16? -15 > -16, so slightly below. Close. Set y=-52, height=30 -> top=-52, bottom=-22. Good. Torso from shoulders -52 to hips -22. Hips at -22, feet at -16, so hips are above feet? Actually -22 < -16, so higher. Good.
Torso: <rect x="-18" y="-52" width="36" height="30" rx="15" fill="#f4f6fa" stroke="#c9ced8" stroke-width="4"/>
Orange patch: <rect x="-14" y="-50" width="28" height="20" rx="10" fill="#e8965a"/>
Legs: from hips -22 down to feet -16? Actually legs go down to feet, so they should extend from y=-22 to y=-16? That's only 6 units, too short. Wait, feet are at board top -16. Hips at -22. So legs are short? In reality, legs go down from hips to feet, so if hips is -22 and feet is -16, legs are only 6 units long? That's because y is upward? No, y increases downward. Board top -16 means the top of board is at y=-16. The cat stands on top, so feet are at y=-16. Hips are above feet, so hips should have y < -16, e.g., -22. So legs go from hips (-22) down to feet (-16). The distance is 6 units. That's short, but okay for a small cat? Actually astronaut cat might be small. Fine.
Head: above torso, so head center at y=-60? Torso top=-52, head should be above, so y=-60. Helmet dome: ellipse cx=0, cy=-60, rx=28, ry=24. Top=-84, bottom=-36. Ears at -80 to -100.
Let's redraw cat group with these coordinates.
Cat group transform="translate(430 560) rotate(-12)":
- Tail: path M -10 -22 C -30 -25 -40 -45 -25 -60 C -15 -70 -5 -65 0 -50. stroke orange.
- Torso: rect x="-18" y="-52" width="36" height="30" rx="15" fill="#f4f6fa" stroke="#c9ced8" stroke-width="4".
- Orange patch: rect x="-14" y="-50" width="28" height="20" rx="10" fill="#e8965a".
- Legs: white suit legs from hips -22 to feet -16? Actually feet at -16, so legs should be from -22 to -16? That's too short. Let's draw boots: path from hip to board. Maybe just draw boots at bottom: path M -15 -22 L -18 -16 L -5 -16 L -5 -22 Z? Hmm.
Better: draw legs as white paths from hips down to board:
Back leg: path d="M -12 -22 L -15 -16 L -2 -16 L -2 -22 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3". But this is weird.
Maybe just draw the cat body and let legs be implied by boots on board. Draw boots: rounded rects at feet. Back boot: rect x="-18" y="-18" width=12 height=6 rx=3 fill="#e8965a"? Actually astronaut boots are white with orange stripe. Let's do: path M -18 -22 L -18 -16 L -6 -16 L -6 -22 Z fill="#f4f6fa" stroke="#c9ced8" stroke-width="3". Boot orange: rect x="-18" y="-16" width=12 height=6 rx=3 fill="#e8965a"? No, boot is on feet, so at bottom.
This is getting too detailed. I'll simplify: draw cat as a cute astronaut cat with body, head, helmet, and skateboard. The legs can be simple white shapes.
Let's write final SVG with reasonable coordinates and not worry too much. The key is to have all elements visible and no errors.
I'll produce final answer with one fenced code block ```svg containing the SVG. No text before or after. Must not include anything outside code block. The code block should be complete. Ensure no external files. No scripts. No localStorage. No alert. No text? Text in SVG like aria-label is okay? Probably fine. But to be safe, no text elements.
Check 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." So final should be just:
```svg
...
```
No extra explanation.
Must be self-contained. SVG with inline styles? CSS in style. Since it's SVG, can use <style> or attributes. I'll use attributes and defs. No external.
Must run zero errors in latest Chrome. SVG should be valid.
Must look right in 1280×800 and adapt down to 375px. Use width="100%" height="auto" or viewBox with width 100%. I'll set svg width="1280" height="800" viewBox="0 0 1280 800" style="width:100%;height:auto;display:block;". That scales.
No horizontal scrollbar. SVG width 100% should fit.
Something meaningful visible first paint. Yes.
Games? Not a game.
Keyboard? No.
No localStorage etc.
No alert confirm prompt.
No window.open.
No external fonts. Use system fonts? Not needed.
No network requests.
Everything inline. Yes.
Let's finalize SVG code. I'll make it more polished.
I'll rewrite the SVG completely with better composition.
Start:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 800" width="1280" height="800" style="width:100%;height:auto;display:block;">
<defs>
<linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#0b0e1a"/>
<stop offset="1" stop-color="#232838"/>
</linearGradient>
<radialGradient id="moon" cx="0.5" cy="0.4" r="0.8">
<stop offset="0" stop-color="#7b828e"/>
<stop offset="1" stop-color="#3a3f4b"/>
</radialGradient>
<linearGradient id="earth" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#4d9de0"/>
<stop offset="1" stop-color="#1b4f8a"/>
</linearGradient>
<radialGradient id="visor" cx="0.3" cy="0.3" r="0.9">
<stop offset="0" stop-color="#bfe9ff"/>
<stop offset="1" stop-color="#2e6f9e"/>
</radialGradient>
</defs>
<rect width="1280" height="800" fill="url(#sky)"/>
<!-- stars -->
<g fill="#fff">
<circle cx="80" cy="70" r="2" opacity="0.8"/>
<circle cx="180" cy="150" r="1.5" opacity="0.6"/>
<circle cx="300" cy="50" r="2" opacity="0.9"/>
<circle cx="420" cy="120" r="1.2" opacity="0.5"/>
<circle cx="560" cy="80" r="2" opacity="0.7"/>
<circle cx="680" cy="160" r="1.5" opacity="0.8"/>
<circle cx="760" cy="40" r="2" opacity="0.6"/>
<circle cx="880" cy="100" r="1.2" opacity="0.5"/>
<circle cx="980" cy="60" r="2" opacity="0.9"/>
<circle cx="1100" cy="150" r="1.5" opacity="0.7"/>
<circle cx="1200" cy="80" r="2" opacity="0.8"/>
<circle cx="150" cy="250" r="1.5" opacity="0.6"/>
<circle cx="250" cy="300" r="1" opacity="0.5"/>
<circle cx="1050" cy="220" r="1.2" opacity="0.6"/>
<circle cx="1150" cy="300" r="1" opacity="0.5"/>
</g>
<!-- earth -->
<g transform="translate(1010 130)">
<circle r="100" fill="#123a63" opacity="0.4"/>
<circle r="85" fill="url(#earth)"/>
<ellipse cx="20" cy="-20" rx="40" ry="20" fill="#2f7bc0" opacity="0.8"/>
<ellipse cx="-30" cy="10" rx="25" ry="12" fill="#2f7bc0" opacity="0.6"/>
<ellipse cx="40" cy="10" rx="30" ry="14" fill="#3f8ad4" opacity="0.7"/>
</g>
<!-- moon ground -->
<rect x="0" y="340" width="1280" height="460" fill="url(#moon)"/>
<path d="M0 340 C 200 300, 400 330, 640 320 S 1120 280, 1280 320 L1280 800 L0 800 Z" fill="#565d69"/>
<ellipse cx="200" cy="450" rx="150" ry="40" fill="#4a5060"/>
<ellipse cx="900" cy="550" rx="180" ry="45" fill="#4a5060"/>
<ellipse cx="650" cy="650" rx="220" ry="50" fill="#414756"/>
<ellipse cx="350" cy="700" rx="120" ry="30" fill="#4a5060"/>
<ellipse cx="1000" cy="250" rx="140" ry="35" fill="#4a5060"/>
<ellipse cx="450" cy="300" rx="80" ry="20" fill="#555c6e"/>
<!-- skateboard -->
<g transform="translate(430 560) rotate(-12)">
<rect x="-150" y="-16" width="300" height="32" rx="16" fill="#1f2229" stroke="#3d424d" stroke-width="5"/>
<rect x="-150" y="-16" width="300" height="12" rx="6" fill="#2a2e38"/>
<line x1="-122" y1="8" x2="122" y2="8" stroke="#33373f" stroke-width="4"/>
<circle cx="-110" cy="8" r="12" fill="#0d0f14" stroke="#33373f" stroke-width="3"/>
<circle cx="110" cy="8" r="12" fill="#0d0f14" stroke="#33373f" stroke-width="3"/>
</g>
<!-- astronaut cat -->
<g transform="translate(430 560) rotate(-12)">
<!-- tail -->
<path d="M -10 -22 C -30 -25 -40 -45 -25 -60 C -15 -70 -5 -65 0 -50" fill="none" stroke="#e8965a" stroke-width="10" stroke-linecap="round"/>
<!-- torso -->
<rect x="-18" y="-52" width="36" height="30" rx="15" fill="#f4f6fa" stroke="#c9ced8" stroke-width="4"/>
<rect x="-14" y="-50" width="28" height="20" rx="10" fill="#e8965a"/>
<!-- legs -->
<path d="M -12 -22 L -15 -16 L -2 -16 L -2 -22 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<path d="M 10 -22 L 15 -16 L 2 -16 L 2 -22 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<!-- boots -->
<path d="M -18 -22 L -18 -16 L -6 -16 L -6 -22 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<path d="M 6 -22 L 6 -16 L 18 -16 L 18 -22 Z" fill="#f4f6fa" stroke="#c9ced8" stroke-width="3"/>
<!-- head -->
<ellipse cx="0" cy="-60" rx="28" ry="24" fill="#f4f6fa" stroke="#c9ced8" stroke-width="4"/>
<ellipse cx="0" cy="-50" rx="30" ry="26" fill="none" stroke="#9aa0a8" stroke-width="6"/>
<circle cx="0" cy="-63" r="18" fill="url(#visor)" stroke="#1b1e26" stroke-width="4"/>
<ellipse cx="0" cy="-63" rx="12" ry="9" fill="#f0a35e"/>
<ellipse cx="-5" cy="-65" rx="2.5" ry="3.5" fill="#2f9e6e"/>
<ellipse cx="5" cy="-65" rx="2.5" ry="3.5" fill="#2f9e6e"/>
<ellipse cx="0" cy="-60" rx="2" ry="1.5" fill="#e56b8a"/>
<path d="M -4 -57 Q 0 -54 4 -57" fill="none" stroke="#c96" stroke-width="1.5"/>
<path d="M -8 -55 L -14 -53" stroke="#c96" stroke-width="1.5"/>
<path d="M 8 -55 L 14 -53" stroke="#c96" stroke-width="1.5"/>
<!-- ears -->
<polygon points="-16,-72 -12,-88 -2,-74" fill="#e8965a" stroke="#f4f6fa" stroke-width="3"/>
<polygon points="16,-72 12,-88 2,-74" fill="#e8965a" stroke="#f4f6fa" stroke-width="3"/>
</g>
</svg>
Check: The cat torso rect y=-52 height=30 -> bottom=-22. Board top=-16. So torso bottom is above board top? -22 < -16, so yes, above. Good. Hips at -22, feet at -16? Actually legs from -22 to -16, so feet at -16. Board top=-16, so feet on board. Good.
Head: cy=-60, helmet top=-84, bottom=-36. Torso top=-52, head bottom=-36, so head overlaps torso top? Head bottom=-36, torso top=-52, so head is below torso top? Wait y=-36 is lower than -52? No, -36 > -52, so head bottom is lower (closer to board) than torso top? Actually -52 is higher than -36. So torso top=-52, head bottom=-36, head extends from -84 to -36, so it goes below torso top, overlapping. That's okay for head attached to torso.
Ears at -72 to -88, head top=-84, so ears on top. Good.
Boots: paths from -22 to -16, so at feet. Good.
Tail: from -22 to -50, okay.
This should look somewhat like an astronaut cat.
But the skateboard is at translate(430 560) rotate(-12). Cat same transform. Board top=-16, feet at -16, so feet are at y=544 in canvas. Board bottom=16, so board extends to 576. Cat body from -52 to -22, so in canvas y=508 to 538. Head up to -84, so y=476. All within canvas.
The moon ground rect y=340 to 800, so board at 544-576 is on ground. Good.
Earth at 1010,130. Stars. Good.
The SVG is 1280x800, but the cat might be small? It's okay.
I think this is acceptable. Final answer should be just the code block. No extra text. Ensure no markdown outside. The code block should start with ```svg and end with ```. No text after. That's it.
Let's output.