*{box-sizing:border-box;margin:0;padding:0}
:root{
  --panel:#c6c6c6; --panel-d:#555; --panel-l:#fff;
  --slot:#8b8b8b; --slot-d:#373737; --slot-l:#ffffff;
  --txt:#3f3f3f;
}
html,body{width:100%;height:100%;overflow:hidden;background:#000}
body{font-family:"Lucida Console","Courier New",monospace;user-select:none;-webkit-user-select:none;cursor:default}
canvas#c{display:block;width:100vw;height:100vh}
.hidden{display:none!important}
img{image-rendering:pixelated;image-rendering:crisp-edges}

/* ---------- общие элементы UI ---------- */
.btn{
  display:block;width:100%;padding:11px 8px;margin:5px 0;text-align:center;
  font-family:inherit;font-size:15px;font-weight:bold;color:#fff;text-shadow:2px 2px #3a3a3a;
  background:linear-gradient(#828282,#6c6c6c);
  border:2px solid;border-color:#b5b5b5 #4c4c4c #4c4c4c #b5b5b5;outline:2px solid #000;
  cursor:pointer;letter-spacing:.5px;
}
.btn:hover{background:linear-gradient(#8f9bcf,#6e7ab0);border-color:#cdd4f4 #3f4566 #3f4566 #cdd4f4}
.btn:active{transform:translateY(1px)}
.btn.small{padding:7px;font-size:13px}
.panel{
  background:var(--panel);
  border:3px solid;border-color:var(--panel-l) var(--panel-d) var(--panel-d) var(--panel-l);
  outline:2px solid #000;box-shadow:0 10px 40px rgba(0,0,0,.6);
  padding:14px;color:var(--txt);
}
.panel h2{font-size:15px;margin:0 0 10px;color:#3f3f3f;letter-spacing:1px}
.slot{
  width:46px;height:46px;position:relative;flex:none;
  background:var(--slot);
  border:2px solid;border-color:var(--slot-d) var(--slot-l) var(--slot-l) var(--slot-d);
  cursor:pointer;
}
.slot:hover{background:#a8a8a8}
.slot img{position:absolute;left:3px;top:3px;width:36px;height:36px;pointer-events:none}
.slot .cnt{position:absolute;right:2px;bottom:-1px;font-size:14px;font-weight:bold;color:#fff;text-shadow:1px 1px #000;pointer-events:none}
.grid{display:grid;gap:2px}
.uiOverlay{position:fixed;inset:0;background:rgba(10,10,14,.55);display:flex;align-items:center;justify-content:center;z-index:30}
.craftRow{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.arrow{font-size:30px;color:#7a7a7a;text-shadow:1px 1px #fff}
.kbd{display:inline-block;min-width:20px;text-align:center;background:#e8e8e8;border:1px solid #999;border-bottom-width:3px;border-radius:3px;padding:1px 5px;font-size:12px;color:#222;margin:0 2px}

/* ---------- главное меню (3D-сцена рендерится на канвасе позади) ---------- */
#menuUI{position:fixed;inset:0;z-index:50;overflow:hidden;background:transparent}
#menuShade{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,rgba(7,11,20,.88) 0%,rgba(7,11,20,.74) 26%,rgba(7,11,20,.38) 44%,rgba(7,11,20,0) 62%),
             radial-gradient(140% 90% at 50% 50%,transparent 58%,rgba(0,0,8,.55) 100%),
             linear-gradient(rgba(0,0,10,.35),transparent 14% 82%,rgba(0,0,10,.5))}
#menuSide{position:absolute;left:0;top:0;bottom:0;width:min(470px,94vw);z-index:2;
  display:flex;flex-direction:column;justify-content:safe center;gap:6px;padding:28px 34px 46px;
  background:linear-gradient(180deg,rgba(13,15,21,.66),rgba(13,15,21,.74));
  border-right:2px solid #000;box-shadow:inset -1px 0 0 rgba(255,255,255,.1);overflow-y:auto}
#logo{font-size:clamp(30px,4.6vw,54px);font-weight:900;letter-spacing:4px;line-height:1.02;
  background:linear-gradient(#fdfdfd 18%,#cfd9e8 42%,#8694ab 60%,#e8eef8 78%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 3px 0 rgba(20,26,40,.9)) drop-shadow(0 7px 16px rgba(0,0,0,.65));
  animation:logoFloat 5.5s ease-in-out infinite}
@keyframes logoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
#logo small{display:block;margin-top:4px;font-size:.4em;letter-spacing:14px;
  background:linear-gradient(#ffe957,#d8a410);-webkit-background-clip:text;background-clip:text;color:transparent}
#splash{position:relative;align-self:flex-end;margin:-14px 4px 0 0;color:#ffe957;font-weight:bold;
  font-size:clamp(12px,1.4vw,17px);text-shadow:2px 2px #3f3a00,0 0 14px rgba(255,233,87,.45);
  transform:rotate(-6deg);animation:pulse 1.1s ease-in-out infinite;z-index:1}
@keyframes pulse{0%,100%{transform:rotate(-6deg) scale(1)}50%{transform:rotate(-6deg) scale(1.1)}}
#menuBox{width:100%;margin-top:16px}
#menuBox .row{display:flex;gap:8px;align-items:center;margin:6px 0;color:#dfe7f2;text-shadow:1px 1px #000;font-size:13px}
#seedIn,#nickIn{flex:1;padding:9px 10px;font-family:inherit;font-size:14px;color:#eef2f8;
  background:rgba(10,14,24,.72);border:1px solid rgba(150,180,230,.35);border-bottom-color:rgba(150,180,230,.16);
  outline:none;transition:border-color .15s,box-shadow .15s}
#seedIn:focus,#nickIn:focus{border-color:#7fb0ff;box-shadow:0 0 10px rgba(110,160,255,.35)}
/* ---- кнопки меню: тактический AAA-стиль — скошенные углы, стекло, янтарный акцент ---- */
#menuUI .btn{
  position:relative;display:block;width:100%;margin:7px 0;padding:14px 18px 14px 30px;
  font-family:inherit;font-size:15px;font-weight:bold;letter-spacing:2.5px;
  color:#c8d4e6;text-align:left;text-shadow:0 1px 2px rgba(0,0,0,.8);cursor:pointer;
  background:linear-gradient(96deg,rgba(14,20,32,.94) 0%,rgba(30,40,58,.88) 55%,rgba(14,20,32,.94) 100%);
  border:1px solid rgba(125,155,205,.30);border-left:3px solid rgba(125,155,205,.45);
  outline:none;overflow:hidden;
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,14px 100%,0 calc(100% - 14px));
  transition:color .16s,border-color .16s,background .16s,transform .16s cubic-bezier(.2,.85,.3,1.2),box-shadow .2s}
#menuUI .btn::before{ /* световой блик, проходящий по кнопке */
  content:"";position:absolute;top:0;bottom:0;left:-45%;width:32%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.16) 50%,transparent);
  transform:skewX(-22deg);transition:left .5s ease;pointer-events:none}
#menuUI .btn:hover::before{left:115%}
#menuUI .btn::after{ /* ромб-маркер слева */
  content:"";position:absolute;left:12px;top:50%;width:7px;height:7px;
  background:#ffc14d;box-shadow:0 0 8px rgba(255,193,77,.9);
  transform:translateY(-50%) rotate(45deg) scale(0);transition:transform .18s cubic-bezier(.2,.85,.3,1.4)}
#menuUI .btn:hover{
  color:#fff;transform:translateX(5px);
  background:linear-gradient(96deg,rgba(34,40,52,.95) 0%,rgba(58,62,72,.9) 55%,rgba(34,40,52,.95) 100%);
  border-color:rgba(255,193,77,.8);border-left-color:#ffc14d;
  box-shadow:0 0 20px rgba(255,180,70,.16),inset 0 0 26px rgba(255,193,77,.05)}
#menuUI .btn:hover::after{transform:translateY(-50%) rotate(45deg) scale(1)}
#menuUI .btn:active{transform:translateX(5px) scale(.98);box-shadow:none;
  background:linear-gradient(96deg,rgba(10,14,22,.96),rgba(24,30,42,.92))}
