Lower horizon, shrink dancer, planet symbols

Horizon drops from 41.5% to 34% of screen height (sky canvas, floor
grid, fog, sun rest position, day gradient and grave all follow), the
skeleton shrinks 44vh -> 38vh, and planet labels use the classical
astronomical symbols with text presentation forced.

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:32:26 -03:00
parent a4129eddf0
commit 8181315a8c

View file

@ -88,7 +88,7 @@ body.balada .nebula::after { opacity: 1; }
/* Horizon glow line */
.horizon {
position: absolute;
bottom: 41.5%;
bottom: 34%;
left: 0; right: 0;
height: 3px;
background: linear-gradient(
@ -322,7 +322,7 @@ body.balada .music-ticker {
.robot-wrap {
position: absolute;
left: 50%;
bottom: 28%;
bottom: 23%;
transform: translateX(-50%);
opacity: 0;
transition: opacity 0.8s;
@ -343,7 +343,7 @@ body.balada .music-ticker {
.skeleton-gif {
display: block;
height: 44vh;
height: 38vh;
width: auto;
filter: drop-shadow(0 0 20px rgba(0,200,255,0.4));
}
@ -797,8 +797,8 @@ body.balada .music-ticker {
height: 280px;
border-radius: 50%;
left: 50%;
/* --sun-bottom segue o sol real (modo dia); 41.5% = pousado no horizonte */
bottom: var(--sun-bottom, 41.5%);
/* --sun-bottom segue o sol real (modo dia); 34% = pousado no horizonte */
bottom: var(--sun-bottom, 34%);
transform: translateX(-50%) translateY(50%);
transition:
bottom 2.8s cubic-bezier(0.16, 1, 0.3, 1),
@ -841,7 +841,7 @@ body.balada .music-ticker {
============================================================ */
.fog-layer {
position: absolute;
bottom: 41.5%;
bottom: 34%;
left: 0; right: 0;
height: 38%;
pointer-events: none;
@ -1144,10 +1144,10 @@ body.chuva #sunChuvaFace { opacity: 1; transition: opacity 5s ease; }
#c86fe0 0%,
#f18ade 26%,
#ffaede 44%,
#ffcfe0 54%,
#ffe4c9 58.5%,
#86e29e 58.6%,
#4fbb6b 78%,
#ffcfe0 60%,
#ffe4c9 66%,
#86e29e 66.1%,
#4fbb6b 82%,
#2e9550 100%);
}
body.dia:not(.balada):not(.chuva) #daySky { opacity: 1; }
@ -1233,12 +1233,12 @@ body.dia:not(.balada):not(.chuva) .horizon {
/* 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. */
e a pedra fica plantada entre o horizonte (34%) e a borda inferior. */
body.dia:not(.balada):not(.chuva) .robot-wrap { opacity: 0 !important; }
.grave-wrap {
position: absolute;
left: 50%;
bottom: 22%;
bottom: 18%;
transform: translateX(-50%);
opacity: 0;
transition: opacity 4s ease;
@ -1460,19 +1460,20 @@ let cameraRotationStartMs = Date.now();
let cameraRotationOriginAz = CAMERA_HOME_AZ;
const FOV_AZ = 140; // largura da tela em graus de azimute
const ALT_TOP = 75; // altitude no topo da tela
const HORIZON_F = 0.585; // fração da altura da tela até o horizonte
const HORIZON_F = 0.66; // fração da altura da tela até o horizonte
const TWINKLE_MAG = 4.0; // até esta magnitude a estrela cintila; acima é estática
const DEG = Math.PI / 180;
window.__skyTimeOffset = 0; // debug: ms somados ao relógio p/ testar a rotação
/* Sem o Astronomy Engine o céu continua funcionando; só Lua/planetas somem */
/* Sem o Astronomy Engine o céu continua funcionando; só Lua/planetas somem.
Rótulos usam os símbolos astronômicos clássicos no lugar dos nomes. */
const PLANET_SPECS = typeof Astronomy === 'undefined' ? [] : [
[Astronomy.Body.Mercury, 'Mercúrio', [190, 188, 182]],
[Astronomy.Body.Venus, 'Vênus', [255, 241, 204]],
[Astronomy.Body.Mars, 'Marte', [238, 105, 70]],
[Astronomy.Body.Jupiter, 'Júpiter', [232, 202, 164]],
[Astronomy.Body.Saturn, 'Saturno', [224, 195, 128]],
[Astronomy.Body.Uranus, 'Urano', [151, 223, 226]],
[Astronomy.Body.Neptune, 'Netuno', [91, 126, 220]],
[Astronomy.Body.Mercury, '', [190, 188, 182]],
[Astronomy.Body.Venus, '♀', [255, 241, 204]],
[Astronomy.Body.Mars, '♂', [238, 105, 70]],
[Astronomy.Body.Jupiter, '♃', [232, 202, 164]],
[Astronomy.Body.Saturn, '♄', [224, 195, 128]],
[Astronomy.Body.Uranus, '♅', [151, 223, 226]],
[Astronomy.Body.Neptune, '♆', [91, 126, 220]],
];
const KM_PER_AU = 149597870.7;
const MOON_RADIUS_KM = 1737.4;
@ -1925,7 +1926,7 @@ function buildMoonPhaseTexture(phase) {
/* ── Modo dia: a altitude real do Sol comanda o sol do desktop.
Nasce -> sobe até ~78% da tela na culminação -> desce no pôr; à noite
fica pousado no horizonte (41.5%), como sempre foi. O timelapse
fica pousado no horizonte (34%), como sempre foi. O timelapse
acelera o ciclo junto, já que tudo deriva de skyNowMs(). ── */
let sunNoonAlt = 60, sunNoonKey = -1;
function updateDayMode(date, observer, sunAlt) {
@ -1937,7 +1938,7 @@ function updateDayMode(date, observer, sunAlt) {
}
const climb = Math.max(0, Math.min(1, sunAlt / sunNoonAlt));
document.documentElement.style.setProperty(
'--sun-bottom', (41.5 + 36.5 * climb).toFixed(2) + '%');
'--sun-bottom', (34 + 44 * climb).toFixed(2) + '%');
/* -3°: meio do crepúsculo civil — troca com as transições longas do CSS */
document.body.classList.toggle('dia', sunAlt > -3);
}
@ -2029,7 +2030,7 @@ function drawSolarSystem(c) {
}
c.save();
c.font = `${Math.max(11, Math.round(canvas.height * 0.0095))}px ui-monospace, monospace`;
c.font = `${Math.max(16, Math.round(canvas.height * 0.021))}px ui-monospace, monospace`;
c.textAlign = 'left';
c.textBaseline = 'middle';
for (const planet of planets) {
@ -2053,7 +2054,8 @@ function drawSolarSystem(c) {
c.shadowColor = 'rgba(4,8,20,0.95)';
c.shadowBlur = 4;
c.fillStyle = `rgba(${r},${g},${b},0.92)`;
c.fillText(planet.name, planet.x + planet.radius + 7, planet.y - 1);
/* \uFE0E: forma de texto, evita a versão emoji de ♀ e ♂ */
c.fillText(planet.name + '\uFE0E', planet.x + planet.radius + 7, planet.y - 1);
}
c.restore();
}
@ -2257,7 +2259,7 @@ let cameraRotationFileVal = null;
const floorCanvas = document.getElementById('floorCanvas');
const floorCtx = floorCanvas.getContext('2d');
const FLOOR_RATIO = 0.42;
const FLOOR_RATIO = 0.345;
/* Disco floor tiles */
const DISCO_COLORS = [