/* Background-only styles. Existing typography, content and layout stay intact. */
#canvas {
    z-index: 0;
    background: #000;
    background-image: radial-gradient(ellipse at 60% 65%, #56384d 0%, #26223a 32%, #000 78%);
    /* Keep the supplied luminous field behind the original white/yellow copy. */
    opacity: 0.55;
}
/* Stable viewport on mobile avoids GPU reallocations when WeChat's toolbar moves. */
@supports (height: 100lvh) {
    #canvas { height: 100lvh; }
}
body.light-theme #canvas {
    background-color: #fff;
    background-image: radial-gradient(ellipse at 60% 65%, #d8b4c8 0%, #e4ddf4 32%, #fff 78%);
}
/* Only the existing theme toggle's light state needs contrasting text. */
body.light-theme .infoText,
body.light-theme .infoText p,
body.light-theme .infoText h3,
body.light-theme .infoText a,
body.light-theme .infoText address { color: #111; }
body.light-theme .infoText h1,
body.light-theme .infoText > h2,
body.light-theme .infoText strong { color: #796b00; }
body.light-theme .infoText .p0,
body.light-theme .infoText .p0 a { color: #666; }
body.light-theme .infoText a:hover { color: #666; }