#menuUI .btn.small{padding:10px 14px 10px 26px;font-size:12.5px;letter-spacing:2px;
  clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px))}
#menuUI .btn.primary,#menuUI #btnContinue{
  padding:16px 18px 16px 30px;font-size:16.5px;letter-spacing:3px;color:#eaffe2;
  background:linear-gradient(96deg,rgba(30,84,24,.95) 0%,rgba(64,138,46,.92) 50%,rgba(30,84,24,.95) 100%);
  border-color:rgba(150,230,120,.55);border-left:3px solid #7ed95c;
  box-shadow:0 0 22px rgba(90,200,70,.18),inset 0 1px 0 rgba(255,255,255,.12);
  animation:btnPulse 2.6s ease-in-out infinite}
@keyframes btnPulse{0%,100%{box-shadow:0 0 14px rgba(90,200,70,.14),inset 0 1px 0 rgba(255,255,255,.12)}
  50%{box-shadow:0 0 26px rgba(110,225,85,.34),inset 0 1px 0 rgba(255,255,255,.12)}}
#menuUI .btn.primary:hover,#menuUI #btnContinue:hover{
  color:#fff;border-color:#c9ffb4;border-left-color:#c9ffb4;
  background:linear-gradient(96deg,rgba(40,104,30,.96) 0%,rgba(82,166,58,.94) 50%,rgba(40,104,30,.96) 100%);
  box-shadow:0 0 30px rgba(120,230,90,.4),inset 0 0 24px rgba(180,255,150,.08);animation:none}
