/*! BLOCROWN © 2026 Airony Company Inc. (주식회사 아이러니컴퍼니) · All rights reserved · 무단 복제·배포·역설계 금지(이용약관 제11조~제11조의4 · 저작권법) · BLOCROWN-BUILD:20261110.nogit.8b8a73832c */
/* First-load "BLOCROWN construction" screen. The building stills are offline Blender renders
   (scripts/boot-construction) cross-faded by real load progress; the crew is the existing chibi sprite.
   loading-dancers.mjs sets --p, data-build (dig|frame|brick|finish|done) and swaps .bs-img frames. */
#bootProgress.bs{position:fixed;inset:0;z-index:4000;pointer-events:none;overflow:hidden;color-scheme:light;color:#fff;
 font:600 13px/1.35 system-ui,-apple-system,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;text-align:center;
 background:linear-gradient(180deg,#4f86de 0%,#9cc1ec 45%,#cfe0f2 56%,#6f5a44 57%,#5d4a38 100%)}
.bs-pic{position:absolute;left:50%;bottom:0;height:100%;aspect-ratio:3/4;transform:translateX(-50%);container-type:size}
.bs-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .6s ease}
.bs-img.on{opacity:1}
.bs-img:not([src]){display:none}
/* --- crew: four existing chibis, unchanged (work rows = their own walk clip, assets/boot/build-crew.webp:
   0 cap_bunny, 1 ghost, 2 mono_monster, 3 longhair_girl). Done = existing cheer rows of chibi-crew-v2.webp.
   The work sprite arrives right after the first frame (low priority) and fades in via [data-crew]. --- */
