/* ВЫБЕРИ — тёмная сцена, свет которой задаёт выбранный герой */

@font-face{font-family:Unbounded;src:url(/static/fonts/unbounded-cyrillic.woff2)format("woff2");
  unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-weight:200 900;font-display:swap}
@font-face{font-family:Unbounded;src:url(/static/fonts/unbounded-latin.woff2)format("woff2");
  unicode-range:U+0000-00FF,U+2000-206F,U+2190-21BB;font-weight:200 900;font-display:swap}
@font-face{font-family:Golos;src:url(/static/fonts/golos-cyrillic.woff2)format("woff2");
  unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-weight:400 700;font-display:swap}
@font-face{font-family:Golos;src:url(/static/fonts/golos-latin.woff2)format("woff2");
  unicode-range:U+0000-00FF,U+2000-206F;font-weight:400 700;font-display:swap}
@font-face{font-family:JBMono;src:url(/static/fonts/jbmono-cyrillic.woff2)format("woff2");
  unicode-range:U+0400-045F;font-weight:400 700;font-display:swap}
@font-face{font-family:JBMono;src:url(/static/fonts/jbmono-latin.woff2)format("woff2");
  unicode-range:U+0000-00FF;font-weight:400 700;font-display:swap}

:root{
  --bg:#04040a; --surface:#0b0b14; --raise:#12121d;
  --line:rgba(255,255,255,.09); --text:#f2f3f7; --dim:#7c8098;
  --gold:#ffc800; --blue:#2f9bff; --red:#ff3b3b;
  --accent:#ffffff;                    /* перекрашивается героем под курсором */
  --r:18px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--text);
  font-family:Golos,system-ui,sans-serif; font-size:16px; line-height:1.55;
  min-height:100vh; overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
/* свет сцены: пятно под курсором окрашивается в цвет героя */
body::before{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  background:radial-gradient(60vw 55vh at 50% 42%,
    color-mix(in srgb,var(--accent) 16%,transparent), transparent 70%);
  transition:background .55s ease;
}
body::after{                                     /* плёночное зерно, чтобы чёрный не был пластиковым */
  content:""; position:fixed; inset:-50%; z-index:0; pointer-events:none; opacity:.035;
  background-image:radial-gradient(#fff 1px,transparent 1px);
  background-size:3px 3px;
}
.wrap{position:relative; z-index:1; max-width:1120px; margin:0 auto; padding:0 20px}
a{color:inherit; text-decoration:none}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:6px}

/* --- шапка --- */
.top{position:relative; z-index:3; display:flex; align-items:center; gap:22px;
  padding:20px 0; border-bottom:1px solid var(--line)}
.brand{font-family:Unbounded; font-weight:700; letter-spacing:.24em; font-size:14px}
.top nav{display:flex; gap:20px; margin-left:auto; align-items:center;
  font-size:14px; color:var(--dim)}
.top nav a:hover{color:var(--text)}
.coins{font-family:JBMono; font-weight:700; color:var(--gold);
  border:1px solid rgba(255,200,0,.28); border-radius:999px; padding:5px 12px; font-size:13px}
.btn{display:inline-flex; align-items:center; gap:8px; justify-content:center;
  font-family:Unbounded; font-weight:600; font-size:13px; letter-spacing:.06em;
  padding:12px 22px; border-radius:12px; border:1px solid var(--line);
  background:var(--raise); color:var(--text); cursor:pointer;
  transition:transform .15s, border-color .2s, background .2s}
