/* Главная E · Радар. Анимации и раскладка — из прототипа prototypes/src/E (css/home.css и pages/home.html), инлайн-стили вынесены в классы. */

@property --pct{syntax:'<integer>';inherits:false;initial-value:0}
@keyframes pre-pct{from{--pct:0}to{--pct:100}}
@keyframes pre-bar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes pre-show{0%,76%{opacity:1;visibility:visible;filter:none}100%{opacity:0;visibility:hidden;filter:blur(10px)}}
@keyframes focus-in{from{filter:blur(16px);opacity:.2;transform:scale(1.03)}to{filter:none;opacity:1;transform:none}}
@keyframes lock{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
@keyframes pan-in{from{opacity:0;transform:translateY(14px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
@keyframes rv{from{opacity:0;transform:translateY(48px)}}

/* Прелоадер: один раз за сессию (класс af-nopre ставит скрипт в <head>) */
.pre{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:20px;background:var(--bg);opacity:0;visibility:hidden;pointer-events:none;animation:pre-show 2.5s ease both}
.pre-k{margin:0;font-family:var(--mono);font-size:12px;letter-spacing:.32em;color:var(--mu)}
.pre-pct{margin:0;font-weight:200;font-size:120px;line-height:1;letter-spacing:-.04em;color:var(--fg);font-variant-numeric:tabular-nums;counter-reset:pct var(--pct);animation:pre-pct 1.8s cubic-bezier(.6,0,.2,1) both}
.pre-pct::after{content:counter(pct) "%"}
.pre-line{width:min(440px,70%);height:2px;background:rgba(238,242,249,.12)}
.pre-bar{height:100%;background:var(--ac);transform-origin:0 50%;animation:pre-bar 1.8s cubic-bezier(.6,0,.2,1) both}
.pre-sub{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.24em;color:var(--fa)}
.af-nopre .pre{display:none}

/* Первый экран */
.e-top{position:relative;overflow:hidden;background:radial-gradient(60% 55% at 72% 48%,rgba(47,227,122,.14),rgba(47,227,122,0) 62%),var(--bg)}
.e-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(238,242,249,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(238,242,249,.05) 1px,transparent 1px);background-size:120px 120px;-webkit-mask-image:radial-gradient(80% 70% at 62% 45%,#000 30%,transparent 85%);mask-image:radial-gradient(80% 70% at 62% 45%,#000 30%,transparent 85%)}
.e-cross{position:absolute;width:13px;height:13px;background:linear-gradient(var(--fa),var(--fa)) center/1px 13px no-repeat,linear-gradient(var(--fa),var(--fa)) center/13px 1px no-repeat}
.e-hero{position:relative;z-index:2;display:flex;flex-wrap:wrap;align-items:center;gap:40px;min-height:700px;padding:clamp(32px,4vw,64px) var(--gut) clamp(48px,5vw,80px)}
.e-hero.focus{animation:focus-in 1.4s cubic-bezier(.2,.7,.2,1) 1.7s both}
.e-hero-tx{flex:1 1 560px;min-width:0}
.e-kicker{display:flex;align-items:center;gap:12px;margin:0 0 28px;font-family:var(--mono);font-size:12px;letter-spacing:.22em;color:var(--mu);text-transform:uppercase}
.e-kicker span{color:var(--ac)}
.e-h1{margin:0;font-weight:300;font-size:clamp(56px,8.4vw,128px);line-height:.92;letter-spacing:-.04em}
.e-h1-ac{font-weight:600;color:var(--ac)}
.e-lead{max-width:32em;margin:28px 0 32px;font-size:clamp(16px,1.3vw,19px);line-height:1.6;color:var(--fg2)}
.e-btn{font-size:13px}
.e-hero-dl{display:flex;flex-wrap:wrap;gap:18px 44px;margin:44px 0 0;padding-top:22px;border-top:1px solid var(--ln)}
.e-hero-dl dt{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--mu);text-transform:uppercase}
.e-hero-dl dd{margin:6px 0 0;font-size:18px;font-weight:500}
.e-ac{color:var(--ac)}
.af-nopre .e-hero.focus{animation-delay:0s;animation-duration:.8s}
.af-nopre .lu>span{animation-delay:.1s!important}
.af-nopre .lu+.lu>span{animation-delay:.25s!important}
.af-nopre .lu+.lu+.lu>span{animation-delay:.4s!important}

/* Радар */
.radar-box{position:relative;flex:1 1 440px;max-width:600px;aspect-ratio:1/1;margin:0 auto}
.radar-box>span{position:absolute}
.rb-ring{border-radius:50%;border:1px solid rgba(238,242,249,.12)}
.rb-ax{background:rgba(238,242,249,.12)}
.rb-h{left:0;right:0;top:50%;height:1px}.rb-v{top:0;bottom:0;left:50%;width:1px}
.sweep{inset:6%;border-radius:50%;background:conic-gradient(from 0deg,rgba(47,227,122,0) 0deg,rgba(47,227,122,0) 290deg,rgba(47,227,122,.28) 352deg,rgba(47,227,122,.85) 360deg);animation:spin 4s linear infinite}
.rb-deg{transform:translate(-50%,-50%);font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--fa)}
.rb-t{width:0;height:0}
.rb-t>span{position:absolute}
.rb-dot{left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:var(--fg)}
.rb-dot.rb-main{left:-5px;top:-5px;width:10px;height:10px;background:var(--ac);box-shadow:0 0 14px var(--ac)}
.rb-ping{left:-9px;top:-9px;width:18px;height:18px;border-radius:50%;border:1px solid var(--fg)}
.rb-ping.rb-main{left:-10px;top:-10px;width:20px;height:20px;border-color:var(--ac)}
.rb-lbl{left:12px;top:-8px;white-space:nowrap;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--fg2)}
.lock{left:-24px;top:-24px;width:48px;height:48px;background:linear-gradient(var(--ac),var(--ac)) left top/10px 2px no-repeat,linear-gradient(var(--ac),var(--ac)) left top/2px 10px no-repeat,linear-gradient(var(--ac),var(--ac)) right top/10px 2px no-repeat,linear-gradient(var(--ac),var(--ac)) right top/2px 10px no-repeat,linear-gradient(var(--ac),var(--ac)) left bottom/10px 2px no-repeat,linear-gradient(var(--ac),var(--ac)) left bottom/2px 10px no-repeat,linear-gradient(var(--ac),var(--ac)) right bottom/10px 2px no-repeat,linear-gradient(var(--ac),var(--ac)) right bottom/2px 10px no-repeat;animation:lock 1.6s ease-in-out infinite}
.lock-lbl{left:32px;top:-30px;white-space:nowrap;padding:4px 7px;border:1px solid rgba(47,227,122,.6);background:rgba(10,12,15,.85);font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--fg)}
.rb-ctr{left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%);background:linear-gradient(var(--ac),var(--ac)) center/2px 22px no-repeat,linear-gradient(var(--ac),var(--ac)) center/22px 2px no-repeat}
.rb-name{left:50%;top:54%;transform:translateX(-50%);white-space:nowrap;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--mu)}

