/* =========================================================
   WoW Prime — «Эфир Prime» (efir.html): стримы игроков.
   Токены и общие компоненты — main.css и pages.css; здесь только своё, префикс ef-.
   Шапка: арт assets/art/efir/hero.webp (зеркало-портал), поверх — слой портала: внутри рамы эфир (превью идущего стрима
   или переливы), от кольца расходятся «волны вещания», вокруг поднимаются искры (canvas). Положение кольца
   efir.js считает по видимой рамке картинки (object-fit: cover) и пишет в --px/--py/--pr.
   ≤1100 — сцена в колонку; ≤900 — мобильная раскладка. «Уменьшить движение» — всё стоит.
   ========================================================= */
:root{
  --ef-live:#FF4F78;
  --ef-live-soft:#FFA3B8;
  --ef-tw:#B28CFF;
  --ef-yt:#FF4D6A;
  --ef-vk:#4DA3FF;
  --ef-t0:#5AD8FF;   /* Глашатай */
  --ef-t1:#B08CFF;   /* Вестник */
  --ef-t2:#F2C46D;   /* Герольд */
  --ef-t3:#FF7AD9;   /* Легенда */
}
@property --ef-a{syntax:'<angle>';inherits:false;initial-value:0deg}

/* ---------- общие мелочи ---------- */
.ef-live{display:inline-flex;align-items:center;gap:6px;padding:4px 9px 4px 8px;border-radius:7px;font-size:10px;font-weight:700;line-height:1;letter-spacing:.16em;text-transform:uppercase;color:#fff;white-space:nowrap;
  background:linear-gradient(135deg,#FF4F78,#E05CFF);box-shadow:0 0 16px -3px rgba(255,79,120,.85),inset 0 1px 0 rgba(255,255,255,.25)}
.ef-live::before{content:"";width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 6px #fff;animation:ef-blink 1.5s ease-in-out infinite}
@keyframes ef-blink{50%{opacity:.25;transform:scale(.7)}}
.ef-dot{display:inline-block;width:8px;height:8px;flex:none;border-radius:50%;background:var(--ef-live);box-shadow:0 0 0 4px rgba(255,79,120,.16),0 0 10px var(--ef-live);animation:ef-dot 1.8s ease-in-out infinite}
.ef-dot.is-off{background:var(--muted2);box-shadow:none;animation:none}
@keyframes ef-dot{50%{box-shadow:0 0 0 7px rgba(255,79,120,0),0 0 14px var(--ef-live)}}
.ef-chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:7px;font-size:11px;font-weight:600;letter-spacing:.08em;white-space:nowrap;color:var(--body);background:rgba(20,30,70,.55);border:1px solid var(--line3)}
.ef-chip img{width:16px;height:16px;margin-left:-3px}
.ef-chip .ico{width:13px;height:13px}
.ef-chip.r-hard{color:var(--e-soft);border-color:rgba(255,138,76,.45);background:rgba(255,138,76,.1)}
.ef-chip.r-crazy{color:var(--v-soft);border-color:rgba(176,140,255,.45);background:rgba(176,140,255,.1)}
.ef-chip.p-twitch{color:var(--ef-tw)}
.ef-chip.p-youtube{color:var(--ef-yt)}
.ef-chip.p-vk{color:var(--ef-vk)}
.ef-soon{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:999px;font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;vertical-align:2px;color:var(--gd-soft);background:rgba(242,196,109,.12);border:1px solid rgba(242,196,109,.4)}
.ef-muted{color:var(--muted)}
.ef-ico{width:16px;height:16px}
.ef-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* аватар: картинка канала или монограмма; у того, кто в эфире, — бегущее кольцо */
.ef-ava{position:relative;display:block;flex:none;width:var(--s,48px);height:var(--s,48px);border-radius:50%}
.ef-ava>img,.ef-ava>.ef-mono{position:relative;z-index:1;display:grid;place-items:center;width:100%;height:100%;border-radius:50%;object-fit:cover;background:#121A3E;box-shadow:0 0 0 2px rgba(6,9,20,.9)}
.ef-mono{font-family:var(--display);font-weight:800;font-size:calc(var(--s,48px) * .42);line-height:1;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.6);
  background:radial-gradient(120% 120% at 25% 15%,hsl(var(--h,250) 80% 62% / .95),hsl(calc(var(--h,250) + 40) 70% 30%) 70%)!important}
.ef-ava::before{content:"";position:absolute;inset:-3px;border-radius:50%;background:conic-gradient(from var(--ef-a),var(--c,var(--cy)),transparent 40%,var(--c,var(--cy)) 70%,transparent);opacity:.55}
.ef-ava.is-live::before{inset:-4px;opacity:1;background:conic-gradient(from var(--ef-a),#FF4F78,#E05CFF,#A77BFF,#5AD8FF,#FF4F78);animation:ef-rot 3.2s linear infinite}
@keyframes ef-rot{to{--ef-a:360deg}}
@keyframes ef-spin{to{transform:rotate(360deg)}}

/* ступень */
.ef-tier{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px 0 7px;border-radius:999px;font-family:var(--serif);font-size:12px;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;color:var(--c);
  background:color-mix(in srgb,var(--c) 12%,rgba(8,12,30,.7));border:1px solid color-mix(in srgb,var(--c) 50%,transparent);box-shadow:0 0 14px -6px var(--c)}
.ef-tier::before{content:"";width:17px;height:17px;margin:-2px 0 -2px -4px;background:center/contain no-repeat;filter:drop-shadow(0 0 4px var(--c))}
.ef-tier.ef-t0::before{background-image:url(../art/efir/tier-0.webp)}
.ef-tier.ef-t1::before{background-image:url(../art/efir/tier-1.webp)}
.ef-tier.ef-t2::before{background-image:url(../art/efir/tier-2.webp)}
.ef-tier.ef-t3::before{background-image:url(../art/efir/tier-3.webp)}
.ef-t0{--c:var(--ef-t0)}.ef-t1{--c:var(--ef-t1)}.ef-t2{--c:var(--ef-t2)}.ef-t3{--c:var(--ef-t3)}

/* кнопка «Следить» */
.ef-follow{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:38px;padding:0 16px;border-radius:11px;cursor:pointer;
  font-family:var(--serif);font-size:13px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;color:var(--cy-soft);
  background:linear-gradient(180deg,rgba(40,60,130,.45),rgba(14,20,50,.6));border:1px solid rgba(130,200,255,.42);transition:color .2s,border-color .2s,box-shadow .2s,background .2s,transform .2s}
.ef-follow:hover{color:#fff;border-color:rgba(130,225,255,.8);box-shadow:0 0 22px -6px rgba(90,216,255,.8);transform:translateY(-1px)}
.ef-follow .ico{width:16px;height:16px}
.ef-follow.is-on{color:#0A1033;border-color:transparent;background:var(--crystal);box-shadow:0 0 20px -6px rgba(160,140,255,.9)}
.ef-follow.is-on:hover{color:#0A1033}
.ef-follow.is-ring .ico{animation:ef-ring .9s ease}
@keyframes ef-ring{0%,100%{transform:rotate(0)}15%{transform:rotate(22deg)}30%{transform:rotate(-18deg)}45%{transform:rotate(12deg)}60%{transform:rotate(-8deg)}75%{transform:rotate(4deg)}}
.ef-follow.is-burst::after{content:"";position:absolute;inset:-12px;border-radius:16px;pointer-events:none;border:2px solid rgba(169,235,255,.8);animation:ef-burst .6s ease-out forwards}
@keyframes ef-burst{from{opacity:1;transform:scale(.85)}to{opacity:0;transform:scale(1.25)}}
.ef-follow:disabled{opacity:.6;cursor:progress}
.ef-follow-sm{height:32px;padding:0 12px;font-size:12px;border-radius:9px}

.ef-iconbtn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:38px;padding:0 13px;border-radius:11px;cursor:pointer;text-decoration:none;white-space:nowrap;
  font-size:13px;color:var(--body);background:rgba(30,44,96,.35);border:1px solid var(--line3);transition:color .2s,border-color .2s,box-shadow .2s}
.ef-iconbtn:hover{color:#fff;border-color:rgba(90,216,255,.6);box-shadow:0 0 18px -6px rgba(90,216,255,.7)}
.ef-iconbtn[aria-pressed="true"]{color:#fff;border-color:rgba(167,123,255,.7);background:rgba(167,123,255,.18)}
.ef-iconbtn .ico{width:16px;height:16px}

/* =========================================================
   Шапка: портал
   ========================================================= */
/* высота шапки — по пропорции арта (1584×672): зеркало видно целиком, без обрезки сверху */
.ef-ph{min-height:max(520px,min(840px,calc(100vw / 2.36)))}
.ef-ph .ph-bg .art-img{object-position:60% 30%}
.ef-ph .ph-title{animation:prime-in 1.3s cubic-bezier(.2,.7,.2,1) .1s backwards}
.ef-ph .ph-lead{animation:fade-up .9s cubic-bezier(.2,.7,.2,1) .35s backwards}
.ef-ph .ph-stats{animation:fade-up .9s cubic-bezier(.2,.7,.2,1) .5s backwards}
.ef-ph .ph-actions{animation:fade-up .9s cubic-bezier(.2,.7,.2,1) .65s backwards}
.ef-ph .ph-stat b{display:flex;align-items:center;gap:10px}
.ef-stat-live b .ef-dot{width:10px;height:10px}

.ef-portal{position:absolute;z-index:-1;left:var(--px,72%);top:var(--py,42%);width:var(--pr,180px);height:var(--pr,180px);transform:translate(-50%,-50%);opacity:0;transition:opacity 1.2s ease .2s;pointer-events:none}
.ef-portal.is-ready{opacity:1}
.ef-portal-core{position:absolute;inset:0;border-radius:50%;overflow:hidden;isolation:isolate}
.ef-portal-swirl{position:absolute;inset:-25%;border-radius:50%;opacity:.8;mix-blend-mode:screen;filter:blur(10px);
  background:conic-gradient(from 0deg,rgba(90,216,255,0),rgba(90,216,255,.55) 12%,rgba(167,123,255,0) 30%,rgba(224,92,255,.45) 48%,rgba(90,216,255,0) 66%,rgba(169,235,255,.5) 84%,rgba(90,216,255,0));
  animation:ef-spin 16s linear infinite}
.ef-portal-swirl::after{content:"";position:absolute;inset:18%;border-radius:50%;background:conic-gradient(from 90deg,rgba(255,255,255,0),rgba(169,235,255,.45),rgba(255,255,255,0) 35%,rgba(224,92,255,.35) 60%,rgba(255,255,255,0));animation:ef-spin 9s linear infinite reverse}
.ef-portal-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.18);filter:saturate(1.15) contrast(1.05);transition:opacity 1.2s ease,transform 1.6s cubic-bezier(.2,.7,.2,1)}
.ef-portal-img.is-in{opacity:.95;transform:scale(1)}
.ef-portal-core::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;
  box-shadow:inset 0 0 calc(var(--pr,180px) * .16) calc(var(--pr,180px) * .05) rgba(4,6,16,.9),inset 0 0 8px 1px rgba(169,235,255,.7)}
/* волны — внутри зеркала: расходятся из центра и гаснут у рамы (круг обрезан ядром портала) */
.ef-portal-waves{position:absolute;inset:0;pointer-events:none}
.ef-portal-waves i{position:absolute;inset:0;border-radius:50%;border:1.5px solid rgba(190,240,255,.6);box-shadow:0 0 12px rgba(169,235,255,.35),inset 0 0 12px rgba(169,235,255,.25);opacity:0;animation:ef-ripple 5.4s cubic-bezier(.2,.6,.4,1) infinite}
.ef-portal-waves i:nth-child(2){animation-delay:1.8s}
.ef-portal-waves i:nth-child(3){animation-delay:3.6s}
.ef-portal.is-live .ef-portal-waves i{border-color:rgba(255,150,190,.7);animation-duration:3.6s}
.ef-portal.is-live .ef-portal-waves i:nth-child(2){animation-delay:1.2s}
.ef-portal.is-live .ef-portal-waves i:nth-child(3){animation-delay:2.4s}
@keyframes ef-ripple{0%{opacity:0;transform:scale(.12)}25%{opacity:.7}85%{opacity:.08}100%{opacity:0;transform:scale(.96)}}
.ef-portal-label{position:absolute;left:50%;top:100%;display:flex;align-items:center;gap:8px;transform:translate(-50%,calc(var(--pr,180px) * .42));padding:6px 12px 6px 6px;border-radius:999px;white-space:nowrap;pointer-events:auto;text-decoration:none;
  color:var(--head);font-size:13px;background:rgba(6,9,20,.72);border:1px solid rgba(255,130,170,.45);box-shadow:0 10px 30px -10px rgba(0,0,0,.8),0 0 24px -10px rgba(255,79,120,.9);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;transition:opacity .6s,transform .6s}
.ef-portal.is-live .ef-portal-label{opacity:1}
.ef-portal-label:hover{color:#fff;border-color:rgba(255,160,190,.8)}
.ef-portal-label b{font-weight:600}
.ef-motes{position:absolute;inset:0;z-index:-1;width:100%;height:100%;pointer-events:none}

/* =========================================================
   Сцена: плеер и список эфиров
   ========================================================= */
.ef-head-tools{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.ef-stage{display:grid;grid-template-columns:minmax(0,1fr) 352px;gap:20px;align-items:start}
.ef-stage[hidden],.ef-empty[hidden],.ef-list[hidden],.ef-chat[hidden],.ef-tabs[hidden],.ef-now[hidden],.ef-recent[hidden]{display:none}
.ef-main{min-width:0}
.ef-screen{padding:10px;border-radius:24px;transition:box-shadow .6s}
.ef-screen::after{content:"";position:absolute;inset:-1px;z-index:3;border-radius:inherit;padding:2px;pointer-events:none;opacity:0;transition:opacity .8s;
  background:conic-gradient(from var(--ef-a),rgba(90,216,255,0) 0deg,rgba(90,216,255,.95) 50deg,rgba(167,123,255,.95) 110deg,rgba(255,79,120,.95) 170deg,rgba(90,216,255,0) 230deg,rgba(90,216,255,0) 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:ef-rot 7s linear infinite}
.ef-screen.is-live{box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 30px 80px -30px rgba(0,0,0,.9),0 0 90px -30px rgba(167,123,255,.7)}
.ef-screen.is-live::after{opacity:1}
.ef-player{position:relative;aspect-ratio:16/9;border-radius:15px;overflow:hidden;background:radial-gradient(70% 90% at 50% 40%,#101a44,#04060f)}
.ef-player iframe{position:absolute;inset:0;width:100%;height:100%;border:0;opacity:0;transition:opacity .6s ease}
.ef-player iframe.is-on{opacity:1}
/* подключение: мерцающая заставка, пока грузится плеер площадки */
.ef-connect{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--body);font-size:14px;letter-spacing:.06em;
  background:radial-gradient(60% 70% at 50% 45%,rgba(30,44,96,.55),rgba(4,6,15,.96));transition:opacity .5s}
.ef-connect.is-done{opacity:0;pointer-events:none}
.ef-connect img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.28;filter:blur(6px) saturate(1.2);transform:scale(1.06)}
.ef-connect>span{position:relative}
.ef-orb{position:relative;width:64px;height:64px;border-radius:50%}
.ef-orb::before,.ef-orb::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid transparent;border-top-color:var(--cy);border-right-color:rgba(167,123,255,.8);animation:ef-spin 1.1s linear infinite}
.ef-orb::after{inset:10px;border-top-color:var(--mg);border-right-color:transparent;border-left-color:rgba(90,216,255,.6);animation-duration:1.7s;animation-direction:reverse}
/* без встраивания (канал YouTube ещё не опознан) — постер со ссылкой */
.ef-poster{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center;color:var(--body)}
.ef-poster b{font-family:var(--serif);font-size:24px;color:var(--head)}
.ef-ended{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center;
  background:rgba(4,6,15,.82);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fade-up .4s ease}
.ef-ended b{font-family:var(--serif);font-size:26px;color:var(--head)}

/* о том, кто на сцене */
.ef-now{display:flex;align-items:center;gap:16px;margin-top:14px;padding:16px 18px;border-radius:18px;animation:fade-up .5s cubic-bezier(.2,.7,.2,1)}
.ef-now-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.ef-now-name{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.ef-now-name b{font-family:var(--serif);font-size:24px;line-height:1.1;color:var(--head)}
.ef-now-title{font-size:15px;line-height:1.45;color:var(--body);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ef-now-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:13px;color:var(--muted)}
.ef-now-meta .ef-stat{display:inline-flex;align-items:center;gap:5px;color:var(--body);font-variant-numeric:tabular-nums}
.ef-now-meta .ef-stat .ico{width:14px;height:14px;color:var(--muted)}
.ef-now-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}

/* список эфиров справа */
.ef-side{position:relative;display:flex;flex-direction:column;gap:12px;min-width:0}
.ef-side-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 4px}
.ef-side-head .lbl{display:flex;align-items:center;gap:8px}
.ef-tabs{display:flex;padding:3px;gap:3px;border-radius:10px;background:rgba(20,30,70,.4);border:1px solid var(--line2)}
.ef-tabs button{min-height:30px;padding:0 12px;border-radius:8px;font-family:var(--display);font-weight:600;font-size:11px;letter-spacing:.12em;color:var(--body);background:transparent;border:0;cursor:pointer}
.ef-tabs button.is-on{color:#081230;background:var(--crystal)}
.ef-list{display:flex;flex-direction:column;gap:10px;max-height:calc((100vw - 2 * var(--gutter) - 372px) * .5625 + 110px);overflow:auto;padding:2px 4px 4px 2px;scrollbar-width:thin;scrollbar-color:rgba(140,180,255,.3) transparent}
.ef-item{position:relative;display:grid;grid-template-columns:132px minmax(0,1fr);gap:12px;align-items:center;width:100%;padding:8px;border-radius:15px;text-align:left;color:inherit;font:inherit;cursor:pointer;
  background:linear-gradient(180deg,rgba(30,44,96,.42),rgba(12,18,44,.6));border:1px solid var(--line2);transition:transform .25s,border-color .25s,box-shadow .25s,background .25s}
.ef-item.is-new{animation:ef-item-in .55s cubic-bezier(.2,.7,.2,1) calc(var(--i,0) * .07s) backwards}
@keyframes ef-item-in{from{opacity:0;transform:translateX(16px)}}
.ef-item:hover{transform:translateX(-3px);border-color:rgba(90,216,255,.5);box-shadow:0 0 26px -10px rgba(90,216,255,.7)}
.ef-item.is-on{border-color:rgba(255,100,150,.75);background:linear-gradient(100deg,rgba(255,79,120,.16),rgba(12,18,44,.65) 60%);box-shadow:0 0 0 1px rgba(255,79,120,.3),0 0 30px -10px rgba(255,79,120,.8)}
.ef-item.is-on::before{content:"";position:absolute;left:-1px;top:16%;bottom:16%;width:3px;border-radius:3px;background:linear-gradient(180deg,#FF4F78,#E05CFF);box-shadow:0 0 10px #FF4F78}
.ef-thumb{position:relative;display:block;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:radial-gradient(80% 90% at 30% 20%,rgba(167,123,255,.35),transparent 60%),#0E1534}
.ef-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .5s}
.ef-item:hover .ef-thumb img{transform:scale(1.06)}
.ef-thumb .ef-live{position:absolute;left:6px;top:6px;padding:3px 6px;font-size:8.5px;letter-spacing:.12em}
.ef-thumb .ef-view{position:absolute;right:6px;bottom:6px;display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border-radius:5px;font-size:11px;font-variant-numeric:tabular-nums;color:#fff;background:rgba(4,6,15,.75)}
.ef-thumb .ef-view .ico{width:12px;height:12px}
.ef-thumb .ef-ava{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}
.ef-item-body{display:flex;flex-direction:column;gap:4px;min-width:0}
.ef-item-name{display:flex;align-items:center;gap:6px;font-weight:600;font-size:14px;color:var(--head);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ef-item-title{font-size:12.5px;line-height:1.35;color:var(--body);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ef-item-meta{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.ef-item-meta .ico{width:12px;height:12px}
.ef-item .ef-pf{width:15px;height:15px;flex:none}
.ef-pf.p-twitch{color:var(--ef-tw)}.ef-pf.p-youtube{color:var(--ef-yt)}.ef-pf.p-vk{color:var(--ef-vk)}
.ef-chat{position:relative;height:clamp(420px,calc((100vw - 2 * var(--gutter) - 372px) * .5625 + 110px),720px);border-radius:16px;overflow:hidden;background:#0B0F22;border:1px solid var(--line2)}
.ef-chat iframe{width:100%;height:100%;border:0}
.ef-chat-note{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;height:100%;padding:20px;text-align:center;color:var(--muted);font-size:14px}

/* пусто: никто не в эфире */
.ef-empty{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px;align-items:center;padding:clamp(24px,3.4vw,44px);overflow:hidden}
.ef-empty-art{position:relative;display:grid;place-items:center;aspect-ratio:1/1;max-width:340px;width:100%;margin:0 auto}
.ef-empty-art{overflow:hidden}
/* алмаз эфира (assets/art/efir/diamond.webp): парит, под ним дышит свечение, вокруг вспыхивают блики — всё внутри рамки */
.ef-empty-glow{position:absolute;inset:12%;border-radius:50%;background:radial-gradient(closest-side,rgba(143,134,255,.4),rgba(90,216,255,.14) 58%,transparent 74%);animation:fx-pulse 4.6s ease-in-out infinite;--o1:.6;--o2:1}
.ef-diamond{position:relative;width:80%;height:auto;animation:ef-diamond 6s ease-in-out infinite;filter:drop-shadow(0 0 22px rgba(143,134,255,.45))}
@keyframes ef-diamond{0%,100%{transform:translateY(4px) rotate(-1.5deg)}50%{transform:translateY(-10px) rotate(1.5deg)}}
.ef-glint{position:absolute;left:var(--x);top:var(--y);width:16px;height:16px;opacity:0;pointer-events:none;
  background:radial-gradient(closest-side,#fff,rgba(190,240,255,.7) 45%,transparent 72%);clip-path:polygon(50% 0,57% 43%,100% 50%,57% 57%,50% 100%,43% 57%,0 50%,43% 43%);animation:ef-twinkle 3.4s ease-in-out var(--d) infinite}
@keyframes ef-twinkle{0%,100%{opacity:0;transform:scale(.3) rotate(0)}45%{opacity:1;transform:scale(1) rotate(40deg)}}
.ef-diamond-s{flex:none;width:72px;height:72px;filter:drop-shadow(0 0 12px rgba(143,134,255,.6));animation:ef-diamond 6s ease-in-out infinite}
/* кристалл эфира — рисуем сами: у иконок предметов непрозрачный фон */
.ef-crystal{position:relative;display:block;flex:none;width:var(--cs,58px);height:var(--cs,58px);transform:rotate(45deg);border-radius:calc(var(--cs,58px) * .16);
  background:linear-gradient(135deg,#F4FCFF 0%,#9BEBFF 26%,#8F86FF 60%,#D877FF 100%);box-shadow:0 0 calc(var(--cs,58px) * .7) rgba(167,123,255,.85),0 0 calc(var(--cs,58px) * .2) #fff inset;animation:ef-crystal 5s ease-in-out infinite}
.ef-crystal::before{content:"";position:absolute;inset:18%;border-radius:calc(var(--cs,58px) * .08);background:linear-gradient(135deg,rgba(255,255,255,.95),rgba(255,255,255,0) 70%);opacity:.75}
.ef-crystal::after{content:"";position:absolute;left:50%;top:-30%;width:2px;height:160%;transform:translateX(-50%) rotate(-45deg);background:linear-gradient(180deg,transparent,rgba(255,255,255,.8),transparent);opacity:.5}
@keyframes ef-crystal{50%{transform:rotate(45deg) translate(-5px,-5px) scale(1.04);box-shadow:0 0 calc(var(--cs,58px) * 1.1) rgba(167,123,255,1),0 0 calc(var(--cs,58px) * .3) #fff inset}}
.ef-crystal-l{--cs:86px}
.ef-crystal-s{--cs:40px;margin:0 8px}
@keyframes ef-float{50%{transform:translateY(-10px) rotate(3deg)}}
.ef-empty-copy{display:flex;flex-direction:column;align-items:flex-start;gap:14px}
.ef-empty-copy .card-title-l{font-size:clamp(28px,2.6vw,36px)}
.ef-recent{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:6px}
.ef-recent li{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:12px;font-size:13.5px;color:var(--body);background:rgba(20,30,70,.35);border:1px solid var(--line)}
.ef-recent li b{color:var(--head);font-weight:600}
.ef-recent li span:last-child{margin-left:auto;color:var(--muted);white-space:nowrap;font-size:12.5px}
.ef-recent .ef-pf{width:15px;height:15px}

/* =========================================================
   Стримеры
   ========================================================= */
.ef-roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px}
.ef-card{display:flex;flex-direction:column;gap:14px;padding:22px;border-radius:20px;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.ef-roster:not(.is-in):not(.is-static) .ef-card{opacity:0}
.ef-roster.is-in .ef-card{animation:fade-up .7s cubic-bezier(.2,.7,.2,1) calc(var(--i,0) * .07s) backwards}
.ef-roster.is-static .ef-card{animation:none}
.ef-card:hover{transform:translateY(-5px);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 30px 60px -28px rgba(0,0,0,.9),0 0 40px -16px rgba(90,216,255,.6)}
.ef-card:hover::before{opacity:1}
.ef-card.is-live{box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 24px 60px -24px rgba(0,0,0,.8),0 0 46px -18px rgba(255,79,120,.8)}
.ef-card.is-live::before{background:linear-gradient(135deg,rgba(255,120,160,.85),rgba(224,92,255,.35) 40%,rgba(120,150,255,.08) 65%,rgba(90,216,255,.6));opacity:.9}
.ef-card.is-hl{animation:ef-hl 1.8s ease 2}
@keyframes ef-hl{50%{box-shadow:0 0 0 2px rgba(169,235,255,.8),0 0 50px -6px rgba(90,216,255,.9)}}
.ef-card-top{display:flex;align-items:center;gap:14px}
.ef-card-id{display:flex;flex-direction:column;gap:6px;min-width:0}
.ef-card-name{font-family:var(--serif);font-size:23px;line-height:1.05;color:var(--head);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ef-card-tags{display:flex;flex-wrap:wrap;gap:6px}
.ef-card-about{font-size:14px;line-height:1.6;color:var(--body);overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;min-height:0}
.ef-card-when{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.ef-card-when .ico{width:15px;height:15px;color:var(--cy)}
.ef-card-live{display:flex;flex-direction:column;align-items:flex-start;gap:7px;width:100%;padding:11px 13px;border-radius:13px;text-align:left;font:inherit;color:inherit;cursor:pointer;
  background:linear-gradient(100deg,rgba(255,79,120,.18),rgba(20,30,70,.3));border:1px solid rgba(255,100,150,.4);transition:box-shadow .25s,border-color .25s}
.ef-card-live:hover{border-color:rgba(255,140,180,.85);box-shadow:0 0 26px -8px rgba(255,79,120,.85)}
.ef-card-live-top{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.ef-card-live-top .ef-live{flex:none;margin-right:4px}
.ef-card-live-top .ico{width:13px;height:13px;margin-left:4px}
.ef-card-live-title{font-size:13.5px;line-height:1.4;color:var(--head);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ef-card-live-go{display:inline-flex;align-items:center;gap:7px;font-family:var(--serif);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ef-live-soft);transition:color .2s}
.ef-card-live-go .ico{width:11px;height:11px}
.ef-card-live:hover .ef-card-live-go{color:#fff}
.ef-card-foot{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:14px;border-top:1px solid var(--line)}
.ef-plats{display:flex;gap:6px}
.ef-plats a{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;text-decoration:none;background:rgba(30,44,96,.4);border:1px solid var(--line3);transition:transform .2s,border-color .2s,box-shadow .2s}
.ef-plats a:hover{transform:translateY(-2px)}
.ef-plats a .ico{width:18px;height:18px}
.ef-plats a.p-twitch{color:var(--ef-tw)}.ef-plats a.p-twitch:hover{border-color:var(--ef-tw);box-shadow:0 0 16px -4px var(--ef-tw)}
.ef-plats a.p-youtube{color:var(--ef-yt)}.ef-plats a.p-youtube:hover{border-color:var(--ef-yt);box-shadow:0 0 16px -4px var(--ef-yt)}
.ef-plats a.p-vk{color:var(--ef-vk)}.ef-plats a.p-vk:hover{border-color:var(--ef-vk);box-shadow:0 0 16px -4px var(--ef-vk)}
.ef-fans{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.ef-fans .ico{width:14px;height:14px}
.ef-invite{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:22px;align-items:center;padding:26px 28px;border-radius:20px}
.ef-invite b{display:block;font-family:var(--serif);font-size:24px;color:var(--head);margin-bottom:4px}

/* =========================================================
   Путь голоса: ступени стримера
   ========================================================= */
.ef-path{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:22px}
.ef-path::before,.ef-path::after{content:"";position:absolute;z-index:0;left:12.5%;right:12.5%;top:86px;height:2px;border-radius:2px;pointer-events:none}
.ef-path::before{background:rgba(140,180,255,.16)}
.ef-path::after{background:linear-gradient(90deg,var(--ef-t0),var(--ef-t1),var(--ef-t2),var(--ef-t3),var(--ef-t0)) 0 0/200% 100%;box-shadow:0 0 12px rgba(167,123,255,.8);
  transform:scaleX(0);transform-origin:left;transition:transform 2.2s cubic-bezier(.4,0,.2,1) .2s;animation:ef-flow 6s linear infinite}
.ef-path.is-in::after{transform:scaleX(1)}
@keyframes ef-flow{to{background-position:-200% 0}}
.ef-step{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:10px;padding:22px 18px 22px;border-radius:20px;text-align:center;opacity:0}
.ef-path.is-in .ef-step{opacity:1;animation:fade-up .8s cubic-bezier(.2,.7,.2,1) calc(.25s + var(--i) * .35s) backwards}
/* наведение: карточка приподнимается, рамка загорается цветом ступени, эмблема поворачивается, по стеклу пробегает блик */
.ef-step{overflow:hidden;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.ef-step::after{content:"";position:absolute;inset:0;z-index:2;border-radius:inherit;pointer-events:none;opacity:0;
  background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,.13) 50%,transparent 62%) 130% 0/260% 100% no-repeat}
.ef-step:hover{transform:translateY(-6px);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 26px 60px -26px rgba(0,0,0,.9),0 0 46px -14px var(--c)}
.ef-step:hover::before{opacity:1;background:linear-gradient(135deg,var(--c),color-mix(in srgb,var(--c) 25%,transparent) 40%,rgba(120,150,255,.08) 65%,var(--c))}
.ef-step:hover::after{animation:ef-shine .9s ease-out}
.ef-step:hover .ef-crest{transform:scale(1.08) rotate(-5deg)}
@keyframes ef-shine{from{opacity:1;background-position:130% 0}to{opacity:1;background-position:-30% 0}}
/* эмблема ступени (assets/art/efir/tier-N.webp): медальон с ореолом и пунктирной орбитой */
.ef-crest{position:relative;display:grid;place-items:center;width:128px;height:128px;margin:-8px 0 0;transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.ef-crest::before{content:"";position:absolute;inset:6%;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--c) 40%,transparent),transparent 72%);
  filter:blur(6px);animation:ef-halo 3.6s ease-in-out calc(var(--i) * .5s) infinite}
.ef-crest::after{content:"";position:absolute;inset:-2px;border-radius:50%;border:1px dashed color-mix(in srgb,var(--c) 45%,transparent);animation:ef-spin 30s linear infinite}
.ef-crest img{position:relative;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(0,0,0,.55)) drop-shadow(0 0 10px color-mix(in srgb,var(--c) 55%,transparent));
  animation:ef-medal 5.4s ease-in-out calc(var(--i) * .6s) infinite}
@keyframes ef-halo{50%{opacity:.55;transform:scale(1.08)}}
@keyframes ef-medal{50%{transform:translateY(-5px)}}
.ef-step b{font-family:var(--serif);font-size:24px;line-height:1;color:var(--head);letter-spacing:.04em}
.ef-step .ef-req{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--c)}
.ef-step ul{display:flex;flex-direction:column;gap:8px;margin-top:6px;text-align:left;width:100%}
.ef-step li{position:relative;padding-left:20px;font-size:13.5px;line-height:1.5;color:var(--body)}
.ef-step li::before{content:"";position:absolute;left:3px;top:.55em;width:7px;height:7px;transform:rotate(45deg);border-radius:1.5px;background:var(--c);box-shadow:0 0 8px var(--c)}
.ef-how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:20px 28px;align-items:center;padding:24px 28px;border-radius:20px}
.ef-how-step{display:flex;gap:14px;align-items:flex-start}
.ef-how-step p{font-size:13.5px;line-height:1.55;color:var(--body)}
.ef-how-step b{display:block;margin-bottom:3px;color:var(--head);font-weight:600;font-size:15px}
.ef-num{display:grid;place-items:center;flex:none;width:34px;height:34px;border-radius:50%;font-family:var(--display);font-weight:800;font-size:15px;color:#081230;background:var(--crystal);box-shadow:0 0 16px -4px rgba(140,180,255,.9)}
.ef-tag{font-family:var(--sans);font-size:13px;color:var(--cy-soft);padding:1px 6px;border-radius:5px;background:rgba(90,216,255,.1);border:1px solid rgba(90,216,255,.3);white-space:nowrap}

/* =========================================================
   Зрителям: искры эфира и вопросы
   ========================================================= */
.ef-sparks{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);gap:clamp(20px,3vw,44px);align-items:center;padding:clamp(24px,3.4vw,44px);overflow:hidden}
.ef-sparks-art{position:relative;height:310px;display:grid;place-items:center}
.ef-sparks-art::before{content:"";position:absolute;width:240px;height:240px;border-radius:50%;background:radial-gradient(closest-side,rgba(242,196,109,.28),rgba(167,123,255,.14) 55%,transparent);animation:fx-pulse 5s ease-in-out infinite;--o1:.6;--o2:1}
.ef-sparks-art .ef-orbit{position:absolute;width:290px;height:290px;border-radius:50%;border:1px dashed rgba(242,196,109,.35);animation:ef-spin 30s linear infinite}
.ef-sparks-art .ef-orbit img{position:absolute;width:44px;height:44px;left:50%;top:-22px;margin-left:-22px;filter:drop-shadow(0 0 10px rgba(242,196,109,.7));animation:ef-spin 30s linear infinite reverse}
.ef-sparks-art .ef-orbit img:nth-child(2){top:auto;bottom:-22px}
.ef-sparks-art .ef-orbit img:nth-child(3){left:-22px;top:50%;margin:-22px 0 0}
.ef-sparks-art .ef-orbit img:nth-child(4){left:auto;right:-22px;top:50%;margin:-22px 0 0}
.ef-chest{position:relative;width:250px;height:250px;object-fit:cover;-webkit-mask:radial-gradient(closest-side,#000 58%,transparent 100%);mask:radial-gradient(closest-side,#000 58%,transparent 100%);animation:ef-float 5.2s ease-in-out infinite}
.ef-spark{position:absolute;left:50%;top:52%;width:7px;height:7px;margin:-3.5px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,#fff 0,#FFE2A3 35%,rgba(242,196,109,0) 70%);
  animation:ef-rise 3.8s ease-in infinite;animation-delay:calc(var(--i) * -.48s);opacity:0}
@keyframes ef-rise{0%{opacity:0;transform:translate(0,0) scale(.6)}15%{opacity:1}100%{opacity:0;transform:translate(var(--dx,20px),-150px) scale(1.1)}}
.ef-sparks-copy{display:flex;flex-direction:column;align-items:flex-start;gap:14px}
.ef-sparks-list{display:flex;flex-direction:column;gap:9px;margin-top:4px}
.ef-sparks-list li{position:relative;padding-left:24px;font-size:14.5px;line-height:1.55;color:var(--body)}
.ef-sparks-list li::before{content:"";position:absolute;left:4px;top:.45em;width:9px;height:9px;transform:rotate(45deg);border-radius:2px;background:linear-gradient(135deg,#FFE2A3,#F2C46D);box-shadow:0 0 10px rgba(242,196,109,.9)}
.ef-faq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:22px}
.ef-faq details{padding:0;border-radius:16px;background:linear-gradient(180deg,rgba(30,44,96,.38),rgba(12,18,44,.55));border:1px solid var(--line2);transition:border-color .25s,box-shadow .25s}
.ef-faq details[open]{border-color:rgba(90,216,255,.42);box-shadow:0 0 30px -14px rgba(90,216,255,.7)}
.ef-faq summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;cursor:pointer;list-style:none;font-weight:600;font-size:15px;color:var(--head)}
.ef-faq summary::-webkit-details-marker{display:none}
.ef-faq summary .ico{width:18px;height:18px;flex:none;color:var(--cy);transition:transform .3s}
.ef-faq details[open] summary .ico{transform:rotate(180deg)}
.ef-faq details p{padding:0 18px 16px;font-size:14px;line-height:1.65;color:var(--body)}

/* появление блоков при прокрутке */
[data-ef-reveal]{opacity:0;transform:translateY(24px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
[data-ef-reveal].is-in{opacity:1;transform:none}

/* уведомление внизу */
.ef-toast{position:fixed;left:50%;bottom:calc(24px + var(--tabbar-h) + env(safe-area-inset-bottom));z-index:90;display:flex;align-items:center;gap:12px;max-width:min(520px,calc(100vw - 32px));padding:12px 16px 12px 18px;border-radius:14px;
  font-size:14px;line-height:1.45;color:var(--head);background:rgba(10,15,40,.95);border:1px solid rgba(140,180,255,.5);box-shadow:0 18px 40px -12px rgba(0,0,0,.85),0 0 26px -10px rgba(140,180,255,.9);
  transform:translate(-50%,16px);opacity:0;transition:opacity .3s,transform .3s;pointer-events:none}
.ef-toast.is-on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.ef-toast.is-err{border-color:rgba(255,111,111,.65)}
.ef-toast a{flex:none;font-weight:600}

/* =========================================================
   Искры эфира: полоса под плеером, «Сгусток эфира» поверх плеера
   (efir.js, раздел «искры эфира»; арт: spark.webp, clot.webp — сгенерированы, альфа по яркости)
   ========================================================= */
@property --ef-left{syntax:'<number>';inherits:false;initial-value:1}
.ef-sbar{display:flex;align-items:center;gap:16px;margin-top:12px;padding:12px 16px;border-radius:18px;animation:fade-up .5s cubic-bezier(.2,.7,.2,1);transition:box-shadow .5s}
.ef-sbar[hidden]{display:none}
.ef-sbar.is-clot{box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 0 0 1px rgba(255,122,217,.45),0 0 40px -12px rgba(224,92,255,.8)}
.ef-sbar.is-ready{box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 0 0 1px rgba(242,196,109,.32),0 0 40px -16px rgba(242,196,109,.7)}
.ef-sb-ring{position:relative;flex:none;width:60px;height:60px;display:grid;place-items:center}
.ef-sb-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);overflow:visible}
.ef-sb-track{fill:none;stroke:rgba(150,190,255,.14);stroke-width:4}
.ef-sb-prog{fill:none;stroke:#8BE8FF;stroke-width:4;stroke-linecap:round;stroke-dasharray:0 100;transition:stroke-dasharray .95s linear,stroke .4s;filter:drop-shadow(0 0 4px rgba(139,232,255,.85))}
.ef-sbar.is-ready .ef-sb-prog{stroke:#FFE2A3;filter:drop-shadow(0 0 4px rgba(242,196,109,.9))}
.ef-sbar:not(.is-run) .ef-sb-prog{stroke:rgba(169,235,255,.45);filter:none}
.ef-sb-ring img{position:relative;width:40px;height:40px;filter:drop-shadow(0 0 8px rgba(167,123,255,.75));animation:ef-sb-breathe 3.2s ease-in-out infinite}
.ef-sbar:not(.is-run) .ef-sb-ring img{animation-play-state:paused;filter:drop-shadow(0 0 4px rgba(167,123,255,.4)) saturate(.7) brightness(.85)}
.ef-sb-ring.is-off img{animation:none;filter:saturate(.6) brightness(.8)}
@keyframes ef-sb-breathe{50%{transform:scale(1.1) rotate(10deg);filter:drop-shadow(0 0 14px rgba(139,232,255,.95))}}
.ef-sb-ring.is-gain img{animation:ef-sb-flash .9s cubic-bezier(.2,.7,.2,1)}
@keyframes ef-sb-flash{35%{transform:scale(1.45) rotate(35deg);filter:drop-shadow(0 0 20px #FFE2A3) brightness(1.5)}}
.ef-sb-ring.is-gain::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(255,226,163,.95);pointer-events:none;animation:ef-sb-wave .9s ease-out forwards}
@keyframes ef-sb-wave{from{opacity:1;transform:scale(.7)}to{opacity:0;transform:scale(1.6)}}
.ef-sb-plus{position:absolute;left:50%;top:-4px;z-index:7;font-family:var(--display);font-size:22px;font-weight:700;line-height:1;color:#FFE2A3;white-space:nowrap;pointer-events:none;
  text-shadow:0 0 12px rgba(242,196,109,.95),0 2px 0 rgba(0,0,0,.45);animation:ef-sb-plus 1.5s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes ef-sb-plus{0%{opacity:0;transform:translate(-50%,8px) scale(.5)}22%{opacity:1;transform:translate(-50%,-10px) scale(1.2)}100%{opacity:0;transform:translate(-50%,-44px) scale(1)}}
.ef-sb-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.ef-sb-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.ef-sb-top b{font-family:var(--serif);font-size:20px;line-height:1.1;color:var(--head);letter-spacing:.02em}
.ef-sb-state{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 8px;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);background:rgba(20,30,70,.55);border:1px solid var(--line3)}
.ef-sb-state::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.ef-sb-state.is-on{color:var(--ok-soft);border-color:rgba(70,224,138,.42)}
.ef-sb-state.is-on::before{box-shadow:0 0 8px var(--ok);animation:ef-blink 1.6s ease-in-out infinite}
.ef-sb-state.is-pause{color:var(--gd-soft);border-color:rgba(242,196,109,.5)}
.ef-sb-state.is-clot{color:#FFC2EC;border-color:rgba(255,122,217,.6);animation:ef-sb-alert 1s ease-in-out infinite}
@keyframes ef-sb-alert{50%{box-shadow:0 0 16px -2px rgba(255,122,217,.9)}}
.ef-sb-line{font-size:13.5px;line-height:1.45;color:var(--body);font-variant-numeric:tabular-nums}
.ef-sb-catch{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px 0 4px;border-radius:8px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#fff;cursor:pointer;
  border:0;background:linear-gradient(135deg,#FF4F78,#E05CFF);box-shadow:0 0 18px -4px rgba(224,92,255,.95);animation:ef-sb-alert 1s ease-in-out infinite}
.ef-sb-catch[hidden]{display:none}
.ef-sb-catch img{width:22px;height:22px;animation:ef-spin 3s linear infinite}
.ef-sb-catch:hover{filter:brightness(1.12)}
.ef-sb-chest{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.ef-sb-pips{display:grid;grid-template-columns:repeat(12,10px);gap:5px}
.ef-sb-pips i{width:10px;height:10px;border-radius:2px;transform:rotate(45deg) scale(.82);background:rgba(150,190,255,.12);border:1px solid rgba(150,190,255,.24);transition:background .45s,border-color .45s,box-shadow .45s}
.ef-sb-pips i.is-on{background:linear-gradient(135deg,#FFF1CF,#F2C46D);border-color:#FFE2A3;box-shadow:0 0 9px rgba(242,196,109,.85)}
.ef-sb-pips i.is-pop{animation:ef-sb-pop .75s cubic-bezier(.2,.7,.2,1)}
@keyframes ef-sb-pop{0%{transform:rotate(45deg) scale(.3)}45%{transform:rotate(45deg) scale(1.6);box-shadow:0 0 18px #FFE2A3}100%{transform:rotate(45deg) scale(.82)}}
.ef-sbar.is-ready .ef-sb-pips i{animation:ef-sb-wink 2.4s ease-in-out infinite;animation-delay:calc(var(--k) * .09s)}
@keyframes ef-sb-wink{0%,70%,100%{filter:none}35%{filter:brightness(1.5) drop-shadow(0 0 4px #FFE2A3)}}
.ef-sb-count{font-size:12px;letter-spacing:.04em;color:var(--muted);font-variant-numeric:tabular-nums}
.ef-sbar.is-ready .ef-sb-count{color:var(--gd-soft)}
.ef-sb-go{flex:none;display:inline-flex;align-items:center;gap:8px;height:46px;padding:0 14px 0 4px;border-radius:13px;text-decoration:none;font-family:var(--serif);font-size:13px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;
  color:var(--body);background:rgba(20,30,70,.55);border:1px solid var(--line3);transition:color .2s,border-color .25s,box-shadow .3s,transform .25s}
.ef-sb-go img{width:40px;height:40px;object-fit:cover;-webkit-mask:radial-gradient(closest-side,#000 62%,transparent);mask:radial-gradient(closest-side,#000 62%,transparent);transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.ef-sb-go:hover{color:var(--head);border-color:rgba(242,196,109,.6);transform:translateY(-2px)}
.ef-sb-go:hover img{transform:scale(1.12) rotate(-6deg)}
.ef-sb-go.is-ready{color:var(--gd-soft);border-color:rgba(242,196,109,.75);background:linear-gradient(135deg,rgba(242,196,109,.2),rgba(20,30,70,.6));animation:ef-sb-ready 2.4s ease-in-out infinite}
.ef-sb-go.is-ready img{animation:ef-float 2.6s ease-in-out infinite}
@keyframes ef-sb-ready{50%{box-shadow:0 0 28px -4px rgba(242,196,109,.95)}}

/* сгусток: висит над плеером, кольцо вокруг — сколько осталось */
.ef-clot{position:absolute;z-index:6;width:clamp(78px,8.5vw,112px);aspect-ratio:1;translate:-50% -50%;padding:0;border:0;border-radius:50%;background:none;cursor:pointer;display:grid;place-items:center;
  -webkit-tap-highlight-color:transparent;animation:ef-clot-in .8s cubic-bezier(.2,.7,.3,1.4) backwards}
.ef-clot::before{content:"";position:absolute;inset:-34%;border-radius:50%;pointer-events:none;background:radial-gradient(closest-side,rgba(224,92,255,.5),rgba(90,216,255,.16) 60%,transparent);animation:fx-pulse 1.7s ease-in-out infinite;--o1:.55;--o2:1}
.ef-clot img{position:relative;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 14px rgba(224,92,255,.9));animation:ef-spin 7s linear infinite;transition:filter .2s}
.ef-clot:hover img,.ef-clot:focus-visible img{filter:drop-shadow(0 0 26px rgba(255,190,240,1)) brightness(1.18)}
.ef-clot:focus-visible{outline:2px solid rgba(255,194,236,.9);outline-offset:10px}
.ef-clot-ring{position:absolute;inset:-9px;border-radius:50%;pointer-events:none;
  background:conic-gradient(rgba(255,150,225,.95) calc(var(--ef-left) * 360deg),rgba(255,255,255,.1) 0);
  -webkit-mask:radial-gradient(closest-side,transparent calc(100% - 4px),#000 calc(100% - 3px));mask:radial-gradient(closest-side,transparent calc(100% - 4px),#000 calc(100% - 3px));
  animation:ef-clot-life var(--life,180s) linear forwards}
@keyframes ef-clot-life{from{--ef-left:1}to{--ef-left:0}}
.ef-clot-lbl{position:absolute;left:50%;top:calc(100% + 12px);transform:translateX(-50%);padding:4px 10px;border-radius:7px;white-space:nowrap;pointer-events:none;
  font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#fff;background:linear-gradient(135deg,#FF4F78,#E05CFF);box-shadow:0 0 16px -3px rgba(224,92,255,.95)}
.ef-clot.is-catch{pointer-events:none}
.ef-clot.is-catch img{filter:drop-shadow(0 0 30px #fff) brightness(1.6)}
.ef-clot.is-burst{pointer-events:none;animation:ef-clot-burst .75s ease-out forwards}
.ef-clot.is-gone{pointer-events:none;animation:ef-clot-gone .7s ease-in forwards}
.ef-clot.is-out{pointer-events:none;animation:ef-clot-gone .45s ease-in forwards}
@keyframes ef-clot-in{0%{opacity:0;transform:scale(.15) rotate(-90deg);filter:brightness(3)}60%{opacity:1}}
@keyframes ef-clot-burst{30%{transform:scale(1.25);filter:brightness(2)}100%{opacity:0;transform:scale(2.3);filter:brightness(2.5)}}
@keyframes ef-clot-gone{to{opacity:0;transform:scale(.35);filter:grayscale(1) brightness(.6)}}
.ef-clot-p{position:absolute;z-index:6;width:8px;height:8px;margin:-4px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,#fff 0,#FFC2EC 40%,rgba(224,92,255,0) 72%);animation:ef-clot-p .9s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes ef-clot-p{0%{opacity:1;transform:translate(0,0) scale(1.4)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.4)}}
.ef-clot-plus{font-size:28px}

/* «Зрителям»: кнопки и баланс */
.ef-sparks-cta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin-top:6px}
.ef-sparks-cta[hidden]{display:none}
.ef-sp-bal{height:32px;padding:0 12px 0 6px;font-size:12.5px;color:var(--gd-soft);border-color:rgba(242,196,109,.45)}
.ef-sp-bal img{width:22px;height:22px;filter:drop-shadow(0 0 6px rgba(167,123,255,.8))}

/* =========================================================
   Адаптив
   ========================================================= */
@media (max-width:1180px){
  .ef-path{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ef-path::before,.ef-path::after{display:none}
  .ef-how{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ef-how>.btn-prime{grid-column:1/-1;justify-self:start}
}
@media (max-width:1100px){
  .ef-stage{grid-template-columns:minmax(0,1fr)}
  .ef-list{flex-direction:row;max-height:none;overflow-x:auto;overflow-y:hidden;padding-bottom:8px;scroll-snap-type:x mandatory}
  .ef-item{grid-template-columns:1fr;flex:0 0 260px;scroll-snap-align:start}
  .ef-item:hover{transform:translateY(-3px)}
  .ef-chat{height:520px}
  .ef-empty{grid-template-columns:minmax(0,1fr)}
  .ef-empty-art{max-width:260px}
}
@media (max-width:900px){
  .ef-ph{min-height:auto}
  .ef-portal-label{display:none}
  /* на телефоне кольцо за текстом: только переливы, без превью эфира, и приглушённо */
  .ef-portal{opacity:0}
  .ef-portal.is-ready{opacity:.6}
  .ef-portal-img{display:none}
  .ef-motes{opacity:.6}
  #stage .sec-head{flex-wrap:wrap}
  .ef-now{flex-wrap:wrap;padding:14px}
  .ef-now-actions{width:100%;justify-content:flex-start}
  .ef-now-name b{font-size:20px}
  .ef-sbar{flex-wrap:wrap;gap:12px;padding:12px}
  .ef-sb-body{flex:1 1 calc(100% - 80px)}
  .ef-sb-chest{flex:1 1 auto;align-items:flex-start}
  .ef-sb-pips{grid-template-columns:repeat(12,9px);gap:4px}
  .ef-sb-go{margin-left:auto}
  .ef-clot-lbl{display:none}
  .ef-screen{padding:6px;border-radius:18px}
  .ef-player{border-radius:12px}
  .ef-item{flex-basis:230px}
  .ef-roster{grid-template-columns:minmax(0,1fr)}
  .ef-card{padding:18px}
  .ef-invite{grid-template-columns:minmax(0,1fr);text-align:left;padding:20px}
  .ef-invite .ef-diamond-s{display:none}
  .ef-path{grid-template-columns:minmax(0,1fr)}
  .ef-how{grid-template-columns:minmax(0,1fr);padding:20px}
  .ef-sparks{grid-template-columns:minmax(0,1fr)}
  .ef-sparks-art{height:250px}
  .ef-chest{width:200px;height:200px}
  .ef-sparks-art .ef-orbit{width:236px;height:236px}
  .ef-faq{grid-template-columns:minmax(0,1fr)}
  .ef-head-tools{width:100%}
}

@media (prefers-reduced-motion:reduce){
  .ef-live::before,.ef-dot,.ef-ava.is-live::before,.ef-portal-swirl,.ef-portal-swirl::after,.ef-portal-glow,.ef-portal-waves i,.ef-screen::after,.ef-orb::before,.ef-orb::after,
  .ef-empty-glow,.ef-diamond,.ef-diamond-s,.ef-glint,.ef-crystal,.ef-crest::before,.ef-crest::after,.ef-crest img,.ef-path::after,.ef-sparks-art::before,.ef-sparks-art .ef-orbit,.ef-sparks-art .ef-orbit img,.ef-chest,.ef-spark,
  .ef-item,.ef-now,.ef-follow .ico,.ef-ph .ph-title,.ef-ph .ph-lead,.ef-ph .ph-stats,.ef-ph .ph-actions,
  .ef-sbar,.ef-sb-ring img,.ef-sb-state,.ef-sb-state::before,.ef-sb-catch,.ef-sb-catch img,.ef-sb-pips i,.ef-sb-go,.ef-sb-go img,.ef-clot,.ef-clot::before,.ef-clot img{animation:none!important}
  .ef-sb-prog{transition:none}
  .ef-portal-waves,.ef-spark{display:none}
  .ef-card,.ef-step,[data-ef-reveal]{opacity:1!important;transform:none!important;transition:none!important;animation:none!important}
  .ef-path::after{transform:scaleX(1);transition:none}
}