.btn:hover{transform:translateY(-1px); border-color:color-mix(in srgb,var(--accent) 55%,transparent)}
.btn:active{transform:translateY(0)}
.btn--go{background:var(--accent); color:#07070c; border-color:transparent}
.btn--go:hover{filter:brightness(1.08)}
.btn[disabled]{opacity:.45; cursor:not-allowed; transform:none}

/* --- первый экран --- */
.stage{min-height:calc(100vh - 74px); display:flex; flex-direction:column;
  align-items:center; justify-content:center; padding:40px 0 60px; text-align:center}
.title{
  font-family:Unbounded; font-weight:300; font-size:clamp(38px,9vw,104px);
  letter-spacing:.18em; margin:0 0 6px; text-indent:.18em;
  text-shadow:0 0 26px color-mix(in srgb,var(--accent) 60%,transparent),
              0 0 70px color-mix(in srgb,var(--accent) 32%,transparent);
  transition:text-shadow .55s ease;
}
.sub{color:var(--dim); font-size:14px; letter-spacing:.02em; margin:0 0 46px}
.kicker{font-family:JBMono; font-size:11px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--dim); margin:0 0 20px}
.cards{display:flex; gap:26px; flex-wrap:wrap; justify-content:center; perspective:1100px}

/* --- карточка героя --- */
.card{
  --c:#fff; --rx:0deg; --ry:0deg; --mx:50%;
  position:relative; width:262px; border-radius:var(--r); cursor:pointer;
  background:var(--surface); border:2px solid var(--c);
  box-shadow:0 0 0 1px rgba(0,0,0,.6), 0 0 22px color-mix(in srgb,var(--c) 30%,transparent);
  overflow:hidden; padding:0; text-align:left;
  transition:transform .18s ease-out, box-shadow .25s;
}
body:not(.ready) .card{opacity:0}
body.ready .card{animation:cardin .55s cubic-bezier(.2,.8,.3,1) backwards;
  animation-delay:calc(var(--i,0) * .09s)}
@keyframes cardin{from{opacity:0; transform:translateY(22px)} to{opacity:1; transform:none}}
.card:hover,.card:focus-visible{
  transform:perspective(1100px) rotateX(var(--rx)) rotateY(var(--ry)) translateY(-10px) scale(1.03);
  box-shadow:0 0 0 1px rgba(0,0,0,.6), 0 0 52px color-mix(in srgb,var(--c) 60%,transparent);
  z-index:2;
}
.card__media{position:relative; display:block; overflow:hidden}
/* height:auto обязателен: атрибут height="640" в разметке иначе перебивает aspect-ratio */
.card img{display:block; width:100%; height:auto; aspect-ratio:3/4; object-fit:cover;
  filter:saturate(.92) contrast(1.05);
  transition:transform .5s cubic-bezier(.2,.7,.3,1), filter .3s}
.card:hover img{transform:scale(1.06); filter:saturate(1.03) contrast(1.08)}
.card__vid{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; transition:opacity .35s ease}
.card:hover .card__vid{opacity:1}
.card__live{position:absolute; top:10px; right:10px; z-index:2;
  font-family:JBMono; font-size:9px; letter-spacing:.16em; text-transform:uppercase;
  color:#07070c; background:var(--c); padding:3px 7px; border-radius:5px;
  box-shadow:0 0 14px color-mix(in srgb,var(--c) 70%,transparent)}
.card__shine{position:absolute; inset:0; pointer-events:none; opacity:0;
  background:radial-gradient(130px 210px at var(--mx) 28%,
    color-mix(in srgb,var(--c) 24%,transparent), transparent 72%);
  transition:opacity .3s}
.card:hover .card__shine{opacity:1}
.card .plate{
  position:absolute; left:12px; right:12px; bottom:14px;
  background:rgba(6,6,12,.92); border:1px solid color-mix(in srgb,var(--c) 45%,transparent);
  border-radius:12px; padding:8px 8px 9px; text-align:center;
  font-family:Unbounded; font-weight:700; font-size:14px; letter-spacing:.02em;
  color:var(--c); text-shadow:0 0 14px color-mix(in srgb,var(--c) 55%,transparent);
  backdrop-filter:blur(3px); white-space:nowrap;
}
.card .plate small{display:block; font-family:Golos; font-weight:400; font-size:10px;
  letter-spacing:0; color:var(--dim); margin-top:3px; text-shadow:none;
  overflow:hidden; text-overflow:ellipsis}