.bs-crew{position:absolute;inset:0;opacity:0;transition:opacity .4s}
.bs[data-crew] .bs-crew{opacity:1}
.bs-c{position:absolute;bottom:12%;width:17cqh;height:17cqh;transform:translateX(-50%)}
.bs-c1{left:29%}.bs-c2{left:43%;bottom:10.5%}.bs-c3{left:57%;bottom:11%}.bs-c4{left:71%}
.bs .bc-sp{--s:17cqh;position:absolute;inset:0;display:block;background:url('assets/boot/build-crew.webp?v=fdc117530a0d')'assets/boot/build-crew.webp?v=fdc117530a0d') 0 calc(var(--row,0)*var(--s)*-1)/calc(var(--s)*8) calc(var(--s)*4) no-repeat;animation:bsCrew var(--d,.9s) steps(8) var(--dl,0s) infinite}
.bs .bs-c1 .bc-sp{--row:0}.bs .bs-c2 .bc-sp{--row:1;--d:1s;--dl:-.3s}.bs .bs-c3 .bc-sp{--row:2;--d:.95s;--dl:-.55s}.bs .bs-c4 .bc-sp{--row:3;--d:.9s;--dl:-.7s;transform:scaleX(-1)}
.bs[data-build=done] .bc-sp{background-image:url('assets/loading/chibi-crew-v2.webp?v=4590ad59d4a5')'assets/loading/chibi-crew-v2.webp?v=4590ad59d4a5');background-size:calc(var(--s)*8) calc(var(--s)*7);transform:none}
.bs[data-build=done] .bs-c1 .bc-sp{--row:5}.bs[data-build=done] .bs-c2 .bc-sp{--row:2}.bs[data-build=done] .bs-c3 .bc-sp{--row:3}.bs[data-build=done] .bs-c4 .bc-sp{--row:4}
.bs[data-build=done] .bs-c{animation:bsJump .55s ease-in-out infinite}.bs[data-build=done] .bs-c2{animation-delay:-.14s}.bs[data-build=done] .bs-c3{animation-delay:-.28s}.bs[data-build=done] .bs-c4{animation-delay:-.42s}
/* tools per stage: each character does a different job */
.bs-tool{position:absolute;display:none;pointer-events:none}
.bs[data-build=dig] .bs-c1 .bs-tool,.bs[data-build=dig] .bs-c2 .bs-tool,.bs[data-build=dig] .bs-c4 .bs-tool{display:block;left:70%;bottom:8%;width:5%;height:60%;background:#8a5a2b;border-radius:3px;transform-origin:50% 100%;animation:bsDig .8s ease-in-out infinite}
.bs[data-build=dig] .bs-c2 .bs-tool{animation-delay:-.27s}.bs[data-build=dig] .bs-c4 .bs-tool{left:24%;animation-delay:-.53s}
.bs[data-build=dig] .bs-tool::after{content:"";position:absolute;left:-180%;bottom:-14%;width:460%;height:24%;background:linear-gradient(#c9ced3,#8d969e);border-radius:2px 2px 45% 45%}
.bs[data-build=dig] .bs-c3 .bs-tool{display:block;left:30%;right:30%;top:14%;height:18%;border-radius:2px 2px 40% 40%;background:linear-gradient(#5b3a1e,#3e2612);box-shadow:inset 0 3px 0 #7a4f29;animation:bsCarry .9s ease-in-out infinite}
.bs[data-build=frame] .bs-c1 .bs-tool{display:block;left:10%;width:220%;top:20%;height:8%;border-radius:2px;background:linear-gradient(#a24a22,#6e2c12);box-shadow:inset 0 2px 0 #c86a3d;animation:bsCarry .9s ease-in-out infinite}
.bs[data-build=frame] .bs-c3 .bs-tool,.bs[data-build=frame] .bs-c4 .bs-tool{display:block;left:6%;right:6%;top:22%;height:8%;border-radius:2px;background:linear-gradient(#a24a22,#6e2c12);animation:bsCarry .9s ease-in-out infinite}
.bs[data-build=frame] .bs-c4 .bs-tool{animation-delay:-.45s}
.bs[data-build=brick] .bs-c .bs-tool{display:block;left:26%;right:26%;top:12%;height:15%;background:repeating-linear-gradient(0deg,#a8452a 0 42%,#d8c9b5 42% 50%);box-shadow:inset 0 2px 0 #c96a4a;border-radius:2px;animation:bsCarry .85s ease-in-out infinite}
.bs[data-build=brick] .bs-c2 .bs-tool{animation-delay:-.2s}.bs[data-build=brick] .bs-c3 .bs-tool{animation-delay:-.45s}.bs[data-build=brick] .bs-c4 .bs-tool{animation-delay:-.65s}
.bs[data-build=finish] .bs-c1 .bs-tool,.bs[data-build=finish] .bs-c4 .bs-tool{display:block;left:66%;bottom:20%;width:4%;height:70%;background:#7b7f86;border-radius:2px;transform-origin:50% 100%;animation:bsRoll 1s ease-in-out infinite}
.bs[data-build=finish] .bs-c4 .bs-tool{left:28%;animation-delay:-.5s}
.bs[data-build=finish] .bs-c1 .bs-tool::after,.bs[data-build=finish] .bs-c4 .bs-tool::after{content:"";position:absolute;left:-260%;top:-10%;width:620%;height:14%;border-radius:4px;background:#a6e23f;box-shadow:inset 0 -2px 0 #6fa51e}
.bs[data-build=finish] .bs-c2 .bs-tool{display:block;left:58%;bottom:10%;width:26%;height:26%;border-radius:2px 2px 6px 6px;background:linear-gradient(#c7ccd2,#8f979f);box-shadow:inset 0 4px 0 #a6e23f}
.bs[data-build=finish] .bs-c3 .bs-tool{display:block;left:14%;right:14%;top:6%;height:30%;border-radius:2px;background:linear-gradient(135deg,#bfe6ffcc,#7fb6dccc);border:2px solid #e9eef2;animation:bsCarry .95s ease-in-out infinite}
/* confetti on completion */
.bs-confetti{position:absolute;inset:0;overflow:hidden;display:none}
.bs[data-build=done] .bs-confetti{display:block}
.bs-confetti i{position:absolute;top:-4%;width:1.6cqh;height:2.4cqh;border-radius:1px;background:#a6e23f;animation:bsFall 1.6s linear infinite}
.bs-confetti i:nth-child(1){left:12%}.bs-confetti i:nth-child(2){left:24%;background:#ffd166;animation-delay:-.3s}.bs-confetti i:nth-child(3){left:36%;background:#ef6f53;animation-delay:-.9s}.bs-confetti i:nth-child(4){left:48%;animation-delay:-.5s}.bs-confetti i:nth-child(5){left:58%;background:#7cc6ff;animation-delay:-1.2s}.bs-confetti i:nth-child(6){left:68%;background:#ffd166;animation-delay:-.2s}.bs-confetti i:nth-child(7){left:78%;background:#ef6f53;animation-delay:-.7s}.bs-confetti i:nth-child(8){left:88%;animation-delay:-1.4s}
/* --- HUD: "built N%" + current step --- */
.bs-gauge{position:absolute;top:max(14px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:1px;min-width:9.5em;padding:8px 18px 9px;border-radius:16px;background:#0b2c25cc;box-shadow:0 6px 18px #0b2c2533}
.bs-cap{font-size:11px;letter-spacing:1px;color:#c6fa49;font-weight:800}
.bs .bc-boot-pct{font:800 30px/1.05 system-ui,-apple-system,sans-serif;font-variant-numeric:tabular-nums;color:#fff}
.bs-step{font-size:12.5px;font-weight:700;color:#e9f3ee}
.bs .bc-boot-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.bs-bar{display:block;width:100%;height:5px;margin-top:5px;border-radius:9px;background:#ffffff2e;overflow:hidden}
.bs-bar i{display:block;height:100%;width:calc(var(--p,0)*100%);background:linear-gradient(90deg,#c6fa49,#8ccf2e);border-radius:inherit;transition:width .45s ease-out}
.bs-welcome{position:absolute;left:50%;top:max(14px,env(safe-area-inset-top));transform:translateX(-50%);width:max-content;max-width:calc(100% - 24px);display:none;flex-direction:column;align-items:center;gap:2px;padding:9px 18px 10px;border-radius:16px;background:#0b2c25d9;box-shadow:0 6px 18px #0b2c2533}
.bs[data-build=done] .bs-gauge{display:none}
.bs[data-build=done] .bs-welcome{display:flex;animation:bsPop .45s ease-out both}
.bs-welcome b{font:800 clamp(19px,5.6vw,28px)/1.15 system-ui,-apple-system,sans-serif;color:#fff}
.bs-done{color:#c6fa49}
.bs-welcome-sub{font-size:13px;font-weight:700;color:#fff6dc}
.bs-sound{position:absolute;right:max(12px,env(safe-area-inset-right));bottom:calc(max(14px,env(safe-area-inset-bottom)) + 4px);pointer-events:auto;min-height:44px;padding:0 15px;border-radius:999px;border:1.5px solid #ffffff66;background:#0b2c25cc;color:#fff;font:700 13px system-ui,sans-serif}
.bs-sound[aria-pressed=true]{background:#1f5a44e6}
#bootProgress.bs .bc-boot-slow{display:none;position:absolute;left:50%;top:calc(max(14px,env(safe-area-inset-top)) + 100px);transform:translateX(-50%);flex-direction:column;align-items:center;gap:8px;pointer-events:auto}
#bootProgress.bs[data-slow] .bc-boot-slow{display:flex}
#bootProgress.bs .bc-boot-slow-text{background:#0b2c25cc;padding:6px 12px;border-radius:10px;font-weight:700}
#bootProgress.bs .bc-boot-retry{min-height:44px;padding:0 18px;border:1.5px solid #ffffff77;border-radius:12px;background:#0b2c25e6;color:#fff;font:700 14px system-ui,sans-serif}
/* the centre logo stays hidden under the scene; boot-logo.mjs still flies its clone to the header */
body:has(#bootProgress.bs) #bootLogo{opacity:0}
#bootProgress.bs.gone{animation:bsOut .4s forwards}
body.finder-discovery-open #bootProgress,body:has([data-space-view]) #bootProgress,body:has(#nearbyStart:not([hidden])) #bootProgress,body:has(#loading>button) #bootProgress{display:none}
[data-dance-paused] #bootProgress .bc-sp{animation-play-state:paused}
@keyframes bsCrew{to{background-position-x:calc(var(--s)*-8)}}
@keyframes bsDig{0%,100%{transform:rotate(-28deg)}50%{transform:rotate(12deg) translateY(-6%)}}
@keyframes bsCarry{0%,100%{transform:translateY(0)}50%{transform:translateY(-12%)}}
@keyframes bsRoll{0%,100%{transform:rotate(-14deg)}50%{transform:rotate(10deg)}}
@keyframes bsJump{0%,100%{transform:translateX(-50%) translateY(0)}45%{transform:translateX(-50%) translateY(-28%)}}
@keyframes bsFall{to{transform:translateY(110cqh) rotate(540deg)}}
@keyframes bsPop{from{opacity:0;transform:translateX(-50%) scale(.85)}to{opacity:1;transform:translateX(-50%)}}
@keyframes bsOut{to{opacity:0;visibility:hidden}}
@media(max-height:520px){.bs .bc-boot-pct{font-size:24px}}
@media(prefers-reduced-motion:reduce){.bs-img{transition:none}.bs .bc-sp,.bs-tool,.bs-tool::after,.bs[data-build=done] .bs-c,.bs-confetti i,.bs[data-build=done] .bs-welcome,.bs-bar i{animation:none!important;transition:none}.bs-confetti{display:none!important}#bootProgress.bs.gone{animation:none;opacity:0}}
