/* ============================================================
   EVERYDAY PAYMENT — единая дизайн-система
   Все значения вытащены из Figma-SVG (не на глаз).
   Подключай этот файл в каждый экран: <link rel="stylesheet" href="./style.css">
   ============================================================ */

/* ---------- ШРИФТЫ ---------- */
@font-face {
  font-family: 'Benzin';
  src: url('./assets/fonts/Benzin-Bold.ttf') format('truetype');
  font-weight: 700; font-display: swap;
}
@font-face {
  font-family: 'Benzin';
  src: url('./assets/fonts/Benzin-Medium.ttf') format('truetype');
  font-weight: 500; font-display: swap;
}
@font-face {
  font-family: 'SF Pro';
  src: url('./assets/fonts/SFPRODISPLAYREGULAR.OTF') format('opentype');
  font-weight: 400; font-display: swap;
}
@font-face {
  font-family: 'SF Pro';
  src: url('./assets/fonts/SFPRODISPLAYMEDIUM.OTF') format('opentype');
  font-weight: 500; font-display: swap;
}
/* Unbounded подключается в <head> каждой страницы через Google Fonts:
   <link href="https://fonts.googleapis.com/css2?family=Unbounded:wght@400;500;700;900&display=swap" rel="stylesheet"> */

/* ---------- ТОКЕНЫ (переменные) ---------- */
:root {
  /* цвета */
  --green:      #66FF2F;   /* фирменный акцент */
  --card:       #1C1C1C;   /* тёмные плашки */
  --grey:       #949494;   /* вторичный текст */
  --grey-2:     #464E51;   /* приглушённый текст */
  --black:      #000000;
  --white:      #FFFFFF;

  /* ---------- СЕМАНТИЧЕСКИЕ ТОКЕНЫ ТЕМЫ (по умолчанию — тёмная) ---------- */
  --bg:            #000000;   /* общий фон холста */
  --surface:       #000000;   /* фон карточек/панелей/кнопок */
  --surface-2:     #1C1C1C;   /* вторичные плашки (пилюли, меню, капсулы) */
  --text:          #FFFFFF;   /* основной текст */
  --text-muted:    #949494;   /* вторичный текст */
  --text-dim:      #464E51;   /* приглушённый текст */
  --field-label:   #D9D9D9;   /* подписи в полях ввода */
  --field-ph:      #6A6A6A;   /* плейсхолдеры */
  --divider:       rgba(255,255,255,.14); /* разделители */
  --stroke:        var(--grad-stroke);    /* объёмная обводка карточек */
  --scene-bg:      radial-gradient(120% 120% at 20% 0%, #1a1a1a 0%, #000 60%);
  --shadow-modal:  0 20px 50px rgba(0,0,0,.6);
  --overlay-dim:   rgba(0,0,0,.6); /* затемнение под модалками */
  --track:         #1C1C1C;   /* незаполненный трек слайдера */
  --track-fill:    #FFFFFF;   /* заполненная часть */
  --knob:          #1C1C1C;   /* бегунок тумблера звука */
  --accent-text:   var(--green); /* зелёный как ТЕКСТ (на тёмном — фирменный) */
  --accent-text-fine: var(--green); /* на тёмном фоне мелкий текст и так хорошо читается чистым салатовым */
  --wm-fill:       #2b2b2b;   /* водяной знак ₽ в истории */
  --wm-grad:       #000000;   /* маска-градиент водяного знака (= фон карточки) */
  --pulse-rgb:     255,255,255; /* цвет пульсации вокруг QR */
  --ghost:         #1C1C1C;   /* крупные призрачные THB/RUB за суммами */
  --rate-pill-bg:  var(--grad-pill); /* заливка курс-пилюли */
  --rate-pill-text:#030303;

  /* шрифты */
  --font-display: 'Benzin', 'Unbounded', sans-serif;  /* логотип */
  --font-head:    'Unbounded', sans-serif;            /* заголовки, суммы, курс */
  --font-body:    'SF Pro', -apple-system, 'Segoe UI', Roboto, sans-serif; /* подписи */

  /* скругления (rx из SVG) */
  --r-pill:   28.5px;   /* мелкие пилюли (язык, курс, back) */
  --r-field:  19.5px;   /* поля ввода, клавиши, кнопки */
  --r-block:  50px;     /* крупные блоки/карточки */
  --r-panel:  59px;     /* большие панели, навбар */

  /* градиенты (три фирменных) */
  --grad-bg:      linear-gradient(133deg, #000 0%, #333 55%, #fff 98%); /* фон-подсветка, +opacity .2 */
  --grad-stroke:  linear-gradient(180deg, #747474 0%, #747474 35%, #000 88%); /* объёмная обводка карточек */
  --grad-metal:   linear-gradient(120deg, #343436 0%, #3F454D 51%, #6A6A6A 100%); /* обводка пилюль */
  --grad-pill:    linear-gradient(90deg, #838383, #525251); /* заливка курс-пилюли */
  --grad-key:     linear-gradient(180deg, #666, #000); /* обводка клавиш */
  --grad-green:   linear-gradient(90deg, #66FF2F, #4FE01E); /* акцентная зелёная */
}

/* ============================================================
   СВЕТЛАЯ ТЕМА — переопределяем только семантические токены.
   Класс .light вешается на .screen (корень холста).
   ============================================================ */
.light {
  --bg:            #F2F3F5;   /* светлый фон холста */
  --surface:       #FFFFFF;   /* белые карточки/кнопки */
  --surface-2:     #EDEFF2;   /* вторичные плашки */
  --text:          #14181B;   /* тёмный текст */
  --text-muted:    #6B7378;   /* вторичный */
  --grey-2:        #5C6368;   /* приглушённый текст под заголовками (RUB → THB) */
  --text-dim:      #9AA1A6;   /* приглушённый */
  --field-label:   #4A5157;
  --field-ph:      #A8AEB3;
  --divider:       rgba(0,0,0,.10);
  --scene-bg:      radial-gradient(120% 120% at 20% 0%, #ffffff 0%, #dfe2e6 60%);
  --shadow-modal:  0 20px 50px rgba(0,0,0,.18);
  --overlay-dim:   rgba(20,24,27,.35);
  --track:         #D5D9DD;   /* трек на светлом */
  --track-fill:    #14181B;   /* заполнение — тёмное */
  --knob:          #FFFFFF;   /* бегунок на светлом */
  --accent-text:   var(--green); /* тот же салатовый, что и на тёмной теме */
  --accent-text-fine: #4FA82A;   /* приглушённая версия ТОГО ЖЕ зелёного — только для мелкого текста, где чистый салатовый на белом плохо читается */
  --wm-fill:       #E4E7EA;   /* водяной знак — светло-серый */
  --wm-grad:       #FFFFFF;   /* маска = белый фон карточки */
  --pulse-rgb:     20,24,27;  /* пульсация тёмная на светлом */
  --ghost:         #E4E7EA;   /* призрак THB/RUB — светло-серый */
  --rate-pill-bg:  linear-gradient(90deg,#E7EAED,#DCE0E4); /* курс-пилюля светлая */
  --rate-pill-text:#14181B;
  /* объёмная обводка на светлом — мягкая серая рамка */
  --stroke:        linear-gradient(180deg, #D3D7DB 0%, #C2C7CC 40%, #AFB4B9 100%);
  --grad-stroke:   linear-gradient(180deg, #D3D7DB 0%, #C2C7CC 40%, #AFB4B9 100%);
  --grad-key:      linear-gradient(180deg, #D8DBDF, #B9BEC3);
  --grad-bg:       linear-gradient(133deg, #ffffff 0%, #e9ebee 55%, #d7dade 98%);
}

/* ---------- БАЗА ---------- */
* { box-sizing: border-box; margin: 0; padding: 0; -webkit-tap-highlight-color: transparent; }

html, body {
  height: 100%; width: 100%;
  background: #000;
  font-family: var(--font-body);
  color: var(--text);
  overflow: hidden;
}

/* сцена = фон вокруг «телефона» */
.scene {
  position: fixed; inset: 0;
  overflow: hidden;
  background: var(--scene-bg);
}

/* холст ровно 720x1600 (координаты как в Figma), центр + масштаб через JS */
.screen {
  position: absolute; left: 50%; top: 50%;
  width: 720px; height: 1600px;
  background: var(--bg);
  overflow: hidden;
  transform-origin: center center;
  transform: translate(-50%, -50%) scale(0.6);
  box-shadow: 0 40px 120px rgba(0,0,0,.6);
}
.screen::before {
  content: ""; position: absolute; inset: -20%;
  background: var(--grad-bg);
  background-size: 160% 160%;
  opacity: .2; pointer-events: none;
  z-index: 0;
  animation: breathe 12s ease-in-out infinite;
}
@keyframes breathe {
  0%, 100% { background-position: 0% 0%;   opacity: .16; }
  50%      { background-position: 100% 100%; opacity: .24; }
}

.abs { position: absolute; z-index: 1; }

/* ============================================================
   ГОТОВЫЕ КОМПОНЕНТЫ (кубики для всех экранов)
   ============================================================ */

/* ---- пилюля назад (стрелка влево) ---- */
.ui-back {
  width: 121px; height: 57px;
  border-radius: var(--r-pill);
  background: var(--surface-2);
  display: grid; place-items: center;
  cursor: pointer;
}
.ui-back svg { width: 20px; height: 30px; }

/* ---- пилюля языка RU + глобус ---- */
.ui-lang {
  width: 119px; height: 55px;
  border-radius: 27.5px;
  background: var(--surface-2);
  border: 2px solid transparent;
  background:
    linear-gradient(var(--surface-2), var(--surface-2)) padding-box,
    var(--grad-metal) border-box;
  display: flex; align-items: center; justify-content: center; gap: 12px;
  font-family: var(--font-head);
  font-size: 24px; font-weight: 700; letter-spacing: -.02em;
  color: var(--text); cursor: pointer;
}
.ui-lang .globe { width: 33px; height: 33px; display: grid; place-items: center; }
.ui-lang .globe svg { width: 33px; height: 33px; display: block; }
/* глобус — в цвет букв RU (тема); зелёный вариант на логине не трогаем */
.ui-lang .globe:not(.globe-green) svg path { fill: var(--text); }

/* ---- курс-пилюля (серый металл) ---- */
.ui-rate {
  height: 60px; padding: 0 26px;
  border-radius: 30px;
  background: var(--rate-pill-bg);
  border: 3px solid transparent;
  background:
    var(--rate-pill-bg) padding-box,
    var(--grad-metal) border-box;
  display: grid; place-items: center;
  font-family: var(--font-head);
  font-size: 24px; letter-spacing: .03em;
  color: var(--rate-pill-text); white-space: nowrap;
}

/* ---- заголовок экрана (Unbounded bold) ---- */
.ui-title {
  font-family: var(--font-head);
  font-size: 24px; font-weight: 700; letter-spacing: .03em;
  color: var(--text); text-align: center;
}
.ui-subtitle {
  font-family: var(--font-body);
  font-size: 24px; letter-spacing: .03em;
  color: var(--grey-2); text-align: center;
}

/* ---- шаги (Выбор → Оплата → Завершение) ---- */
.ui-steps {
  display: flex; align-items: center;
  font-family: var(--font-body);
  font-size: 24px; letter-spacing: .03em;
  color: var(--grey);
}
.ui-steps .step.active { color: var(--accent-text); }
.ui-steps .arrow { margin: 0 14px; }
.ui-steps .arrow.on  { color: var(--accent-text); }

/* ---- крупная кнопка с градиентной обводкой + блюр (как "Перейти к оплате") ---- */
.ui-cta {
  height: 76px;
  border-radius: var(--r-field);
  background: var(--surface);
  border: 1px solid transparent;
  background:
    linear-gradient(var(--surface), var(--surface)) padding-box,
    var(--stroke) border-box;
  display: grid; place-items: center;
  font-family: var(--font-head);
  font-size: 24px; font-weight: 500; letter-spacing: .03em;
  color: var(--accent-text);
  cursor: pointer;
  transition: transform .12s ease, filter .12s ease;
}
.ui-cta:active { transform: scale(.98); filter: brightness(1.2); }

/* вариант тёмной кнопки (вторичное действие, серый текст) */
.ui-btn {
  height: 76px;
  border-radius: var(--r-field);
  background: var(--surface);
  border: 1px solid transparent;
  background:
    linear-gradient(var(--surface),var(--surface)) padding-box,
    var(--stroke) border-box;
  display: grid; place-items: center;
  font-family: var(--font-head);
  font-size: 24px; font-weight: 500; letter-spacing: .03em;
  color: var(--text); cursor: pointer;
  transition: transform .12s ease, filter .12s ease;
}
.ui-btn:active { transform: scale(.98); filter: brightness(1.4); }

/* ---- клавиша клавиатуры ---- */
.ui-key {
  position: relative;
  height: 79px;
  border-radius: var(--r-field);
  border: 1px solid transparent;
  background:
    linear-gradient(var(--surface),var(--surface)) padding-box,
    var(--grad-key) border-box;
  display: grid; place-items: center;
  font-family: var(--font-head);
  font-size: 48px; letter-spacing: .03em;
  color: var(--text); cursor: pointer; user-select: none;
  transition: transform .08s ease, filter .12s ease;
}
.ui-key:active { transform: scale(.95); filter: brightness(1.6); }
.ui-key svg { width: 50px; height: 40px; }
/* ---- зелёная вспышка при нажатии на любую чёрную кнопку/клавишу ----
   единое непрерывное движение (одна @keyframes-анимация): яркая зелёная вспышка
   плавно, небыстро гаснет — как настоящий свет, а не щелчок переключателя.
   Класс .flash-tap вешается JS-ом на .ui-btn/.ui-cta/.ui-key при pointerdown.
   ВАЖНО: position НЕ трогаем — эти кнопки уже .abs (position:absolute) для
   координат top/left; переопределение на relative ломало их расположение. */
.ui-btn, .ui-cta, .ui-key { overflow: hidden; }
.ui-btn::after, .ui-cta::after, .ui-key::after {
  content: "";
  position: absolute; inset: 0;
  border-radius: inherit;
  background: var(--green);
  opacity: 0;
  pointer-events: none;
}
.ui-btn.flash-tap::after, .ui-cta.flash-tap::after, .ui-key.flash-tap::after {
  animation: flashTap 1.1s cubic-bezier(.16,.6,.15,1) forwards;
}
@keyframes flashTap {
  0%   { opacity: .55; }
  100% { opacity: 0; }
}

/* ---- поле ввода (Логин / Пароль): прозрачное, только лёгкая серая обводка ---- */
.ui-field {
  width: 636px; height: 88px;
  border-radius: 44px;
  background: transparent;             /* НИКАКОЙ заливки */
  border: 2px solid rgba(126,126,126,.55);   /* лёгкая серая обводка */
  position: relative;
}
/* подпись слева внутри поля (Логин / Пароль) */
.ui-field .fld-in-label {
  position: absolute; left: 31px; top: 50%; transform: translateY(-50%);
  font-family: var(--font-body);
  font-size: 24px; letter-spacing: .03em;
  color: var(--field-label); pointer-events: none; z-index: 2;
}
/* поле ввода — плейсхолдер/текст по центру */
.ui-field input {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  background: transparent; border: none; outline: none;
  text-align: center;
  font-family: var(--font-head);
  font-size: 24px; letter-spacing: .03em;
  color: var(--text);
}
.ui-field input::placeholder { color: var(--field-ph); opacity: 1; }

/* ---- карточка-панель (большая тёмная с обводкой) ---- */
.ui-panel {
  border-radius: var(--r-panel);
  background: var(--surface-2);
}
.ui-panel--stroked {
  background: var(--surface);
  border: 2px solid transparent;
  background:
    linear-gradient(var(--surface),var(--surface)) padding-box,
    var(--stroke) border-box;
}

/* ---- зелёная плашка (плоская, если понадобится) ---- */
.ui-badge-green {
  border-radius: 30.5px;
  background: var(--green);
  display: grid; place-items: center;
  font-family: var(--font-head);
  font-weight: 700; color: #000;
}

/* ---- пилюля PAYMENT: серый металл + объёмная обводка + зелёный текст ---- */
.ui-payment {
  border-radius: 30.5px;
  background:
    linear-gradient(90deg, #525251, #838383) padding-box,
    var(--grad-stroke) border-box;
  border: 3px solid transparent;
  display: grid; place-items: center;
  font-family: var(--font-head);
  font-weight: 300; letter-spacing: .03em;
  color: var(--green);
  box-shadow: 0 6px 20px rgba(0,0,0,.5);
  transform-origin: center;
  animation: paymentBreathe 4.5s ease-in-out infinite;
}
/* лёгкое дыхание плашки PAYMENT — едва заметное, не должно отвлекать от логотипа */
@keyframes paymentBreathe {
  0%, 100% { transform: scale(1); box-shadow: 0 6px 20px rgba(0,0,0,.5); }
  50%      { transform: scale(1.015); box-shadow: 0 8px 26px rgba(0,0,0,.55); }
}

/* ---- нижнее меню (навбар с 4 иконками) ---- */
.ui-navbar {
  height: 118px;
  border-radius: 58.5px;
  border: 2px solid transparent;
  background:
    linear-gradient(var(--surface),var(--surface)) padding-box,
    var(--stroke) border-box;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 46px;
}
.ui-nav-btn {
  width: 66px; height: 66px;
  display: grid; place-items: center;
  cursor: pointer; color: var(--text);
  transition: transform .12s ease, color .25s ease;
}
.ui-nav-btn:active { transform: scale(.9); }
.ui-nav-btn.active { color: var(--green); position: relative; }
/* капсула-подсветка за активной иконкой (173x102 rx51 из SVG) — плавно наплывает, а не хлопает */
.ui-nav-btn::before {
  content: "";
  position: absolute;
  left: 50%; top: calc(50% + 4px);
  transform: translate(-50%, -50%) scale(.85);
  width: 130px; height: 90px;
  border-radius: 45px;
  background:
    linear-gradient(var(--surface-2),var(--surface-2)) padding-box,
    var(--stroke) border-box;
  border: 3px solid transparent;
  z-index: -1;
  opacity: 0;
  transition: opacity .22s ease, transform .22s cubic-bezier(.3,.8,.3,1);
}
.ui-nav-btn.active::before {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}
.ui-nav-btn svg { width: 66px; height: 66px; display: block; }
.ui-nav-btn svg path { fill: currentColor; }
/* иконки, которые в оригинале чуть мельче */
.ui-nav-btn.sm svg { width: 59.5px; height: 59.5px; }

/* ============================================================
   МОДАЛКА ЯЗЫКА (общая для всех экранов)
   ============================================================ */
.lang-overlay {
  position: absolute; inset: 0; z-index: 50;
  background: var(--overlay-dim);
  opacity: 0; pointer-events: none;
  transition: opacity .3s ease;
}
.lang-overlay.open { opacity: 1; pointer-events: auto; }

.ui-lang .ru-label {
  overflow: hidden; max-width: 60px;
  transition: max-width .28s ease, opacity .2s ease, margin .28s ease;
}
.ui-lang.open .ru-label { max-width: 0; opacity: 0; margin: 0; }
.ui-lang { transition: gap .28s ease; }
.ui-lang.open { z-index: 52; gap: 0; }

.lang-menu {
  width: 248px; z-index: 51;
  border-radius: 16.5px;
  background:
    linear-gradient(var(--surface-2),var(--surface-2)) padding-box,
    var(--stroke) border-box;
  border: 1px solid transparent;
  box-shadow: var(--shadow-modal);
  padding: 18px 0;
  transform-origin: top right;
  opacity: 0; transform: scale(.85) translateY(-10px);
  pointer-events: none;
  transition: opacity .28s ease, transform .28s cubic-bezier(.3,.8,.3,1);
}
.lang-menu.open { opacity: 1; transform: scale(1) translateY(0); pointer-events: auto; }
.lang-item {
  display: flex; align-items: baseline; gap: 16px;
  padding: 20px 30px;
  font-family: var(--font-body);
  font-weight: 400; font-size: 30px; letter-spacing: .01em;
  color: var(--text-muted);
  cursor: pointer; transition: color .15s ease;
}
.lang-item:hover  { color: var(--text); }
.lang-item.active { color: var(--green); }
.lang-item .abbr {
  display: inline-block; width: 44px;
  font-size: 20px; font-weight: 500; letter-spacing: .04em;
  color: inherit; opacity: .6; text-align: left;
}

/* ============================================================
   СИСТЕМА СТРАНИЦ (одно приложение, экраны переключаются)
   ============================================================ */
.page {
  position: absolute; inset: 0;
  opacity: 0;
  transition: opacity .28s ease;
  pointer-events: none;
  z-index: 1;
}
.page.active {
  opacity: 1;
  pointer-events: auto;
  z-index: 3;                /* новый экран всегда строго выше уходящего */
}
/* уходящий экран доигрывает fade «под низом», но клики сквозь него больше не проходят
   (иначе он ещё 280мс перехватывает тапы по навбару нового экрана — вот откуда были неактивные кнопки) */
.page.leaving {
  opacity: 0;
  pointer-events: none;
  z-index: 2;
}
