/* ───────────────────────────────────────────────────────────────────────────
   SpellBook · Академия — стили лендинга /academy
   КУДА КЛАСТЬ: /css/academy.css  (грузится АСИНХРОННО из academy.php)

   Изолированный файл: НЕ зависит от marketplace.css и ничего в нём не переопределяет.
   Токены — зеркало дизайн-системы сайта (монохром + золото --pro), чтобы лендинг
   выглядел родным, но жил отдельно от общего шелла.

   Критический минимум (шелл + скелетон) продублирован инлайном в <head> academy.php:
   он рисует каркас до прихода этого файла. Правки шапки/скелетона делайте В ОБОИХ местах.
   ─────────────────────────────────────────────────────────────────────────── */

/* ===== 1. Токены ===== */
:root{
  --canvas:#141416; --surface:#1c1c1f; --raised:#26262a;
  --text:#f0f0f0; --text-2:#9a9a9a; --text-3:#6a6a6a; --text-4:#4f4f4f;
  --line:rgba(255,255,255,0.07); --line-2:rgba(255,255,255,0.14); --ring:rgba(255,255,255,0.10);
  --btn:#f0f0f0; --btn-text:#0d0d0d; --btn-hover:#fff;
  --pro:#f5b301; --pro-soft:rgba(245,179,1,0.12); --pro-bd:rgba(245,179,1,0.30);
  --skeleton:#202024; --skeleton-sheen:rgba(255,255,255,0.06);
  --shadow:0 1px 2px rgba(0,0,0,.35), 0 8px 24px rgba(0,0,0,.22);
  --font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --r:12px; --r-sm:8px; --r-xs:6px;
  --ease:cubic-bezier(.4,0,.2,1); --spring:cubic-bezier(.32,.72,0,1); --dur:200ms;
  --hdr:60px;
  --pad:clamp(18px,5vw,40px);
  --wrap:1120px;
  color-scheme:dark;
}
[data-theme="light"]{
  --canvas:#f7f7f8; --surface:#fff; --raised:#f0f0f1;
  --text:#18181b; --text-2:#5c5c66; --text-3:#8a8a93; --text-4:#a8a8b0;
  --line:rgba(0,0,0,0.08); --line-2:rgba(0,0,0,0.16); --ring:rgba(0,0,0,0.12);
  --btn:#18181b; --btn-text:#fff; --btn-hover:#000;
  --pro:#b45309; --pro-soft:rgba(180,83,9,0.10); --pro-bd:rgba(180,83,9,0.28);
  --skeleton:#e7e7ea; --skeleton-sheen:rgba(255,255,255,0.65);
  --shadow:0 1px 2px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.06);
  color-scheme:light;
}

/* ===== 2. База ===== */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0; background:var(--canvas); color:var(--text);
  font:400 16px/1.6 var(--font); -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
h1,h2,h3{ margin:0; font-weight:600; line-height:1.12; letter-spacing:-0.025em; color:var(--text); text-wrap:balance; }
p{ margin:0; text-wrap:pretty; }
a{ color:inherit; text-decoration:none; }
img,svg{ display:block; max-width:100%; }
button{ font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer; }
::selection{ background:var(--pro); color:#0d0d0d; }
:focus-visible{ outline:2px solid var(--pro); outline-offset:3px; border-radius:4px; }
:target{ scroll-margin-top:calc(var(--hdr) + 24px); }
section[id]{ scroll-margin-top:calc(var(--hdr) + 8px); }

.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--pad); }
.sr-only{ position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.num{ font-family:var(--mono); font-variant-numeric:tabular-nums; letter-spacing:-0.02em; }

/* ===== 3. Скелетон и загрузочный шелл ===== */
.sk{ position:relative; overflow:hidden; background:var(--skeleton); border-radius:var(--r-xs); }
.sk::after{
  content:""; position:absolute; inset:0; transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,var(--skeleton-sheen),transparent);
  animation:sb-shimmer 1.5s ease-in-out infinite;
}
@keyframes sb-shimmer{ 100%{ transform:translateX(100%); } }

/* Скелетон виден, пока body.loading; реальный контент — после. Задержка .1s: на быстром
   соединении шелл сменяется контентом раньше, чем скелетон успевает проявиться (без «моргания»). */
body.loading .load-only{ display:none !important; }
body:not(.loading) .skel-only{ display:none !important; }
.skel-only{ animation:sb-skin .2s .1s both; }
@keyframes sb-skin{ from{ opacity:0 } to{ opacity:1 } }
body:not(.loading) .load-only{ animation:sb-in .45s var(--spring) both; }
@keyframes sb-in{ from{ opacity:0; transform:translateY(8px) } to{ opacity:1; transform:none } }

