/*! ===== Loader of the 3D scenes (22 Oct 2026); only the home page links it =====
   While the campus or the globe loads, ODM's flame stands on the scene's skeleton and grows with
   the real steps of the load, with two to four words per step and a bar (src/lib/scene-loader.ts;
   why, in research/espera-carga-2026-10-22.md). Nothing shows before 300 ms; it leaves with a
   280 ms crossfade. Motion is transform and opacity only, composited, so the flame keeps moving
   while the main thread builds the scene; with reduced motion it is a still flame. Globe-specific
   rules (its place and Mexico's skeleton) are in globe.css.
   The flame's motion is adapted from «Fire» by Admin12121 (https://uiverse.io/Admin12121/selfish-starfish-81),
   MIT License, Copyright (c) 2023 Uiverse.io; full notice in assets/loaders/LICENSE-uiverse.txt.
   Changed: the tongues are the three of ODM's isotype flame (traced from assets/globe/flama.webp)
   in its orange and gold; motion only on transform and opacity (the original animated top,
   background-color and filters); the flame grows with the load; embers leave from its tips. */.scene-loader{--p:0;--sl-h:76px;position:absolute;inset:0;z-index:1;display:grid;place-items:center;pointer-events:none;transition:opacity .28s var(--ease-out)}.scene-loader[data-state=out]{opacity:0}.scene-loader__card{position:relative;isolation:isolate;display:grid;justify-items:center;width:180px;opacity:0;transform:translateY(6px) scale(.97);transition:opacity .2s var(--ease-out),transform .28s var(--ease-out)}.scene-loader__card::before{content:"";position:absolute;z-index:-1;inset:-34px -52px -24px;border-radius:50%;background:radial-gradient(closest-side,rgb(255 255 255 / .94) 52%,rgb(255 255 255 / 0))}.scene-loader[data-shown] .scene-loader__card{opacity:1;transform:none}.scene-loader[data-state=out] .scene-loader__card{transform:scale(.96)}.scene-loader__flame{position:relative;width:calc(var(--sl-h) * 2 / 3);height:var(--sl-h)}.scene-loader__flame::after{content:"";position:absolute;left:4%;right:4%;bottom:-6px;height:12px;border-radius:50%;background:radial-gradient(closest-side,rgb(16 43 70 / .2),rgb(16 43 70 / 0))}.sl-glow{position:absolute;left:-60%;right:-60%;top:-10%;bottom:-25%;border-radius:50%;background:radial-gradient(closest-side,rgb(255 186 82 / .5),rgb(255 170 60 / 0));opacity:calc(.35 + .65 * var(--p));transition:opacity .6s var(--ease-out)}.sl-grow{position:absolute;inset:0;transform-origin:50% 100%;transform:scale(calc(.45 + .55 * var(--p)));transition:transform .6s var(--ease-out)}.sl-t{position:absolute;transform-origin:50% 100%;transition:opacity .45s var(--ease-out),transform .45s var(--ease-out)}.sl-t>b{position:absolute;inset:0;background:center/100% 100% no-repeat;transform-origin:50% 100%}.scene-loader[data-lit="1"] .sl-t2,.scene-loader:is([data-lit="1"],[data-lit="2"]) .sl-t3{opacity:0;transform:scale(.3)}.sl-t1{left:-2.34%;top:-1.56%;width:77.34%;height:102.6%}.sl-t1>b{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-3 -3 99 197'%3E%3Cdefs%3E%3ClinearGradient id='o' x1='0' y1='1' x2='.7' y2='0'%3E%3Cstop offset='0' stop-color='%23e2521d'/%3E%3Cstop offset='.55' stop-color='%23ee7a28'/%3E%3Cstop offset='1' stop-color='%23f7a23a'/%3E%3C/linearGradient%3E%3ClinearGradient id='y' x1='.2' y1='1' x2='.5' y2='0'%3E%3Cstop offset='0' stop-color='%23efa526'/%3E%3Cstop offset='.6' stop-color='%23f5c932'/%3E%3Cstop offset='1' stop-color='%23fde46d'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath fill='url%28%23o%29' d='M43 0C43 -2 50 3 56 7C61 11 71 18 76 22C80 26 82 28 85 33C88 37 90 42 91 48C92 53 92 59 91 64C91 68 90 70 88 75C86 79 86 81 80 91C74 100 56 124 50 134C44 144 44 145 43 151C42 157 43 165 44 170C45 175 48 177 50 181C52 184 60 190 59 191C57 192 45 190 39 188C32 186 23 182 18 179C12 176 10 174 7 171C4 167 1 161 0 157C-1 152 0 146 0 142C1 137 1 135 3 131C5 126 3 126 10 117C17 108 37 85 44 77C51 68 49 70 51 66C53 61 56 56 57 51C58 45 58 36 57 31C56 25 55 24 53 19C51 13 42 2 43 0Z'/%3E%3Cpath fill='url%28%23y%29' d='M43 0C44 -1 68 17 76 22C83 27 82 28 85 33C88 37 91 41 91 48C92 55 95 60 88 75C81 89 58 121 50 134C43 146 44 145 43 151C42 157 42 163 44 170C46 176 59 189 58 190C56 191 42 182 37 178C31 174 25 168 22 164C19 159 17 156 17 150C17 143 16 137 22 127C29 117 48 100 56 90C64 79 67 72 68 62C69 51 68 39 64 29C60 18 41 1 43 0Z'/%3E%3C/svg%3E")}.sl-t2{left:37.5%;top:26.04%;width:46.88%;height:75.52%}.sl-t2>b{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='48 50 60 145'%3E%3Cdefs%3E%3ClinearGradient id='y' x1='.2' y1='1' x2='.5' y2='0'%3E%3Cstop offset='0' stop-color='%23efa526'/%3E%3Cstop offset='.6' stop-color='%23f5c932'/%3E%3Cstop offset='1' stop-color='%23fde46d'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath fill='url%28%23y%29' d='M97 54C99 51 103 61 104 67C105 72 107 75 103 88C99 100 86 126 81 140C76 153 75 159 74 167C73 174 75 182 77 186C79 189 88 188 87 190C86 191 76 193 71 192C65 191 58 186 55 182C52 177 51 171 50 167C49 162 50 161 51 156C53 150 52 146 59 135C66 123 85 98 91 85C97 71 94 57 97 54Z'/%3E%3C/svg%3E")}.sl-t3{left:56.25%;top:47.4%;width:46.88%;height:53.13%}.sl-t3>b{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='72 91 60 102'%3E%3Cdefs%3E%3ClinearGradient id='o' x1='0' y1='1' x2='.7' y2='0'%3E%3Cstop offset='0' stop-color='%23e2521d'/%3E%3Cstop offset='.55' stop-color='%23ee7a28'/%3E%3Cstop offset='1' stop-color='%23f7a23a'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath fill='url%28%23o%29' d='M127 94C128 96 130 123 126 137C122 150 107 167 101 176C95 184 91 187 88 189C84 191 83 190 81 188C78 186 74 187 74 180C74 172 78 147 80 144C82 140 84 158 86 161C87 164 89 163 92 162C94 161 97 160 101 155C105 149 112 137 116 127C120 116 125 92 127 94Z'/%3E%3C/svg%3E")}.sl-e{position:absolute;width:10%;height:6.6%;border-radius:50%;background:radial-gradient(closest-side,#fff0b0,#f8a53a 55%,rgb(246 152 47 / 0));opacity:0}.sl-e:nth-of-type(4){left:29%;top:0}.sl-e:nth-of-type(5){left:71%;top:24%}.sl-e:nth-of-type(6){left:92%;top:45%}.scene-loader__word{justify-self:stretch;text-align:center;margin-top:14px;min-height:1.35em;font-size:13px;font-weight:700;line-height:1.35;letter-spacing:.01em;color:var(--ink);white-space:nowrap}.scene-loader__bar{position:relative;width:88px;height:4px;margin-top:8px;border-radius:4px;overflow:hidden;background:rgb(16 43 70 / .1)}.scene-loader__bar>b{position:absolute;inset:0;overflow:hidden;border-radius:inherit;background:linear-gradient(90deg,#f2b33a,#ee7a28);transform:translateX(calc((var(--p) - 1) * 100%));transition:transform .6s var(--ease-out)}.scene-loader__bar>b::after{content:"";position:absolute;top:0;bottom:0;left:0;width:calc(100% + 16px);background:repeating-linear-gradient(90deg,rgb(255 255 255 / .5) 0 3px,rgb(255 255 255 / 0) 3px 8px);transform:skewX(-30deg)}@keyframes sl-sway{50%{transform:skewX(-4deg) scale(.96)}}@keyframes sl-sway-r{50%{transform:skewX(5deg) scale(.94)}}@keyframes sl-rise{50%,90%{transform:scaleY(1.08)}75%{transform:scaleY(.95)}80%{transform:scaleX(.95)}}@keyframes sl-glow{to{opacity:.55}}@keyframes sl-ember{20%,70%{opacity:1}to{opacity:0;transform:translateY(calc(var(--sl-h) * -.5)) scale(.4)}}@keyframes sl-rib{to{transform:skewX(-30deg) translateX(-8px)}}@media(prefers-reduced-motion:no-preference){.sl-t1>b{animation:sl-sway 3s ease-in-out infinite}.sl-t2>b{animation:sl-rise 3s ease-out infinite}.sl-t3>b{animation:sl-sway-r 2s ease-in-out infinite}.sl-glow{animation:sl-glow 2s ease-in-out infinite alternate}.sl-e{animation:sl-ember 2.4s ease-out infinite}.sl-e:nth-of-type(5){animation-duration:2s;animation-delay:.7s}.sl-e:nth-of-type(6){animation-duration:2.8s;animation-delay:1.3s}.scene-loader__bar>b::after{animation:sl-rib .3s linear infinite}.scene-loader[data-lit="2"] .scene-loader__bar>b::after{animation-duration:.45s}.scene-loader[data-lit="3"] .scene-loader__bar>b::after{animation-duration:.7s}}@media(scripting:enabled){#hero-stage::before{content:"";position:absolute;inset:0;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='52.83' viewBox='0 0 100 52.83' preserveAspectRatio='none'%3E%3Cpath d='M0 0L100 52.83M0 52.83L100 0' fill='none' stroke='%23102b46' stroke-opacity='.1' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") calc(50% + 8px) calc(50% + 13.5px)/14% auto;mask-image:radial-gradient(58% 60% at 50% 55%,#000 30%,transparent);transition:opacity .3s var(--ease-out)}#hero-stage:not([data-state=loading])::before{opacity:0}}@media(max-width:650px){.scene-loader{--sl-h:64px}}@media(prefers-reduced-motion:reduce){.scene-loader__bar>b::after{content:none}}