#menuUI .btn.primary::after,#menuUI #btnContinue::after{background:#aef58e;box-shadow:0 0 10px rgba(150,255,110,.9)}
#menuVer{position:absolute;left:12px;bottom:8px;color:rgba(220,230,245,.75);font-size:12px;text-shadow:1px 1px #000;z-index:2}
#menuCopy{position:absolute;right:12px;bottom:8px;color:rgba(220,230,245,.75);font-size:12px;text-shadow:1px 1px #000;z-index:2}
#touchWarn{color:#ffd2d2;font-size:13px;text-shadow:1px 1px #000;margin-top:8px}

/* ---------- загрузка ---------- */
#loadUI{position:fixed;inset:0;z-index:60;background:#2a2a2a url() ;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:#fff}
#loadUI h3{font-size:18px;text-shadow:2px 2px #000;letter-spacing:1px}
#loadBarWrap{width:min(420px,80vw);height:18px;background:#000;border:2px solid #777}
#loadBar{height:100%;width:0%;background:linear-gradient(#71d44c,#3f9a22)}
#loadTip{color:#bdbdbd;font-size:13px}

/* ---------- HUD ---------- */
#hud{position:fixed;inset:0;pointer-events:none;z-index:10}
#cross{position:absolute;left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%);mix-blend-mode:difference}
#cross:before,#cross:after{content:"";position:absolute;background:#ddd}
#cross:before{left:50%;top:0;width:2px;height:100%;transform:translateX(-50%)}
#cross:after{top:50%;left:0;height:2px;width:100%;transform:translateY(-50%)}
#hotbar{position:absolute;left:50%;bottom:6px;transform:translateX(-50%);display:flex;padding:2px;background:rgba(0,0,0,.35);border:2px solid rgba(255,255,255,.25)}
#hotbar .slot{margin:1px;cursor:default;background:rgba(70,70,70,.65);border-color:#222 #999 #999 #222}
#hotbar .slot.sel{border:2px solid #fff;outline:2px solid #fff}
#hearts{position:absolute;left:50%;bottom:62px;transform:translateX(-227px);font-size:19px;letter-spacing:2px;text-shadow:1px 1px #000}
#air{position:absolute;left:50%;bottom:84px;transform:translateX(40px);font-size:17px;letter-spacing:2px;color:#9fd8ff;text-shadow:1px 1px #000}
#hint{position:absolute;left:50%;bottom:96px;transform:translateX(-50%);color:#fff;font-size:15px;text-shadow:2px 2px #000;text-align:center}
#pickup{position:absolute;left:50%;bottom:128px;transform:translateX(-50%);color:#ffe957;font-size:14px;text-shadow:2px 2px #000;opacity:0;transition:opacity .4s}
#speedo{position:absolute;right:16px;bottom:16px;color:#fff;font-size:22px;font-weight:bold;text-shadow:2px 2px #000;text-align:right}
#speedo small{display:block;font-size:12px;color:#cfcfcf}
#debug{position:absolute;left:8px;top:8px;color:#fff;font-size:12px;text-shadow:1px 1px #000;background:rgba(0,0,0,.35);padding:6px 8px;line-height:1.5;white-space:pre}
#wm{position:absolute;right:10px;top:8px;color:rgba(255,255,255,.5);font-size:12px;text-shadow:1px 1px #000}
#lockHint{position:absolute;left:50%;top:38%;transform:translateX(-50%);color:#fff;font-size:17px;text-shadow:2px 2px #000;background:rgba(0,0,0,.45);padding:10px 16px;border:1px solid rgba(255,255,255,.3)}