.sk-line{ height:12px; border-radius:999px; }
.sk-card{ border:1px solid var(--line); border-radius:var(--r); background:var(--surface); padding:20px; display:flex; flex-direction:column; gap:12px; }
.sk-card .sk-line:nth-child(1){ width:34%; height:10px; }
.sk-card .sk-line:nth-child(2){ width:88%; height:18px; }
.sk-card .sk-line:nth-child(3){ width:64%; height:18px; }
.sk-card .sk-row{ display:flex; gap:8px; margin-top:6px; }
.sk-card .sk-chip{ width:76px; height:32px; border-radius:999px; }
.sk-banner{ height:132px; border-radius:var(--r); }
.sk-soc{ height:70px; border-radius:var(--r); }

/* «пропустить к контенту» — видна только при фокусе с клавиатуры */
.skip{ position:absolute; left:-9999px; top:0; z-index:99; }
.skip:focus{ left:12px; top:12px; padding:10px 14px; border-radius:var(--r-sm); background:var(--btn); color:var(--btn-text); font-weight:600; }

/* ===== 4. Шапка ===== */
.hdr{
  position:sticky; top:0; z-index:60; height:var(--hdr);
  background:color-mix(in srgb,var(--canvas) 82%,transparent);
  backdrop-filter:saturate(160%) blur(14px); -webkit-backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid transparent; transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);
}
.hdr.is-scrolled{ border-bottom-color:var(--line); }
@supports not (backdrop-filter:blur(1px)){ .hdr{ background:var(--canvas); } }
.hdr-in{ display:flex; align-items:center; gap:14px; height:var(--hdr); }
.brand{ display:inline-flex; align-items:center; gap:9px; font-weight:600; font-size:15px; letter-spacing:-0.015em; white-space:nowrap; min-width:0; }
.brand-mark{ width:22px; height:22px; flex:none; color:var(--pro); }
.brand b{ font-weight:600; }
.brand span{ color:var(--text-3); font-weight:500; }

.nav{ display:none; align-items:center; gap:2px; margin-inline:auto; }
.nav a{
  position:relative; padding:8px 12px; border-radius:var(--r-xs);
  font-size:14px; color:var(--text-2); transition:color var(--dur) var(--ease), background var(--dur) var(--ease);
}
.nav a[aria-current="true"]{ color:var(--text); }
.nav a[aria-current="true"]::after{
  content:""; position:absolute; left:12px; right:12px; bottom:2px; height:1.5px; border-radius:2px; background:var(--pro);
}
.hdr-act{ display:flex; align-items:center; gap:8px; margin-left:auto; }
/* на телефоне в шапке только тема и бургер: CTA «Telegram» живёт в боковом меню,
   иначе на 360–390px кнопка налезает на логотип */
@media (max-width:899px){ .hdr-act .btn{ display:none; } }
@media (max-width:359px){ .brand span{ display:none; } }
@media (hover:hover){ .nav a:hover{ color:var(--text); background:var(--raised); } }
@media (min-width:900px){
  .nav{ display:flex; }
  .hdr-act{ margin-left:0; }
}

/* иконочная кнопка (тема, бургер, наверх) */
.ibtn{
  display:inline-flex; align-items:center; justify-content:center; flex:none;
  width:40px; height:40px; border-radius:var(--r-sm); color:var(--text-2);
  border:1px solid transparent; -webkit-tap-highlight-color:transparent; touch-action:manipulation;
  transition:color var(--dur) var(--ease), background var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.ibtn svg{ width:19px; height:19px; }
@media (hover:hover){ .ibtn:hover{ color:var(--text); background:var(--raised); border-color:var(--line); } }
.ibtn:active{ transform:scale(.94); }
@media (min-width:900px){ .burger{ display:none; } }

.theme-sun{ display:none; }
[data-theme="light"] .theme-sun{ display:block; }
[data-theme="light"] .theme-moon{ display:none; }

/* ===== 5. Кнопки и чипы ===== */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:42px; padding:0 18px; border-radius:var(--r-sm);
  background:var(--btn); color:var(--btn-text); font-size:14.5px; font-weight:600; letter-spacing:-0.01em;
  border:1px solid transparent; white-space:nowrap; -webkit-tap-highlight-color:transparent;
  transition:background var(--dur) var(--ease), transform 120ms var(--ease), opacity var(--dur) var(--ease);
}
.btn svg{ width:16px; height:16px; flex:none; }
.btn:active{ transform:scale(.985); }
@media (hover:hover){ .btn:hover{ background:var(--btn-hover); } }
.btn-ghost{ background:transparent; color:var(--text); border-color:var(--ring); }
@media (hover:hover){ .btn-ghost:hover{ background:var(--raised); border-color:var(--line-2); } }
.btn-sm{ min-height:36px; padding:0 14px; font-size:13.5px; }
.btn-lg{ min-height:48px; padding:0 22px; font-size:15.5px; }