.card.is-picked{border-width:3px}
.card.is-picked::after{
  content:"ВЫБРАН"; position:absolute; top:10px; left:10px;
  font-family:JBMono; font-size:10px; letter-spacing:.16em; color:#07070c;
  background:var(--c); padding:4px 8px; border-radius:6px;
}
.picked-bar{margin-top:38px; min-height:56px; display:flex; gap:12px;
  align-items:center; justify-content:center; flex-wrap:wrap}
.picked-bar p{margin:0; color:var(--dim); font-size:14px}

/* --- общие секции --- */
.sec{padding:64px 0}
.sec h2{font-family:Unbounded; font-weight:500; font-size:clamp(22px,3.4vw,34px);
  letter-spacing:.04em; margin:0 0 8px}
.sec .lead{color:var(--dim); margin:0 0 34px; max-width:60ch}
.grid{display:grid; gap:20px; grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.panel{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:22px}

/* --- кейсы --- */
.case{--c:#fff; position:relative; display:block; background:var(--surface);
  border:1px solid var(--line); border-radius:var(--r); overflow:hidden;
  transition:transform .25s cubic-bezier(.2,.7,.3,1), border-color .2s, box-shadow .25s}
body:not(.ready) .case{opacity:0}
body.ready .case{animation:cardin .5s cubic-bezier(.2,.8,.3,1) backwards;
  animation-delay:calc(var(--i,0) * .08s)}
.case:hover{transform:translateY(-6px);
  border-color:color-mix(in srgb,var(--c) 65%,transparent);
  box-shadow:0 20px 50px -22px color-mix(in srgb,var(--c) 75%,transparent)}
.case .cap{position:relative; height:186px; overflow:hidden; background:var(--raise);
  display:flex; align-items:center; justify-content:center}
.case .cap .blur{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  filter:blur(16px) saturate(1.15) brightness(.45); transform:scale(1.25)}
.case .cap::after{content:""; position:absolute; inset:0;
  background:radial-gradient(75% 100% at 50% 100%,
    color-mix(in srgb,var(--c) 45%,transparent), transparent 70%)}
.case .cap .face{position:relative; z-index:1; width:100px; height:100px; border-radius:16px;
  object-fit:cover; border:2px solid var(--c);
  box-shadow:0 0 30px color-mix(in srgb,var(--c) 55%,transparent);
  transition:transform .3s cubic-bezier(.2,.7,.3,1)}
.case:hover .cap .face{transform:scale(1.07) rotate(-1.5deg)}
.case .body{padding:18px; position:relative}
.case h3{font-family:Unbounded; font-weight:600; font-size:16px; margin:0 0 4px}
.case .price{font-family:JBMono; color:var(--gold); font-weight:700; font-size:14px}
.case .go{position:absolute; right:18px; bottom:18px; font-family:JBMono; font-size:11px;
  letter-spacing:.14em; color:var(--c); opacity:0; transform:translateX(-6px);
  transition:opacity .25s, transform .25s}
.case:hover .go{opacity:1; transform:none}

/* --- рулетка --- */
.reel-box{position:relative; overflow:hidden; border-radius:var(--r);
  border:1px solid var(--line); background:var(--surface); padding:22px 0; margin:26px 0}
.reel-box::before,.reel-box::after{content:""; position:absolute; top:0; bottom:0; width:110px; z-index:2;
  pointer-events:none}
.reel-box::before{left:0; background:linear-gradient(90deg,var(--surface),transparent)}
.reel-box::after{right:0; background:linear-gradient(-90deg,var(--surface),transparent)}
.needle{position:absolute; left:50%; top:0; bottom:0; width:2px; z-index:3;
  background:var(--accent); box-shadow:0 0 18px var(--accent); transform:translateX(-1px)}
.reel{display:flex; gap:12px; will-change:transform}
.slot{--c:#9aa0b5; flex:0 0 136px; height:150px; border-radius:14px; background:var(--raise);
  border:1px solid color-mix(in srgb,var(--c) 55%,transparent); padding:12px;
  display:flex; flex-direction:column; justify-content:flex-end; gap:6px}
.slot b{font-size:12.5px; font-weight:600; line-height:1.25}
.slot span{font-family:JBMono; font-size:10px; letter-spacing:.1em; color:var(--c); text-transform:uppercase}
.slot::before{content:""; display:block; height:34px; border-radius:8px; margin-bottom:auto;
  background:linear-gradient(135deg,color-mix(in srgb,var(--c) 55%,transparent),transparent)}

.prize{display:none; align-items:center; gap:16px; margin-top:8px;
  border:1px solid var(--line); border-radius:var(--r); padding:18px; background:var(--surface)}
.prize.show{display:flex; animation:pop .35s cubic-bezier(.2,.8,.3,1.2)}
@keyframes pop{from{transform:scale(.94); opacity:0}to{transform:scale(1); opacity:1}}
.prize .dot{width:44px; height:44px; border-radius:12px; flex:none}
.prize b{font-family:Unbounded; font-size:15px}
.prize .val{font-family:JBMono; color:var(--gold); font-size:13px}

/* --- таблицы и списки --- */
table{width:100%; border-collapse:collapse; font-size:13.5px}
th,td{text-align:left; padding:10px 12px; border-bottom:1px solid var(--line)}
th{font-family:JBMono; font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--dim)}
td.num{font-family:JBMono}
.rar{font-family:JBMono; font-size:10.5px; letter-spacing:.1em; text-transform:uppercase}

