/* ==========================================================================
   «Формула вступу» — landing page
   Implemented from design/README.md (authoritative for every value below) and
   design/Формула вступу.dc.html (the hi-fi prototype).
   No build step: hand-written CSS, semantic classes, no media queries.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Fonts — self-hosted, subset to Cyrillic + Latin, no third-party requests.
      Sources subset from Google Fonts originals; Oswald and Manrope are
      variable fonts instanced to the 400–700 range the design actually uses.
   -------------------------------------------------------------------------- */
@font-face {
  font-family: "Oswald";
  src: url("../fonts/oswald-var.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Manrope";
  src: url("../fonts/manrope-var.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("../fonts/ibm-plex-mono-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* --------------------------------------------------------------------------
   2. Design tokens
   -------------------------------------------------------------------------- */
:root {
  /* --- Colours: the handoff README's token table ---------------------------
       Verbatim, except the two marked "AA". The README's values for those
       fall short of WCAG AA against the backgrounds they are used on (3.77:1
       and 2.80:1, against a 4.5:1 requirement at these text sizes).
       Each target is the darkest background the token is painted on: --bg-alt
       for the eyebrows, --bg for the captions.
       Each is darkened along its own hue by the minimum that clears AA, so the
       greyed-back reading of the design is preserved. Originals noted inline. */
  --bg: #f1efe3;               /* page background (warm cream)               */
  --bg-alt: #e9e7d9;           /* alternating band background               */
  --surface: #f8f7ef;          /* cards on cream                            */
  --surface-white: #ffffff;    /* nested cards inside the cream card         */
  --green: #164734;            /* brand dark green                          */
  --green-mid: #2c6b4f;        /* primary button hover, small icon circles   */
  --green-pale: #e6ecdf;       /* pale-green fills inside cards             */
  --cream-on-green: #f4f3e7;   /* text/fills on dark green                  */
  --cream-on-green-2: #f2f1e5; /* numerals inside green circles             */
  --mint: #cfe3ba;             /* accent line "= Вступ", light-button hover  */
  --green-muted: #a7c4b1;      /* muted label text on dark green            */
  --green-muted-2: #c5d6ca;    /* body text on dark green                   */
  --text: #17251f;             /* default body text                         */
  --text-2: #3b4a42;           /* lead paragraphs, testimonial quotes       */
  --text-3: #4e5f56;           /* card body text, nav                       */
  --text-mono: #5d6b63;        /* AA; README #6d7d73 — mono eyebrow labels   */
  --text-faint: #637066;       /* AA; README #8b988e — testimonial captions  */
  --border: #dcd9c8;           /* 1px borders / dividers                    */
  --border-dashed: #b9c4b3;    /* the “ glyph on testimonial cards          */
  --note-bg: #eef1df;          /* sticky-note background                    */
  --note-border: #d5d8bf;      /* sticky-note border                        */
  --note-text: #2c4a3a;        /* sticky-note text                          */
  --green-rule: #2f6349;       /* 2px rule inside the hero formula card     */
  --green-check: #7fa891;      /* the "+" in the formula                    */
  --green-cta-border: #4d7f65; /* outline button border on dark green       */
  --chip-bg: #eceadc;          /* teacher-quote chips                       */
  --red: #c53929;              /* "Типові помилки" accent — reference posts
                                  only; no element on this page uses it, but
                                  it is part of the brand palette.          */

  /* --- Colours used by the prototype that the token table does not name --- */
  --cream-on-green-3: #eef3e9; /* pill text, checklist row text             */
  --cream-on-green-4: #f5f4ea; /* primary-button label                      */
  --border-soft: #e2e0d0;      /* borders on the white numbered cards       */
  --selection: #cfe0d3;        /* ::selection background                    */
  --stripe-a: #e8e6d6;         /* photo-placeholder diagonal stripes        */
  --stripe-b: #f2f0e3;

  /* --- Fluid type scale --------------------------------------------------- */
  --fs-h1-hero: clamp(34px, 5.2vw, 56px);
  --fs-h2-section: clamp(32px, 4.6vw, 46px);
  --fs-h2-card: clamp(30px, 4.2vw, 42px);
  --fs-h3-post: clamp(28px, 4.4vw, 42px);
  --fs-h3-card: 21px;
  --fs-lead: clamp(16px, 2.2vw, 19px);
  --fs-body: 16.5px;
  --fs-card-body: 15px;
  --fs-card-body-sm: 14.5px;
  --fs-caption: 13.5px;
  --fs-caption-sm: 13px;
  --fs-mono: 12.5px;
  --fs-mono-sm: 12px;
  --fs-hint: 11.5px;
  --fs-btn: 18px;
  --fs-btn-sm: 17px;
  --fs-logo: 19px;

  /* --- Spacing ------------------------------------------------------------ */
  --container: 1160px;
  --gutter: 20px;
  --section-pt: 76px;
  /* Measured height of the sticky header when its flex row has wrapped to two
     lines, which it does below ~370px. Anchor offsets use the tallest state so
     a deep link never lands under the header at any width. */
  --header-h: 108px;

  /* --- Radii -------------------------------------------------------------- */
  --r-note: 4px;      /* sticky note                    */
  --r-btn-sm: 8px;    /* header button                  */
  --r-pill: 7px;      /* eyebrow pill                   */
  --r-inline: 9px;    /* inline-block banner phrase     */
  --r-btn: 10px;      /* buttons, inner chips           */
  --r-chip: 12px;     /* teacher-quote chips            */
  --r-sm: 14px;       /* small cards                    */
  --r-md: 16px;       /* cards                          */
  --r-photo: 20px;    /* photo card                     */
  --r-hero-card: 22px;/* hero formula card              */
  --r-lg: 24px;       /* big containers / article       */

  --header-bg-blur: rgba(241, 239, 227, 0.94); /* --bg at 94% — header blur */

  /* --- Shadows ------------------------------------------------------------ */
  --shadow-note: 0 6px 18px rgba(22, 71, 52, 0.12);
  --shadow-frame: 0 18px 40px rgba(0, 0, 0, 0.18);
}

/* --------------------------------------------------------------------------
   3. Reset and base
   -------------------------------------------------------------------------- */
* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: "Manrope", "Helvetica Neue", Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
  overflow-x: hidden;
}

::selection {
  background: var(--selection);
}

img {
  max-width: 100%;
}

a {
  color: var(--green);
  text-decoration: none;
}

a:hover {
  color: var(--green-mid);
}

h1,
h2,
h3,
p,
figure,
blockquote {
  margin: 0;
}

/* Ukrainian diacritics (Й breve, Ї diaeresis, Є) clip below line-height 1.12
   on Oswald. Do not tighten this, and keep the 4px padding on multi-line
   headings — both exist to stop the diacritics being cut by the line box. */
.display {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  text-transform: uppercase;
  line-height: 1.12;
  padding-top: 4px;
  color: var(--green);
}

.mono {
  font-family: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
}

/* --------------------------------------------------------------------------
   4. Layout primitives
   -------------------------------------------------------------------------- */
.container {
  max-width: var(--container);
  margin: 0 auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}

.section {
  padding-top: var(--section-pt);
}

/* Anchor targets must clear the sticky header. */
[id] {
  scroll-margin-top: calc(var(--header-h) + 16px);
}

/* The recurring "h2 on the left, intro paragraph on the right" header row. */
.section-head {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: 28px;
  align-items: end;
}

.eyebrow {
  font-family: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: var(--fs-mono);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-mono);
}

.h2 {
  font-size: var(--fs-h2-section);
  line-height: 1.14;
  font-weight: 700;
}

/* An eyebrow label always sits 12px above the heading it introduces. */
.eyebrow + .h2,
.eyebrow + .display {
  margin-top: 12px;
}

.intro {
  font-size: var(--fs-body);
  line-height: 1.55;
  color: var(--text-2);
  text-wrap: pretty;
}

.lead {
  font-size: var(--fs-lead);
  line-height: 1.55;
  color: var(--text-2);
  text-wrap: pretty;
}

/* --------------------------------------------------------------------------
   5. Buttons
   -------------------------------------------------------------------------- */
.btn {
  display: inline-block;
  border-radius: var(--r-btn);
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: var(--fs-btn);
  font-weight: 600;
  text-transform: uppercase;
  text-align: center;
}

.btn-primary {
  background: var(--green);
  color: var(--cream-on-green-4);
  padding: 16px 28px;
}

.btn-primary:hover {
  background: var(--green-mid);
  color: var(--surface-white);
}

.btn-outline {
  color: var(--green);
  border: 2px solid var(--green);
  padding: 14px 26px;
}

.btn-outline:hover {
  background: var(--green);
  color: var(--cream-on-green-4);
}

/* On dark green */
.btn-cream {
  background: var(--cream-on-green);
  color: var(--green);
  padding: 17px 26px;
}

.btn-cream:hover {
  background: var(--mint);
  color: var(--green);
}

.btn-outline-on-green {
  border: 2px solid var(--green-cta-border);
  color: var(--cream-on-green);
  padding: 15px 26px;
}

.btn-outline-on-green:hover {
  border-color: var(--cream-on-green);
  color: var(--surface-white);
}

/* --------------------------------------------------------------------------
   6. Header
   -------------------------------------------------------------------------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 60;
  /* Opaque by default: Telegram's Android WebView is the single most common
     entry point and is the browser most likely to lack backdrop-filter.
     The translucent treatment is applied only where blur actually works. */
  background: var(--bg);
  border-bottom: 1px solid var(--border);
}

