/* Stage Online — конференция 15-17 сентября. Дизайн-система заимствована
   у stagecon.ru (см. память reference_stagecon_ru_infra) — тот же шрифтовой
   стек и палитра, разметка/секции свои. */

@font-face{font-family:'Century Gothic';src:url('assets/fonts/CenturyGothic-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Century Gothic';src:url('assets/fonts/CenturyGothic-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:Bounded;src:url('assets/fonts/Bounded-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Bounded;src:url('assets/fonts/Bounded-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}

:root{
  --bg:#0a0a0a;
  --fg:#ffffff;
  --lime:#d4ff00;
  --lime-2:#ceff00;
  --blue:#0f85ef;
  --muted:#8a8a8a;
  --font-display:Bounded, sans-serif;
  --font-text:'Century Gothic', CenturyGothic, -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scrollbar-gutter:stable}
body{
  background:var(--bg);
  color:var(--fg);
  font-family:var(--font-text);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit}

.container{width:100%;max-width:1600px;margin:0 auto;padding:0 40px}

/* ── Topbar ─────────────────────────────────────────────────────────── */
.topbar{
  position:absolute;
  top:0;left:0;right:0;
  z-index:10;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  padding:32px 40px;
}
.topbar__burger{
  display:flex;
  align-items:center;
  justify-content:center;
  width:44px;height:44px;
  background:none;
  border:none;
  color:var(--fg);
  cursor:pointer;
}

/* ── Hero ───────────────────────────────────────────────────────────── */
.hero{
  position:relative;
  background:var(--bg);
  padding:140px 0 80px;
  overflow:hidden;
}
.hero__container{
  display:grid;
  grid-template-columns:minmax(0, 720px) 1fr;
  grid-template-areas:
    "intro   visual"
    "details visual";
  align-items:center;
  gap:0 40px;
}
.hero__intro{grid-area:intro; min-width:0}
.hero__details{grid-area:details; min-width:0}
.hero__eyebrow{
  margin:0 0 16px;
  font-family:var(--font-display);
  font-size:clamp(14px, 1.7vw, 26px);
  font-weight:400;
  line-height:1.15;
  letter-spacing:.02em;
  text-transform:uppercase;
  white-space:nowrap;
  background:linear-gradient(135deg,var(--lime-2) 0,var(--blue) 35%,var(--lime-2) 65%,var(--blue) 100%);
  background-size:200% 200%;
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:transparent;
  animation:hero-gradient-shift 6s ease infinite;
}
@keyframes hero-gradient-shift{
  0%{background-position:0% 50%}
  50%{background-position:100% 50%}
  100%{background-position:0% 50%}
}
.hero__title{
  margin:0 0 28px;
  font-family:var(--font-display);
  font-weight:700;
  line-height:.98;
  letter-spacing:0;
  text-transform:uppercase;
}
.hero__title-word{
  display:block;
}
.hero__title-word--white{
  color:var(--fg);
  font-size:clamp(56px, 9vw, 128px);
}
.hero__title-word--accent{
  color:var(--lime);
  font-size:clamp(24px, 4.2vw, 58px);
  margin-top:6px;
  white-space:nowrap;
}
.hero__text{
  margin:0 0 40px;
  font-size:clamp(17px, 1.6vw, 22px);
  font-weight:400;
  line-height:1.5;
  color:var(--fg);
}
.hero__text-line{display:block}
.hero__accent{color:var(--lime)}
.hero__cta-wrap{
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  gap:14px;
}
.hero__btn{
  display:flex;
  align-items:center;
  justify-content:center;
  width:fit-content;
  max-width:100%;
  padding:18px clamp(24px, 4vw, 48px);
  border:1.5px solid transparent;
  border-radius:100px;
  background:var(--blue);
  font-family:var(--font-text);
  font-size:clamp(15px, 4.2vw, 19px);
  font-weight:700;
  line-height:1;
  text-decoration:none;
  color:var(--fg);
  white-space:nowrap;
  transition:background .3s ease, color .3s ease, border-color .3s ease;
}
.hero__btn:hover{
  background:transparent;
  color:var(--fg);
  border-color:var(--fg);
}
.hero__cta-caption{
  font-size:14px;
  letter-spacing:.01em;
  color:var(--muted);
  text-align:center;
}
.hero__visual{
  grid-area:visual;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:0;
  max-width:680px;
}
.hero__visual::before{
  content:"";
  position:absolute;
  inset:-35%;
  background:radial-gradient(ellipse at center, rgba(212,255,0,.16) 0%, rgba(212,255,0,.05) 45%, rgba(212,255,0,0) 75%);
  pointer-events:none;
}
.hero__laptop{
  position:relative;
  z-index:1;
  width:100%;
  max-width:640px;
  height:auto;
  pointer-events:none;
  user-select:none;
}

/* ── Промо-бегущая строка (паттерн promo-strip со stagecon.ru) ─────────── */
.promo-strip{
  display:block;
  width:100%;
  margin:0;
  padding:20px 0;
  overflow:hidden;
  background:linear-gradient(90deg, #d4ff00 0, #9fdc3a 28%, #45c8e8 68%, #4db8f5 100%);
}
.promo-strip__viewport{overflow:hidden; width:100%}
.promo-strip__track{
  display:flex;
  width:max-content;
  animation:promo-strip-marquee 26s linear infinite;
  will-change:transform;
}
.promo-strip__group{display:flex; align-items:center; flex-shrink:0}
.promo-strip__item{
  display:inline-flex;
  align-items:center;
  gap:14px;
  padding:0 40px;
  white-space:nowrap;
  font-family:var(--font-display);
  font-size:clamp(15px, 1.9vw, 22px);
  font-weight:400;
  line-height:1;
  color:#000;
  text-transform:uppercase;
}
.promo-strip__hash{
  flex-shrink:0;
  width:clamp(20px, 2.2vw, 30px);
  height:auto;
  object-fit:contain;
}
@keyframes promo-strip-marquee{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}
@media (prefers-reduced-motion:reduce){
  .promo-strip__track{animation:none}
  .promo-strip__group:last-child{display:none}
}

/* ── Perks (карточки «жидкое стекло», паттерн business-show со stagecon.ru) ─ */
.perks{
  position:relative;
  background:var(--bg);
  padding:40px 0 120px;
  overflow-x:hidden;
}
.perks__title{
  margin:0 0 20px;
  font-family:var(--font-display);
  font-weight:700;
  line-height:1.05;
  letter-spacing:0;
}
.perks__title-white,
.perks__title-accent{
  display:block;
  font-size:clamp(34px, 5.6vw, 68px);
}
.perks__title-white{color:var(--fg)}
.perks__title-accent{color:var(--lime); margin-top:4px}
.perks__koz{
  display:inline-block;
  font-size:1.35em;
  line-height:1;
}
.perks__lead{
  margin:0 0 28px;
  max-width:640px;
  font-size:clamp(18px, 1.8vw, 24px);
  line-height:1.4;
  color:var(--fg);
}
.perks__lead-line{display:block}
.perks__lead-accent{color:var(--lime)}

.perks__grid-wrap{
  position:relative;
  padding:85px 0 170px;
}
.perks__bg{
  position:absolute;
  inset:0;
  z-index:0;
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:none;
  user-select:none;
}
.perks__bg img{
  display:block;
  max-width:100%;
  max-height:100%;
  width:auto;
  height:auto;
}
.perks__grid{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:18px;
}
.perks__card{
  position:relative;
}
.perks__card-panel{
  position:relative;
  z-index:2;
  padding:30px 22px;
  border-radius:20px;
  background:rgba(255,255,255,.03);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  isolation:isolate;
  overflow:hidden;
}
.perks__card-panel::before{
  content:'';
  position:absolute;
  inset:0;
  border-radius:inherit;
  padding:1px;
  background:linear-gradient(136deg, rgba(255,255,255,.75) 2%, rgba(255,255,255,.14) 56%, rgba(255,255,255,.75) 100%);
  -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask-composite:exclude;
  pointer-events:none;
  z-index:0;
}
.perks__card-heading{
  position:relative;
  z-index:1;
  margin:0 0 16px;
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(13px, 1.5vw, 20px);
  line-height:1.15;
  letter-spacing:-0.01em;
  text-transform:uppercase;
  color:var(--lime);
  white-space:nowrap;
}
.perks__card-list{
  position:relative;
  z-index:1;
  margin:0;
  padding-left:20px;
  font-size:17px;
  line-height:1.5;
  color:var(--fg);
}
.perks__card-list li{margin:0}
.perks__card-list li+li{margin-top:8px}
.perks__card-list li::marker{color:var(--lime)}

/* ── Offer («Даём бесплатно...» — плашки-тезисы + ДА!) ──────────────────── */
.offer{
  position:relative;
  background:var(--bg);
  padding:20px 0 110px;
}
.offer__title{
  margin:0 0 36px;
  max-width:1080px;
  font-family:var(--font-display);
  font-weight:700;
  line-height:1.2;
  letter-spacing:0;
}
.offer__title-line{display:block; white-space:nowrap}
.offer__title-line--lead{
  font-size:clamp(24px, 4.4vw, 56px);
  text-transform:uppercase;
  letter-spacing:.01em;
}
.offer__title-line--sub{
  margin-top:6px;
  font-size:clamp(18px, 2.5vw, 32px);
}
.offer__white{color:var(--fg)}
.offer__accent{color:var(--lime)}

.offer__stage{
  display:flex;
  align-items:stretch;
  gap:32px;
}
.offer__quotes{
  flex:1 1 auto;
  min-width:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:12px;
  list-style:none;
  margin:0;
  padding:0;
}
.offer__quote{
  display:flex;
  align-items:center;
  width:fit-content;
  max-width:100%;
  padding:14px 30px;
  border-radius:100px;
  font-family:var(--font-text);
  font-size:clamp(14px, 1.25vw, 18px);
  font-weight:400;
  line-height:1.25;
  white-space:nowrap;
}
.offer__quote{align-self:flex-start}
.offer__quote:nth-child(odd){
  background:var(--lime);
  color:var(--bg);
  font-weight:700;
}
.offer__quote:nth-child(even){
  background:var(--blue);
  color:#fff;
}
/* Небольшой разброс по сдвигу/повороту у каждой плашки — чтобы читалось
   как накиданные вразнобой цитаты, а не ровная лесенка. Конкретные числа
   подобраны на глаз, не случайны — важно, чтобы не съезжало при перезагрузке. */
.offer__quote:nth-child(1){ margin-left:clamp(0px, 1vw, 10px); transform:rotate(-1.4deg) }
.offer__quote:nth-child(2){ margin-left:clamp(70px, 10vw, 130px); transform:rotate(1.1deg) }
.offer__quote:nth-child(3){ margin-left:clamp(20px, 4vw, 45px); transform:rotate(1.6deg) }
.offer__quote:nth-child(4){ margin-left:clamp(50px, 7.5vw, 95px); transform:rotate(-0.8deg) }
.offer__quote:nth-child(5){ margin-left:clamp(5px, 2vw, 18px); transform:rotate(-1.8deg) }
.offer__quote:nth-child(6){ margin-left:clamp(85px, 11.5vw, 150px); transform:rotate(0.6deg) }
.offer__quote:nth-child(7){ margin-left:clamp(35px, 5.5vw, 65px); transform:rotate(1.2deg) }
.offer__quote:nth-child(8){ margin-left:clamp(60px, 8.5vw, 110px); transform:rotate(-1.3deg) }
.offer__yes{
  flex:0 0 auto;
  width:clamp(360px, 48vw, 840px);
  margin-left:-60px;
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:none;
  user-select:none;
}
.offer__yes img{
  display:block;
  max-width:100%;
  max-height:100%;
  width:auto;
  height:auto;
}

/* ── Speakers (слайдер спикеров, паттерн speakers__track со stagecon.ru) ── */
.speakers{
  position:relative;
  background:var(--bg);
  padding:16px 0 90px;
}
.speakers__intro-container{margin-bottom:28px}
.speakers__title{
  margin:0;
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(28px, 4.4vw, 52px);
  line-height:1.15;
  text-transform:uppercase;
  letter-spacing:0;
}
.speakers__white{color:var(--fg)}
.speakers__accent{color:var(--lime)}
.speakers__lead{
  margin:14px 0 0;
  max-width:640px;
  font-size:clamp(16px, 1.6vw, 20px);
  line-height:1.5;
  color:var(--muted);
}

.speakers__container{position:relative}
.speakers__viewport{
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x proximity;
  scrollbar-width:none;
  -ms-overflow-style:none;
}
.speakers__viewport::-webkit-scrollbar{display:none}
.speakers__track{
  display:flex;
  gap:16px;
  width:max-content;
}
.speaker-card{
  position:relative;
  flex:0 0 auto;
  width:220px;
  aspect-ratio:255/560;
  border-radius:18px;
  overflow:hidden;
  background:#0a1020;
  scroll-snap-align:start;
}
.speaker-card__photo{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center bottom;
  pointer-events:none;
  user-select:none;
}
.speaker-card__info{
  position:absolute;
  left:0; right:0; bottom:0;
  padding:0 18px 22px;
  background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.55) 35%, rgba(0,0,0,.9) 100%);
}
.speaker-card__name{
  margin:0 0 6px;
  font-family:var(--font-text);
  font-size:18px;
  font-weight:700;
  line-height:1.2;
  color:#fff;
}
.speaker-card__bio{
  margin:0;
  font-size:13px;
  line-height:1.35;
  color:rgba(255,255,255,.85);
}
.speaker-card__btn{
  display:inline-flex;
  margin-top:10px;
  padding:7px 16px;
  border:1px solid rgba(255,255,255,.75);
  border-radius:100px;
  font-family:var(--font-text);
  font-size:12px;
  color:#fff;
  text-decoration:none;
  background:transparent;
  transition:background .2s ease, color .2s ease;
}
.speaker-card__btn:hover{background:#fff; color:#111}

.speakers__nav{display:flex; justify-content:center; gap:14px; margin-top:28px}
.speakers__nav-btn{
  display:flex;
  align-items:center;
  justify-content:center;
  width:44px; height:44px;
  border:1px solid rgba(255,255,255,.4);
  border-radius:50%;
  background:transparent;
  color:#fff;
  cursor:pointer;
  transition:background .2s ease, color .2s ease, border-color .2s ease;
}
.speakers__nav-btn:hover{background:#fff; border-color:#fff; color:#111}

/* ── Register (форма регистрации) ──────────────────────────────────────── */
.register{
  position:relative;
  background:var(--bg);
  padding:40px 0 120px;
}
.register__container{display:flex; justify-content:center}
.register__card{
  position:relative;
  width:100%;
  max-width:640px;
  padding:44px 40px;
  border-radius:24px;
  background:rgba(255,255,255,.03);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  isolation:isolate;
  overflow:hidden;
  text-align:center;
}
.register__card::before{
  content:'';
  position:absolute;
  inset:0;
  border-radius:inherit;
  padding:1px;
  background:linear-gradient(136deg, rgba(255,255,255,.7) 2%, rgba(255,255,255,.12) 56%, rgba(255,255,255,.7) 100%);
  -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask-composite:exclude;
  pointer-events:none;
  z-index:0;
}
.register__card::after{
  content:'';
  position:absolute;
  top:-30%; left:50%;
  transform:translateX(-50%);
  width:140%;
  height:70%;
  background:radial-gradient(ellipse at center, rgba(212,255,0,.14) 0%, rgba(15,133,239,.1) 45%, rgba(0,0,0,0) 75%);
  pointer-events:none;
  z-index:0;
}
.register__title{
  position:relative;
  z-index:1;
  margin:0 0 8px;
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(30px, 4.4vw, 46px);
  line-height:1.2;
  text-transform:uppercase;
  letter-spacing:0;
  background:linear-gradient(135deg, var(--lime-2) 0, var(--blue) 35%, var(--lime-2) 65%, var(--blue) 100%);
  background-size:200% 200%;
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:transparent;
  animation:hero-gradient-shift 6s ease infinite;
}
.register__subtitle{
  position:relative;
  z-index:1;
  margin:0 0 32px;
  font-family:var(--font-display);
  font-weight:400;
  font-size:clamp(14px, 1.6vw, 18px);
  text-transform:uppercase;
  letter-spacing:.02em;
  color:var(--fg);
}
.register__form{position:relative; z-index:1; display:flex; flex-direction:column; gap:18px}
/* [hidden] и .register__form — оба класс/атрибут-селекторы, одинаковая
   специфичность, а в каскаде побеждает автор-стиль (наш display:flex) над
   стандартным UA-правилом [hidden]{display:none} — форма после успешной
   отправки оставалась видимой поверх/рядом с "Вы зарегистрированы!".
   Явный оверрайд ниже возвращает ожидаемое поведение hidden. */
.register__form[hidden]{display:none}
.register__field{text-align:left}
.register__field-row{display:flex; gap:14px}
.register__field-row .register__field{flex:1 1 0; min-width:0}
@media (max-width:520px){
  .register__field-row{flex-direction:column; gap:18px}
}
.register__label{
  display:block;
  margin:0 0 8px;
  font-size:13px;
  letter-spacing:.02em;
  text-transform:uppercase;
  color:var(--muted);
}
.register__input{
  display:block;
  width:100%;
  padding:14px 18px;
  border:1.5px solid rgba(255,255,255,.16);
  border-radius:12px;
  background:rgba(255,255,255,.04);
  font-family:var(--font-text);
  font-size:16px;
  color:var(--fg);
  transition:border-color .2s ease, background .2s ease;
}
.register__input::placeholder{color:rgba(255,255,255,.3)}
.register__input:focus{
  outline:none;
  border-color:var(--lime);
  background:rgba(255,255,255,.07);
}
.register__input:invalid.register__input--touched{border-color:#ff6b6b}

.register__hp{
  position:absolute !important;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

.register__consent{
  display:flex;
  align-items:flex-start;
  gap:10px;
  text-align:left;
  font-size:13px;
  line-height:1.5;
  color:var(--muted);
  cursor:pointer;
}
.register__consent a{color:var(--fg); text-decoration:underline}
.register__consent a:hover{color:var(--lime)}
.register__checkbox{
  flex-shrink:0;
  width:20px; height:20px;
  margin-top:1px;
  accent-color:var(--lime);
  cursor:pointer;
}

.register__cta-wrap{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  margin-top:8px;
}
.register__btn{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  width:100%;
  padding:18px;
  border:none;
  border-radius:100px;
  background:var(--lime);
  font-family:var(--font-text);
  font-size:18px;
  font-weight:700;
  color:var(--bg);
  cursor:pointer;
  transition:background .3s ease, opacity .3s ease;
}
.register__btn:hover{background:var(--lime-2)}
.register__btn:disabled{opacity:.6; cursor:default}
.register__btn-spinner{display:none; animation:register-spin .8s linear infinite}
.register__btn.is-loading .register__btn-spinner{display:block}
.register__btn.is-loading .register__btn-label{opacity:.7}
@keyframes register-spin{to{transform:rotate(360deg)}}
.register__cta-caption{
  margin:0;
  font-size:13px;
  color:var(--muted);
}
.register__status{
  margin:4px 0 0;
  min-height:20px;
  font-size:14px;
  line-height:1.4;
}
.register__status[data-state="error"]{color:#ff8080}
.register__status[data-state="success"]{color:var(--lime)}
.register__success{position:relative; z-index:1; text-align:center}
.register__success-title{
  margin:0 0 10px;
  font-family:var(--font-display);
  font-weight:700;
  font-size:28px;
  color:var(--lime);
}
.register__success-text{
  margin:0;
  font-size:16px;
  line-height:1.5;
  color:var(--fg);
}
.register__success-mail{
  display:flex;
  align-items:center;
  gap:12px;
  margin:16px 0 0;
  padding:14px 18px;
  border:1.5px solid rgba(212,255,0,.35);
  border-radius:14px;
  background:rgba(212,255,0,.08);
  text-align:left;
}
.register__success-mail-icon{
  flex-shrink:0;
  color:var(--lime);
}
.register__success-mail span{
  font-size:15px;
  font-weight:700;
  line-height:1.4;
  color:var(--fg);
}
.register__success-redirect{
  margin:18px 0 0;
  font-size:14px;
  line-height:1.5;
  color:var(--muted);
}
.register__success-redirect #successCountdown{
  display:inline-block;
  min-width:1.2em;
  font-weight:700;
  color:var(--lime);
}
.register__success-btn{
  display:flex;
  align-items:center;
  gap:10px;
  margin:16px auto 0;
  width:fit-content;
}
.register__success-btn-icon{
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  width:22px; height:22px;
  border-radius:6px;
  background:#0077ff;
  color:#fff;
}
.register__success-btn--pulse{
  animation:register-success-pulse 1s ease-in-out 2;
}
@keyframes register-success-pulse{
  0%, 100%{transform:scale(1)}
  50%{transform:scale(1.05)}
}

/* ── Modal (попап регистрации из hero) ───────────────────────────────────
   Отдельная форма от инлайновой #register (свои id полей m-reg-*), логика
   в script.js обобщена в initRegisterForm()/initPhoneMask() и навешена на
   обе формы независимо — дублирования JS нет, дублируется только разметка. */
.modal{
  position:fixed;
  inset:0;
  z-index:100;
  display:none;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.modal.is-open{display:flex}
.modal__backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.72);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}
.modal__dialog{
  position:relative;
  z-index:1;
  width:100%;
  max-width:640px;
  max-height:90vh;
  overflow-y:auto;
}
.modal__close{
  position:absolute;
  top:14px; right:14px;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:center;
  width:36px; height:36px;
  border:1.5px solid rgba(255,255,255,.25);
  border-radius:50%;
  background:rgba(0,0,0,.4);
  color:var(--fg);
  cursor:pointer;
  transition:background .2s ease, border-color .2s ease;
}
.modal__close:hover{background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.5)}
.register__card--modal{
  max-width:none;
  margin:0;
}
body.modal-open{overflow:hidden}

@media (max-width:900px){
  .modal{padding:16px}
  .register__card--modal{padding:38px 26px}
  .modal__close{top:10px; right:10px}
}

/* ── P.S.-плашка про офлайн-Stage Москва (под формой регистрации) ──────── */
.ps-note{
  padding:12px 0 48px;
  text-align:center;
}
.ps-note__lead{
  margin:0 0 8px;
  font-size:16px;
  color:var(--muted);
}
.ps-note__event{
  margin:0;
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(20px, 2.6vw, 28px);
  text-transform:uppercase;
  color:var(--fg);
}
.ps-note__accent{color:var(--lime)}
.ps-note__break{display:none}

/* ── Partners ───────────────────────────────────────────────────────────── */
.partners{
  padding:12px 0 64px;
  text-align:center;
}
.partners__title{
  margin:0 0 36px;
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(30px, 4.4vw, 46px);
  text-transform:uppercase;
  letter-spacing:0;
  background:linear-gradient(135deg, var(--lime-2) 0, var(--blue) 35%, var(--lime-2) 65%, var(--blue) 100%);
  background-size:200% 200%;
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:transparent;
  animation:hero-gradient-shift 6s ease infinite;
}
.partners__grid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:28px;
  max-width:900px;
  margin:0 auto;
}
.partners__card{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:18px;
  padding:32px 24px;
  border:1.5px solid rgba(255,255,255,.1);
  border-radius:20px;
  background:rgba(255,255,255,.03);
  text-decoration:none;
  color:inherit;
  transition:background .2s ease, border-color .2s ease, transform .2s ease;
}
.partners__card:hover{
  background:rgba(255,255,255,.07);
  border-color:rgba(212,255,0,.4);
  transform:translateY(-2px);
}
/* лого партнёров разной формы (круглые «печати», широкие надписи) —
   вписываем в одинаковое окно, иначе карточки в сетке скачут по весу */
.partners__card picture{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:150px;
}
.partners__logo{
  width:auto;
  height:auto;
  max-width:220px;
  max-height:150px;
}
.partners__card--static{cursor:default}
.partners__card--static:hover{transform:none; border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.03)}
.partners__logo--round{max-width:170px}
.partners__text{
  margin:0;
  font-size:16px;
  line-height:1.5;
  color:var(--fg);
}

@media (max-width:900px){
  .partners{padding:8px 0 48px}
  .partners__title{margin-bottom:28px}
  .partners__grid{grid-template-columns:1fr; gap:20px; max-width:340px}
}

/* ── Footer (паттерн footer со stagecon.ru, без position:fixed reveal —
   у нас обычный статичный подвал в конце потока страницы) ──────────────── */
.footer{
  position:relative;
  background:#000;
  padding:72px 0 48px;
  border-top:1px solid rgba(255,255,255,.08);
}
.footer__container{width:100%; max-width:1440px; margin:0 auto; padding:0 40px}
.footer__top{display:grid; grid-template-columns:repeat(3, 1fr); gap:40px 48px}
.footer__col{display:flex; flex-direction:column; align-items:flex-start}
.footer__col:nth-child(2){align-items:center}
.footer__col:nth-child(3){align-items:flex-end}
.footer__title{
  margin:0 0 16px;
  font-family:var(--font-text);
  font-size:18px;
  font-weight:700;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:var(--fg);
}
.footer__title--spaced{margin-top:24px}
.footer__nav{display:flex; flex-direction:column; align-items:stretch; gap:10px; width:max-content}

/* ── program__cta: паттерн кнопки-пилюли с обводкой, которая «дорисовывается»
   на hover — 1:1 со stagecon.ru. SVG-rect внутри кнопки без initial width/
   height/rx (см. JS ниже, который на load/resize подгоняет rect под реальный
   размер кнопки — без этого stroke-dasharray анимировать нечего). ─────────── */
.program__cta{position:relative; isolation:isolate}
.program__cta-outline{position:absolute; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none; z-index:1}
.program__cta-path{
  fill:none;
  stroke:var(--lime);
  stroke-width:2;
  stroke-linecap:butt;
  stroke-linejoin:round;
  stroke-dasharray:100.3;
  stroke-dashoffset:100.3;
  transition:stroke-dashoffset .7s cubic-bezier(.4,0,.2,1);
}
.program__cta:hover .program__cta-path{stroke-dashoffset:0}
.program__cta-label{position:relative; z-index:2}

.footer__btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:40px;
  padding:10px 24px;
  border:1.5px solid transparent;
  border-radius:100px;
  font-family:var(--font-text);
  font-size:15px;
  color:var(--fg);
  text-decoration:none;
  background:#252525;
  transition:background .3s ease, color .25s ease, border-color .3s ease;
}
.footer__btn:hover{background:transparent}
.footer__btn--accent{background:var(--lime); color:var(--bg); font-weight:700}
.footer__btn--accent:hover{background:transparent; color:var(--fg)}
.footer__socials{display:flex; align-items:center; gap:10px}
.footer__social{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:36px; height:36px;
  border-radius:50%;
  background:#fff;
  transition:opacity .2s ease;
}
.footer__social:hover{opacity:.8}
.footer__social-icon{display:block}
.footer__info{margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:8px; font-size:15px; color:rgba(255,255,255,.65)}
.footer__info a{color:var(--fg); text-decoration:none}
.footer__info a:hover{color:var(--lime)}
.footer__info-meta{color:rgba(255,255,255,.45)}
.footer__col:nth-child(3) .footer__info{align-items:flex-end; text-align:right}

.footer__bottom{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:24px 40px;
  width:100%;
  margin-top:72px;
  padding-top:32px;
  border-top:1px solid rgba(255,255,255,.08);
}
.footer__logo{
  display:block;
  width:min(320px, 34vw);
  height:auto;
  filter:brightness(0) invert(50%);
}
.footer__social-icon--tg{width:28px; height:28px}
.footer__social-icon--vk{width:22px; height:22px}
.footer__credit{display:flex; flex-direction:column; align-items:flex-start; gap:6px}
.footer__credit-text{margin:0; font-size:15px; line-height:1.35; color:var(--fg)}
.footer__credit-accent{color:var(--lime)}
.footer__credit-brand{
  font-family:var(--font-display);
  font-size:24px;
  font-weight:700;
  line-height:1.1;
  text-decoration:none;
  background:linear-gradient(90deg, #3de8d8 0, #7dff7a 55%, var(--lime) 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:transparent;
}
.footer__credit-note{margin:0; font-size:14px; color:rgba(255,255,255,.6)}

@media (max-width:900px){
  .footer{padding:56px 0 40px}
  .footer__container{padding:0 20px}
  .footer__top{grid-template-columns:1fr; gap:36px}
  .footer__col:nth-child(2), .footer__col:nth-child(3){align-items:flex-start}
  .footer__col:nth-child(3) .footer__info{align-items:flex-start; text-align:left}
  .footer__bottom{margin-top:48px; flex-direction:column; align-items:flex-start}
}

@media (max-width:900px){
  .promo-strip{padding:14px 0}
  .promo-strip__item{gap:10px; padding:0 24px}

  .ps-note__break{display:block}

  .register{padding:20px 0 80px}
  .register__card{padding:32px 22px; border-radius:20px}

  .offer{padding:8px 0 72px}
  .offer__title{margin-bottom:24px}
  /* На узком экране заголовок в одну строку физически не влезает даже
     на минимальном clamp — пусть переносится, а не вылезает за viewport. */
  .offer__title-line{white-space:normal}
  .offer__stage{flex-direction:column; gap:24px}
  .offer__quote{white-space:normal; font-size:16px; padding:12px 20px}
  /* Те же сдвиги/повороты, но в разы меньше — на узком экране 85-150px
     margin-left от десктопных clamp'ов вытолкнул бы плашку за край. */
  .offer__quote:nth-child(1){margin-left:0; transform:rotate(-1deg)}
  .offer__quote:nth-child(2){margin-left:22px; transform:rotate(1deg)}
  .offer__quote:nth-child(3){margin-left:6px; transform:rotate(1.2deg)}
  .offer__quote:nth-child(4){margin-left:16px; transform:rotate(-0.8deg)}
  .offer__quote:nth-child(5){margin-left:2px; transform:rotate(-1.3deg)}
  .offer__quote:nth-child(6){margin-left:26px; transform:rotate(0.6deg)}
  .offer__quote:nth-child(7){margin-left:10px; transform:rotate(1deg)}
  /* Эта плашка стала длиннее остальных ("Узнаем как заработать на
     каникулах?") — просим её в одну строку без переноса, для чего
     сужаем отступ и подрезаем шрифт под самые узкие экраны. */
  .offer__quote:nth-child(8){
    margin-left:4px;
    transform:rotate(-1deg);
    white-space:nowrap;
    font-size:clamp(12px, 3.7vw, 16px);
    padding:12px 14px;
  }
  .offer__yes{
    width:100%;
    flex:0 0 auto;
    margin-left:0;
    padding:8px 0;
  }
  .offer__yes img{
    max-width:400px;
    max-height:none;
  }

  .speakers{padding:8px 0 64px}
  .speakers__intro-container{margin-bottom:20px}
  .speaker-card{width:170px}
  .speakers__nav{margin-top:20px}

  .perks{padding:16px 0 80px}
  .perks__grid-wrap{padding:60px 0}
  .perks__grid{grid-template-columns:1fr; gap:56px}

  .hero{padding:110px 0 56px}
  .hero__container{
    grid-template-columns:1fr;
    grid-template-areas:
      "intro"
      "visual"
      "details";
    gap:28px;
  }
  .hero__visual{justify-self:center;max-width:420px}
  .container{padding:0 20px}
  .topbar{padding:20px}
  /* На узких экранах строка эйбро в один ряд физически не помещается —
     пусть переносится, а не вылезает за край viewport. */
  .hero__eyebrow{white-space:normal}
}

/* ── Schedule (программа по дням, табы) ─────────────────────────────────── */
.schedule{
  position:relative;
  background:var(--bg);
  padding:16px 0 90px;
}
.schedule__intro{margin:0 auto 28px; max-width:1080px}
.schedule__tabs,
.schedule__panel,
.schedule__cta-wrap{max-width:1080px; margin-left:auto; margin-right:auto}

.schedule__tabs{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:14px;
  margin-bottom:32px;
}
.schedule__tab{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:18px 22px;
  border:1.5px solid rgba(255,255,255,.12);
  border-radius:18px;
  background:rgba(255,255,255,.03);
  color:var(--fg);
  font-family:var(--font-text);
  text-align:left;
  cursor:pointer;
  transition:border-color .2s ease, background .2s ease, color .2s ease;
}
.schedule__tab-date{
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(15px, 1.9vw, 21px);
  line-height:1.15;
  text-transform:uppercase;
  transition:color .2s ease;
  display:flex;
  align-items:baseline;
  gap:8px;
}
.schedule__tab-note{
  font-size:13px;
  line-height:1.3;
  color:var(--muted);
}
.schedule__tab-note--short{display:none}
.schedule__tab:hover{border-color:rgba(212,255,0,.45)}
.schedule__tab.is-active{
  border-color:var(--lime);
  background:rgba(212,255,0,.08);
}
.schedule__tab.is-active .schedule__tab-date{color:var(--lime)}
.schedule__tab:focus-visible{outline:2px solid var(--lime); outline-offset:3px}

.schedule__day-title{
  margin:0 0 20px;
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(18px, 2.4vw, 26px);
  line-height:1.2;
  text-transform:uppercase;
}
.schedule__day-accent{color:var(--lime)}

.schedule__list{
  display:grid;
  gap:12px;
  list-style:none;
  margin:0;
  padding:0;
}
.schedule__item{
  display:grid;
  grid-template-columns:104px 1fr;
  gap:22px;
  align-items:start;
  padding:20px 26px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:16px;
  background:rgba(255,255,255,.03);
  transition:border-color .2s ease, background .2s ease, transform .2s ease;
}
.schedule__item:hover{
  border-color:rgba(212,255,0,.4);
  background:rgba(212,255,0,.04);
  transform:translateX(4px);
}
.schedule__item--open{
  border-color:rgba(15,133,239,.45);
  background:linear-gradient(90deg, rgba(15,133,239,.14) 0%, rgba(15,133,239,.03) 100%);
}
.schedule__item--soon{opacity:.6}
.schedule__item--soon:hover{transform:none; border-color:rgba(255,255,255,.08); background:rgba(255,255,255,.03)}

.schedule__time{
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(16px, 1.7vw, 20px);
  line-height:1.25;
  color:var(--lime);
}
.schedule__item--open .schedule__time,
.schedule__item--soon .schedule__time{color:#8fc6ff}
.schedule__body{min-width:0}
.schedule__speaker{
  margin:0;
  font-weight:700;
  font-size:clamp(15px, 1.5vw, 18px);
  line-height:1.3;
  color:var(--fg);
}
.schedule__topic{
  margin:5px 0 0;
  font-size:clamp(14px, 1.4vw, 17px);
  line-height:1.4;
  color:rgba(255,255,255,.9);
}
.schedule__desc{
  margin:7px 0 0;
  font-size:clamp(13px, 1.2vw, 15px);
  line-height:1.45;
  color:var(--muted);
}
.schedule__age{
  display:inline-block;
  margin-left:8px;
  padding:2px 10px;
  border:1px solid rgba(15,133,239,.55);
  border-radius:100px;
  background:rgba(15,133,239,.16);
  font-size:12px;
  line-height:1.5;
  white-space:nowrap;
  color:#8fc6ff;
  vertical-align:1px;
}

.schedule__cta-wrap{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  margin-top:40px;
  text-align:center;
}
.schedule__cta-note{
  margin:0;
  font-size:14px;
  color:var(--muted);
}

@media (max-width:900px){
  .schedule{padding:8px 0 64px}
  .schedule__intro{margin-bottom:20px}
  .schedule__tabs{gap:8px; margin-bottom:24px}
  .schedule__tab{padding:12px 8px; align-items:center; text-align:center; gap:4px}
  .schedule__tab-date{flex-direction:column; align-items:center; gap:2px; line-height:1.05}
  .schedule__tab-num{font-size:clamp(18px, 5.4vw, 22px)}
  .schedule__tab-month{font-size:clamp(10px, 2.9vw, 12px)}
  .schedule__day-title{margin-bottom:16px}
  .schedule__tab-note{display:none}
  .schedule__tab-note--short{display:block; font-size:11px}
  .schedule__item{
    grid-template-columns:66px 1fr;
    gap:14px;
    padding:16px 18px;
    border-radius:14px;
  }
  .schedule__item:hover{transform:none}
  .schedule__age{margin-left:6px; padding:1px 8px; font-size:11px}
  .schedule__cta-wrap{margin-top:28px}
}

@media (max-width:520px){
  .schedule__tab-num{font-size:18px}
  .schedule__tab-month{font-size:10px}
  .schedule__item{grid-template-columns:1fr; gap:6px; padding:14px 16px}
  .schedule__time{font-size:15px}
}

/* Запасной выход с экрана «Спасибо» на /vk-chat.html (2026-09-08).
   Нужен тем, у кого ВК попросил вход и потерял приглашение — таких
   оказалось много. Тише основной кнопки, но заметно. */
.register__success-help{
  margin:14px 0 0;
  font-size:13px;
  line-height:1.5;
  color:var(--muted);
}
.register__success-help a{
  color:var(--lime);
  text-decoration:underline;
  text-underline-offset:3px;
}