/* --- формы --- */
.form{max-width:400px; margin:70px auto; background:var(--surface);
  border:1px solid var(--line); border-radius:var(--r); padding:30px}
.form h1{font-family:Unbounded; font-weight:500; font-size:24px; margin:0 0 6px; letter-spacing:.04em}
.form p.hint{color:var(--dim); font-size:13.5px; margin:0 0 22px}
label{display:block; font-size:12px; color:var(--dim); margin:0 0 6px}
input[type=text],input[type=password]{width:100%; padding:12px 14px; margin-bottom:16px;
  background:var(--raise); border:1px solid var(--line); border-radius:11px;
  color:var(--text); font-family:Golos; font-size:15px}
input:focus{outline:none; border-color:var(--accent)}
.msg{display:none; margin:0 0 16px; padding:11px 13px; border-radius:11px; font-size:13.5px}
.msg.show{display:block}
.msg.bad{background:rgba(255,59,59,.11); border:1px solid rgba(255,59,59,.35); color:#ffb3b3}
.msg.good{background:rgba(60,220,130,.1); border:1px solid rgba(60,220,130,.32); color:#a8f0c8}
.swap{margin-top:18px; font-size:13.5px; color:var(--dim); text-align:center}
.swap a{color:var(--accent)}

/* капча */
.cap{display:flex; align-items:center; gap:10px; margin:0 0 12px}
.cap__img{display:block; width:100%; max-width:260px; height:auto; cursor:pointer;
  border:1px solid var(--line); border-radius:11px; background:var(--raise)}
.cap__new{flex:none; padding:9px 12px; font-family:Golos; font-size:12.5px;
  color:var(--dim); background:var(--raise); border:1px solid var(--line);
  border-radius:11px; cursor:pointer; white-space:nowrap}
.cap__new:hover{color:var(--text); border-color:var(--accent)}
#captcha{font-family:JBMono; letter-spacing:.22em; text-transform:uppercase}
@media (max-width:520px){
  .cap{flex-direction:column; align-items:stretch}
  .cap__new{width:100%}
}

.foot{border-top:1px solid var(--line); margin-top:60px; padding:26px 0 40px;
  color:var(--dim); font-size:12.5px; display:flex; gap:16px; flex-wrap:wrap}
.mute{color:var(--dim)}
.right{margin-left:auto}

#sound-toggle{white-space:nowrap; padding:9px 14px}
@media (max-width:640px){
  .card{width:min(78vw,260px)}
  .top{flex-wrap:wrap; gap:12px}
  .top nav{gap:12px; font-size:13px; width:100%; margin-left:0}
  #sound-toggle{margin-left:auto; padding:7px 11px; font-size:11px}
  .sec{padding:44px 0}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important; transition-duration:.01ms !important}
}