@supports ((backdrop-filter: blur(10px)) or (-webkit-backdrop-filter: blur(10px))) {
  .site-header {
    background: var(--header-bg-blur);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
  }
}

.site-header__inner {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  padding-top: 12px;
  padding-bottom: 12px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-right: auto;
}

.brand__mark {
  width: 28px;
  height: 28px;
  flex: none;
  border-radius: 50%;
  background: var(--green);
  color: var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 15px;
  font-weight: 600;
}

.brand__word {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: var(--fs-logo);
  font-weight: 600;
  text-transform: uppercase;
  color: var(--green);
}

.btn-header {
  display: inline-block;
  background: var(--green);
  color: var(--cream-on-green-4);
  padding: 10px 18px;
  border-radius: var(--r-btn-sm);
  font-size: var(--fs-card-body-sm);
  font-weight: 700;
}

.btn-header:hover {
  background: var(--green-mid);
  color: var(--surface-white);
}

/* --------------------------------------------------------------------------
   7. Hero
   -------------------------------------------------------------------------- */
.hero {
  position: relative;
  overflow: hidden;
}

.hero__blob {
  position: absolute;
  top: -100px;
  left: -80px;
  width: 260px;
  height: 260px;
  border-radius: 50%;
  background: var(--green);
  opacity: 0.08;
}

.hero__inner {
  position: relative;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
  gap: 44px;
  align-items: center;
  padding-top: 44px;
  padding-bottom: 72px;
}

.pill {
  display: inline-block;
  background: var(--green);
  color: var(--cream-on-green-3);
  font-family: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: var(--fs-mono);
  padding: 7px 14px;
  border-radius: var(--r-pill);
}

.hero__title {
  margin-top: 20px;
  font-size: var(--fs-h1-hero);
  font-weight: 700;
}

.hero__title mark,
.highlight {
  display: inline-block;
  background: var(--green);
  color: var(--cream-on-green);
  padding: 2px 16px 6px;
  border-radius: var(--r-btn);
  margin-top: 8px;
}

.hero__lead {
  margin-top: 24px;
  max-width: 30em;
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 32px;
}

.hero__note {
  margin-top: 16px;
  font-size: var(--fs-mono);
  color: var(--text-mono);
}

.hero__aside {
  position: relative;
}

.sticky-note {
  position: absolute;
  right: 0;
  top: -26px;
  z-index: 2;
  transform: rotate(4deg);
  background: var(--note-bg);
  border: 1px solid var(--note-border);
  border-radius: var(--r-note);
  padding: 13px 15px;
  font-size: var(--fs-caption);
  line-height: 1.4;
  font-weight: 600;
  color: var(--note-text);
  box-shadow: var(--shadow-note);
}

.formula {
  background: var(--green);
  border-radius: var(--r-hero-card);
  padding: 30px 26px 26px;
  color: var(--cream-on-green-2);
}

.formula__label {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 14px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--green-muted);
}

.formula__stack {
  margin-top: 20px;
  display: grid;
  gap: 10px;
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  text-transform: uppercase;
}

.formula__term {
  font-size: clamp(30px, 5vw, 40px);
  font-weight: 600;
  line-height: 1.1;
}

.formula__sign {
  font-size: 24px;
  color: var(--green-check);
  line-height: 1;
}

.formula__rule {
  height: 2px;
  background: var(--green-rule);
  margin: 8px 0;
}

.formula__result {
  font-size: clamp(34px, 6vw, 46px);
  font-weight: 700;
  line-height: 1;
  color: var(--mint);
}

/* --------------------------------------------------------------------------
   8. "Одна тема — чотири кроки"
   -------------------------------------------------------------------------- */
.band {
  background: var(--bg-alt);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}

.band__inner {
  padding-top: var(--section-pt);
  padding-bottom: var(--section-pt);
}

.steps {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr));
  gap: 16px;
  margin-top: 38px;
}

.step-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 24px 22px 26px;
}

.step-card:hover {
  border-color: var(--green);
}

.numeral {
  width: 34px;
  height: 34px;
  flex: none;
  border-radius: 50%;
  background: var(--green);
  color: var(--cream-on-green-2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 17px;
  font-weight: 600;
}

.numeral--sm {
  width: 28px;
  height: 28px;
  font-size: 14px;
}

.card-title {
  margin-top: 16px;
  margin-bottom: 8px;
  font-size: var(--fs-h3-card);
  font-weight: 600;
}

.card-body {
  font-size: var(--fs-card-body);
  line-height: 1.5;
  color: var(--text-3);
}

.card-body--sm {
  font-size: var(--fs-card-body-sm);
}

/* --------------------------------------------------------------------------
   9. "Приклад посту"
   -------------------------------------------------------------------------- */
.post {
  margin-top: 30px;
  background: var(--green);
  border-radius: var(--r-lg);
  padding: clamp(18px, 2.6vw, 28px);
  position: relative;
  overflow: hidden;
}

.post__blob {
  position: absolute;
  right: -60px;
  top: -60px;
  width: 220px;
  height: 220px;
  border-radius: 50%;
  background: var(--surface-white);
  opacity: 0.05;
}

.post__grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(290px, 100%), 1fr));
  gap: clamp(20px, 3vw, 34px);
  align-items: start;
}

.post__body {
  padding: clamp(4px, 1.4vw, 16px);
}

.post__meta {
  display: flex;
  align-items: center;
  gap: 10px;
}

.post__avatar {
  width: 26px;
  height: 26px;
  flex: none;
  border-radius: 50%;
  background: var(--cream-on-green);
  color: var(--green);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 14px;
  font-weight: 600;
}

.post__time {
  font-size: var(--fs-mono);
  color: var(--green-muted);
}

.post__title {
  margin-top: 18px;
  font-size: var(--fs-h3-post);
  font-weight: 700;
  color: var(--cream-on-green);
}

.post__text {
  margin-top: 16px;
  max-width: 26em;
  font-size: clamp(15.5px, 2.1vw, 17px);
  line-height: 1.6;
  color: var(--green-muted-2);
  text-wrap: pretty;
}

.checklist {
  display: grid;
  gap: 9px;
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}

.checklist li {
  display: flex;
  align-items: center;
  gap: 11px;
  color: var(--cream-on-green-3);
  font-size: var(--fs-card-body);
}

/* Drawn rather than typed: U+2713 is absent from all three brand faces, so a
   text checkmark would fall back to a system font — or to tofu on the Android
   WebViews a large share of this traffic arrives through. */
.checklist__tick {
  width: 22px;
  height: 22px;
  flex: none;
  border-radius: 50%;
  background: var(--green-mid);
  display: flex;
  align-items: center;
  justify-content: center;
}

.checklist__tick svg {
  width: 11px;
  height: 11px;
  display: block;
}

.post__cta {
  margin-top: 26px;
  padding: 14px 24px;
  font-size: var(--fs-btn-sm);
}

.hashtags {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 24px;
  font-size: var(--fs-mono);
  color: var(--green-muted);
}

.post__shot {
  display: block;
  background: var(--cream-on-green);
  border-radius: var(--r-md);
  padding: 10px;
  box-shadow: var(--shadow-frame);
}

.post__shot img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--r-btn);
}

/* --------------------------------------------------------------------------
   10. "Психологічні поради"
   -------------------------------------------------------------------------- */
.panel {
  margin-top: 30px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: clamp(22px, 3vw, 38px);
}

.panel__title {
  max-width: 22em;
  font-size: clamp(26px, 3.6vw, 40px);
  line-height: 1.14;
  font-weight: 700;
}

.quotes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: 12px;
  margin-top: 24px;
}

.quote-chip {
  background: var(--chip-bg);
  border-radius: var(--r-chip);
  padding: 16px 18px;
  font-size: var(--fs-card-body);
  line-height: 1.45;
  color: var(--text-2);
}

.callout {
  margin-top: 20px;
  background: var(--green);
  color: var(--cream-on-green-2);
  border-radius: var(--r-md);
  padding: 24px 26px;
}

.callout__label {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 20px;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--mint);
}

.callout__lead {
  margin-top: 12px;
  font-size: 17px;
  line-height: 1.55;
  font-weight: 700;
}

.callout__text {
  margin-top: 8px;
  max-width: 46em;
  font-size: 15.5px;
  line-height: 1.55;
  color: var(--green-muted-2);
  text-wrap: pretty;
}

.advice {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(210px, 100%), 1fr));
  gap: 14px;
  margin-top: 20px;
}

.advice-card {
  background: var(--surface-white);
  border: 1px solid var(--border-soft);
  border-radius: var(--r-sm);
  padding: 20px;
}

.advice-card:hover {
  border-color: var(--green);
}

.advice-card__title {
  margin-top: 12px;
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 17px;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--green);
  line-height: 1.14;
}

.advice-card__text {
  margin-top: 8px;
}

.banner {
  margin-top: 20px;
  background: var(--green-pale);
  border-radius: var(--r-md);
  padding: 22px 26px;
  text-align: center;
}

.banner__line {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: clamp(20px, 3vw, 28px);
  text-transform: uppercase;
  font-weight: 600;
  color: var(--green);
  line-height: 1.14;
  text-wrap: balance;
}

.banner__mark {
  display: inline-block;
  margin-top: 12px;
  background: var(--green);
  color: var(--cream-on-green);
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: clamp(18px, 2.6vw, 24px);
  font-weight: 600;
  text-transform: uppercase;
  line-height: 1.14;
  padding: 6px 18px 8px;
  border-radius: var(--r-inline);
}

/* --------------------------------------------------------------------------
   11. "Про Юлію"
   -------------------------------------------------------------------------- */
.tutor {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
  gap: 40px;
  align-items: start;
}

.photo-card {
  border: 1px solid var(--border);
  border-radius: var(--r-photo);
  overflow: hidden;
  background: var(--surface);
}

/* Placeholder occupying the photograph's final 4:5 box, so the layout here is
   already the layout that applies once the real photograph is dropped in. */
.photo-card__slot {
  aspect-ratio: 4 / 5;
  background-image: repeating-linear-gradient(
    135deg,
    var(--stripe-a) 0 8px,
    var(--stripe-b) 8px 16px
  );
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

/* Filled: the photograph replaces the stripes and fills the same 4:5 box, so
   the surrounding layout is unchanged from the placeholder state. */
.photo-card__slot--filled {
  padding: 0;
}

.photo-card__slot picture,
.photo-card__slot img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.photo-card__foot {
  padding: 18px 20px;
}

.photo-card__name {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 22px;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--green);
  line-height: 1.12;
}

.photo-card__role {
  font-size: 14px;
  color: var(--text-3);
  margin-top: 3px;
}

.tutor__text {
  margin-top: 20px;
  max-width: 34em;
  font-size: clamp(16px, 2.2vw, 18px);
  line-height: 1.6;
  color: var(--text-2);
  text-wrap: pretty;
}

.tutor__text + .tutor__text {
  margin-top: 14px;
}

.stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(140px, 100%), 1fr));
  gap: 12px;
  margin-top: 30px;
}

.stat-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 18px 20px;
}

.stat-card--filled {
  background: var(--green);
  border-color: var(--green);
  color: var(--cream-on-green-2);
}

.stat-card__value {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 32px;
  font-weight: 700;
  line-height: 1;
  color: var(--green);
}

.stat-card--filled .stat-card__value {
  color: inherit;
}

.stat-card__label {
  font-size: var(--fs-caption-sm);
  margin-top: 6px;
  color: var(--text-3);
}

.stat-card--filled .stat-card__label {
  color: var(--green-muted);
}

/* Stat strip: its own section under the hero. Reuses the stat cards above;
   only the grid minimum and the two type sizes differ. Declared after .stats
   so these overrides win at equal specificity. */
.stat-strip {
  padding-top: 0;
  padding-bottom: var(--section-pt);
}

.stats--strip {
  grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr));
  margin-top: 0;
}

.stats--strip .stat-card__value {
  font-size: 34px;
}

.stats--strip .stat-card__label {
  font-size: var(--fs-caption);
}

/* --------------------------------------------------------------------------
   12. "Що кажуть учні"
   -------------------------------------------------------------------------- */
.testimonials {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
  gap: 16px;
  margin-top: 30px;
}

.testimonial {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 24px;
}

.testimonial__glyph {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 40px;
  line-height: 0.6;
  color: var(--border-dashed);
}

.testimonial blockquote {
  margin-top: 10px;
  font-size: 16px;
  line-height: 1.55;
  color: var(--text-2);
}

.testimonial figcaption {
  margin-top: 16px;
  font-size: var(--fs-hint);
  color: var(--text-faint);
}

/* --------------------------------------------------------------------------
   13. "Заняття"
   -------------------------------------------------------------------------- */
.lessons-card {
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: clamp(24px, 3.4vw, 44px);
}

.lessons-card__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
  gap: 32px;
  align-items: start;
}

.lessons-card__title {
  font-size: var(--fs-h2-card);
  line-height: 1.14;
  font-weight: 700;
}

.lessons-card__text {
  margin-top: 18px;
  max-width: 30em;
  font-size: var(--fs-body);
  line-height: 1.6;
  color: var(--text-2);
  text-wrap: pretty;
}

.lessons-card__cta {
  margin-top: 26px;
  padding: 15px 26px;
  font-size: var(--fs-btn-sm);
}

.features {
  display: grid;
  gap: 12px;
}

.feature-card {
  background: var(--surface);
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  padding: 18px 20px;
}

.feature-card:hover {
  border-color: var(--green);
}

.feature-card__title {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 17px;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--green);
  line-height: 1.14;
}

.feature-card__text {
  margin-top: 6px;
}

/* --------------------------------------------------------------------------
   14. Final CTA
   -------------------------------------------------------------------------- */
.final {
  padding-bottom: 90px;
}

.final__box {
  background: var(--green);
  border-radius: var(--r-lg);
  padding: clamp(30px, 4vw, 56px);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
  gap: 32px;
  align-items: center;
}

.final__title {
  font-size: clamp(30px, 4.4vw, 46px);
  line-height: 1.14;
  font-weight: 700;
  color: var(--cream-on-green);
  text-wrap: balance;
}

.final__text {
  margin-top: 16px;
  max-width: 30em;
  font-size: clamp(16px, 2.2vw, 18px);
  line-height: 1.55;
  color: var(--green-muted-2);
  text-wrap: pretty;
}

.final__actions {
  display: grid;
  gap: 12px;
}

/* --------------------------------------------------------------------------
   15. Footer
   -------------------------------------------------------------------------- */
.site-footer {
  border-top: 1px solid var(--border);
}

.site-footer__inner {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: center;
  padding-top: 26px;
  padding-bottom: 26px;
  font-size: 14px;
  color: var(--text-mono);
}

.site-footer__word {
  font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
  font-size: 18px;
  text-transform: uppercase;
  color: var(--green);
  line-height: 1.12;
}

.site-footer__tagline {
  font-size: var(--fs-mono-sm);
}

.site-footer__links {
  margin-left: auto;
  display: flex;
  gap: 16px;
}

.site-footer__links a {
  color: var(--text-3);
}

.site-footer__links a:hover {
  color: var(--green-mid);
}

/* --------------------------------------------------------------------------
   16. Focus states
        The prototype has none. Every control that has a :hover above gets a
        matching, clearly visible keyboard indicator here.
   -------------------------------------------------------------------------- */
:focus-visible {
  outline: 3px solid var(--green);
  outline-offset: 3px;
}

/* On dark green a green ring is invisible — use the cream from the same block. */
.post__cta:focus-visible,
.btn-cream:focus-visible,
.btn-outline-on-green:focus-visible,
.post__shot:focus-visible,
.final__box a:focus-visible {
  outline-color: var(--cream-on-green);
}

/* Cards are not focusable themselves; their hover cue is decorative. Anchors
   inside them inherit the ring above. */
