/* Wieża w przekroju na telewizorze (public/wieza169.js; wspólne style wieży i sali z boku). Scena ma logiczne 960 px szerokości i skaluje się do ekranu. */
.wz{position:fixed;left:0;top:0;transform-origin:0 0;z-index:0;overflow:hidden;--y:#f2c14e;--mut:#9aa3d0}
.wz[hidden]{display:none}
.wz img{image-rendering:pixelated;max-width:none}
.wz-scene{position:absolute;inset:0;overflow:hidden;background:#070814 url(img/orbita/hd/mapa/kosmos-tv.webp?v=2) center/cover}
.wz-world{position:absolute;left:0;top:0;transform-origin:0 0;transition:transform 1.3s cubic-bezier(.4,0,.2,1),opacity .6s}
.wz-world.bez{transition:none}
/* scena pytania: za pokojem tylko kosmos (wieża i załoga z korytarza znikają) */
.wz-world.przyg{opacity:0}
.wz-world>*{position:absolute}
.wz-vin{position:absolute;inset:0;pointer-events:none;z-index:3;background:radial-gradient(ellipse 78% 74% at 50% 52%,rgba(4,5,18,0) 62%,rgba(4,5,18,.6) 100%)}
.wz-dim{position:absolute;inset:0;background:#04051240;opacity:0;transition:opacity .6s;z-index:2;pointer-events:none}
.wz-dim.on{opacity:1}
/* poziom */
/* przemiana drzwi pokoju (makieta propozycje/kosmos/wieza/winda-tv.html): nowe drzwi wjeżdżają od dołu w pikselowych krokach (para przesunięć mw/mi zamiast maski),
   nad nimi linia skanu, prążki hologramu migoczą, iskry lecą w górę, stare drzwi drgają. --o = ujemny czas, jeśli telewizor dołączył w trakcie. Tylko transform i opacity */
/* czipy nad drzwiami */
.wz-chip{display:flex;flex-direction:column;align-items:center;gap:3px;background:#0b0d1cee;border:3px solid #4a5290;border-radius:6px;padding:5px 9px 6px;font-family:var(--display);font-size:14px;color:#e4e8ff;transform:translate(-50%,-100%);white-space:nowrap;transition:transform .3s,border-color .3s,opacity .3s;z-index:20}
.wz-chip:after{content:'';position:absolute;left:50%;bottom:-10px;margin-left:-8px;border:8px solid transparent;border-top-color:#4a5290;border-bottom:0}
.wz-chip img.ik{height:44px}.wz-chip img.ik.m{height:34px}.wz-chip img.ok{height:16px}
.wz-chip .nm{font-size:13px}.wz-chip .nm.pyt{color:#6f78a8;font-size:16px}
.wz-chip.on{border-color:var(--y);transform:translate(-50%,-100%) scale(1.14)}.wz-chip.on:after{border-top-color:var(--y)}
/* złota karta dostępu w głosowaniu: czip w złocie z twarzą i ksywką użytkownika, drzwi błyskają złotem; tylko transform i opacity */
.wz-chip.zlota{border-color:#ffd25a;background:linear-gradient(180deg,#5a4108,#2a1c00);color:#fff3c4;transform:translate(-50%,-100%) scale(1.2);animation:wzZc .5s cubic-bezier(.3,1.8,.5,1)}
.wz-chip.zlota:after{border-top-color:#ffd25a}
@keyframes wzZc{from{transform:translate(-50%,-100%) scale(.6)}to{transform:translate(-50%,-100%) scale(1.2)}}
.wz-chip .zk{display:flex;align-items:center;gap:4px;font-size:11px;color:#2a1c00;background:#ffd25a;padding:1px 5px}
.wz-chip .zk img{height:14px}
.wz-chip.off{opacity:.35}
.wz-chip.done{border-color:#2f6b3a;opacity:.85}.wz-chip.done .nm{color:#8fd4a0}
.wz-chip .num{position:absolute;left:-10px;top:-10px;width:26px;height:26px;background:var(--y);color:#2a1c00;border:2px solid #2a1c00;display:flex;align-items:center;justify-content:center;font-size:13px}
.wz-chip.done .num{background:#7be08a}
.wz-chip.spec .nm{color:var(--y)}
.wz-chip .mod{font-size:10px;color:#ffb3b3;background:#3a1020;border:1px solid #7a2a3a;padding:1px 5px}
/* szkielet */
/* winda między piętrami: szyb pod wszystkim, kabina tył, załoga, kabina przód; krata przystanku na wierzchu */
/* wyświetlacz piętra przy windzie (TB1): kwadrat ze stalową ramą, litera piętra na środku ciemnego ekranu */
/* szyb mostka (finał) */
/* załoga (arkusz 6x6 z sprity6, klatka 256 px -> 96 px; rząd 2 oddech, rząd 0 marsz) */
.wz-spr{width:96px;height:96px;background-repeat:no-repeat;background-size:576px 576px;background-position:0 -192px;transform-origin:48px 92px;transition:left 1.2s ease-in-out,top 1.2s ease-in-out,opacity .5s;animation:kidle 8.25s steps(1) infinite;image-rendering:pixelated}
/* spoczynek z nawykiem (kidle w mapa.css); różne czasy, żeby nawyki nie szły równo */
.wp-cz:nth-of-type(2n) .wz-spr:not(.walk),.wz-spr:nth-of-type(2n):not(.walk){animation-duration:7.4s;animation-delay:-2.3s}.wp-cz:nth-of-type(3n) .wz-spr:not(.walk),.wz-spr:nth-of-type(3n):not(.walk){animation-duration:9.1s;animation-delay:-4.1s}.wp-cz:nth-of-type(5n) .wz-spr:not(.walk),.wz-spr:nth-of-type(5n):not(.walk){animation-duration:7.9s;animation-delay:-6.2s}
.wz-world.bez .wz-spr{transition:none}
.wz-spr.flip{transform:scaleX(-1)}
.wz-spr.flip .pl{transform:translateX(-50%) scaleX(-1)}
.wz-spr.walk{animation:wzkrok .6s steps(1) infinite}
.wz-world.bezimion .wz-spr .pl{display:none}
@keyframes wzkrok{0%{background-position:0 0}16.67%{background-position:-96px 0}33.33%{background-position:-192px 0}50%{background-position:-288px 0}66.67%{background-position:-384px 0}83.33%{background-position:-480px 0}}
.wz-spr .pl{position:absolute;left:50%;top:-2px;transform:translateX(-50%);display:block;width:auto;gap:0;font-family:var(--display);font-size:10px;line-height:12px;background:var(--c);color:#0b0d1c;padding:0 3px;border:1px solid #0b0d1c;white-space:nowrap}
/* HUD */
.wz-ban{position:absolute;left:50%;top:12px;transform:translateX(-50%);background:#0b0d1ce6;border:2px solid #39407a;border-radius:6px;padding:4px 14px;font-family:var(--display);font-size:15px;color:#e4e8ff;white-space:nowrap;z-index:6}
.wz-ban:empty{display:none}
.wz-rec{position:absolute;right:14px;top:12px;display:flex;align-items:center;gap:6px;font-family:var(--display);font-size:12px;color:#ffd9d9;background:#0b0d1ccc;border:2px solid #5a2a3a;border-radius:4px;padding:2px 8px;z-index:6}
.wz-rec i{width:9px;height:9px;background:#ff4a4a;display:block}
.wz-glos{position:absolute;left:52px;bottom:14px;width:520px;z-index:6;border-style:solid;border-color:transparent;border-width:8px 10px 22px 40px;border-image:url(img/orbita/ui/dymek.webp) 8 8 26 42 fill/8px 10px 22px 40px;image-rendering:pixelated;color:#e8ecff;font-family:var(--tk);-webkit-font-smoothing:none;font-size:20px;line-height:1.3;padding:0 4px 2px}
.wz-glos[hidden]{display:none}
.wz-glos b{display:block;font-family:var(--display);font-weight:400;font-size:12px;color:var(--y)}
/* dymek Głosu Stacji wychodzi z kamerobota (prowadzący mówi przez niego): w lewym brzegu dymku jego przód, mówiący, cały w dymku */
/* Paweł z przodu mówiący (PW2, druga klatka pasa pawel-przod), 32 px sceny = 1 px grafiki na 2 px telewizora jak w scenie */
.wz-glos:before{content:'';position:absolute;left:-37px;top:0;width:32px;height:32px;background:url(img/orbita/hd/sprity/pawel-przod.webp) 100% 0/200% 100% no-repeat;image-rendering:pixelated;animation:kbBob 2.4s ease-in-out infinite}
/* kamerobot nad załogą (prompt KB1): dolatuje z opóźnieniem jak prawdziwa kamera (przejście left/top), unosi się po sinusie; mówi = świeci głośnik.
   Sprite HD dokładnie w połowie (88x68 na 44x34) przy lewej krawędzi; klatka mówi ma 100x68 z falami głosu z prawej, które zostają za ramką 44 px (ucięte),
   więc rozmiar i miejsce ciała się nie zmieniają; bez obrotu i bez skalowania, żeby piksele zostały ostre */
@keyframes kbBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
/* Paweł w drzwiach Odprawy: do wylotu prawdziwy jest niewidoczny, a w drzwiach wisi jego kopia za skrzydłami (widać ją, kiedy się rozsuną),
   tej samej wielkości co on, żeby przy wylocie nie rósł */
/* ekran misji w Odprawie, kineskop z błyskiem: jasny punkt, linia na całą szerokość, rozwinięcie, biały błysk i szum gasną w obraz;
   nowy obraz wchodzi szarpnięciem z szumem; gaśnie do linii i punktu. Wszystko w obrysie ekranu na ścianie (bez skali ponad 1), same transform i opacity */
.wz-brief{position:absolute;z-index:2;overflow:hidden;background:#05060d;opacity:0}
.wz-brief.on{opacity:1;animation:wzbOn .8s cubic-bezier(.2,.8,.3,1) both}
@keyframes wzbOn{0%,15%{transform:scale(.012,.016)}45%{transform:scale(1,.016)}100%{transform:none}}
.wz-brief.off{opacity:1;animation:wzbOff .7s ease-in both}
@keyframes wzbOff{0%{transform:none}35%{transform:scale(1,.016)}70%{transform:scale(.012,.016);opacity:1}100%{transform:scale(.012,.016);opacity:0}}
.wz-brief .kl{position:absolute;inset:0;opacity:0}
.wz-brief .kl>img{position:absolute;inset:0;width:100%;height:100%}
.wz-brief .kl.vis{opacity:1;z-index:2;animation:wzbImg .55s both}
.wz-brief.off .kl.vis{animation:none}
@keyframes wzbImg{0%{opacity:0;transform:translateX(-4%)}12%{opacity:.9;transform:translateX(3%)}24%{opacity:.35;transform:translateX(-2%)}40%{opacity:1;transform:translateX(1%)}55%,100%{opacity:1;transform:none}}
.wz-brief .kl::after{content:'';position:absolute;inset:0;background:url(img/orbita/brief/szum.webp) 0 0/120px 70px;image-rendering:pixelated;opacity:0}
.wz-brief .kl.vis::after{animation:wzbNzI .45s steps(4) both}
@keyframes wzbNzI{0%{opacity:.8;background-position:0 0}50%{opacity:.5;background-position:-40px -20px}100%{opacity:0;background-position:-10px -50px}}
.wz-brief .nz{position:absolute;left:0;top:0;width:200%;height:200%;z-index:7;background:url(img/orbita/brief/szum.webp) 0 0/120px 70px;image-rendering:pixelated;opacity:0}
.wz-brief.on .nz{animation:wzbJ .24s steps(1) 5,wzbNz 1.2s both}
@keyframes wzbJ{0%{transform:translate(0,0)}25%{transform:translate(-31%,-12%)}50%{transform:translate(-9%,-37%)}75%{transform:translate(-44%,-26%)}}
@keyframes wzbNz{0%,40%{opacity:.85}100%{opacity:0}}
.wz-brief .fl{position:absolute;inset:0;z-index:8;background:#eaffff;opacity:0}
.wz-brief.on .fl{animation:wzbFl .95s both}
.wz-brief.off .fl{animation:wzbFlOff .7s both}
@keyframes wzbFl{0%,45%{opacity:1}100%{opacity:0}}
@keyframes wzbFlOff{0%{opacity:0}30%,100%{opacity:1}}
.wz-brief .sz{position:absolute;inset:0;z-index:9;background:repeating-linear-gradient(180deg,rgba(5,7,15,.10) 0 1px,transparent 1px 3px),linear-gradient(rgba(90,216,255,.05),rgba(90,216,255,.05));box-shadow:inset 0 0 8px rgba(0,0,0,.65);pointer-events:none}
/* fala głosu na monitorze fotela (BR3), za oparciem: cisza = klatka 0, mówi = klatki 1-4 w pętli */
.wz-brief .fala{position:absolute;left:36.25%;top:28.15%;width:27.71%;height:25.93%}
.wz-brief .fala img{position:absolute;inset:0;width:100%;height:100%}
.wz-brief .fala .f1,.wz-brief .fala .f2,.wz-brief .fala .f3,.wz-brief .fala .f4,.wz-brief.mowi .fala .f0{opacity:0}
.wz-brief.mowi .fala .f1,.wz-brief.mowi .fala .f2,.wz-brief.mowi .fala .f3,.wz-brief.mowi .fala .f4{animation:wzbFala .6s steps(1) infinite}
.wz-brief.mowi .fala .f2{animation-delay:-.45s}.wz-brief.mowi .fala .f3{animation-delay:-.3s}.wz-brief.mowi .fala .f4{animation-delay:-.15s}
@keyframes wzbFala{0%{opacity:1}25%,100%{opacity:0}}
/* poświata ekranu na ścianie i stożki reflektorów, kiedy ekran działa */
.wz-pw{position:absolute;z-index:1;pointer-events:none;background:radial-gradient(closest-side,rgba(90,220,255,.35),rgba(90,220,255,.12) 60%,transparent);opacity:0;transition:opacity .6s}
.wz-sp{position:absolute;z-index:1;top:108px;width:70px;height:110px;pointer-events:none;background:linear-gradient(180deg,rgba(255,236,170,.55),rgba(255,236,170,0));opacity:0;transition:opacity .3s steps(3)}
.wz-sp.l{left:244px;transform:skewX(-14deg)}.wz-sp.p{left:472px;transform:skewX(14deg)}
/* drzwi z prawej w Odprawie: skrzydła drzwi zwykłych rozsuwają się (wylatuje Paweł) */
.wz-mini{position:absolute;right:14px;top:50px;width:128px;display:flex;flex-direction:column-reverse;gap:3px;z-index:6}
.wz-mini[hidden]{display:none}
.wz-mini i{display:flex;align-items:center;gap:5px;font-style:normal;font-family:var(--display);font-size:10px;color:#6f78a8;background:#0b0d1cc8;border:2px solid #2c3260;padding:3px 6px;line-height:1.1;white-space:nowrap;overflow:hidden}
.wz-mini i img{height:16px;opacity:.45}
.wz-mini i.done{color:#8fd4a0;border-color:#2f6b3a}.wz-mini i.done img{opacity:.9}
.wz-mini i.cur{color:#2a1c00;background:var(--y);border-color:var(--y)}.wz-mini i.cur img{opacity:1}
.wz-mini i.sp{border-style:dashed}
.wz-rank{position:absolute;right:14px;bottom:14px;display:flex;gap:4px;z-index:6}
.wz-rank i{position:relative;width:38px;height:38px;border:2px solid var(--c);background:#0b0d1c;overflow:hidden;box-sizing:border-box}
.wz-rank i img{width:34px;height:34px}
.wz-rank i:first-child{border-color:var(--y)}
.wz-rank i.off{opacity:.35}
/* sala z boku na cały kadr (scena pytania i kart, scena-tel.js pokojHtml): pytanie u góry, kafelki odpowiedzi na dolnym stropie pod płytami pól */
.wz-izo{position:absolute;inset:0;z-index:4;opacity:0;transform:scale(.6);transform-origin:480px 300px;transition:opacity .5s,transform .6s cubic-bezier(.4,0,.2,1);pointer-events:none}
.wz-izo.on{opacity:1;transform:none}
/* sala ma proporcje 2752:1536, scena 16:9: przy równej skali zostawał na dole pasek tła (4 px sceny, 8 px na telewizorze), więc w pionie sala jest rozciągnięta o 0,75% */
.wz-room{position:absolute;left:0;top:0;width:960px;height:540px}
.wz-room .tsk{transform:scale(2.6889,2.7091)}
.wz-room .tspr .pl2{font-size:5px;line-height:7px;white-space:nowrap;padding:0 1px;top:-2px}
.wz-sq{position:absolute;left:170px;right:170px;top:52px;display:flex;flex-direction:column;gap:6px}
.wz-tl{position:absolute;left:0;top:463px;width:960px;height:70px;display:block}
.wz-tl.wz-ans .wa{position:absolute;top:0;height:70px;box-sizing:border-box;gap:7px;padding:0 2px}
.wz-tl.wz-ans .wa>span:not(.l):not(.whos){font-size:15px;line-height:1.15}
.wz-tl .wa.pf{justify-content:center;font-family:var(--display);font-weight:400;font-size:18px}
.wz-pan{border:12px solid transparent;border-image:url(img/orbita/ui/panel.webp) 26 fill/24px;image-rendering:pixelated;padding:0 2px}
.wz-qt{font-family:var(--tk);-webkit-font-smoothing:none;font-size:21px;line-height:1.3;color:#eef1ff;padding:6px 8px}
.wz-chips{display:flex;gap:6px;flex-wrap:wrap}
.wz-chips span{font-family:var(--display);font-size:11px;color:#e4e8ff;background:#0b0d1ce6;border:2px solid #39407a;padding:2px 7px;display:flex;align-items:center;gap:4px}
.wz-chips span img{height:16px}
.wz-chips span.mod{color:#ffb3b3;border-color:#7a2a3a;background:#3a1020}
.wz-ans{display:flex;flex-direction:column;gap:6px}
.wz-ans .wa{display:flex;align-items:center;gap:10px;min-height:34px;border-style:solid;border-color:transparent;border-width:9px 12px 19px;border-image:url(img/orbita/ui/odp-a.webp) 14 14 28 14 fill/9px 12px 19px;image-rendering:pixelated;color:#fff;font-weight:800;font-size:16px;line-height:1.2;padding:0 6px}
.wz-ans .wa.c1{border-image-source:url(img/orbita/ui/odp-b.webp)}
.wz-ans .wa.c2{border-image-source:url(img/orbita/ui/odp-d.webp)}
.wz-ans .wa.c3{border-image-source:url(img/orbita/ui/odp-c.webp);color:#3a2400}
.wz-ans .wa .l{width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:#0b0d1c66;font-family:var(--display);font-weight:400;font-size:14px;flex:none}
.wz-ans .wa .whos{margin-left:auto;display:flex;gap:2px;flex-wrap:wrap;justify-content:flex-end}
.wz-ans .wa .whos img{width:22px;height:22px;border:2px solid var(--c);background:#0b0d1c}
/* odsłona „Promień” (makieta propozycje/kosmos/wieza/pokoj-tv.html, 3A): złe odpowiedzi po kolei przygasają i odsuwają się (--n),
   dobra wyskakuje, przez nią przechodzi błysk i wskakuje plakietka DOBRZE; twarze po kolei (--i); ciekawostka wchodzi na miejsce pytania.
   Tylko transform i opacity, raz na odsłonę */
.wz-ans .wa{position:relative}
.wz-odsl .wa.no{animation:wzaNo .4s ease-out forwards;animation-delay:calc(.5s + var(--n) * .18s)}
@keyframes wzaNo{to{opacity:.3;transform:scale(.95) translateX(10px)}}
.wz-odsl .wa.ok{z-index:2;animation:wzaOk .6s cubic-bezier(.3,1.7,.5,1) 1.2s both}
@keyframes wzaOk{50%{transform:scale(1.12)}100%{transform:scale(1.05)}}
.wz-ans .wa .bl{position:absolute;left:-12px;right:-12px;top:-9px;bottom:-19px;overflow:hidden;pointer-events:none}
.wz-ans .wa .bl::before{content:"";position:absolute;top:-10px;bottom:-10px;left:-60px;width:40px;background:linear-gradient(90deg,#fff0,#fffc,#fff0);transform:skewX(-20deg);animation:wzaBl 1.1s ease-in-out 1.3s 2}
@keyframes wzaBl{to{transform:translateX(480px) skewX(-20deg)}}
.wz-ans .wa .zn{position:absolute;right:-6px;top:-18px;z-index:4;font-family:var(--display);font-size:12px;background:#7be08a;color:#06301a;border:2px solid #06301a;padding:1px 6px;transform:scale(0) rotate(-12deg);animation:wzaZn .4s cubic-bezier(.3,1.9,.5,1) 1.6s forwards}
@keyframes wzaZn{to{transform:rotate(-8deg)}}
.wz-odsl .wa .whos img{opacity:0;animation:wzIn .25s ease-out forwards;animation-delay:calc(2.2s + var(--i,0) * .08s)}
.wz-odsl .wz-qt{animation:wzOut .3s ease-in 2.6s forwards}
.wz-qbox{position:relative}
.wz-odsl .wz-fakt{position:absolute;left:0;right:0;top:0;min-height:100%;box-sizing:border-box;opacity:0;transform:translateY(10px);animation:wzIn .4s ease-out 2.8s forwards}
@keyframes wzIn{to{opacity:1;transform:none}}
@keyframes wzOut{to{opacity:0}}
/* karty w pokoju piętra: rewersy z twarzami (kto wybrał), nad głową w pokoju mała karta, potem ikony kart i loty awarii */
.tspr .wk-hk{position:absolute;left:50%;top:-12px;width:11px;height:17px;margin-left:-5px;background:url(img/orbita/ui/rewers-karty.webp) center/contain no-repeat;transform:scale(0);transition:transform .3s cubic-bezier(.3,1.8,.5,1)}
.tspr.wyb .wk-hk{transform:none}
/* pokaz kart (makieta pokoj-tv.html, P1): duża karta z talii na środku pokoju, pod nią kto na kogo, potem zlatuje i maleje nad głowę (--tx, --ty);
   --d start, --t czas jednej karty, --s skala przy wielu osłonach. Tylko transform i opacity */
/* małe karty z talii nad głowami (do końca pytania): obok siebie w lekkim wachlarzu, bez nazw i bez obwódek */
.wk-mk{position:absolute;z-index:44;width:0;height:0;display:flex;justify-content:center;pointer-events:none}
.wk-mk span{flex:none;margin:0 1px;transform:translate(0,-100%) rotate(var(--r)) scale(0);transform-origin:50% 100%;animation:wkMk .4s cubic-bezier(.3,1.8,.5,1) forwards}
.wk-mk span img{display:block;width:20px;height:32px}
@keyframes wkMk{to{transform:translate(0,-100%) rotate(var(--r)) scale(1)}}
/* czcionka odpowiedzi i ciekawostki jak na telefonie (oprawa.css .ans .a .t): Orbita Tekst bez wygładzania */
.wz-ans .wa>span:not(.l):not(.whos){font-family:var(--tk);font-weight:400;font-size:20px;line-height:1.2;-webkit-font-smoothing:none;letter-spacing:0}
.wz-ans.pf{flex-direction:row}.wz-ans.pf .wa{flex:1;justify-content:center;font-family:var(--display);font-weight:400;font-size:18px;min-height:64px}
.wz-fakt{display:flex;gap:8px;align-items:center;font-family:var(--tk);-webkit-font-smoothing:none;font-size:17px;line-height:1.3;color:#e4e8ff}
.wz-fakt img{height:30px}
/* zegar nad sceną wieży (pasek i sekundy z app.js startTimer); #app nad wieżą ma klasę namapie (mapa.css) */
.wzeg{position:fixed;left:50%;top:calc(6.4*var(--u));transform:translateX(-50%);width:calc(48*var(--u));display:flex;align-items:center;gap:calc(1*var(--u));z-index:3}
.wzeg .tbar{flex:1}
.wzeg .secs{min-width:calc(5*var(--u))}
/* bęben losowania (mapa.css .losrl-w) */
@keyframes wlosw{from{transform:scale(1.4)}to{transform:none}}
