/* ============================================================
   Страницы партнёров: /partners/ (публичная заявка) и
   /partners/materials/ (материалы подтверждённых партнёров).
   Надстройка над styles.css и camp.css — палитра, полосы,
   кнопки и подвал берутся оттуда. Здесь — пакеты, медиа,
   формы и загрузка файлов.
   ============================================================ */

/* ---------- герой ---------- */
.p-hero h1 em{font-style:normal;color:var(--sand)}
.p-hero .camp-hero-shot img{aspect-ratio:4/5;object-position:center 30%}

/* ---------- пакеты ---------- */
.tiers{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}
.tier{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  padding:24px 24px 26px;display:flex;flex-direction:column;gap:12px;
}
.tier .eyebrow{font-size:11px}
.tier h3{font-size:clamp(20px,2.4vw,25px)}
.tier p{font-size:14.5px}
.tier .ticks li{font-size:14.5px}
.tier--title{border:2px solid var(--violet);background:linear-gradient(160deg,#fff 0%,#F6F0FE 100%)}
.tier--title .eyebrow{color:var(--gold-ink)}
.goods{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.goods span{
  background:var(--paper);border:1px solid var(--line);border-radius:999px;
  padding:8px 16px;font-weight:700;font-size:14px;color:var(--violet-800);
}

/* ---------- аудитория ---------- */
.aud{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}
.aud .fact dd{font-size:clamp(18px,2.1vw,22px)}

/* ---------- медиа ---------- */
.press{display:flex;flex-wrap:wrap;gap:8px 10px;margin-top:22px}
.press span{
  border:1.5px solid rgba(255,255,255,.3);border-radius:999px;padding:7px 15px;
  font-weight:700;font-size:13.5px;color:#fff;white-space:nowrap;
}
.press span b{color:var(--sand);font-weight:800;margin-left:6px}

/* ---------- фото-лента ---------- */
.p-strip{display:grid;gap:12px;grid-template-columns:repeat(3,1fr);margin-top:clamp(26px,3.6vw,40px)}
.p-strip img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:16px;display:block}
@media (max-width:640px){.p-strip{grid-template-columns:1fr 1fr}.p-strip img:nth-child(3){display:none}}

/* ---------- формы ---------- */
.form{display:flex;flex-direction:column;gap:18px}
.form-card{
  background:var(--paper);border-radius:24px;padding:clamp(22px,3.4vw,38px);
  box-shadow:0 30px 70px rgba(20,2,50,.28);color:var(--ink-2);
}
.form-card h3{color:var(--ink)}
.form-card p{color:var(--ink-2)}
.fields{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.field{display:flex;flex-direction:column;gap:7px;min-width:0}
.field.wide{grid-column:1/-1}
.field label,.field .lbl{font-weight:800;font-size:13px;letter-spacing:.04em;color:var(--ink)}
.field label i,.field .lbl i{font-style:normal;color:var(--magenta)}
.field small{font-size:12.5px;color:var(--ink-3);line-height:1.45}
.field input,.field textarea{
  font:inherit;font-size:16px;font-weight:500;color:var(--ink);
  background:#FBF9FE;border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;width:100%;
}
.field textarea{min-height:120px;resize:vertical;line-height:1.5}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 4px rgba(109,24,196,.14);background:#fff}
.field.bad input,.field.bad textarea,.field.bad .drop{border-color:#C62D52}
.field .err{display:none;font-size:12.5px;font-weight:700;color:#B0213F}
.field.bad .err{display:block}
.counter{align-self:flex-end;font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.consent{font-size:12.5px;color:var(--ink-3);max-width:none}
.form-note{font-size:14px;font-weight:700;border-radius:14px;padding:14px 16px;display:none}
.form-note.show{display:block}
.form-note.ok{background:#E6F6EC;color:#14532D}
.form-note.fail{background:#FDE8EC;color:#8A1530}
.form .btn[disabled]{opacity:.55;cursor:progress;transform:none}

/* ---------- блоки формы материалов ---------- */
.step{display:grid;grid-template-columns:44px minmax(0,1fr);gap:16px;padding-block:26px;border-top:1px solid var(--line)}
.step:first-child{border-top:0;padding-top:0}
.step-n{
  width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  background:var(--lilac);color:var(--violet-800);font-weight:800;font-size:16px;
}
.step-body{display:flex;flex-direction:column;gap:14px;min-width:0}
.step-body h3{font-size:clamp(18px,2.2vw,22px)}
@media (max-width:560px){.step{grid-template-columns:1fr}.step-n{width:36px;height:36px;font-size:14px}}

/* техтребования */
.spec-card{
  border-radius:18px;background:var(--violet-900);color:#fff;padding:18px 20px;
  display:grid;gap:10px 22px;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));
}
.spec-card div{display:flex;flex-direction:column;gap:2px}
.spec-card dt{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--sand)}
.spec-card dd{margin:0;font-weight:800;font-size:17px;line-height:1.25}
.spec-card dd small{display:block;font-weight:500;font-size:12.5px;color:var(--on-v-2);margin-top:3px}
.spec-tip{font-size:13px;color:var(--ink-3)}
.spec-tip b{color:var(--ink)}

/* зона выбора файла */
.drop{
  position:relative;border:2px dashed var(--lilac-2);border-radius:16px;background:#FBF9FE;
  padding:20px;display:flex;align-items:center;gap:14px;cursor:pointer;transition:border-color .2s,background .2s;
}
.drop:hover,.drop.over{border-color:var(--violet);background:#F4ECFE}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.drop svg{width:30px;height:30px;flex:0 0 auto;fill:var(--violet)}
.drop b{display:block;color:var(--ink);font-size:15px}
.drop span{font-size:13px;color:var(--ink-3)}

/* выбранные файлы */
.files{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.file{
  display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:12px;align-items:center;
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px 10px;
}
.file .thumb{width:52px;height:52px;border-radius:10px;object-fit:cover;background:var(--lilac);display:block}
.file .meta{min-width:0;display:flex;flex-direction:column;gap:2px}
.file .nm{font-weight:700;font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file .info{font-size:12.5px;color:var(--ink-3)}
.file .warn{font-size:12.5px;font-weight:700;color:#8A5A00;background:#FFF4D6;border-radius:8px;padding:4px 8px;margin-top:4px}
.file .good{font-size:12.5px;font-weight:700;color:#14532D}
.file .x{border:0;background:none;color:var(--ink-3);font-size:22px;line-height:1;cursor:pointer;padding:6px 8px;border-radius:8px}
.file .x:hover{background:var(--lilac);color:var(--ink)}
.bar{height:6px;border-radius:999px;background:var(--lilac);overflow:hidden;margin-top:6px;display:none}
.bar i{display:block;height:100%;width:0;background:var(--violet);transition:width .3s}
.file.up .bar{display:block}
.file.done .bar i{background:#1F9254}
.file.done .x,.file.up .x{visibility:hidden}

/* итоговый прогресс */
.total{display:none;flex-direction:column;gap:8px}
.total.show{display:flex}
.total .bar{display:block;height:10px}
.total p{font-size:14px;font-weight:700;color:var(--ink)}

/* ---------- видео с YouTube ----------
   Сначала только обложка: сам плеер YouTube (и его трекеры) грузится по клику. */
.yt{
  position:relative;display:block;width:100%;aspect-ratio:16/9;padding:0;border:0;cursor:pointer;
  border-radius:24px;overflow:hidden;background:#1a0238;box-shadow:0 30px 70px rgba(20,2,50,.45);
}
.yt img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}
.yt:hover img{transform:scale(1.03)}
.yt::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(45,4,98,0) 55%,rgba(45,4,98,.75) 100%)}
.yt-play{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1;
  width:clamp(64px,9vw,92px);height:clamp(64px,9vw,92px);border-radius:50%;
  background:var(--sand);display:grid;place-items:center;box-shadow:0 12px 40px rgba(0,0,0,.35);transition:transform .2s;
}
.yt:hover .yt-play{transform:translate(-50%,-50%) scale(1.08)}
.yt-play svg{width:42%;height:42%;fill:#3A2604;margin-left:6%}
.yt-cap{position:absolute;left:clamp(16px,2.4vw,26px);bottom:clamp(14px,2vw,22px);z-index:1;color:#fff;font-weight:800;font-size:clamp(14px,1.6vw,17px)}
.yt:focus-visible{outline:3px solid var(--sand);outline-offset:4px}
.yt iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
@media (prefers-reduced-motion:reduce){.yt img,.yt-play{transition:none}}

/* ---------- запасной путь для материалов ----------
   Песочная плашка в начале формы: её должны заметить до того, как что-то сорвётся. */
.backup{
  display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:start;
  background:var(--sand);border-radius:18px;padding:18px 20px;margin-bottom:26px;
  border-left:6px solid var(--gold-ink);
}
.backup svg{width:28px;height:28px;fill:#3A2604;margin-top:2px}
.backup b{display:block;color:#2A1A02;font-size:16.5px;font-weight:800;line-height:1.3}
.backup span{display:block;color:#3A2604;font-size:15px;margin-top:4px}
.backup a{color:#2A1A02;font-weight:800;text-decoration-thickness:2px;text-underline-offset:3px;white-space:nowrap}
/* На телефоне иконку убираем — иначе адрес не помещается в строку и рвётся посередине. */
@media (max-width:480px){.backup{grid-template-columns:1fr;padding:16px 16px 16px 18px}.backup svg{display:none}.backup span{font-size:14.5px}}

/* ---------- цифры ----------
   Своя сетка вместо .stat с лендинга: там цифры прижаты к низу и при разных
   переносах подписей встают лесенкой. Здесь — общий верх, один кегль, тонкая линия. */
.p-stats{
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:22px 28px;margin:0;
  padding-top:clamp(24px,3vw,32px);border-top:1px solid rgba(255,255,255,.2);
}
.p-hero .p-stats{margin-top:clamp(44px,6vw,72px)}
.p-stats--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.p-stats div{display:flex;flex-direction:column;gap:8px;min-width:0}
.p-stats dt{font-weight:800;font-size:clamp(30px,3.6vw,46px);line-height:1;letter-spacing:-.025em;color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap}
.p-stats .gold dt{color:var(--sand)}
.p-stats dd{margin:0;font-weight:700;font-size:clamp(13.5px,1.3vw,15px);line-height:1.35;color:var(--on-v-2)}
@media (max-width:900px){.p-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.p-stats--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.p-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* видео в герое на месте фото: колонка уже, поэтому кнопка и подпись поменьше */
.p-hero .camp-hero{align-items:center}
.p-hero .yt-play{width:clamp(60px,6.5vw,78px);height:clamp(60px,6.5vw,78px)}
.p-hero .yt-cap{font-size:14px}
/* кнопка не наследует шрифт страницы — без этого подпись видео набрана системным */
.yt{font:inherit}
@media (min-width:901px){.p-hero .camp-hero{grid-template-columns:minmax(0,1fr) minmax(0,1.08fr)}}
/* длинные русские слова («международные») не влезали в узкую карточку — кегль чуть меньше, без переносов по слогам */
.aud .fact dd{font-size:clamp(15.5px,1.45vw,18px);line-height:1.25;letter-spacing:-.01em}