.chip{
  display:inline-flex; align-items:center; gap:7px; min-height:34px; padding:0 12px;
  border:1px solid var(--line); border-radius:999px; background:transparent;
  font-size:13px; font-weight:500; color:var(--text-2);
  transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease), background var(--dur) var(--ease);
}
.chip .dot{ width:5px; height:5px; border-radius:50%; flex:none; background:currentColor; opacity:.55; }
.chip .out{ width:11px; height:11px; flex:none; opacity:.45; transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease); }
@media (hover:hover){
  .chip:hover{ color:var(--text); border-color:var(--line-2); background:var(--raised); }
  .chip:hover .out{ opacity:.8; transform:translate(1px,-1px); }
}
.chips{ display:flex; flex-wrap:wrap; gap:6px; }

/* ===== 6. Боковое меню (drawer) ===== */
.scrim{
  position:fixed; inset:0; z-index:70; background:rgba(0,0,0,.55);
  backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px);
  opacity:0; visibility:hidden; transition:opacity 260ms var(--ease), visibility 260ms;
}
body.drawer-open .scrim{ opacity:1; visibility:visible; }

.drawer{
  position:fixed; z-index:80; top:0; right:0; bottom:0;
  width:min(86vw,340px); display:flex; flex-direction:column;
  background:var(--canvas); border-left:1px solid var(--line); box-shadow:var(--shadow);
  padding:calc(12px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) calc(16px + env(safe-area-inset-bottom)) 16px;
  transform:translateX(102%); visibility:hidden;
  transition:transform 320ms var(--spring), visibility 320ms;
  overscroll-behavior:contain;
}
body.drawer-open .drawer{ transform:none; visibility:visible; }
.drawer-top{ display:flex; align-items:center; justify-content:space-between; gap:12px; height:44px; margin-bottom:14px; }
.drawer-nav{ display:flex; flex-direction:column; gap:2px; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.drawer-nav a{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  min-height:50px; padding:0 12px; border-radius:var(--r-sm);
  font-size:16px; font-weight:500; color:var(--text-2);
  transition:color var(--dur) var(--ease), background var(--dur) var(--ease);
}
.drawer-nav a .idx{ font-family:var(--mono); font-size:11px; color:var(--text-4); }
.drawer-nav a[aria-current="true"]{ color:var(--text); background:var(--raised); }
.drawer-nav a[aria-current="true"] .idx{ color:var(--pro); }
.drawer-nav a:active{ background:var(--raised); }
.drawer-foot{ margin-top:auto; padding-top:18px; display:flex; flex-direction:column; gap:12px; }
.drawer-foot .btn{ width:100%; }
.drawer-soc{ display:flex; flex-wrap:wrap; gap:6px; }
.drawer-note{ font-size:12px; color:var(--text-4); }
@media (min-width:900px){ .drawer,.scrim{ display:none; } }

/* ===== 7. Герой ===== */
.hero{ position:relative; padding:clamp(48px,9vw,104px) 0 clamp(40px,6vw,72px); overflow:hidden; }
/* единственное «украшение» страницы — мягкий тёплый ореол за героем */
.hero::before{
  content:""; position:absolute; left:50%; top:-320px; width:min(1200px,150vw); height:680px;
  transform:translateX(-50%); pointer-events:none;
  background:radial-gradient(closest-side,var(--pro-soft),transparent);
}
.hero-in{ position:relative; }
.badge{
  display:inline-flex; align-items:center; gap:8px; margin-bottom:22px;
  padding:6px 12px 6px 10px; border:1px solid var(--line); border-radius:999px;
  font-size:12.5px; font-weight:500; color:var(--text-2); background:var(--surface);
}
.badge .pip{ width:6px; height:6px; border-radius:50%; background:var(--pro); flex:none; box-shadow:0 0 0 3px var(--pro-soft); }
.hero h1{ font-size:clamp(34px,7vw,64px); letter-spacing:-0.035em; }
.hero h1 .sub{ display:block; margin-top:.18em; font-size:clamp(20px,3.6vw,32px); font-weight:500; letter-spacing:-0.025em; color:var(--text-3); }
.hero .lead{ margin-top:24px; max-width:60ch; font-size:clamp(15.5px,1.6vw,17.5px); line-height:1.62; color:var(--text-2); }
.hero-cta{ display:flex; flex-wrap:wrap; gap:10px; margin-top:32px; }

.stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; margin-top:clamp(40px,6vw,64px); background:var(--line); border-block:1px solid var(--line); }
.stat{ background:var(--canvas); padding:18px 4px 18px 0; }
.stat:not(:first-child){ padding-left:18px; }
.stat b{ display:block; font-family:var(--mono); font-size:clamp(22px,3.4vw,30px); font-weight:600; letter-spacing:-0.03em; color:var(--text); }
.stat span{ display:block; margin-top:5px; font-size:12.5px; line-height:1.35; color:var(--text-3); }
@media (max-width:640px){
  .stats{ grid-template-columns:repeat(2,1fr); }
  .stat{ padding:16px 4px; }
  .stat:nth-child(odd){ padding-left:0; }
  .stat:nth-child(even){ padding-left:18px; }
  .stat:nth-child(-n+2){ border-bottom:1px solid var(--line); }
  .hero-cta .btn{ flex:1 1 100%; }
}

