It's a challenge to put C in an attiny10, but not impossible. Some C features immediately overflow the 1kByte flash.
Did you ever watched assembler listing of compiled C source code for ATTiny?
Maybe you tried used floating numbers and some builtin functions from C, but for LED blinking one might want setup timer lets say at 1kHz-10kHz and during this interrupt define own clock, where 1s second is 1000ms (at 1kHz),
start ADC conversion which will take at 250kHz choosen ADC clock about 13 steps, so even at 10kHz timer interrrupt it will finish within 10kHz interrupt time while we have close to 19kHz sampling rate, make calculations during ADC conversion and turn on/off given RGB LED pins, read ADC result and store reading-if you code this in C and optimise for size -0s with avr-gcc than see asember code of course you dot need any standard C libraries to do this, so assembled code will be small and effcient
However, you can also write critical parts in assembler, when you see in compiled binary that MPU code could be even more effcient or do tricky things with registers, etc.
For it is standard, that I look into assembler code to see compiled C source code
I need such battery indicator, too so I will write such code but rather for Attiny25/45/85 depending on price, since probably I will store in its flash program memory precomputed RGB palette for R,G,B channels of hot iron thermal imagining palette, while I like colours change in this palette, so for 256 colors we need 3x256 bytes 0.75KB, so slightly more flash program memory than 1KB might be needed for additional logic, but effect should be quite interesting-the same thermal imagining palette can be used for temperature indicator, etc
Just calculate index, read flash program memory R,G,B values and adjust PWM for each output LED pins.