/* Бегущая строка */
.e-marq{position:relative;z-index:3;overflow:hidden;border-top:1px solid rgba(238,242,249,.1);background:var(--p1)}
.e-marq .marq{padding:15px 0;font-family:var(--mono);font-size:13px;letter-spacing:.22em;white-space:nowrap;color:var(--fg)}
.e-marq .marq span{padding-right:28px}
.e-marq i{font-style:normal;color:var(--ac)}

/* О фестивале */
.e-quote{margin:auto 0 0;padding:18px 0 0 22px;border-left:2px solid var(--ac)}
.e-quote p:first-child{margin:0;font-weight:300;font-size:clamp(24px,2.2vw,32px);line-height:1.2;letter-spacing:-.02em}
.e-quote .card-k{margin-top:10px}
.e-orgs{display:flex;flex-wrap:wrap;align-items:center;gap:10px 24px;margin-top:36px;padding-top:22px;border-top:1px solid var(--ln)}
.e-orgs>div{display:flex;flex-wrap:wrap;gap:8px}

/* Шоу: вкладки и чертежи */
.e-pan{display:flex;flex-wrap:wrap;gap:32px;padding:clamp(20px,3vw,40px);animation:pan-in .55s cubic-bezier(.2,.8,.2,1) both}
.e-pan-tx{flex:1 1 360px;min-width:0;display:flex;flex-direction:column}
.e-pan-k{margin:0;font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--ac)}
.e-pan h3{margin:14px 0 0;font-weight:300;font-size:clamp(40px,4.4vw,64px);line-height:.95;letter-spacing:-.035em}
.e-pan-d{max-width:30em;margin:18px 0 26px;font-size:17px;line-height:1.6;color:var(--fg2)}
.e-dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:auto 0 0;background:var(--ln);border:1px solid var(--ln)}
.e-dl>div{padding:12px 14px;background:var(--p1)}
.e-dl dt{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--mu);text-transform:uppercase}
.e-dl dd{margin:4px 0 0;font-family:var(--mono);font-size:14px}
.e-bp{position:relative;flex:1 1 420px;min-width:0;overflow:hidden;border:1px solid var(--ln);background-color:var(--bg);background-image:linear-gradient(rgba(238,242,249,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(238,242,249,.035) 1px,transparent 1px);background-size:24px 24px;background-position:-1px -1px}
.e-bp-l{position:absolute;left:14px;top:12px;margin:0;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--fa)}
.e-bp svg{display:block;width:100%;height:auto}
/* чертежи шоу: обводки чертятся при появлении, детали оживают по кругу; базовые стили = итоговое состояние */
@keyframes bp-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes bp-in{from{opacity:0}to{opacity:1}}
@keyframes bp-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes bp-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes bp-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes bp-mark{0%,100%{transform:translateY(0)}50%{transform:translateY(-64px)}}
@keyframes bp-glow{0%,100%{opacity:.45}50%{opacity:1}}
@keyframes bp-ping{0%{transform:scale(.6);opacity:.9}100%{transform:scale(3.4);opacity:0}}
@keyframes bp-tw{0%,100%{opacity:.15}50%{opacity:1}}
@keyframes bp-strobe{0%,7%{opacity:1}12%,100%{opacity:.2}}
@keyframes bp-flow{from{stroke-dashoffset:0}to{stroke-dashoffset:-40}}
@keyframes bp-streak{from{stroke-dashoffset:0}to{stroke-dashoffset:-200}}
@keyframes bp-roll{0%,100%{transform:none}25%{transform:translateX(-5px) rotate(-1.6deg)}75%{transform:translateX(5px) rotate(1.6deg)}}
@keyframes bp-sway{0%,100%{transform:none}25%{transform:rotate(-2.5deg)}75%{transform:rotate(2.5deg)}}
@keyframes bp-prop{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.08)}}
@keyframes bp-burn{0%,100%{transform:scale(.55);opacity:.6}5%{transform:scale(1.3);opacity:1}10%{transform:scale(1.1,1.2)}16%{transform:scale(1.25,1.05)}24%{transform:scale(1);opacity:1}42%{transform:scale(.7);opacity:.75}}
@keyframes bp-heat{0%,100%{opacity:.1}6%{opacity:.85}26%{opacity:.45}}
@keyframes bp-drift{0%,100%{transform:none}50%{transform:translateX(-28px)}}
@keyframes bp-jolt{0%,100%{transform:none}22%{transform:translateY(1.6px)}48%{transform:translateY(-2.2px)}72%{transform:translateY(.6px)}}
@keyframes bp-puff{0%{transform:translate(0,0) scale(.4);opacity:.8}100%{transform:translate(-60px,-16px) scale(1.9);opacity:0}}
@keyframes bp-xscan{0%{transform:translateX(0);opacity:0}12%{opacity:1}82%{opacity:1}100%{transform:translateX(250px);opacity:0}}
@keyframes bp-stamp{0%{transform:scale(2.2) rotate(-40deg);opacity:0}60%{transform:scale(.9) rotate(5deg);opacity:1}100%{transform:none;opacity:1}}
@keyframes bp-beam{0%,100%{transform:none}25%{transform:rotate(-16deg)}75%{transform:rotate(16deg)}}
@keyframes bp-settle{0%{transform:rotate(-130deg)}30%{transform:rotate(42deg)}50%{transform:rotate(-18deg)}68%{transform:rotate(8deg)}84%{transform:rotate(-3deg)}100%{transform:none}}
@keyframes bp-drift2{0%,100%{transform:none}50%{transform:rotate(6deg)}}
@keyframes bp-wave{0%,100%{transform:none}50%{transform:skewY(9deg) scaleX(.9)}}
@keyframes bp-thrust{0%,100%{transform:scale(1,1)}25%{transform:scale(1.22,.86)}50%{transform:scale(.82,1.1)}75%{transform:scale(1.12,.94)}}
@keyframes bp-smoke{0%{transform:translate(0,0) scale(.5);opacity:.9}100%{transform:translate(-96px,-4px) scale(3.4);opacity:0}}
@keyframes bp-glint{0%,45%{transform:translateX(0)}100%{transform:translateX(620px)}}
@keyframes bp-scan{0%{top:0;opacity:0}12%{opacity:.6}88%{opacity:.6}100%{top:100%;opacity:0}}
.bp-scan{position:absolute;left:0;right:0;top:0;height:1px;background:#2FE37A;box-shadow:0 0 14px 2px rgba(47,227,122,.45);opacity:0;pointer-events:none;animation:bp-scan 5s cubic-bezier(.45,0,.55,1) infinite}
.bp-d{stroke-dasharray:1;animation:bp-draw 1.6s cubic-bezier(.65,0,.25,1) both}
.bp-f{animation:bp-in .8s ease 1.1s both}
.bp-orbit{animation:bp-spin 24s linear infinite}
.bp-spin{animation:bp-spin .6s linear infinite}
.bp-spin-r{animation:bp-spin .6s linear infinite reverse}
.bp-bob{animation:bp-bob 3.2s ease-in-out infinite}
.bp-float{animation:bp-float 7s ease-in-out infinite}
.bp-mark{animation:bp-mark 7s ease-in-out infinite}
.bp-glow{animation:bp-glow 2.4s ease-in-out infinite}
.bp-ping{animation:bp-ping 2s ease-out infinite}
.bp-tw{animation:bp-tw 3s ease-in-out infinite}
.bp-strobe{animation:bp-strobe 1.4s linear infinite}
.bp-flow{animation:bp-flow 1s linear infinite}
.bp-flowr{animation:bp-flow .5s linear infinite reverse}
.bp-streak{animation:bp-streak 1s linear infinite}
.bp-roll{animation:bp-roll 6s ease-in-out infinite}
.bp-sway{animation:bp-sway 3.6s ease-in-out infinite}
.bp-prop{animation:bp-prop .16s linear infinite}
.bp-burn{animation:bp-burn 3.2s ease-out infinite}
.bp-heat{animation:bp-heat 3.2s ease-out infinite}
.bp-drift{animation:bp-drift 16s ease-in-out infinite}
.bp-jolt{animation:bp-jolt .7s ease-in-out infinite}
.bp-puff{animation:bp-puff 1.6s ease-out infinite}
.bp-xscan{animation:bp-xscan 3.6s cubic-bezier(.45,0,.55,1) infinite}
.bp-stamp{animation:bp-stamp .9s cubic-bezier(.2,.8,.2,1) 1s both}
.bp-beam{animation:bp-beam 5s ease-in-out infinite}
.bp-settle{animation:bp-settle 2.6s cubic-bezier(.25,.8,.35,1) .3s both}
.bp-drift2{animation:bp-drift2 6s ease-in-out 2.9s infinite}
.bp-wave{animation:bp-wave 1.8s ease-in-out infinite}
.bp-thrust{transform-box:fill-box;transform-origin:0% 50%;animation:bp-thrust .26s linear infinite}
.bp-smoke{transform-box:fill-box;transform-origin:50% 50%;animation:bp-smoke 2.4s ease-out infinite}
.bp-glint{animation:bp-glint 5s cubic-bezier(.5,0,.3,1) infinite}
.bp-thrust{transform-box:fill-box;transform-origin:0% 50%;animation:bp-thrust .26s linear infinite}
.bp-smoke{transform-box:fill-box;transform-origin:50% 50%;animation:bp-smoke 2.4s ease-out infinite}
.bp-glint{animation:bp-glint 5s cubic-bezier(.5,0,.3,1) infinite}
.bp-thrust{transform-box:fill-box;transform-origin:0% 50%;animation:bp-thrust .26s linear infinite}
.bp-smoke{transform-box:fill-box;transform-origin:50% 50%;animation:bp-smoke 2.4s ease-out infinite}
.bp-glint{animation:bp-glint 5s cubic-bezier(.5,0,.3,1) infinite}
.bp-thrust{transform-box:fill-box;transform-origin:0% 50%;animation:bp-thrust .26s linear infinite}
.bp-smoke{transform-box:fill-box;transform-origin:50% 50%;animation:bp-smoke 2.4s ease-out infinite}
.bp-glint{animation:bp-glint 5s cubic-bezier(.5,0,.3,1) infinite}
.bp-thrust{transform-box:fill-box;transform-origin:0% 50%;animation:bp-thrust .26s linear infinite}
.bp-smoke{transform-box:fill-box;transform-origin:50% 50%;animation:bp-smoke 2.4s ease-out infinite}
.bp-glint{animation:bp-glint 5s cubic-bezier(.5,0,.3,1) infinite}
.bp-thrust{transform-box:fill-box;transform-origin:0% 50%;animation:bp-thrust .26s linear infinite}
.bp-smoke{transform-box:fill-box;transform-origin:50% 50%;animation:bp-smoke 2.4s ease-out infinite}
.bp-glint{animation:bp-glint 5s cubic-bezier(.5,0,.3,1) infinite}
.e-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));border-top:1px solid var(--ln)}
.e-tab{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-height:84px;padding:16px 18px;border:0;border-top:2px solid transparent;background:transparent;color:var(--mu);font-family:var(--sans);font-size:16px;text-align:left;cursor:pointer}
.e-tab:not(:last-child){box-shadow:inset -1px 0 0 var(--ln)}
.e-tab span{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--ac)}
.e-tab:hover{color:var(--fg)}
.e-tab.is-on{border-top-color:var(--ac);background:var(--p3);color:var(--fg)}

