/* Life Pass 0.2: one map-anchored decorative layer; no input or gameplay hitboxes. */
#hub-life-layer{display:contents;--life-play:paused}
#hub-life-layer,#hub-life-layer *{pointer-events:none!important;user-select:none}
#hub-life-layer>div,#hub-life-layer>img{position:absolute;max-width:none}
#hub-life-layer .hub-life-prop{display:block;object-fit:contain}
#hub-life-layer i{display:block;position:absolute;margin:0;padding:0;border:0}
#hub-life-layer .hub-life-motion{animation-play-state:var(--life-play,paused)}
#hub-life-layer .hub-life-flame{inset:0;border-radius:50%;background:radial-gradient(ellipse,#ffe7a36e 0%,#ffc96350 18%,#ed9a2829 42%,transparent 72%);mix-blend-mode:screen;opacity:.5;animation-name:hub-life-lamp;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
#hub-life-layer .hub-life-pulse{inset:0;border-radius:50%;background:radial-gradient(ellipse,#b49cf57a 0%,#a686d842 30%,#61d9ce24 55%,transparent 76%);mix-blend-mode:screen;animation:hub-life-runes 4.3s ease-in-out -1.4s infinite;animation-play-state:var(--life-play,paused)}
#hub-life-layer .hub-life-pulse:after{content:"";position:absolute;inset:23% 19%;border:1px solid #c8adf947;border-bottom-color:#83e9dc3d;border-radius:50%}
#hub-life-layer .hub-life-water{overflow:hidden;clip-path:ellipse(50% 50% at 50% 50%);border-radius:50%;isolation:isolate}
#hub-life-layer .hub-life-ripples{inset:-18%;border-radius:50%;background:repeating-radial-gradient(ellipse at 50% 55%,transparent 0%,transparent 12%,#8df8e966 14%,transparent 17%,transparent 28%);mix-blend-mode:screen;opacity:.35;animation:hub-life-water 4.8s ease-in-out -1.1s infinite;animation-play-state:var(--life-play,paused)}
#hub-life-layer .hub-life-shimmer{left:0;top:-40%;width:42%;height:180%;background:linear-gradient(90deg,transparent,#c0ffec66 50%,transparent);mix-blend-mode:screen;animation:hub-life-shimmer 7.2s ease-in-out -3.6s infinite;animation-play-state:var(--life-play,paused)}
#hub-life-layer .hub-life-particle{left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:#e2eab5;box-shadow:0 0 5px 1px #d5e39866;opacity:0;animation:hub-life-drift 6s ease-in-out infinite;animation-play-state:var(--life-play,paused)}
#hub-life-layer .hub-life-rune{width:2.5px;height:2.5px;background:#d6c0fa;box-shadow:0 0 5px #b7a1e9;animation-name:hub-life-spark}
#hub-life-layer .hub-life-leaf{width:5px;height:2px;border-radius:70% 0 70% 0;background:#b1a260;box-shadow:none}
@keyframes hub-life-lamp{0%,100%{opacity:.47;transform:scale(.97)}14%{opacity:.56;transform:scale(1.025)}29%{opacity:.43;transform:scale(.98)}37%{opacity:.52;transform:scale(1.015)}61%{opacity:.59;transform:scale(1.04)}78%{opacity:.48;transform:scale(.99)}89%{opacity:.54;transform:scale(1.02)}}
@keyframes hub-life-runes{0%,100%{opacity:.34;transform:scale(.97)}52%{opacity:.66;transform:scale(1.035)}}
@keyframes hub-life-water{0%,100%{opacity:.26;transform:translate(-3%,2%) scale(.90)}50%{opacity:.43;transform:translate(4%,-2%) scale(1.08)}}
@keyframes hub-life-shimmer{0%,24%{opacity:0;transform:translateX(-150%) skewX(-22deg)}41%{opacity:.26}62%{opacity:.16}78%,100%{opacity:0;transform:translateX(380%) skewX(-22deg)}}
@keyframes hub-life-drift{0%,100%{opacity:0;transform:translate(0,0)}18%{opacity:.38}48%{opacity:.62}76%{opacity:.26}94%{opacity:0;transform:translate(var(--life-dx),var(--life-dy))}}
@keyframes hub-life-spark{0%{opacity:0;transform:translate(0,0) scale(.6)}9%{opacity:.58}23%{opacity:.32}36%,100%{opacity:0;transform:translate(var(--life-dx),var(--life-dy)) scale(.3)}}
@media(max-width:900px),(pointer:coarse){
  #hub-life-layer .hub-life-desktop{display:none}
  #hub-life-layer .hub-life-particle{box-shadow:0 0 3px #d5e39866}
  #hub-life-layer .hub-life-flame{mix-blend-mode:normal}
}
@media(prefers-reduced-motion:reduce){
  #hub-life-layer .hub-life-motion{animation:none!important}
  #hub-life-layer .hub-life-particle-anchor,#hub-life-layer .hub-life-shimmer{display:none}
  #hub-life-layer .hub-life-flame{opacity:.47}
  #hub-life-layer .hub-life-pulse{opacity:.36}
  #hub-life-layer .hub-life-ripples{opacity:.18}
}