/* ===== 8. Секции ===== */
.sect{ padding:clamp(52px,8vw,104px) 0; }
.sect + .sect{ padding-top:0; }
.sect-band{ background:var(--surface); border-block:1px solid var(--line); }
.sect + .sect-band{ padding-top:clamp(52px,8vw,104px); margin-top:clamp(52px,8vw,104px); }
.sect-head{ max-width:64ch; margin-bottom:clamp(26px,3.6vw,40px); }
.kicker{ display:block; margin-bottom:12px; font-family:var(--mono); font-size:11px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--text-4); }
.sect-head h2{ font-size:clamp(25px,3.6vw,38px); }
.sect-head .lead{ margin-top:14px; font-size:clamp(14.5px,1.5vw,16.5px); line-height:1.6; color:var(--text-2); }

/* ===== 9. Баннер шаблонов ===== */
.banner{
  display:grid; grid-template-columns:1fr auto; align-items:center; gap:24px;
  padding:clamp(22px,3vw,32px); border:1px solid var(--line); border-radius:var(--r); background:var(--surface);
  transition:border-color var(--dur) var(--ease);
}
@media (hover:hover){ .banner:hover{ border-color:var(--line-2); } }
.banner h2{ font-size:clamp(20px,2.6vw,26px); }
.banner p{ margin-top:10px; max-width:56ch; font-size:14.5px; color:var(--text-2); }
@media (max-width:720px){
  .banner{ grid-template-columns:1fr; gap:20px; }
  .banner .btn{ width:100%; }
}

/* ===== 10. Сетка карточек ===== */
.grid{ display:grid; gap:14px; grid-template-columns:repeat(auto-fill,minmax(min(100%,296px),1fr)); }
.grid-4{ grid-template-columns:repeat(auto-fill,minmax(min(100%,232px),1fr)); }
/* интервью: ровно 4 в ряд на широком экране, без «сироты» во второй строке */
.grid-i{ grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr)); }
.card{
  container-type:inline-size;
  display:flex; flex-direction:column; gap:16px;
  padding:22px; border:1px solid var(--line); border-radius:var(--r); background:var(--surface);
  transition:border-color var(--dur) var(--ease), transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.sect-band .card{ background:var(--canvas); }
@media (hover:hover){ .card:hover{ border-color:var(--line-2); transform:translateY(-2px); box-shadow:var(--shadow); } }
.card-idx{ font-family:var(--mono); font-size:11px; font-weight:500; letter-spacing:.12em; text-transform:uppercase; color:var(--text-4); }
.card h3{ margin-top:10px; font-size:17.5px; line-height:1.25; }
.card-desc{ margin-top:10px; font-size:14px; line-height:1.55; color:var(--text-2); }
.card .chips{ margin-top:auto; }
.card-meta{ display:flex; flex-direction:column; gap:8px; padding-top:14px; border-top:1px solid var(--line); }
.meta{ display:flex; align-items:flex-start; gap:8px; font-size:13.5px; color:var(--text-2); transition:color var(--dur) var(--ease); }
.meta svg{ width:14px; height:14px; flex:none; margin-top:4px; color:var(--text-4); transition:color var(--dur) var(--ease); }
.meta span{ text-decoration:underline; text-decoration-color:var(--line-2); text-underline-offset:3px; }
@media (hover:hover){ .meta:hover{ color:var(--text); } .meta:hover svg{ color:var(--pro); } }

/* ===== 11. Интервью ===== */
.who{ display:flex; align-items:center; gap:14px; }
.ph{
  position:relative; width:64px; height:64px; flex:none; border-radius:50%; overflow:hidden;
  background:var(--skeleton); border:1px solid var(--line);
}
.ph::after{
  content:""; position:absolute; inset:0; transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,var(--skeleton-sheen),transparent);
  animation:sb-shimmer 1.5s ease-in-out infinite;
}
.ph.is-ready{ background:var(--raised); }
.ph.is-ready::after{ content:none; }
.ph picture{ display:block; width:100%; height:100%; }
.ph img{ width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity 420ms var(--ease); }
.ph.is-ready img{ opacity:1; }
.ph.is-failed{ background:var(--raised); }
.ph.is-failed::before{
  content:attr(data-initial); position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-size:22px; font-weight:600; color:var(--text-3);
}
.who h3{ font-size:17px; }
.who .nick{ margin-top:5px; font-family:var(--mono); font-size:12.5px; color:var(--text-3); }
.who .nick span{ text-decoration:underline; text-decoration-color:var(--line-2); text-underline-offset:3px; }
@media (hover:hover){ .who .nick:hover{ color:var(--text-2); } }
/* Узкая карточка (4 в ряд на десктопе, 2 в ряд на планшете) — фото уходит наверх,
   имени достаётся вся ширина. Меряем контейнер карточки, а не экран: одна и та же
   карточка ведёт себя правильно в любой сетке. */