/* Табло вылетов */
.e-board{border:1px solid var(--ln);background:var(--p1);padding:18px clamp(14px,2.2vw,30px) 6px}
.e-board-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-bottom:14px;border-bottom:1px solid rgba(238,242,249,.1)}
.e-board-l{display:flex;align-items:center;gap:10px;margin:0;font-family:var(--mono);font-size:12px;letter-spacing:.18em;color:var(--am)}
.e-board-l i{width:8px;height:8px;border-radius:50%;background:var(--am)}
.daytabs{display:flex;flex-wrap:wrap;gap:4px;padding:4px;background:var(--p3)}
.daytabs button{min-height:40px;padding:0 14px;border:0;background:transparent;color:var(--fg2);font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.1em;cursor:pointer}
.daytabs button.is-on{background:var(--am);color:var(--bg)}
.e-rows{margin:0;padding:0;list-style:none}
.e-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 22px;padding:13px 0;border-bottom:1px solid rgba(238,242,249,.08)}
.e-row-time{flex:0 0 112px}
.e-row-time span{display:inline-block;padding:5px 9px;background:linear-gradient(180deg,#1C232C 0%,#1C232C 50%,#141A21 50%,#141A21 100%);font-family:var(--mono);font-size:20px;font-weight:700;letter-spacing:.08em;color:var(--am)}
.e-row-t{flex:1 1 260px;font-size:17px}
.e-row-z{flex:0 0 150px;font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--mu);text-transform:uppercase}
.e-row-s{flex:0 0 110px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.14em;color:var(--gr)}
.e-row-s.is-hl{color:var(--ac2)}
.e-row-s.is-night{color:var(--bl)}
.e-board-f{margin:0;padding:14px 0 12px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--mu)}

