/* Wywiad fali (ui/wave-intel.js): skład nadchodzącej fali (RTS: kolumna pod panelem SQUAD, niżej) i karta NEW CONTACT.
   Numer fali i liczba robali stoją na płycie, więc w RTS żetony nie mają nagłówka. W FPP nagłówek to wiersz
   „INCOMING … 12” kolumny wizjera, tuż nad żetonami. Ten sam język co płyta: stal, ścięte rogi, złote akcenty;
   robal nowy = czerwony akcent. */
#wave-intel { position:absolute;top:84px;left:50%;transform:translateX(-50%);z-index:4;pointer-events:auto;
  display:grid;gap:6px;justify-items:center;max-width:min(94vw,980px);color:#f3eddd;text-shadow:0 1px 3px #000; }
#wave-intel header { display:none; }
#wave-intel ul { display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:0;padding:0;list-style:none; }
.intel-chip { position:relative;display:flex;align-items:center;gap:7px;padding:4px 10px 4px 4px;border:1px solid #6f6c61;
  background:linear-gradient(180deg,#2e3230 0%,#15191a 18%,#0a0d0e 85%,#212525 100%);
  clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);
  box-shadow:inset 0 0 0 2px #060707; }
.intel-chip span { font-size:12px;font-weight:650;letter-spacing:.04em;white-space:nowrap; }
.intel-chip b { font-size:14px;font-weight:750;color:#ffd79a;font-variant-numeric:tabular-nums; }
.intel-chip em { font-style:normal;font-size:8px;font-weight:800;letter-spacing:.16em;padding:2px 5px;color:#fff0e8;background:#9b100b;border:1px solid #ef7762; }
.intel-chip.featured { border-color:#e6b45c;box-shadow:inset 0 0 0 2px #060707,0 0 14px #e6b45c44; }
.intel-chip.boss { border-color:#ef6251;background:linear-gradient(180deg,#3a1714 0%,#1c0b09 20%,#0d0706 85%,#2a1310 100%); }
.intel-chip.boss span { color:#ffb3a3; }
/* Miniboss ALPHA: złoto zamiast czerwieni bossa; BOSS i ALPHA zostają napisami także w trybie mini. */
.intel-chip.alpha { border-color:#e6b45c;background:linear-gradient(180deg,#3a2c12 0%,#1c1508 20%,#0e0b05 85%,#2a2010 100%); }
.intel-chip.alpha span { color:#ffd98a; }
.intel-chip.alpha em { background:#8a5d0f;border-color:#ffd07a;color:#fff6de; }
.intel-chip.mini.alpha em { position:static;width:auto;height:auto;padding:2px 5px;font-size:8px;border-radius:0;box-shadow:none; }
#wave-intel.fpp .intel-chip.alpha { border-color:#ffc05a88;background:#2a1f0766; }
#wave-intel.fpp .intel-chip.alpha em { position:static;width:auto;height:auto;padding:1px 4px;font-size:7px;border-radius:0; }
/* Dużo typów w fali: żeton „mini” to portret i liczba, NEW zmienia się w czerwony róg portretu,
   BOSS zostaje napisem. „+N MORE” zbiera nadmiar (lista w podpowiedzi). */
.intel-chip.mini { gap:5px;padding-right:8px; }
.intel-chip.mini span { display:none; }
.intel-chip.mini:not(.boss):not(.alpha) em { position:absolute;left:30px;top:3px;width:9px;height:9px;padding:0;font-size:0;border-radius:50%;box-shadow:0 0 6px #ef7762; }
.intel-chip.more { gap:5px;padding:4px 10px; }
.intel-chip.more b { color:#d9d2bf; }
.intel-chip.more span { font-size:9px;font-weight:800;letter-spacing:.18em;color:#a7a293; }
.intel-portrait { display:block;width:38px;height:38px;flex:none;background:radial-gradient(circle at 50% 60%,#3b3f38 0%,#121514 70%) center/cover no-repeat;
  border:1px solid #4f4d45;background-size:cover;background-position:center; }
/* FPP: pod licznikami fali w prawej kolumnie HUD, z dala od broni i celownika. */
/* FPP (26.09, Topek): hologram wizjera jak prawa kolumna HUD — ta sama paleta (--holo z visor.css),
   perspektywa i bezwładność (--vx/--vy z ui/visor.js). Siatka 2 kolumn × do 3 rzędów w szerokości kolumny
   zamiast jednego długiego rzędu przez pół ekranu. NEW to czerwony róg portretu, nazwa zawsze widoczna. */
#wave-intel.fpp { top:386px;right:66px;left:auto;transform:none;justify-items:end;width:252px;max-width:252px;gap:6px; }
/* Wiersz „INCOMING … 12” w tym samym kroju co wiersze WAVE i STARTS IN nad nim (commander.css, hud.css). */
#wave-intel.fpp header { display:grid;grid-template-columns:1fr auto;align-items:baseline;column-gap:10px;width:100%;padding:0 0 5px;border-bottom:1px solid #a9ecff2e; }
#wave-intel.fpp header small { font-size:12px;font-weight:400;letter-spacing:.2em;color:#bfded5;opacity:.6; }
#wave-intel.fpp header b { font-size:26px;font-weight:500;line-height:1;font-variant-numeric:tabular-nums;color:#ff9171; }
#wave-intel.fpp ul { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;width:100%; }
#wave-intel.fpp .intel-chip { min-width:0;gap:5px;padding:2px 6px 2px 2px;background:#04202a59;border:1px solid #a9ecff2e;box-shadow:none;clip-path:polygon(5px 0,100% 0,100% calc(100% - 5px),calc(100% - 5px) 100%,0 100%,0 5px); }
/* Nazwa do dwóch linii w kafelku (BROOD / CARRIER), zamiast ucinania wielokropkiem. */
#wave-intel.fpp .intel-chip span,#wave-intel.fpp .intel-chip.mini span { display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;flex:1;min-width:0;overflow:hidden;white-space:normal;line-height:1.05;font-size:8.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase; }
#wave-intel.fpp .intel-chip { min-height:28px; }
#wave-intel.fpp .intel-chip b { font-size:12px; }
#wave-intel.fpp .intel-portrait { width:24px;height:24px;border-color:#a9ecff33; }
#wave-intel.fpp .intel-chip em { position:absolute;left:19px;top:2px;width:7px;height:7px;padding:0;font-size:0;border-radius:50%;box-shadow:0 0 6px #ef7762; }
#wave-intel.fpp .intel-chip.boss { border-color:#ff645066;background:#2a0b0766; }
#wave-intel.fpp .intel-chip.boss em { position:static;width:auto;height:auto;padding:1px 4px;font-size:7px;border-radius:0; }
#wave-intel.fpp .intel-chip.more { justify-content:center; }
#wave-intel.fpp .intel-chip.featured { border-color:#ffc05a88; }
body.fpp.visor #wave-intel.fpp { color:var(--holo);text-shadow:var(--holo-glow);transform-origin:100% 50%;transform:translate(var(--vx),var(--vy)) perspective(760px) rotateY(-11deg); }
body.fpp.visor #wave-intel.fpp header small { color:#a9ecffbf;opacity:1; }
body.fpp.visor #wave-intel.fpp header b,body.fpp.visor #wave-intel.fpp .intel-chip b { color:var(--holo); }

#new-contact { position:absolute;right:18px;top:34%;z-index:6;display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;
  width:min(440px,calc(100vw - 36px));padding:14px 16px 16px;color:#f3eddd;pointer-events:none;
  background:repeating-linear-gradient(110deg,#ffffff04 0 1px,transparent 1px 5px),linear-gradient(180deg,#221412f2,#0b0807f5);
  border:1px solid #c0523f;box-shadow:inset 0 0 0 2px #060505,0 10px 40px #000a,0 0 26px #ef625133;
  clip-path:polygon(12px 0,calc(100% - 12px) 0,100% 12px,100% calc(100% - 12px),calc(100% - 12px) 100%,12px 100%,0 calc(100% - 12px),0 12px); }
#new-contact .contact-art .intel-portrait { width:112px;height:112px;border-color:#7b3a2e;box-shadow:inset 0 0 18px #000; }
#new-contact .enemy-stage-canvas { display:block;width:132px;height:99px;border:1px solid #7b3a2e;box-shadow:inset 0 0 18px #000; }
#new-contact small { display:block;font-size:10px;font-weight:800;letter-spacing:.3em;color:#ff8a72;animation:contact-blink .9s steps(2,end) 3; }
#new-contact h3 { margin:4px 0 6px;font-size:24px;font-weight:750;letter-spacing:.06em;text-transform:uppercase;color:#fff3e0; }
#new-contact p { margin:0;font-size:13px;line-height:1.35;color:#e2d8c3; }
#new-contact .contact-counter { margin-top:8px;color:#bfe9ff; }
#new-contact .contact-counter b { font-size:9px;letter-spacing:.2em;padding:2px 5px;margin-right:4px;color:#06222c;background:#7fe6ff; }
#new-contact .contact-timer { position:absolute;left:12px;right:12px;bottom:6px;height:2px;background:#ef6251;transform-origin:left;animation:contact-timer 7.5s linear forwards; }
#new-contact.entering { animation:contact-in .38s cubic-bezier(.2,.9,.25,1.2) both; }
#new-contact.leaving { animation:contact-out .4s ease-in both; }
@keyframes contact-in { from { opacity:0;transform:translateX(40px) scale(.96); } to { opacity:1;transform:none; } }
@keyframes contact-out { to { opacity:0;transform:translateX(30px); } }
@keyframes contact-timer { from { transform:scaleX(1); } to { transform:scaleX(0); } }
@keyframes contact-blink { 50% { opacity:.35; } }
/* RTS: karta obok bocznego panelu dowódcy, nie na nim. */
body.playing:not(.fpp) #new-contact { right:calc(var(--fit-command-width,var(--command-width,280px)) + 18px);top:40%; }
/* RTS (27.09, Topek: „przenieś, pomniejsz, zabiera za dużo miejsca; widoczne na początku fali, a potem nie”):
   wąska kolumna pod panelem SQUAD (pozycja i szerokość z ui/wave-intel.js place()), żetony o połowę niższe,
   nazwa zawsze widoczna. Klasa .away = schowana (po 10 s od ogłoszenia składu; wraca w ostatnich 10 s przed falą
   i przy najechaniu na INCOMING na płycie). Wyjazd w lewo, bez zmiany układu (opacity + transform). */
body.playing:not(.fpp) #wave-intel:not(.fpp) { position:fixed;top:var(--intel-top,190px);left:var(--intel-left,24px);transform:none;
  justify-items:stretch;width:var(--intel-width,220px);max-width:var(--intel-width,220px);gap:4px;
  transition:opacity .3s ease-out,transform .3s ease-out,visibility 0s; }
body.playing:not(.fpp) #wave-intel.away { opacity:0;visibility:hidden;transform:translateX(-16px);pointer-events:none;
  transition:opacity .6s ease-in,transform .6s ease-in,visibility 0s linear .6s; }
#wave-intel:not(.fpp) ul { display:grid;grid-template-columns:minmax(0,1fr);gap:3px; }
#wave-intel:not(.fpp) .intel-chip { gap:6px;padding:2px 8px 2px 2px;clip-path:polygon(5px 0,100% 0,100% calc(100% - 5px),calc(100% - 5px) 100%,0 100%,0 5px); }
#wave-intel:not(.fpp) .intel-portrait { width:24px;height:24px; }
#wave-intel:not(.fpp) .intel-chip span,#wave-intel:not(.fpp) .intel-chip.mini span { display:block;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:11px;letter-spacing:.03em; }
#wave-intel:not(.fpp) .intel-chip b { font-size:12px; }
#wave-intel:not(.fpp) .intel-chip em,#wave-intel:not(.fpp) .intel-chip.mini:not(.boss):not(.alpha) em { position:static;width:auto;height:auto;padding:1px 4px;font-size:7px;border-radius:0;box-shadow:none; }
#wave-intel:not(.fpp) .intel-chip.more { justify-content:center;padding:3px 8px; }
#wave-intel:not(.fpp) .intel-chip.more span { flex:none; }
body.playing:not(.fpp) #wave-status .wave-card[data-kind="incoming"] { pointer-events:auto;cursor:help; }
@media (prefers-reduced-motion:reduce) { body.playing:not(.fpp) #wave-intel:not(.fpp),body.playing:not(.fpp) #wave-intel.away { transition-duration:1ms; } }
/* FPP: lewa strona, w wolnym pasie między składem drużyny a komunikatami — prawą zajmuje karta
   wydarzenia misji (mission-event.css) i liczniki fali. Wjazd od lewej. */
body.fpp #new-contact { left:18px;right:auto;top:36%; }
body.fpp #new-contact.entering { animation-name:contact-in-left; }
body.fpp #new-contact.leaving { animation-name:contact-out-left; }
@keyframes contact-in-left { from { opacity:0;transform:translateX(-40px) scale(.96); } to { opacity:1;transform:none; } }
@keyframes contact-out-left { to { opacity:0;transform:translateX(-30px); } }
@media (max-width:720px) { #new-contact { top:auto;bottom:120px;right:12px; } #new-contact .contact-art .intel-portrait,#new-contact .enemy-stage-canvas { width:72px;height:72px; } #new-contact h3 { font-size:18px; } }
@media (prefers-reduced-motion:reduce) { #new-contact.entering,#new-contact.leaving,#new-contact small { animation:none; } }
