/* ============================================================
   MVNO — стратегическая презентация. Концепт «Signal».
   Издательский минимализм · тёплая бумага · ink · сигнальный акцент.
   ============================================================ */

:root {
  /* Палитра */
  --paper:      #F5F2EA;   /* тёплая бумага */
  --paper-2:    #EFEBE0;   /* панель/зебра */
  --ink:        #15181E;   /* near-black navy */
  --ink-soft:   #4C525C;   /* вторичный текст */
  --ink-faint:  #8A8E96;   /* подписи */
  --line:       #D8D2C5;   /* тёплая волосяная линия */
  --line-soft:  #E5E0D5;

  --accent:     #E2562B;   /* сигнальный оранж — Грузия / primary */
  --accent-ink: #B8431F;
  --slate:      #3C4A59;   /* Сербия / нейтраль */
  --risk:       #B23A2E;   /* Россия / риск */
  --ok:         #2F7D4F;   /* подтверждено / позитив */

  --dark-bg:    #15181E;
  --dark-panel: #1D212A;
  --dark-line:  #2C313C;
  --dark-text:  #ECE7DB;
  --dark-soft:  #A7ABB4;

  /* Типографика */
  --serif: "Spectral", Georgia, "Times New Roman", serif;
  --sans:  "Manrope", system-ui, -apple-system, Segoe UI, sans-serif;
  --mono:  "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  /* Раскладка */
  --frame: clamp(28px, 4.5vw, 80px);
  --maxw: 1160px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html, body { height: 100%; }

body {
  background: var(--ink);
  color: var(--ink);
  font-family: var(--sans);
  font-size: clamp(15px, 1.05vw, 19px);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow: hidden;
}

/* ---------- Каркас дека ---------- */
.deck { position: fixed; inset: 0; }

.slide {
  position: absolute; inset: 0;
  display: none;
  flex-direction: column;
  padding: var(--frame);
  background: var(--paper);
  background-image:
    radial-gradient(var(--line) 0.8px, transparent 0.9px);
  background-size: 26px 26px;
  background-position: -13px -13px;
  overflow: hidden;
}
.slide.is-active { display: flex; }

/* Тёмные слайды (титул, разделители, ask, финал) */
.slide--dark {
  background: var(--dark-bg);
  color: var(--dark-text);
  background-image:
    radial-gradient(var(--dark-line) 0.8px, transparent 0.9px);
  background-size: 26px 26px;
}
.slide--dark .kicker { color: #F0764E; }
.slide--dark .stitle { color: var(--dark-text); }
.slide--dark .lead, .slide--dark p { color: var(--dark-soft); }
.slide--dark .rule { background: var(--dark-line); }
.slide--dark .foot { color: #6F747E; border-color: var(--dark-line); }
.slide--dark .card { background: var(--dark-panel); border-color: var(--dark-line); }
.slide--dark .metric .num { color: var(--dark-text); }
.slide--dark table { color: var(--dark-text); }
.slide--dark thead th { color: #F0764E; border-color: var(--dark-line); }
.slide--dark td, .slide--dark th { border-color: var(--dark-line); }
.slide--dark tbody tr:nth-child(even) { background: rgba(255,255,255,.025); }
.slide--dark .chip { border-color: var(--dark-line); color: var(--dark-soft); }

/* ---------- Шапка слайда ---------- */
.head {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 16px; flex: 0 0 auto;
}
.kicker {
  font-family: var(--mono);
  font-size: clamp(11px, .82vw, 13px);
  letter-spacing: .22em; text-transform: uppercase;
  color: var(--accent-ink); font-weight: 600;
  display: inline-flex; align-items: center; gap: 12px;
}
.kicker .bars { display: inline-flex; align-items: flex-end; gap: 2px; height: 12px; }
.kicker .bars i { width: 3px; background: var(--accent); display: block; }
.kicker .bars i:nth-child(1){height:4px}
.kicker .bars i:nth-child(2){height:7px}
.kicker .bars i:nth-child(3){height:10px}
.kicker .bars i:nth-child(4){height:13px; opacity:.4}
.pageno { font-family: var(--mono); font-size: clamp(11px,.82vw,13px); color: var(--ink-faint); letter-spacing:.1em; }
.slide--dark .pageno { color: #6F747E; }

/* ---------- Тело слайда ---------- */
.body { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: center; min-height: 0; max-width: var(--maxw); width: 100%; margin: 0 auto; padding: clamp(12px,2.4vh,32px) 0; }
.body.tight { justify-content: flex-start; padding-top: clamp(14px,3vh,40px); }

.stitle {
  font-family: var(--serif);
  font-weight: 600;
  font-size: clamp(30px, 4.6vw, 62px);
  line-height: 1.02; letter-spacing: -0.015em;
  color: var(--ink);
}
.stitle .lt { font-style: italic; color: var(--accent); font-weight: 500; }
.stitle.sm { font-size: clamp(26px, 3.4vw, 44px); }

.lead { font-size: clamp(16px,1.45vw,23px); color: var(--ink-soft); max-width: 60ch; line-height: 1.5; }
.rule { height: 2px; width: 64px; background: var(--accent); border: 0; margin: 18px 0; }
.rule.wide { width: 100%; height: 1px; background: var(--line); }

p + p { margin-top: .7em; }
strong { font-weight: 700; color: var(--ink); }
.slide--dark strong { color: #fff; }
em { font-style: italic; }

/* ---------- Сетки ---------- */
.grid { display: grid; gap: clamp(14px, 1.8vw, 26px); }
.g2 { grid-template-columns: repeat(2, 1fr); }
.g3 { grid-template-columns: repeat(3, 1fr); }
.g4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 820px){ .g2,.g3,.g4 { grid-template-columns: 1fr; } }

/* Карточки */
.card {
  background: #FBFAF5;
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  padding: clamp(16px,1.5vw,24px);
  border-radius: 2px;
}
.card.slate { border-left-color: var(--slate); }
.card.risk  { border-left-color: var(--risk); }
.card.ok    { border-left-color: var(--ok); }
.card h4 { font-family: var(--sans); font-size: clamp(15px,1.15vw,18px); font-weight: 800; margin-bottom: 6px; letter-spacing: -.01em; }
.card .sub { font-family: var(--mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-faint); display:block; margin-bottom: 10px; }
.card p, .card li { font-size: clamp(13px,1vw,15.5px); color: var(--ink-soft); line-height: 1.45; }
.card ul { list-style: none; }
.card li { padding-left: 16px; position: relative; margin-top: 5px; }
.card li::before { content: "—"; position: absolute; left: 0; color: var(--accent); }

/* Метрики */
.metric .num { font-family: var(--serif); font-weight: 600; font-size: clamp(30px,3.6vw,52px); line-height: 1; letter-spacing: -.02em; color: var(--ink); }
.metric .num small { font-size: .42em; color: var(--ink-soft); font-family: var(--sans); font-weight: 700; }
.metric .cap { font-family: var(--mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); margin-top: 10px; }
.metric .cap b { color: var(--accent-ink); }

/* ---------- Таблицы ---------- */
table { width: 100%; border-collapse: collapse; font-size: clamp(12px,1vw,15px); }
thead th {
  font-family: var(--mono); font-size: clamp(10px,.78vw,12px);
  letter-spacing: .1em; text-transform: uppercase; color: var(--accent-ink);
  text-align: left; font-weight: 600; padding: 8px 12px 10px;
  border-bottom: 1.5px solid var(--ink);
}
td, th { padding: 9px 12px; vertical-align: top; border-bottom: 1px solid var(--line-soft); }
tbody tr:nth-child(even) { background: rgba(0,0,0,.018); }
td.lab { font-weight: 700; color: var(--ink); white-space: nowrap; }
table .num { font-variant-numeric: tabular-nums; }

/* ---------- Подписи / теги ---------- */
.tag {
  font-family: var(--mono); font-size: 10.5px; letter-spacing: .04em;
  color: var(--ink-faint); border-bottom: 1px dotted var(--ink-faint);
  white-space: nowrap; cursor: help;
}
.chip {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--mono); font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
  border: 1px solid var(--line); border-radius: 100px; padding: 4px 11px; color: var(--ink-soft);
}
.dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex: 0 0 auto; }
.dot.ge { background: var(--accent); }
.dot.rs { background: var(--slate); }
.dot.ru { background: var(--risk); }
.dot.ok { background: var(--ok); }

.legend { display: flex; gap: 18px; flex-wrap: wrap; margin-top: 14px; }
.legend span { display: inline-flex; align-items: center; gap: 7px; font-family: var(--mono); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-faint); }

/* ---------- Список-стрелки ---------- */
.arrowlist { list-style: none; }
.arrowlist li { position: relative; padding-left: 26px; margin-top: 12px; font-size: clamp(14px,1.1vw,17px); color: var(--ink-soft); }
.arrowlist li::before { content: "→"; position: absolute; left: 0; color: var(--accent); font-weight: 700; }
.arrowlist li b { color: var(--ink); }
.slide--dark .arrowlist li b { color:#fff; }

/* ---------- Таймлайн / траектория ---------- */
.track { display: grid; gap: 14px; }
.lane { display: grid; grid-template-columns: 92px 1fr; gap: 16px; align-items: stretch; }
.lane .mk { font-family: var(--mono); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; display:flex; align-items:center; gap:8px; font-weight:600; }
.lane .steps { display: flex; gap: 10px; flex-wrap: wrap; }
.step { background:#FBFAF5; border:1px solid var(--line); border-radius:2px; padding:10px 14px; font-size: clamp(12px,.95vw,14.5px); flex:1; min-width: 150px; }
.step b { display:block; font-family: var(--mono); font-size:10.5px; letter-spacing:.1em; color: var(--accent-ink); text-transform:uppercase; margin-bottom:3px; }
.step.gate { border-style: dashed; border-left:3px solid var(--slate); background: transparent; }
.step.risk { border-left:3px solid var(--risk); }

/* ---------- A/B сравнение ---------- */
.ab { display:grid; grid-template-columns:1fr 1fr; gap:0; border:1px solid var(--line); border-radius:2px; overflow:hidden; }
@media (max-width:820px){ .ab{ grid-template-columns:1fr; } }
.ab > div { padding: clamp(16px,1.6vw,26px); }
.ab .A { background:#FBFAF5; border-right:1px solid var(--line); }
.ab .B { background: var(--paper-2); }
.ab h4 { font-size: clamp(16px,1.3vw,20px); font-weight:800; margin-bottom:4px; }
.ab .role { font-family: var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color: var(--accent-ink); }
.ab ul { list-style:none; margin-top:12px; }
.ab li { position:relative; padding-left:16px; margin-top:7px; font-size: clamp(13px,1vw,15px); color:var(--ink-soft); }
.ab li::before{ content:"·"; position:absolute; left:4px; color:var(--accent); font-weight:800; }

/* ---------- Подвал слайда ---------- */
.foot {
  flex: 0 0 auto; display:flex; justify-content:space-between; align-items:center;
  font-family: var(--mono); font-size: 10.5px; letter-spacing:.14em; text-transform:uppercase;
  color: var(--ink-faint); border-top:1px solid var(--line); padding-top: 12px; margin-top: 8px;
}
.foot .src { text-transform: none; letter-spacing: .02em; color: var(--ink-faint); }

/* ---------- Титульный слайд ---------- */
.cover { justify-content: space-between; }
.cover .top { display:flex; justify-content:space-between; align-items:flex-start; }
.cover .wordmark { font-family: var(--mono); letter-spacing:.3em; font-size: clamp(12px,1vw,15px); color:#F0764E; text-transform:uppercase; }
.cover h1 { font-family: var(--serif); font-weight:600; font-size: clamp(46px,9vw,128px); line-height:.92; letter-spacing:-.03em; color: var(--dark-text); }
.cover h1 em { color: var(--accent); font-style: italic; font-weight:500; }
.cover .tagline { font-size: clamp(17px,1.7vw,26px); color: var(--dark-soft); max-width: 40ch; margin-top: 22px; }
.cover .meta { display:flex; gap:26px; flex-wrap:wrap; font-family:var(--mono); font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:#6F747E; }
.cover .meta b { color:#F0764E; font-weight:600; }
.bigidx { font-family: var(--serif); font-size: clamp(120px,22vw,300px); line-height:.8; color: var(--accent); opacity:.16; font-weight:600; position:absolute; right: var(--frame); bottom: -.06em; pointer-events:none; }
.slide--dark .bigidx { opacity:.22; }

/* ---------- Навигация / прогресс ---------- */
.progress { position: fixed; top:0; left:0; right:0; height: 3px; display:flex; gap:2px; z-index: 50; padding: 0; }
.progress i { flex:1; background: rgba(0,0,0,.10); transition: background .3s; }
.progress i.done { background: var(--accent); }
.slide--dark ~ .progress i { background: rgba(255,255,255,.12); }

.nav { position: fixed; bottom: 14px; right: 16px; display:flex; gap:8px; z-index:50; }
.nav button {
  font-family: var(--mono); font-size: 13px; width: 34px; height: 34px;
  border:1px solid var(--line); background: rgba(245,242,234,.7); color: var(--ink);
  border-radius:50%; cursor:pointer; backdrop-filter: blur(4px); transition: all .15s;
}
.nav button:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.hint { position: fixed; bottom: 16px; left: 16px; z-index:50; font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color: var(--ink-faint); opacity:.7; }
.slide--dark ~ .hint { color:#6F747E; }

/* Клик-зоны */
.edge { position: fixed; top:0; bottom: 60px; width: 14%; z-index: 20; cursor: pointer; }
.edge.l { left:0; } .edge.r { right:0; }

/* ---------- Появление (оркестровка по активному слайду) ---------- */
.reveal { opacity: 0; transform: translateY(14px); }
.is-active .reveal { animation: rise .62s cubic-bezier(.2,.7,.2,1) forwards; animation-delay: calc(var(--i, 0) * 90ms); }
@keyframes rise { to { opacity:1; transform: none; } }
@media (prefers-reduced-motion: reduce){ .reveal{ opacity:1; transform:none; animation:none; } }

/* ---------- График: доли операторов (stacked bar) ---------- */
.sharebar { display:flex; width:100%; height:48px; border-radius:3px; overflow:hidden; border:1px solid var(--line); font-family:var(--mono); }
.sharebar .seg { display:flex; flex-direction:column; justify-content:center; padding:0 13px; color:#fff; white-space:nowrap; overflow:hidden; min-width:0; }
.sharebar .seg b { font-size:14px; font-weight:600; line-height:1.1; }
.sharebar .seg small { font-size:10px; opacity:.9; letter-spacing:.06em; text-transform:uppercase; margin-top:2px; }
.seg.s1 { background: var(--accent); }
.seg.s2 { background: var(--slate); }
.seg.s3 { background: #9AA1AA; }
.sharecap { font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint); margin-top:8px; }
.slide--dark .sharebar { border-color: var(--dark-line); }

/* ---------- График: диапазоны (range bands) ---------- */
.rangeviz { display:grid; gap:13px; }
.rangerow { display:grid; grid-template-columns: 168px 1fr 132px; gap:16px; align-items:center; }
@media (max-width:820px){ .rangerow { grid-template-columns: 120px 1fr; } .rangerow .rv { display:none; } }
.rangerow .rl { font-size:13px; color:var(--ink-soft); line-height:1.2; }
.rangerow .rl b { display:block; color:var(--ink); font-weight:700; font-size:14px; }
.rtrack { position:relative; height:12px; background:var(--paper-2); border:1px solid var(--line-soft); border-radius:7px; }
.rfill { position:absolute; top:-1px; bottom:-1px; background:linear-gradient(90deg, var(--accent), var(--accent-ink)); border-radius:7px; box-shadow: 0 1px 4px rgba(226,86,43,.25); }
.rfill.slate { background:linear-gradient(90deg, #51616F, var(--slate)); box-shadow:none; }
.rangerow .rv { font-family:var(--mono); font-size:12px; color:var(--ink); text-align:right; font-variant-numeric:tabular-nums; }
.rangerow .rv .tag { font-size:10px; }

/* ---------- Переключатель языка ---------- */
.nav .lang { width:auto; padding:0 13px; font-size:11px; letter-spacing:.12em; border-radius:100px; text-decoration:none; display:inline-flex; align-items:center; }

/* ---------- Печать → PDF (каждый слайд = страница) ---------- */
@media print {
  @page { size: 1280px 720px; margin: 0; }
  html, body { overflow: visible; background:#fff; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .deck { position: static; }
  .slide {
    display: flex !important; position: relative; inset: auto;
    width: 1280px; height: 720px; page-break-after: always; break-after: page;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  .slide:last-child { page-break-after: avoid; }
  .reveal { opacity:1 !important; transform:none !important; animation:none !important; }
  .progress, .nav, .hint, .edge { display: none !important; }
}