/* Цифры */
.e-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));border-top:1px solid var(--ln);border-left:1px solid var(--ln)}
.e-stats>div{padding:26px 24px 28px;border-right:1px solid var(--ln);border-bottom:1px solid var(--ln)}
.e-stat-n{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--mu)}
.e-stat-v{margin:22px 0 0;font-weight:200;font-size:clamp(72px,7.6vw,120px);line-height:.9;letter-spacing:-.05em}
.e-stat-l{margin:14px 0 0;font-size:16px;color:var(--fg2)}

/* Билеты: строка трансфера */
.pass{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s}
.pass:hover{transform:translateY(-8px);box-shadow:0 26px 60px -26px rgba(47,227,122,.6)}
.e-strip{display:flex;flex-wrap:wrap;align-items:center;gap:10px 32px;margin-top:18px;padding:16px 20px;border:1px solid var(--ln);font-family:var(--mono);font-size:13px;letter-spacing:.08em;color:var(--fg2)}
.e-strip>span:first-child{color:var(--ac);letter-spacing:.2em;text-transform:uppercase}
.e-strip b{font-weight:400;color:var(--fg)}

@supports (animation-timeline:view()){
.e-home .rv{animation:rv linear both;animation-timeline:view();animation-range:entry 0% entry 80%}
}
@media (prefers-reduced-motion:reduce){.e-home *{animation:none!important;transition:none!important}.pre{display:none!important}}
@media (max-width:640px){
.lock-lbl{left:auto;right:30px;top:24px}
.daytabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
.daytabs button{padding:0 6px}
.e-stats{border:0}
.e-stats>div{flex-basis:62%!important;border-top:1px solid var(--ln)}
.radar-box{flex-basis:100%;max-width:250px}
.e-hero{min-height:0}
.pre-pct{font-size:88px}
}
