/* Non-interactive, isolated decoration. No layout participation. */
.ro-insect-layer{position:fixed;inset:0;z-index:35;overflow:hidden;pointer-events:none;contain:strict}
.ro-insect-actor{position:absolute;left:0;top:0;transform-origin:50% 50%;will-change:transform;pointer-events:none}
.ro-insect-pose{position:absolute;inset:0;z-index:1;transform-origin:50% 50%}
.ro-insect-actor canvas{display:block;width:100%;height:100%;position:relative;z-index:1}
.ro-insect-shadows{position:absolute;inset:0;z-index:0;pointer-events:none;will-change:transform}.ro-insect-shadows canvas{position:absolute;inset:0}
.ro-insect-light{position:absolute;left:0;top:0;border-radius:50%;background:radial-gradient(circle,rgba(var(--insect-glow),.48) 0%,rgba(var(--insect-glow),.20) 23%,rgba(var(--insect-glow),.065) 45%,transparent 70%);mix-blend-mode:screen;pointer-events:none;will-change:transform}
.ro-insect-spark{position:absolute;width:24%;height:24%;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(var(--insect-glow),.88),rgba(var(--insect-glow),.35) 34%,transparent 70%);filter:blur(2px)}
@media(prefers-reduced-motion:reduce){.ro-insect-layer{display:none}}
/* Actual foliage stays above the visitor at depth; its alpha creates the
   occlusion. No duplicate leaf images, masks, or full-screen canvas are used. */
.ro-insect-layer.ro-insect-behind{z-index:4}
/* Episode effects are tiny, bounded, decorative nodes; no new image assets. */
.ro-episode-local-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.ro-episode-props{z-index:34;pointer-events:none}.ro-episode-prop{position:absolute;left:0;top:0;display:block;pointer-events:none}
.ro-episode-pollen,.ro-episode-pollen-clump{border-radius:45% 60% 42% 50%;background:#d1a64f;box-shadow:1px 1px 1px #35200e66,inset 1px 1px #f3dd97b0}
.ro-episode-pollen-clump{box-shadow:2px 1px #be893e,-1px 2px #dbb460,1px 2px 2px #24180780}
.ro-episode-crumb{border-radius:32% 55% 31% 42%;background:radial-gradient(circle at 30% 40%,#78512b 0 8%,transparent 10%),radial-gradient(circle at 67% 70%,#97673b 0 10%,transparent 13%),linear-gradient(35deg,#8b5c30,#d6ae70 50%,#b48b52);box-shadow:1px 2px 2px #24180770}
.ro-episode-bubble{border:1px solid #f8edcbaa;border-radius:50%;background:radial-gradient(circle at 28% 24%,#fff9dcbb 0 9%,transparent 17%),radial-gradient(circle,transparent 42%,#e5c97933 65%,#fff9d399);box-shadow:0 1px 2px #583c2e40}
.ro-episode-droplet{border-radius:50%;background:#f3e5bbaa}
[data-theme=dark] .ro-episode-prop{filter:brightness(.72)}
.ro-episode-loose-leaf svg{display:block;width:100%;height:100%}.ro-episode-loose-leaf{filter:drop-shadow(1px 3px 2px #16241060)}
.ro-episode-leg-contact{background:#302816;border-radius:2px;box-shadow:0 1px 1px #120f0955}
.ro-episode-crumb{border-radius:0;clip-path:polygon(7% 15%,23% 8%,31% 0,50% 8%,67% 5%,76% 18%,95% 24%,91% 43%,100% 58%,86% 72%,88% 86%,66% 89%,54% 100%,36% 93%,17% 97%,11% 80%,0 67%,8% 50%,1% 32%);background:radial-gradient(ellipse at 24% 31%,#956933 0 3%,#e1bb7c 5%,transparent 9%),radial-gradient(ellipse at 61% 25%,#8e612d 0 4%,transparent 8%),radial-gradient(ellipse at 72% 60%,#8b592b 0 5%,#dcaf6e 7%,transparent 11%),radial-gradient(ellipse at 35% 72%,#a8753b 0 5%,transparent 9%),radial-gradient(ellipse at 46% 44%,#f7d99d 0 5%,transparent 9%),repeating-linear-gradient(33deg,#cc9d5d24 0 1px,transparent 2px 4px),linear-gradient(130deg,#efd095,#d9ad6b 45%,#a5743d);box-shadow:inset -3px -3px 4px #74431a55,inset 2px 2px 3px #ffdfab}
