/* The Village loading screen's styles (loader-ui.js). A real same-origin file, because Nexus's CSP
   (style-src 'self') blocks injected <style> elements. village/build*.sh copy it next to village.js. */
.vload-cover{position:absolute;inset:0;z-index:5;overflow:hidden;display:grid;place-items:center;pointer-events:auto;cursor:progress;
  --vload-felt:#fff6e6;--vload-felt-2:#f6e7cc;--vload-stitch:#d6bb92;--vload-thread:#d9733a;--vload-ink:#5b4636;--vload-sub:#937b62;
  --vload-env:#fffdf6;--vload-flap:#f2e0c0;--vload-seal:#cf5a3a;--vload-shadow:rgba(80,52,24,.22);--vload-iris:rgba(255,250,238,.9)}
.vload-cover.vload-dark{--vload-felt:#24314f;--vload-felt-2:#1c2741;--vload-stitch:#53689a;--vload-thread:#f0a35a;--vload-ink:#f3e7d3;--vload-sub:#a9b5d2;
  --vload-env:#f7eedc;--vload-flap:#e3d1ae;--vload-seal:#e0714a;--vload-shadow:rgba(0,0,0,.35);--vload-iris:rgba(255,240,214,.75)}
.vload-card{display:flex;flex-direction:column;align-items:center;gap:10px;width:min(240px,64vw);opacity:0;transform:translateY(6px) scale(.96);
  transition:opacity .35s ease,transform .35s ease;will-change:opacity,transform}
.vload-card.vload-on{opacity:1;transform:none}
.vload-ring{width:100%;height:auto;overflow:visible;filter:drop-shadow(0 6px 14px var(--vload-shadow))}
.vload-patch{fill:var(--vload-felt)}
.vload-patch-in{fill:var(--vload-felt-2);opacity:.55}
.vload-edge{fill:none;stroke:var(--vload-stitch);stroke-width:1.6;stroke-dasharray:5 4.2;stroke-linecap:round}
.vload-track{fill:none;stroke:var(--vload-stitch);stroke-width:2.6;stroke-dasharray:7 6;stroke-linecap:round;opacity:.75}
.vload-thread{fill:none;stroke:var(--vload-thread);stroke-width:4.2;stroke-dasharray:7 6;stroke-linecap:round}
.vload-pct{font:500 25px/1 "DM Mono",ui-monospace,monospace;fill:var(--vload-ink);letter-spacing:-.5px}
.vload-sub{font:700 8.5px/1 "DM Mono",ui-monospace,monospace;fill:var(--vload-sub);letter-spacing:1.6px;text-transform:uppercase}
.vload-env-body{fill:var(--vload-env);stroke:var(--vload-stitch);stroke-width:1.1}
.vload-env-fold{fill:none;stroke:var(--vload-stitch);stroke-width:1;stroke-dasharray:2 1.8}
.vload-flap{fill:var(--vload-flap);stroke:var(--vload-stitch);stroke-width:1.1;stroke-linejoin:round;transform-origin:50% 0;transform-box:fill-box;animation:vload-flap .42s ease-in-out infinite alternate}
.vload-seal{fill:var(--vload-seal)}
.vload-bob{animation:vload-bob .84s ease-in-out infinite alternate}
@keyframes vload-flap{from{transform:scaleY(1)}to{transform:scaleY(-.85)}}
@keyframes vload-bob{from{transform:translateY(1.6px) rotate(-5deg)}to{transform:translateY(-2.4px) rotate(5deg)}}
.vload-line{width:max-content;max-width:min(330px,88vw);box-sizing:border-box;padding:6px 14px 7px;border-radius:14px;background:var(--vload-felt);border:1.5px dashed var(--vload-stitch);
  box-shadow:0 4px 10px var(--vload-shadow);text-align:center;color:var(--vload-ink);transition:opacity .3s ease,transform .3s ease}
.vload-line.vload-out{opacity:0;transform:translateY(4px)}
.vload-who{display:block;font:700 10px/1.3 "DM Mono",ui-monospace,monospace;letter-spacing:1.4px;text-transform:uppercase;color:var(--vload-thread);min-height:1.3em}
.vload-text{display:block;font:italic 500 15px/1.35 Fraunces,Georgia,serif}
.vload-iris{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.vload-iris circle{fill:none;stroke:var(--vload-iris);stroke-width:2.4;stroke-dasharray:9 7;stroke-linecap:round}
@media (prefers-reduced-motion:reduce){.vload-flap,.vload-bob{animation:none}.vload-card,.vload-line{transition:opacity .2s linear}}

/* 1.116: the Workshop crew's speech bubbles (devvm.js); the tap label is the "rich" one. */
.vcrew-bubble{pointer-events:none;position:relative;max-width:15em;padding:.4em .8em;border-radius:14px;border:2px solid #e8c497;background:rgba(255,251,243,.97);color:#5b3b1e;text-align:center;font:600 clamp(13.5px,.45vw + 9.5px,19px)/1.3 Manrope,system-ui,sans-serif;box-shadow:0 3px 9px rgba(60,40,20,.25);white-space:normal}
.vcrew-bubble [hidden]{display:none}
.vcrew-name{font:700 1em/1.2 Fraunces,Georgia,serif;color:#b8562c}
.vcrew-tail{position:absolute;left:50%;bottom:-7px;width:11px;height:11px;margin-left:-6px;background:rgba(255,251,243,.97);border-right:2px solid #e8c497;border-bottom:2px solid #e8c497;transform:rotate(45deg)}
.vcrew-doing,.vcrew-ver,.vcrew-title,.vcrew-chip,.vcrew-quote{display:none}
.vcrew-rich{width:max-content;max-width:min(20em,calc(100vw - 40px));padding:.64em .96em .72em;text-align:left}
.vcrew-rich .vcrew-name{font:700 .8em/1.2 "DM Mono",monospace;letter-spacing:.6px;text-transform:uppercase;margin-bottom:5px}
.vcrew-rich .vcrew-doing,.vcrew-rich .vcrew-ver,.vcrew-rich .vcrew-title,.vcrew-rich .vcrew-quote{display:block}
.vcrew-rich .vcrew-doing{font:500 1em/1.35 Manrope,system-ui,sans-serif}
.vcrew-rich .vcrew-ver{margin-top:6px;font:700 1.12em/1.2 "DM Mono",monospace;color:#3b2f28}
.vcrew-rich .vcrew-title{margin-top:1px;font:500 .92em/1.35 Manrope,system-ui,sans-serif;color:#9c8c73}
.vcrew-rich .vcrew-chip{display:inline-block;margin-top:6px;padding:2px 9px;border-radius:999px;border:1px solid #e8c497;background:#fbeed8;font:700 .8em/1.4 "DM Mono",monospace;letter-spacing:.3px;text-transform:uppercase;color:#8a4a1e}
.vcrew-rich .vcrew-quote{margin-top:7px;padding-top:6px;border-top:1px dashed #eadfcb;font:italic 500 1.04em/1.4 Fraunces,Georgia,serif;color:#3b2f28}
/* 1.144: the dark fade (index.js toggles .village-dark on the container): signs and speech go with the screen */
.village-labels{transition:opacity .2s ease}
.village-dark .village-labels{opacity:0!important;transition:none!important}
