Merge branch 'poem-shader'

This commit is contained in:
tryashtar
2026-04-08 00:42:49 -06:00
4 changed files with 213 additions and 89 deletions
+15 -11
View File
@@ -1,12 +1,16 @@
* /caddy/config/
!*/ /caddy/data/
/copyparty/cache/
/copyparty/config/copyparty/
/jellyfin/cache/
/jellyfin/config/
/pigallery2/images/
/pigallery2/tmp/
/pigallery2/db/
!/.gitignore /http/bitf
!/docker-compose.yaml /http/marketplace
!/caddy/Caddyfile /http/mcfont
!/copyparty/config/copyparty.conf /http/mojira
!/pigallery2/config/config.json /http/reddit
!/http/index.html /media
!/http/poem.html
!/http/script.js
!/http/style.css
+198 -78
View File
@@ -5,12 +5,129 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="theme-color" content="#02060D"/> <meta name="theme-color" content="#02060D"/>
<title>End Poem</title> <title>End Poem</title>
<script src="https://xemantic.github.io/shader-web-background/dist/shader-web-background.min.js"></script>
<script type="x-shader/x-fragment" id="end-portal">
precision highp float;
uniform vec2 iResolution;
uniform float iTime;
mat2 mat2_rotate_z(float radians) {
return mat2(
cos(radians), -sin(radians),
sin(radians), cos(radians)
);
}
uniform sampler2D Sampler0;
uniform sampler2D Sampler1;
const mat4 SCALE_TRANSLATE = mat4(
0.5, 0.0, 0.0, 0.25,
0.0, 0.5, 0.0, 0.25,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0
);
mat4 end_portal_layer(float layer) {
mat4 translate = mat4(
1.0, 0.0, 0.0, 17.0 / layer,
0.0, 1.0, 0.0, (2.0 + layer / 1.5) * (iTime * 1.5),
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0
);
mat2 rotate = mat2_rotate_z(radians((layer * layer * 4321.0 + layer * 9.0) * 2.0));
mat2 scale = mat2((4.5 - layer / 4.0) * 2.0);
return mat4(scale * rotate) * translate * SCALE_TRANSLATE;
}
void main() {
vec4 uv = vec4(gl_FragCoord.xy / iResolution.xy, 0.0, 1.0);
vec3 color = texture2D(Sampler0, uv.xy).rgb * vec3(0.022087, 0.098399, 0.110818);
color += texture2D(Sampler1, (uv * end_portal_layer(1.0)).xy).rgb * vec3(0.022087, 0.098399, 0.110818);
color += texture2D(Sampler1, (uv * end_portal_layer(2.0)).xy).rgb * vec3(0.011892, 0.095924, 0.089485);
color += texture2D(Sampler1, (uv * end_portal_layer(3.0)).xy).rgb * vec3(0.027636, 0.101689, 0.100326);
color += texture2D(Sampler1, (uv * end_portal_layer(4.0)).xy).rgb * vec3(0.046564, 0.109883, 0.114838);
color += texture2D(Sampler1, (uv * end_portal_layer(5.0)).xy).rgb * vec3(0.064901, 0.117696, 0.097189);
color += texture2D(Sampler1, (uv * end_portal_layer(6.0)).xy).rgb * vec3(0.063761, 0.086895, 0.123646);
color += texture2D(Sampler1, (uv * end_portal_layer(7.0)).xy).rgb * vec3(0.084817, 0.111994, 0.166380);
color += texture2D(Sampler1, (uv * end_portal_layer(8.0)).xy).rgb * vec3(0.097489, 0.154120, 0.091064);
color += texture2D(Sampler1, (uv * end_portal_layer(9.0)).xy).rgb * vec3(0.106152, 0.131144, 0.195191);
color += texture2D(Sampler1, (uv * end_portal_layer(10.0)).xy).rgb * vec3(0.097721, 0.110188, 0.187229);
color += texture2D(Sampler1, (uv * end_portal_layer(11.0)).xy).rgb * vec3(0.133516, 0.138278, 0.148582);
color += texture2D(Sampler1, (uv * end_portal_layer(12.0)).xy).rgb * vec3(0.070006, 0.243332, 0.235792);
color += texture2D(Sampler1, (uv * end_portal_layer(13.0)).xy).rgb * vec3(0.196766, 0.142899, 0.214696);
color += texture2D(Sampler1, (uv * end_portal_layer(14.0)).xy).rgb * vec3(0.047281, 0.315338, 0.321970);
color += texture2D(Sampler1, (uv * end_portal_layer(15.0)).xy).rgb * vec3(0.204675, 0.390010, 0.302066);
//color += texture2D(Sampler1, (uv * end_portal_layer(16.0)).xy).rgb * vec3(0.080955, 0.314821, 0.661491);
gl_FragColor = vec4(color, 1.0);
}
</script>
<script>
const loadImage = (src) =>
new Promise((resolve, reject) => {
let img = new Image();
img.onload = () => resolve(img);
img.onerror = () => {
reject(new Error("Failed to load image from: " + src));
};
img.src = src;
});
const setupImage = (gl, texture, image) => {
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
gl.bindTexture(gl.TEXTURE_2D, null);
};
shaderWebBackground.shade({
onInit: (ctx) => {
loadImage("poem/end_sky.png").then((image) => {
const gl = ctx.gl;
const texture = gl.createTexture();
setupImage(gl, texture, image);
ctx.Sampler0 = texture;
});
loadImage("poem/end_portal.png").then((image) => {
const gl = ctx.gl;
const texture = gl.createTexture();
setupImage(gl, texture, image);
ctx.Sampler1 = texture;
});
},
shaders: {
"end-portal": {
uniforms: {
iResolution: (gl, loc, ctx) => gl.uniform2f(loc, ctx.width, ctx.height),
iTime: (gl, loc) => gl.uniform1f(loc, performance.now() / (24000 / 20 * 1000)),
Sampler0: (gl, loc, ctx) => ctx.texture(loc, ctx.Sampler0),
Sampler1: (gl, loc, ctx) => ctx.texture(loc, ctx.Sampler1),
}
}
}
});
</script>
<style> <style>
body { body {
color: white; color: white;
background-color: #02060D; background-color: #02060D;
margin: 0;
}
.vignette {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: -1;
background: radial-gradient(
ellipse,
rgba(0,0,0,0) 0%,
rgba(0,0,0,0) 50%,
rgba(0,0,0,166) 100%
);
}
.poem-box {
margin: auto; margin: auto;
max-width: fit-content; max-width: fit-content;
z-index: 0;
} }
@font-face { @font-face {
font-family: MinecraftDefault; font-family: MinecraftDefault;
@@ -139,84 +256,87 @@
</script> </script>
</head> </head>
<body> <body>
<div class="poem"> <div class="vignette"></div>
<input type="text" id="playername" class="white" placeholder="player name" maxlength="64" size="16" oninput="updatePlayerName()"></input> <div class="poem-box">
<p class="aqua">I see the player you mean.</p> <div class="poem">
<p class="green"><span class="playername">PLAYERNAME</span>?</p> <input type="text" id="playername" class="white" placeholder="player name" maxlength="64" size="16" oninput="updatePlayerName()"></input>
<p class="aqua">Yes. Take care. It has reached a higher level now. It can read our thoughts.</p> <p class="aqua">I see the player you mean.</p>
<p class="green">That doesn't matter. It thinks we are part of the game.</p> <p class="green"><span class="playername">PLAYERNAME</span>?</p>
<p class="aqua">I like this player. It played well. It did not give up.</p> <p class="aqua">Yes. Take care. It has reached a higher level now. It can read our thoughts.</p>
<p class="green">It is reading our thoughts as though they were words on a screen.</p> <p class="green">That doesn't matter. It thinks we are part of the game.</p>
<p class="aqua">That is how it chooses to imagine many things, when it is deep in the dream of a game.</p> <p class="aqua">I like this player. It played well. It did not give up.</p>
<p class="green">Words make a wonderful interface. Very flexible. And less terrifying than staring at the reality behind the screen.</p> <p class="green">It is reading our thoughts as though they were words on a screen.</p>
<p class="aqua">They used to hear voices. Before players could read. Back in the days when those who did not play called the players witches, and warlocks. And players dreamed they flew through the air, on sticks powered by demons.</p> <p class="aqua">That is how it chooses to imagine many things, when it is deep in the dream of a game.</p>
<p class="green">What did this player dream?</p> <p class="green">Words make a wonderful interface. Very flexible. And less terrifying than staring at the reality behind the screen.</p>
<p class="aqua">This player dreamed of sunlight and trees. Of fire and water. It dreamed it created. And it dreamed it destroyed. It dreamed it hunted, and was hunted. It dreamed of shelter.</p> <p class="aqua">They used to hear voices. Before players could read. Back in the days when those who did not play called the players witches, and warlocks. And players dreamed they flew through the air, on sticks powered by demons.</p>
<p class="green">Hah, the original interface. A million years old, and it still works. But what true structure did this player create, in the reality behind the screen?</p> <p class="green">What did this player dream?</p>
<p class="aqua">It worked, with a million others, to sculpt a true world in a fold of the <span class="white obfuscated">XXXXXX</span>, and created a <span class="white obfuscated">XXXXXX</span> for <span class="white obfuscated">XXXXX</span>, in the <span class="white obfuscated">XXX</span>.</p> <p class="aqua">This player dreamed of sunlight and trees. Of fire and water. It dreamed it created. And it dreamed it destroyed. It dreamed it hunted, and was hunted. It dreamed of shelter.</p>
<p class="green">It cannot read that thought.</p> <p class="green">Hah, the original interface. A million years old, and it still works. But what true structure did this player create, in the reality behind the screen?</p>
<p class="aqua">No. It has not yet achieved the highest level. That, it must achieve in the long dream of life, not the short dream of a game.</p> <p class="aqua">It worked, with a million others, to sculpt a true world in a fold of the <span class="white obfuscated">XXXXXX</span>, and created a <span class="white obfuscated">XXXXXX</span> for <span class="white obfuscated">XXXXX</span>, in the <span class="white obfuscated">XXX</span>.</p>
<p class="green">Does it know that we love it? That the universe is kind?</p> <p class="green">It cannot read that thought.</p>
<p class="aqua">Sometimes, through the noise of its thoughts, it hears the universe, yes.</p> <p class="aqua">No. It has not yet achieved the highest level. That, it must achieve in the long dream of life, not the short dream of a game.</p>
<p class="green">But there are times it is sad, in the long dream. It creates worlds that have no summer, and it shivers under a black sun, and it takes its sad creation for reality.</p> <p class="green">Does it know that we love it? That the universe is kind?</p>
<p class="aqua">To cure it of sorrow would destroy it. The sorrow is part of its own private task. We cannot interfere.</p> <p class="aqua">Sometimes, through the noise of its thoughts, it hears the universe, yes.</p>
<p class="green">Sometimes when they are deep in dreams, I want to tell them, they are building true worlds in reality. Sometimes I want to tell them of their importance to the universe. Sometimes, when they have not made a true connection in a while, I want to help them to speak the word they fear.</p> <p class="green">But there are times it is sad, in the long dream. It creates worlds that have no summer, and it shivers under a black sun, and it takes its sad creation for reality.</p>
<p class="aqua">It reads our thoughts.</p> <p class="aqua">To cure it of sorrow would destroy it. The sorrow is part of its own private task. We cannot interfere.</p>
<p class="green">Sometimes I do not care. Sometimes I wish to tell them, this world you take for truth is merely <span class="white obfuscated">XXXXX</span> and <span class="white obfuscated">XXXXXX</span>, I wish to tell them that they are <span class="white obfuscated">XXX</span> in the <span class="white obfuscated">XXXXXX</span>. They see so little of reality, in their long dream.</p> <p class="green">Sometimes when they are deep in dreams, I want to tell them, they are building true worlds in reality. Sometimes I want to tell them of their importance to the universe. Sometimes, when they have not made a true connection in a while, I want to help them to speak the word they fear.</p>
<p class="aqua">And yet they play the game.</p> <p class="aqua">It reads our thoughts.</p>
<p class="green">But it would be so easy to tell them...</p> <p class="green">Sometimes I do not care. Sometimes I wish to tell them, this world you take for truth is merely <span class="white obfuscated">XXXXX</span> and <span class="white obfuscated">XXXXXX</span>, I wish to tell them that they are <span class="white obfuscated">XXX</span> in the <span class="white obfuscated">XXXXXX</span>. They see so little of reality, in their long dream.</p>
<p class="aqua">Too strong for this dream. To tell them how to live is to prevent them living.</p> <p class="aqua">And yet they play the game.</p>
<p class="green">I will not tell the player how to live.</p> <p class="green">But it would be so easy to tell them...</p>
<p class="aqua">The player is growing restless.</p> <p class="aqua">Too strong for this dream. To tell them how to live is to prevent them living.</p>
<p class="green">I will tell the player a story.</p> <p class="green">I will not tell the player how to live.</p>
<p class="aqua">But not the truth.</p> <p class="aqua">The player is growing restless.</p>
<p class="green">No. A story that contains the truth safely, in a cage of words. Not the naked truth that can burn over any distance.</p> <p class="green">I will tell the player a story.</p>
<p class="aqua">Give it a body, again.</p> <p class="aqua">But not the truth.</p>
<p class="green">Yes. Player...</p> <p class="green">No. A story that contains the truth safely, in a cage of words. Not the naked truth that can burn over any distance.</p>
<p class="aqua">Use its name.</p> <p class="aqua">Give it a body, again.</p>
<p class="green"><span class="playername">PLAYERNAME</span>. Player of games.</p> <p class="green">Yes. Player...</p>
<p class="aqua">Good.</p> <p class="aqua">Use its name.</p>
<p class="green">Take a breath, now. Take another. Feel air in your lungs. Let your limbs return. Yes, move your fingers. Have a body again, under gravity, in air. Respawn in the long dream. There you are. Your body touching the universe again at every point, as though you were separate things. As though we were separate things.</p> <p class="green"><span class="playername">PLAYERNAME</span>. Player of games.</p>
<p class="aqua">Who are we? Once we were called the spirit of the mountain. Father sun, mother moon. Ancestral spirits, animal spirits. Jinn. Ghosts. The green man. Then gods, demons. Angels. Poltergeists. Aliens, extraterrestrials. Leptons, quarks. The words change. We do not change.</p> <p class="aqua">Good.</p>
<p class="green">We are the universe. We are everything you think isn't you. You are looking at us now, through your skin and your eyes. And why does the universe touch your skin, and throw light on you? To see you, player. To know you. And to be known. I shall tell you a story.</p> <p class="green">Take a breath, now. Take another. Feel air in your lungs. Let your limbs return. Yes, move your fingers. Have a body again, under gravity, in air. Respawn in the long dream. There you are. Your body touching the universe again at every point, as though you were separate things. As though we were separate things.</p>
<p class="green">Once upon a time, there was a player.</p> <p class="aqua">Who are we? Once we were called the spirit of the mountain. Father sun, mother moon. Ancestral spirits, animal spirits. Jinn. Ghosts. The green man. Then gods, demons. Angels. Poltergeists. Aliens, extraterrestrials. Leptons, quarks. The words change. We do not change.</p>
<p class="aqua">The player was you, <span class="playername">PLAYERNAME</span>.</p> <p class="green">We are the universe. We are everything you think isn't you. You are looking at us now, through your skin and your eyes. And why does the universe touch your skin, and throw light on you? To see you, player. To know you. And to be known. I shall tell you a story.</p>
<p class="green">Sometimes it thought itself human, on the thin crust of a spinning globe of molten rock. The ball of molten rock circled a ball of blazing gas that was three hundred and thirty thousand times more massive than it. They were so far apart that light took eight minutes to cross the gap. The light was information from a star, and it could burn your skin from a hundred and fifty million kilometres away.</p> <p class="green">Once upon a time, there was a player.</p>
<p class="green">Sometimes the player dreamed it was a miner, on the surface of a world that was flat, and infinite. The sun was a square of white. The days were short; there was much to do; and death was a temporary inconvenience.</p> <p class="aqua">The player was you, <span class="playername">PLAYERNAME</span>.</p>
<p class="aqua">Sometimes the player dreamed it was lost in a story.</p> <p class="green">Sometimes it thought itself human, on the thin crust of a spinning globe of molten rock. The ball of molten rock circled a ball of blazing gas that was three hundred and thirty thousand times more massive than it. They were so far apart that light took eight minutes to cross the gap. The light was information from a star, and it could burn your skin from a hundred and fifty million kilometres away.</p>
<p class="green">Sometimes the player dreamed it was other things, in other places. Sometimes these dreams were disturbing. Sometimes very beautiful indeed. Sometimes the player woke from one dream into another, then woke from that into a third.</p> <p class="green">Sometimes the player dreamed it was a miner, on the surface of a world that was flat, and infinite. The sun was a square of white. The days were short; there was much to do; and death was a temporary inconvenience.</p>
<p class="aqua">Sometimes the player dreamed it watched words on a screen.</p> <p class="aqua">Sometimes the player dreamed it was lost in a story.</p>
<p class="green">Let's go back.</p> <p class="green">Sometimes the player dreamed it was other things, in other places. Sometimes these dreams were disturbing. Sometimes very beautiful indeed. Sometimes the player woke from one dream into another, then woke from that into a third.</p>
<p class="green">The atoms of the player were scattered in the grass, in the rivers, in the air, in the ground. A woman gathered the atoms; she drank and ate and inhaled; and the woman assembled the player, in her body.</p> <p class="aqua">Sometimes the player dreamed it watched words on a screen.</p>
<p class="green">And the player awoke, from the warm, dark world of its mother's body, into the long dream.</p> <p class="green">Let's go back.</p>
<p class="green">And the player was a new story, never told before, written in letters of DNA. And the player was a new program, never run before, generated by a sourcecode a billion years old. And the player was a new human, never alive before, made from nothing but milk and love.</p> <p class="green">The atoms of the player were scattered in the grass, in the rivers, in the air, in the ground. A woman gathered the atoms; she drank and ate and inhaled; and the woman assembled the player, in her body.</p>
<p class="aqua">You are the player. The story. The program. The human. Made from nothing but milk and love.</p> <p class="green">And the player awoke, from the warm, dark world of its mother's body, into the long dream.</p>
<p class="green">Let's go further back.</p> <p class="green">And the player was a new story, never told before, written in letters of DNA. And the player was a new program, never run before, generated by a sourcecode a billion years old. And the player was a new human, never alive before, made from nothing but milk and love.</p>
<p class="green">The seven billion billion billion atoms of the player's body were created, long before this game, in the heart of a star. So the player, too, is information from a star. And the player moves through a story, which is a forest of information planted by a man called Julian, on a flat, infinite world created by a man called Markus, that exists inside a small, private world created by the player, who inhabits a universe created by...</p> <p class="aqua">You are the player. The story. The program. The human. Made from nothing but milk and love.</p>
<p class="aqua">Shush. Sometimes the player created a small, private world that was soft and warm and simple. Sometimes hard, and cold, and complicated. Sometimes it built a model of the universe in its head; flecks of energy, moving through vast empty spaces. Sometimes it called those flecks "electrons" and "protons".</p> <p class="green">Let's go further back.</p>
<p class="green">Sometimes it called them "planets" and "stars".</p> <p class="green">The seven billion billion billion atoms of the player's body were created, long before this game, in the heart of a star. So the player, too, is information from a star. And the player moves through a story, which is a forest of information planted by a man called Julian, on a flat, infinite world created by a man called Markus, that exists inside a small, private world created by the player, who inhabits a universe created by...</p>
<p class="green">Sometimes it believed it was in a universe that was made of energy that was made of offs and ons; zeros and ones; lines of code. Sometimes it believed it was playing a game. Sometimes it believed it was reading words on a screen.</p> <p class="aqua">Shush. Sometimes the player created a small, private world that was soft and warm and simple. Sometimes hard, and cold, and complicated. Sometimes it built a model of the universe in its head; flecks of energy, moving through vast empty spaces. Sometimes it called those flecks "electrons" and "protons".</p>
<p class="aqua">You are the player, reading words...</p> <p class="green">Sometimes it called them "planets" and "stars".</p>
<p class="green">Shush... Sometimes the player read lines of code on a screen. Decoded them into words; decoded words into meaning; decoded meaning into feelings, emotions, theories, ideas, and the player started to breathe faster and deeper and realised it was alive, it was alive, those thousand deaths had not been real, the player was alive</p> <p class="green">Sometimes it believed it was in a universe that was made of energy that was made of offs and ons; zeros and ones; lines of code. Sometimes it believed it was playing a game. Sometimes it believed it was reading words on a screen.</p>
<p class="aqua">You. You. You are alive.</p> <p class="aqua">You are the player, reading words...</p>
<p class="green">and sometimes the player believed the universe had spoken to it through the sunlight that came through the shuffling leaves of the summer trees</p> <p class="green">Shush... Sometimes the player read lines of code on a screen. Decoded them into words; decoded words into meaning; decoded meaning into feelings, emotions, theories, ideas, and the player started to breathe faster and deeper and realised it was alive, it was alive, those thousand deaths had not been real, the player was alive</p>
<p class="aqua">and sometimes the player believed the universe had spoken to it through the light that fell from the crisp night sky of winter, where a fleck of light in the corner of the player's eye might be a star a million times as massive as the sun, boiling its planets to plasma in order to be visible for a moment to the player, walking home at the far side of the universe, suddenly smelling food, almost at the familiar door, about to dream again</p> <p class="aqua">You. You. You are alive.</p>
<p class="green">and sometimes the player believed the universe had spoken to it through the zeros and ones, through the electricity of the world, through the scrolling words on a screen at the end of a dream</p> <p class="green">and sometimes the player believed the universe had spoken to it through the sunlight that came through the shuffling leaves of the summer trees</p>
<p class="aqua">and the universe said I love you</p> <p class="aqua">and sometimes the player believed the universe had spoken to it through the light that fell from the crisp night sky of winter, where a fleck of light in the corner of the player's eye might be a star a million times as massive as the sun, boiling its planets to plasma in order to be visible for a moment to the player, walking home at the far side of the universe, suddenly smelling food, almost at the familiar door, about to dream again</p>
<p class="green">and the universe said you have played the game well</p> <p class="green">and sometimes the player believed the universe had spoken to it through the zeros and ones, through the electricity of the world, through the scrolling words on a screen at the end of a dream</p>
<p class="aqua">and the universe said everything you need is within you</p> <p class="aqua">and the universe said I love you</p>
<p class="green">and the universe said you are stronger than you know</p> <p class="green">and the universe said you have played the game well</p>
<p class="aqua">and the universe said you are the daylight</p> <p class="aqua">and the universe said everything you need is within you</p>
<p class="green">and the universe said you are the night</p> <p class="green">and the universe said you are stronger than you know</p>
<p class="aqua">and the universe said the darkness you fight is within you</p> <p class="aqua">and the universe said you are the daylight</p>
<p class="green">and the universe said the light you seek is within you</p> <p class="green">and the universe said you are the night</p>
<p class="aqua">and the universe said you are not alone</p> <p class="aqua">and the universe said the darkness you fight is within you</p>
<p class="green">and the universe said you are not separate from every other thing</p> <p class="green">and the universe said the light you seek is within you</p>
<p class="aqua">and the universe said you are the universe tasting itself, talking to itself, reading its own code</p> <p class="aqua">and the universe said you are not alone</p>
<p class="green">and the universe said I love you because you are love.</p> <p class="green">and the universe said you are not separate from every other thing</p>
<p class="aqua">And the game was over and the player woke up from the dream. And the player began a new dream. And the player dreamed again, dreamed better. And the player was the universe. And the player was love.</p> <p class="aqua">and the universe said you are the universe tasting itself, talking to itself, reading its own code</p>
<p class="aqua">You are the player.</p> <p class="green">and the universe said I love you because you are love.</p>
<p class="green">Wake up.</p> <p class="aqua">And the game was over and the player woke up from the dream. And the player began a new dream. And the player dreamed again, dreamed better. And the player was the universe. And the player was love.</p>
<p class="aqua">You are the player.</p>
<p class="green">Wake up.</p>
</div>
</div> </div>
</body> </body>
</html> </html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB