/* Small additions the copied design system doesn't have — promo pricing
   (0179) and the launch-gate notice (ces-launch-gate.js). Shared by every
   assembled landing page so the same few rules aren't repeated six times.
   checkout.html keeps its own inline <style> block instead — deliberately
   left untouched, per the CES Commerce work order's own rule. */
.promo-label { display: block; font-size: 13px; font-weight: 700; color: var(--c-action, #2107A0); margin-top: var(--sp-1); }

/* The countdown chip's icon lives outside the [data-promo-countdown] span
   checkout.js's startCountdown() actually writes to (it sets that one
   element's whole textContent, so the icon has to sit outside it to
   survive) — hide the whole chip via the inner span's own [hidden] state
   instead of duplicating that logic in JS. */
.chip-count:has([data-promo-countdown][hidden]) { display: none; }

/* The header slot the buy button leaves empty: while the sale is closed it
   points at the store instead of saying nothing. */
a.soon-chip { text-decoration: none; }

/* The real QR arrives from the payment provider as a ready-made PNG, so the
   plate has to size an <img> exactly the way ces-landing.css already sizes
   an <svg> — same box, no jump between the design mockup and the live
   sheet. */
.qr-plate img { display: block; width: var(--sz-qr); height: var(--sz-qr); }

/* How long the Kaspi code is still scannable. Kaspi decides that window and
   it is measured in minutes, so the line sits right under .pay-how in the
   same voice, one step quieter. */
.pay-timer { text-align: center; margin-top: var(--sp-2); font-size: 13px; color: var(--cap); }

/* ── Sales mode (0232) ──────────────────────────────────────────────────
   ces-launch-gate.js stamps data-sales on <html>: the database's
   sales_enabled flag, with a host default while the answer is in flight.
   Markup declares what belongs to which mode; these rules do the hiding.
   Before the script has run (or without JS) show neither: a blank slot is
   fine in both modes, a price on the closed domain is not. */
html[data-sales="closed"] [data-commerce] { display: none !important; }
html[data-sales="open"] [data-commerce-closed] { display: none !important; }
html:not([data-sales]) [data-commerce],
html:not([data-sales]) [data-commerce-closed] { display: none; }

/* Closed-mode pieces. An <a> wearing .btn needs the underline off. */
a.btn { text-decoration: none; }
.soon-chip {
  display: inline-flex; align-items: center; padding: 6px 14px;
  border-radius: var(--r-pill); background: var(--lime-soft);
  color: var(--lime-ink); font-size: 13px; font-weight: 800;
  white-space: nowrap;
}

/* Магазинов стало два, и обе пилюли рядом с логотипом и переключателем языка
   в узкую шапку не помещаются - строка уезжает за край. На телефоне шапка их
   не показывает: в герое сразу под ней стоят оба значка. */
@media (max-width: 600px) {
  .site-head .soon-chip { display: none; }
}
.store-badge {
  display: inline-flex; flex-direction: column; justify-content: center;
  padding: 8px 16px; border-radius: 14px; background: var(--ink);
  color: #fff; line-height: 1.25;
}
.store-badge small { font-size: 10px; font-weight: 600; opacity: .65; }
.store-badge b { font-size: 14px; font-weight: 700; }

/* Both badges are real links into their stores now, so they share one shape. */
a.store-badge { text-decoration: none; }
a.store-badge:hover { opacity: .92; }

/* The year as a route: the same 12-cell grid, but the cells are months of
   practice - the first one is the placement test, the rest are the daily
   15 minutes. */
.months__cells--route-start i { --fill: #fff; }
.months__cells--route-start i:nth-child(1) { --fill: var(--lime); }
.months__cells--route-days i { --fill: var(--blue); }

/* The closed-mode card heading wears .t-price, but that size was drawn for
   "26 990" - words overflow it. Launch rows step down and are allowed to
   wrap; Kazakh needs both. */
.price-row--launch { white-space: normal; }
.price-row--launch .t-price {
  font-size: clamp(30px, 4.5vw, 48px);
  line-height: 1.06;
  min-width: 0;
  overflow-wrap: anywhere;
}
/* With no chip above it the launch heading opens the card, and the gap that
   kept it off the chip only pushes it down. Teachers keep their chip. */
.chip-count + .price-row + .price-row--launch { margin-top: 0; }