@container (max-width:300px){
  .who{ flex-direction:column; align-items:flex-start; gap:12px; }
  .ph{ width:72px; height:72px; }
}

/* ===== 12. Сообщество ===== */
.soc-grid{ display:grid; gap:10px; grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr)); }
.soc{
  display:flex; align-items:center; gap:12px; padding:16px;
  border:1px solid var(--line); border-radius:var(--r); background:var(--surface);
  transition:border-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.soc-ic{ width:34px; height:34px; flex:none; border-radius:9px; overflow:hidden; }
.soc-tx b{ display:block; font-size:14.5px; font-weight:600; }
.soc-tx span{ display:block; margin-top:2px; font-size:12.5px; color:var(--text-3); }
@media (hover:hover){ .soc:hover{ border-color:var(--line-2); transform:translateY(-2px); } }

/* ===== 13. Подвал ===== */
.foot{ padding:40px 0 calc(32px + env(safe-area-inset-bottom)); border-top:1px solid var(--line); }
.foot-in{ display:flex; flex-wrap:wrap; align-items:flex-start; gap:24px 40px; }
.foot-nav{ display:flex; flex-wrap:wrap; gap:6px 22px; margin-left:auto; }
.foot-nav a{ font-size:14px; color:var(--text-3); transition:color var(--dur) var(--ease); }
@media (hover:hover){ .foot-nav a:hover{ color:var(--text); } }
.foot-bot{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 20px; margin-top:32px; padding-top:20px; border-top:1px solid var(--line); font-size:12.5px; color:var(--text-4); }
.foot-bot a{ color:var(--text-3); }
@media (hover:hover){ .foot-bot a:hover{ color:var(--text); } }

/* ===== 14. Кнопка «наверх» ===== */
.totop{
  position:fixed; right:calc(16px + env(safe-area-inset-right)); bottom:calc(16px + env(safe-area-inset-bottom)); z-index:50;
  width:42px; height:42px; border-radius:50%; background:var(--surface); border:1px solid var(--line); color:var(--text-2);
  box-shadow:var(--shadow); opacity:0; visibility:hidden; transform:translateY(8px);
  transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease), visibility var(--dur);
}
.totop.is-on{ opacity:1; visibility:visible; transform:none; }
body.drawer-open .totop{ opacity:0; visibility:hidden; }

/* ===== 15. Появление при скролле =====
   Прячем блоки ТОЛЬКО когда скрипт жив (класс .js-rv ставит academy.js и тут же
   помечает всё видимое как .is-in). Без JS — контент просто на месте, ничего не мигает. */
.js-rv .rv{ opacity:0; transform:translateY(14px); }
.js-rv .rv.is-in{ opacity:1; transform:none; transition:opacity .5s var(--spring), transform .5s var(--spring); }
.js-rv .grid > .rv.is-in:nth-child(2){ transition-delay:60ms }
.js-rv .grid > .rv.is-in:nth-child(3){ transition-delay:120ms }
.js-rv .grid > .rv.is-in:nth-child(4){ transition-delay:180ms }
.js-rv .grid > .rv.is-in:nth-child(n+5){ transition-delay:220ms }
/* мгновенная смена темы — гасим переходы на кадр свапа */
.no-anim,.no-anim *{ transition:none !important; }

/* ===== 16. Доступность движения ===== */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  .rv{ opacity:1; transform:none; }
}
