Redesign day mode: pink sky, clouds, grass and gravestone

Vaporwave daytime — orchid-to-peach pink sky, green lawn under the neon
grid, three drifting flat-bottomed clouds with pink underlight, stars
kept as faint ghosts (0.12) instead of vanishing. The coffin becomes a
grounded gravestone: rounded lilac granite with engraved R.I.P. (no
religious symbols), grass mound, tufts and a flattened-ellipse shadow
so it reads as planted on the lawn, not floating.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
This commit is contained in:
vini 2026-07-19 21:30:36 -03:00
parent a80b22bdcc
commit a4129eddf0
2 changed files with 127 additions and 44 deletions

View file

@ -1132,7 +1132,8 @@ body.chuva #sunChuvaFace { opacity: 1; transition: opacity 5s ease; }
Balada e chuva têm prioridade sobre o visual diurno.
============================================================ */
/* Céu diurno: azul lá em cima, rosa no horizonte, lilás sob a grade */
/* Céu diurno vaporwave: rosa orquídea -> pêssego no horizonte,
e o chão vira gramado verde sob a grade neon */
#daySky {
position: absolute;
inset: 0;
@ -1140,20 +1141,54 @@ body.chuva #sunChuvaFace { opacity: 1; transition: opacity 5s ease; }
opacity: 0;
transition: opacity 12s ease;
background: linear-gradient(to bottom,
#5fb2ef 0%,
#8fd0f7 32%,
#cfeaff 50%,
#ffd9ec 58.5%,
#f2e2ff 58.6%,
#d9c8f0 100%);
#c86fe0 0%,
#f18ade 26%,
#ffaede 44%,
#ffcfe0 54%,
#ffe4c9 58.5%,
#86e29e 58.6%,
#4fbb6b 78%,
#2e9550 100%);
}
body.dia:not(.balada):not(.chuva) #daySky { opacity: 1; }
/* Estrelas, nebulosas e meteoros ofuscados pela luz do dia */
body.dia:not(.balada):not(.chuva) #starfield { opacity: 0; transition: opacity 12s ease; }
/* Estrelas viram fantasmas de dia; nebulosas e meteoros somem */
body.dia:not(.balada):not(.chuva) #starfield { opacity: 0.12; transition: opacity 12s ease; }
body.dia:not(.balada):not(.chuva) .nebula { opacity: 0; }
body.dia:not(.balada):not(.chuva) #meteorLayer { opacity: 0; }
/* Nuvens diurnas: chapadas embaixo, fofas em cima, rosadas por baixo */
.day-cloud {
position: absolute;
border-radius: 10vh;
pointer-events: none;
opacity: 0;
transition: opacity 12s ease;
background: linear-gradient(to bottom, #fffdfe 0%, #ffe4f2 62%, #ffc7e6 100%);
box-shadow: 0 1.6vh 3.2vh rgba(255,110,200,0.20);
animation: cloudDrift ease-in-out infinite alternate;
}
.day-cloud::before, .day-cloud::after {
content: '';
position: absolute;
border-radius: 50%;
background: inherit;
}
.cloud-a { width: 30vh; height: 7.5vh; top: 9%; left: 10%; animation-duration: 110s; }
.cloud-a::before { width: 11vh; height: 11vh; top: -5.2vh; left: 5vh; }
.cloud-a::after { width: 14vh; height: 14vh; top: -6.4vh; right: 6vh; }
.cloud-b { width: 22vh; height: 5.5vh; top: 20%; right: 12%; animation-duration: 140s; animation-delay: -40s; }
.cloud-b::before { width: 8vh; height: 8vh; top: -3.8vh; left: 3.6vh; }
.cloud-b::after { width: 10vh; height: 10vh; top: -4.6vh; right: 4.4vh; }
.cloud-c { width: 16vh; height: 4.2vh; top: 33%; left: 30%; animation-duration: 90s; animation-delay: -70s; }
.cloud-c::before { width: 6vh; height: 6vh; top: -2.8vh; left: 2.6vh; }
.cloud-c::after { width: 7.5vh; height: 7.5vh; top: -3.4vh; right: 3.2vh; }
@keyframes cloudDrift {
from { transform: translateX(-3vw); }
to { transform: translateX(3vw); }
}
body.dia:not(.balada):not(.chuva) .day-cloud { opacity: 0.92; }
/* O sol vira sol de verdade: disco quente, sem listras retrô */
#sunDiaBg {
position: absolute;
@ -1196,55 +1231,96 @@ body.dia:not(.balada):not(.chuva) .horizon {
box-shadow: 0 0 25px rgba(255,210,130,0.7), 0 0 80px rgba(255,190,110,0.25);
}
/* De dia o esqueleto dorme: some o dançarino, aparece o caixão */
/* De dia o esqueleto dorme: some o dançarino, fica a lápide no gramado.
Perspectiva: monte e sombra são elipses bem achatadas no plano do chão,
e a pedra fica plantada entre o horizonte (41.5%) e a borda inferior. */
body.dia:not(.balada):not(.chuva) .robot-wrap { opacity: 0 !important; }
.coffin-wrap {
.grave-wrap {
position: absolute;
left: 50%;
bottom: 28%;
bottom: 22%;
transform: translateX(-50%);
opacity: 0;
transition: opacity 4s ease;
pointer-events: none;
}
body.dia:not(.balada):not(.chuva) .coffin-wrap { opacity: 1; }
.coffin-shade {
body.dia:not(.balada):not(.chuva) .grave-wrap { opacity: 1; }
/* sombra projetada no gramado (elipse rasa = objeto apoiado no plano) */
.grave-shade {
position: absolute;
bottom: -1.6vh;
bottom: -2.6vh;
left: 50%;
transform: translateX(-50%);
width: 22vh;
height: 3.2vh;
width: 30vh;
height: 4.6vh;
border-radius: 50%;
background: radial-gradient(ellipse, rgba(40,20,40,0.38), transparent 70%);
background: radial-gradient(ellipse, rgba(25,60,35,0.42), transparent 68%);
}
.coffin {
/* montinho de terra gramado aos pés da pedra */
.grave-mound {
position: absolute;
bottom: -1.8vh;
left: 50%;
transform: translateX(-50%);
width: 26vh;
height: 5vh;
border-radius: 50%;
background: linear-gradient(to bottom, #6fd486 0%, #43a75f 60%, #2e8348 100%);
box-shadow: inset 0 0.7vh 1.2vh rgba(255,255,210,0.30);
}
/* pedra: topo arredondado, granito lilás com luz rosa do céu */
.gravestone {
position: relative;
width: 15vh;
height: 34vh;
clip-path: polygon(32% 0%, 68% 0%, 100% 26%, 73% 100%, 27% 100%, 0% 26%);
height: 19vh;
border-radius: 7.5vh 7.5vh 0.8vh 0.8vh;
background:
linear-gradient(105deg, rgba(255,255,255,0.10), rgba(0,0,0,0.24) 62%),
linear-gradient(to bottom, #7a4a28 0%, #5c3620 46%, #452716 100%);
filter: drop-shadow(0 6px 18px rgba(60,30,20,0.45));
linear-gradient(115deg,
rgba(255,170,225,0.38) 0%, rgba(255,255,255,0.10) 34%,
rgba(30,18,55,0.28) 100%),
linear-gradient(to bottom, #bfaed4 0%, #9789b4 55%, #6f6494 100%);
box-shadow:
inset 0 -1.4vh 2.2vh rgba(28,16,52,0.38),
0 0 26px rgba(255,120,200,0.30);
}
.coffin::before { /* costura da tampa */
content: '';
/* inscrição gravada (rebaixo: sombra clara embaixo, escura em cima) */
.grave-text {
position: absolute;
left: 6%; right: 6%;
top: 26%;
height: 3px;
background: rgba(0,0,0,0.45);
border-radius: 2px;
top: 23%;
width: 100%;
text-align: center;
font-family: 'Courier New', monospace;
font-weight: bold;
font-size: 3vh;
letter-spacing: 0.3vh;
color: #4c4170;
text-shadow: 0 1px 0 rgba(255,255,255,0.38), 0 -1px 1px rgba(18,10,40,0.65);
}
.coffin-cross-v, .coffin-cross-h {
.grave-line {
position: absolute;
background: linear-gradient(to bottom, #e8c87e, #c9a250);
border-radius: 2px;
box-shadow: 0 0 10px rgba(255,225,150,0.55);
top: 48%;
left: 22%; right: 22%;
height: 0.55vh;
border-radius: 0.3vh;
background: rgba(64,54,96,0.55);
box-shadow: 0 1px 0 rgba(255,255,255,0.30);
}
.coffin-cross-v { left: 50%; top: 36%; width: 0.9vh; height: 24%; transform: translateX(-50%); }
.coffin-cross-h { left: 50%; top: 42%; width: 34%; height: 0.9vh; transform: translateX(-50%); }
.grave-line.short { top: 56%; left: 30%; right: 30%; }
/* tufos de grama para amarrar a base na cena */
.grass-tuft {
position: absolute;
bottom: -0.6vh;
width: 3vh;
height: 3.6vh;
clip-path: polygon(8% 100%, 22% 22%, 36% 100%, 50% 0%, 64% 100%, 80% 30%, 94% 100%);
background: linear-gradient(to top, #2e8a48, #74dd8d);
}
.tuft-l { left: -8vh; }
.tuft-r { right: -7vh; transform: scaleX(-1); }
</style>
</head>
@ -1254,6 +1330,9 @@ body.dia:not(.balada):not(.chuva) .coffin-wrap { opacity: 1; }
<!-- Céu diurno (fade conforme o sol real sobe) -->
<div id="daySky"></div>
<div class="day-cloud cloud-a"></div>
<div class="day-cloud cloud-b"></div>
<div class="day-cloud cloud-c"></div>
<!-- Nebula blobs -->
<div class="nebula nebula-a"></div>
@ -1295,13 +1374,17 @@ body.dia:not(.balada):not(.chuva) .coffin-wrap { opacity: 1; }
</div>
</div><!-- .robot-wrap -->
<!-- Caixão do esqueleto (modo dia) -->
<div class="coffin-wrap">
<div class="coffin-shade"></div>
<div class="coffin">
<div class="coffin-cross-v"></div>
<div class="coffin-cross-h"></div>
<!-- Lápide do esqueleto (modo dia) -->
<div class="grave-wrap">
<div class="grave-shade"></div>
<div class="grave-mound"></div>
<div class="gravestone">
<div class="grave-text">R.I.P.</div>
<div class="grave-line"></div>
<div class="grave-line short"></div>
</div>
<div class="grass-tuft tuft-l"></div>
<div class="grass-tuft tuft-r"></div>
</div>
<!-- VU Meter -->