/* ---------- чат ---------- */
#chatBox{position:absolute;left:10px;bottom:96px;width:min(440px,60vw);font-size:13px;z-index:11}
#chatLog{display:flex;flex-direction:column;gap:2px;margin-bottom:6px}
.chatMsg{background:rgba(0,0,0,.45);color:#fff;padding:3px 8px;text-shadow:1px 1px #000;opacity:1;transition:opacity .6s;word-wrap:break-word}
.chatMsg.faded{opacity:0}
#chatBox.open .chatMsg.faded{opacity:1}
.chatMsg b{color:#ffe957}
#chatIn{width:100%;padding:6px 8px;font-family:inherit;font-size:13px;background:rgba(0,0,0,.6);color:#fff;border:1px solid rgba(255,255,255,.4);outline:none;pointer-events:auto}
#waterOv{position:fixed;inset:0;background:rgba(24,64,148,.38);z-index:8;pointer-events:none}
#dmgOv{position:fixed;inset:0;background:radial-gradient(transparent 40%,rgba(190,0,0,.55));z-index:9;pointer-events:none;opacity:0;transition:opacity .5s}
#toasts{position:fixed;right:12px;top:42px;z-index:40;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:#c6c6c6;border:2px solid;border-color:#fff #555 #555 #fff;outline:2px solid #000;padding:8px 14px;min-width:230px;
  color:#3f3f3f;animation:tin .35s ease-out;box-shadow:0 6px 18px rgba(0,0,0,.5)}
.toast b{display:block;color:#b8860b;font-size:13px}
.toast span{font-size:13px}
@keyframes tin{from{transform:translateX(120%)}to{transform:translateX(0)}}

/* ---------- курсорный предмет ---------- */
#cur{position:fixed;width:40px;height:40px;z-index:99;pointer-events:none;transform:translate(-20px,-20px)}
#cur img{width:40px;height:40px}
#cur .cnt{position:absolute;right:0;bottom:-2px;font-size:14px;font-weight:bold;color:#fff;text-shadow:1px 1px #000}

/* ---------- инвентарь / верстак ---------- */
#invUI .panel,#tableUI .panel{width:480px;max-width:94vw}
.invGrid{grid-template-columns:repeat(9,46px)}
.cg2{grid-template-columns:repeat(2,46px)}
.cg3{grid-template-columns:repeat(3,46px)}
.sep{height:8px}

/* ---------- пауза / смерть / помощь / рецепты ---------- */
#pauseUI .panel,#deathUI .panel{width:330px}
#deathUI{background:rgba(120,0,0,.5)}
#deathUI h2{color:#7a1010;text-align:center;font-size:22px}
#deathSub{text-align:center;font-size:13px;margin-bottom:10px}
#helpUI .panel{width:440px;max-width:94vw;max-height:86vh;display:flex;flex-direction:column}
#helpUI .hl{overflow-y:auto;flex:1;min-height:0} /* список скроллится, кнопка закрытия всегда видна */
#helpUI .hl{font-size:13.5px;line-height:2;color:#2f2f2f}
#recipesUI .panel{width:520px;max-width:94vw;max-height:84vh;display:flex;flex-direction:column}
#recipesList{overflow-y:auto;padding-right:6px;flex:1}
.recRow{display:flex;align-items:center;gap:10px;padding:7px 4px;border-bottom:1px solid #a9a9a9}
.recRow .mini{display:grid;grid-template-columns:repeat(3,30px);gap:1px}
.mslot{width:30px;height:30px;background:var(--slot);border:1px solid;border-color:var(--slot-d) var(--slot-l) var(--slot-l) var(--slot-d);position:relative}
.mslot img{position:absolute;inset:2px;width:26px;height:26px}
.recRow .out{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:bold}
.recName{font-size:12.5px;color:#333;flex:1}

/* ---------- печь / сундук ---------- */
#furnUI .panel{width:480px;max-width:94vw}
#furnTop{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:12px}
#furnCol{display:flex;flex-direction:column;align-items:center;gap:4px}
#furnFire{font-size:22px;filter:grayscale(1);transition:filter .3s}
#furnFire.lit{filter:none}
#furnProg{width:60px;height:10px;background:#555;border:1px solid #222}
#furnProg div{height:100%;width:0%;background:linear-gradient(#ffb142,#e85a00)}
#chestUI .panel{width:480px;max-width:94vw}

/* ---------- табличка ---------- */
#signUI .panel{width:340px}
#signTxt{width:100%;padding:8px;font-family:inherit;font-size:14px;background:#fdf6e3;color:#3a2c18;border:2px solid #8a6a40;outline:none}

/* ---------- карта ---------- */
#mapUI{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:25;pointer-events:auto;cursor:crosshair;
  border:3px solid;border-color:#fff #555 #555 #fff;outline:2px solid #000;background:#222;box-shadow:0 10px 40px rgba(0,0,0,.6)}
#mapUI canvas{display:block;image-rendering:pixelated}
/* проигрыватель */
#jukeList{max-height:280px;overflow-y:auto;margin:8px 0;border:2px solid;border-color:var(--slot-d) var(--slot-l) var(--slot-l) var(--slot-d);background:#8b8b8b;padding:4px}
.jukeTrack{padding:7px 10px;margin:2px 0;font-size:13px;color:#2c2c2c;background:#a8a8a8;cursor:pointer;border:1px solid #777}
.jukeTrack:hover{background:#c0c8e8}
.jukeTrack.playing{background:#9ed489;font-weight:bold}
.jukeTrack small{color:#555;float:right}
#jukeNow{font-size:12px;color:#444;margin:4px 0 8px}
/* пианино-композер */
#pianoKeys{position:relative;height:120px;margin:8px 0;user-select:none}
.pkey{position:absolute;top:0;width:30px;height:118px;background:linear-gradient(#fff,#e8e8e8);
  border:1px solid #555;cursor:pointer;z-index:1}
.pkey:active,.pkey.on{background:linear-gradient(#cfe0ff,#a8c4f0)}
.pkey.black{width:20px;height:72px;background:linear-gradient(#3a3a3e,#1d1d1f);z-index:2}
.pkey.black:active,.pkey.black.on{background:linear-gradient(#4a5a8a,#2c3a5e)}
.pkey small{position:absolute;bottom:3px;left:0;right:0;text-align:center;font-size:9px;color:#888;pointer-events:none}
#pianoInfo{font-size:11.5px;color:#4a4a4a;margin:4px 0}
#pianoInfo.rec{color:#a02020;font-weight:bold}
#pianoName{flex:1;padding:7px 10px;font-family:inherit;font-size:13px;
  background:#8b8b8b;color:#222;border:2px solid;border-color:#373737 #fff #fff #373737;outline:none}
#mapCap{position:absolute;left:0;right:0;bottom:-26px;text-align:center;color:#fff;font-size:12px;text-shadow:1px 1px #000}

/* ---------- настройки ---------- */
#setUI .panel{width:380px;max-width:94vw}
.setRow{display:flex;align-items:center;gap:10px;margin:9px 0;font-size:13px}
.setRow label{flex:1}
.setRow input[type=range]{flex:1.2}
.setRow .setVal{min-width:46px;text-align:right;font-weight:bold}

/* ---------- список игроков (Tab) ---------- */
#tabList{position:fixed;left:50%;top:54px;transform:translateX(-50%);z-index:22;min-width:240px;
  background:rgba(0,0,0,.55);border:2px solid rgba(255,255,255,.3);padding:8px 14px;pointer-events:none}
#tabList .tabHead{color:#ffe957;font-size:13px;font-weight:bold;text-shadow:1px 1px #000;margin-bottom:6px;text-align:center}
#tabList .tabRow{color:#fff;font-size:13px;text-shadow:1px 1px #000;padding:1px 0}

/* ---------- голод ---------- */
#food{position:absolute;left:50%;bottom:62px;transform:translateX(40px);font-size:17px;letter-spacing:2px;text-shadow:1px 1px #000}
#drunkOv{position:fixed;inset:0;z-index:7;pointer-events:none;opacity:0;transition:opacity 1s;
  background:radial-gradient(transparent 30%,rgba(120,40,160,.25))}

/* ---------- творческий режим ---------- */
#creUI .panel{width:480px;max-width:94vw}
#creList{display:grid;grid-template-columns:repeat(9,46px);gap:2px;max-height:248px;overflow-y:auto;padding-right:4px;margin-bottom:8px}
.mrow{display:flex;gap:6px}
.mrow .btn{margin:5px 0}
#impFile{display:none}

/* список одиночных миров */
#worldList{max-height:240px;overflow-y:auto;margin:6px 0}
.worldRow{display:flex;align-items:center;gap:8px;padding:8px 10px;margin:3px 0;background:#a8a8a8;
  border:2px solid;border-color:#fff #555 #555 #fff;cursor:pointer}
.worldRow:hover{background:#b8c4e0}
.worldRow b{flex:1;color:#222;font-size:14px}
.worldRow small{color:#4a4a4a;font-size:11px}
.worldRow .wdel{flex:none;padding:2px 8px;background:#9a5050;color:#fff;border:1px solid #5a2020;cursor:pointer;font-size:12px}
.worldRow .wdel:hover{background:#c06060}
#worldsUI .row{color:var(--txt);text-shadow:none}
#worldsUI input[type=text],#wName,#wSeed{flex:1;padding:7px 10px;font-family:inherit;font-size:13px;
  background:#8b8b8b;color:#222;border:2px solid;border-color:#373737 #fff #fff #373737;outline:none}
#creSearch{width:100%;margin:0 0 8px;padding:7px 10px;font-family:inherit;font-size:13px;
  background:#8b8b8b;color:#222;border:2px solid;border-color:#373737 #fff #fff #373737;outline:none}
#creSearch::placeholder{color:#5a5a5a}
.slot.cre-empty{cursor:default;background:#7c7c7c}
.slot.cre-empty:hover{background:#7c7c7c}

/* ---------- творческие вкладки (v4.8) ---------- */
#creTabs{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}
.creTab{font-family:inherit;font-size:11px;padding:5px 8px;cursor:pointer;color:#fff;text-shadow:1px 1px #333;
  background:linear-gradient(#828282,#6c6c6c);border:2px solid;border-color:#b5b5b5 #4c4c4c #4c4c4c #b5b5b5;outline:1px solid #000}
.creTab.active{background:linear-gradient(#8f9bcf,#6e7ab0);border-color:#cdd4f4 #3f4566 #3f4566 #cdd4f4}

/* ---------- FPV-режим дрона (v4.8) ---------- */
#fpvOv{position:fixed;inset:0;z-index:12;pointer-events:none}
#jamOv{position:absolute;inset:0;opacity:0;pointer-events:none;mix-blend-mode:screen;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.22) 0 2px,transparent 2px 5px,rgba(180,200,255,.14) 5px 6px,transparent 6px 11px),
             repeating-linear-gradient(90deg,rgba(255,80,80,.06) 0 1px,transparent 1px 4px,rgba(80,255,120,.05) 4px 5px,transparent 5px 7px),
             repeating-linear-gradient(90deg,rgba(255,255,255,.07) 0 1px,transparent 1px 3px);
  animation:jamFlick .09s steps(2) infinite}
@keyframes jamFlick{0%{background-position:0 0,0 0,0 0}100%{background-position:0 7px,-4px 0,3px 0}}
#jamTear{position:absolute;left:0;right:0;top:40%;height:8px;opacity:0;pointer-events:none;mix-blend-mode:screen;
  background:linear-gradient(rgba(255,255,255,.1),rgba(255,255,255,.65) 50%,rgba(120,160,255,.2))}
#jamWarn{position:absolute;left:22px;bottom:64px;color:#ff5544;font-size:15px;font-weight:bold;text-shadow:1px 1px #000;
  background:rgba(25,0,0,.6);border:1px solid rgba(255,80,60,.65);padding:7px 12px;
  animation:recBlink .45s steps(1) infinite}
.fpvCorner{position:absolute;width:60px;height:60px;border:3px solid rgba(120,255,120,.7)}
.fpvCorner.tl{left:18px;top:18px;border-right:none;border-bottom:none}
.fpvCorner.tr{right:18px;top:18px;border-left:none;border-bottom:none}
.fpvCorner.bl{left:18px;bottom:18px;border-right:none;border-top:none}
.fpvCorner.br{right:18px;bottom:18px;border-left:none;border-top:none}
#fpvInfo{position:absolute;left:50%;top:24px;transform:translateX(-50%);color:#9f9;font-size:15px;text-shadow:1px 1px #000;background:rgba(0,0,0,.35);padding:5px 12px}
#fpvRec{position:absolute;right:34px;top:26px;color:#f55;font-size:13px;text-shadow:1px 1px #000;animation:recBlink 1s steps(1) infinite}
@keyframes recBlink{50%{opacity:0}}

/* ---------- виньетка при шейдерах (v4.8) ---------- */
#vignette{position:fixed;inset:0;z-index:6;pointer-events:none;
  background:radial-gradient(ellipse at center,transparent 62%,rgba(8,8,16,.38) 100%)}

/* ---------- v4.9: панели настроек/помощи поверх главного меню ---------- */
#helpUI,#setUI,#recipesUI{z-index:70}

/* ---------- тепловизор мавика (v5.0) ---------- */
#thermal{position:fixed;inset:0;z-index:11;pointer-events:none;overflow:hidden}
#thermal .hot{position:absolute;transform:translate(-50%,-50%);border-radius:50%;filter:blur(2px)}

/* ---------- танковый прицел (v5.0) ---------- */
#tankAim{position:fixed;z-index:14;pointer-events:none;color:#ff4040;font-size:30px;font-weight:bold;
  text-shadow:0 0 4px #000,1px 1px #000;transform:translate(-50%,-50%)}

/* ---------- тепловизор мавика (v5.0) ---------- */
#thermal{position:fixed;inset:0;z-index:11;pointer-events:none}
#thermal .hot{position:absolute;transform:translate(-50%,-60%);border-radius:50%;filter:blur(2px)}
