/* ============================================================
   down-web family — shared Telegram floating button (tg-fab).
   One identical file on down-web.com, bg.down-web.com and uniq.down-web.com.
   Self-contained: no framework classes, no images, no external fonts.
   ============================================================ */
.tg-fab{
  --tg-size:62px;
  --tg-grad:linear-gradient(140deg,#3fc0fe 0%,#2aabee 32%,#1d93d2 62%,#0d6efd 100%);
  position:fixed;
  right:calc(22px + env(safe-area-inset-right, 0px));
  bottom:calc(22px + env(safe-area-inset-bottom, 0px));
  z-index:1100;
  width:var(--tg-size); height:var(--tg-size);
  display:grid; place-items:center;
  text-decoration:none; -webkit-tap-highlight-color:transparent;
  animation:tgfab-float 4.2s ease-in-out infinite;
}
.tg-fab:hover,.tg-fab:focus-visible{ text-decoration:none; }
.tg-fab:focus-visible{ outline:3px solid #0d6efd; outline-offset:6px; border-radius:50%; }

/* pulsing halo */
.tg-fab__halo,
.tg-fab__halo::after{
  position:absolute; inset:0; border-radius:50%; content:'';
  background:radial-gradient(circle at 50% 50%, rgba(42,171,238,.55), rgba(42,171,238,0) 70%);
  animation:tgfab-pulse 2.8s cubic-bezier(.22,1,.36,1) infinite;
}
.tg-fab__halo::after{ animation-delay:1.4s; }

/* rotating gradient ring */
.tg-fab__ring{
  position:absolute; inset:-4px; border-radius:50%;
  background:conic-gradient(from 0deg, rgba(63,192,254,0) 0deg, rgba(63,192,254,.85) 90deg, rgba(13,110,253,.9) 190deg, rgba(63,192,254,0) 300deg);
  -webkit-mask:radial-gradient(circle, transparent 0 calc(50% - 3px), #000 calc(50% - 3px));
  mask:radial-gradient(circle, transparent 0 calc(50% - 3px), #000 calc(50% - 3px));
  animation:tgfab-spin 6s linear infinite;
  opacity:.9;
}

/* gradient disc with the plane */
.tg-fab__core{
  position:relative; width:100%; height:100%; border-radius:50%;
  display:grid; place-items:center; overflow:hidden;
  background:var(--tg-grad);
  box-shadow:0 12px 26px -10px rgba(29,147,210,.75), 0 4px 10px -4px rgba(15,23,42,.35),
             inset 0 1px 0 rgba(255,255,255,.45);
  transition:transform .28s cubic-bezier(.22,1,.36,1), box-shadow .28s cubic-bezier(.22,1,.36,1);
}
/* glass shine sweeping across the disc */
.tg-fab__core::after{
  content:''; position:absolute; top:-60%; left:-120%; width:80%; height:220%;
  background:linear-gradient(100deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.55) 50%, rgba(255,255,255,0) 100%);
  transform:rotate(18deg);
  animation:tgfab-shine 5.5s cubic-bezier(.22,1,.36,1) infinite;
}
.tg-fab__core svg{
  position:relative; z-index:2; width:54%; height:54%; display:block;
  filter:drop-shadow(0 1px 1px rgba(13,79,120,.35));
  transform:translate(-4%, 2%);
  transition:transform .28s cubic-bezier(.22,1,.36,1);
}
.tg-fab:hover .tg-fab__core,
.tg-fab:focus-visible .tg-fab__core{
  transform:scale(1.09);
  box-shadow:0 18px 34px -12px rgba(29,147,210,.9), 0 6px 14px -6px rgba(15,23,42,.4),
             inset 0 1px 0 rgba(255,255,255,.5);
}
.tg-fab:hover .tg-fab__core svg,
.tg-fab:focus-visible .tg-fab__core svg{ transform:translate(8%,-8%) rotate(-8deg); }
.tg-fab:active .tg-fab__core{ transform:scale(.96); }

/* hover label */
.tg-fab__label{
  position:absolute; right:calc(100% + 12px); top:50%; transform:translateY(-50%) translateX(8px);
  background:#0f172a; color:#fff; font:700 13px/1 'Manrope',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  letter-spacing:.01em; padding:9px 13px; border-radius:10px; white-space:nowrap;
  opacity:0; pointer-events:none; box-shadow:0 10px 24px -12px rgba(15,23,42,.8);
  transition:opacity .22s cubic-bezier(.22,1,.36,1), transform .22s cubic-bezier(.22,1,.36,1);
}
.tg-fab__label::after{
  content:''; position:absolute; left:100%; top:50%; margin-top:-5px;
  border:5px solid transparent; border-left-color:#0f172a;
}
.tg-fab:hover .tg-fab__label,
.tg-fab:focus-visible .tg-fab__label{ opacity:1; transform:translateY(-50%) translateX(0); }

@keyframes tgfab-float{
  0%,100%{ transform:translateY(0); }
  50%    { transform:translateY(-7px); }
}
@keyframes tgfab-pulse{
  0%  { transform:scale(.9);  opacity:.75; }
  70% { transform:scale(1.75); opacity:0; }
  100%{ transform:scale(1.75); opacity:0; }
}
@keyframes tgfab-spin{ to{ transform:rotate(360deg); } }
@keyframes tgfab-shine{
  0%,58%{ left:-120%; }
  85%,100%{ left:150%; }
}

/* the cookie dialog is a fixed bottom bar with a huge z-index — step aside while it is up */
body:has(#dw-consent) .tg-fab{ bottom:calc(92px + env(safe-area-inset-bottom, 0px)); }
@media (max-width:900px){
  body:has(#dw-consent) .tg-fab{ bottom:calc(112px + env(safe-area-inset-bottom, 0px)); }
}

@media (max-width:640px){
  .tg-fab{
    --tg-size:54px;
    right:calc(14px + env(safe-area-inset-right, 0px));
    bottom:calc(14px + env(safe-area-inset-bottom, 0px));
  }
  body:has(#dw-consent) .tg-fab{ bottom:calc(182px + env(safe-area-inset-bottom, 0px)); }
  .tg-fab__label{ display:none; }
}

@media (prefers-reduced-motion:reduce){
  .tg-fab,
  .tg-fab__halo,
  .tg-fab__halo::after,
  .tg-fab__ring,
  .tg-fab__core::after{ animation:none; }
  .tg-fab__halo,.tg-fab__halo::after{ opacity:.35; transform:scale(1.25); }
  .tg-fab__core::after{ display:none; }
}
