html { font-size: calc(var(--vw, 100vw) / 120); }
/* Safari на iPhone у ландшафті сам «збільшує для читабельності» частину тексту (text autosizing):
   у футері посилання Our Stories ставали помітно більшими за Our Impact (скрін клієнта).
   Розміри в нас задані явно для кожної розкладки, тож автозбільшення вимикаємо. */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  background: #dde7fa;
  overflow-x: clip;
  font-family: 'Urbanist', 'Helvetica Neue', Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.page {
  position: relative;
  width: 120rem;
  height: 162.0625rem;
  margin: 0 auto;
  background: #dde7fa;
  overflow: hidden;
}

.s-hero, .s-fsc, .s-shelter, .s-stories, .s-footer, .s-header {
  position: absolute; left: 0; top: 0; width: 100%; height: 0;
}
.s-stories { z-index: 0; }
.s-hero, .s-fsc, .s-shelter, .s-footer { z-index: 1; }
.s-header { z-index: 3; }

.hero-copy, .sec-intro, .sec-impact, .stat-grid, .stat, .stat-ico, .stat-lines,
.stat-line, .story-card, .rs-pager, .f-socials, .f-group, .f-legals, .nav-drawer {
  display: contents;
}
.nav-burger { display: none; }

.a { position: absolute; display: block; }
img.a, .a img { max-width: none; }

.page p,
.page .hero-title, .page .h2, .page .impact-label, .page .annual-report,
.page .stat-num, .page .stat-cap, .page .stat-inline,
.page .nav-item, .page .dd-label,
.page .f-head, .page .f-link, .page .f-legal,
.page .card-title, .page .card-body, .page .card-more,
.page .nav-next-label, .page .nav-prev-label {
  text-box-trim: trim-both;
  text-box-edge: cap alphabetic;
  text-box: trim-both cap alphabetic;
  overflow-wrap: break-word;
}

.cloud-right { left: 84.651062rem; top: 95.617688rem; width: 33.5rem; height: 21.625rem; }
.cloud-left  { left: 0;          top: 95.401875rem; width: 45.5625rem; height: 38.625rem; }

.wave-band {
  left: 0; top: 121.530875rem; width: 120rem; height: 5.517313rem;
  transform: scaleX(-1);
}

.lavender-band {
  left: 0; top: 126.81375rem; width: 120rem; height: 9.24875rem;
  background: #dcbdf3;
}

.ribbon { left: -9.897312rem; top: 99.163125rem; width: 191.668375rem; height: 24.586437rem; }

.hero {
  left: 0; top: 0; width: 120rem; height: 50rem;
  overflow: hidden;
  isolation: isolate;
}
.hero-bkgd    { left: 0;           top: 0;         width: 120rem;    height: 50rem;     object-fit: cover; }
.hero-family  { left: 64.374969rem; top: 8.09375rem;   width: 28.625rem;     height: 28.374437rem; object-fit: cover; }
.hero-polaroid{ left: 63.302094rem; top: 6.65625rem;   width: 47.270812rem; height: 70.90625rem;  object-fit: cover; }

.hero-shade-left {
  left: 0; top: 0; width: 63.125rem; height: 50rem;
  background: linear-gradient(to left, rgba(0,0,0,0) 0%, #000 100%);
  opacity: .5;
  mix-blend-mode: multiply;
}
.hero-shade-right {
  right: 0; top: 0; width: 18.1875rem; height: 50rem;
  background: linear-gradient(to right, rgba(0,0,0,0) 0%, #000 100%);
  opacity: .5;
  mix-blend-mode: multiply;
}

.nav-logo   { left: 3.125rem;     top: 3.125rem;    width: 13.493063rem; height: 4.5rem; }
.nav-item   {
  font-weight: 500; font-size: 1.25rem; line-height: normal; color: #fff;
  white-space: nowrap;
  text-box-trim: trim-both; text-box-edge: cap alphabetic;
  text-box: trim-both cap alphabetic;
}
.nav-chev   { width: 1.5rem; height: 1.5rem; top: 5.345781rem; }

.annual-report {
  right: 3.125rem; top: 5.627031rem;
  font-weight: 700; font-size: 1.25rem; line-height: normal;
  color: #fff; text-align: right; white-space: nowrap;
  text-decoration: none; transition: color .16s ease;
}
/* тепер це посилання на повний звіт; hover — як у посилань футера */
a.annual-report:hover { color: #ff9b00; }
a.annual-report:focus-visible { outline: 0.125rem solid #ff9b00; outline-offset: 0.25rem; border-radius: 0.25rem; }

.handwriting { left: 18.1875rem; top: 16.320419rem; width: 12.375rem; height: 1.304581rem; }
.hw-1 { left: 0;        top: 0; width: 5.152875rem;  height: 1.01925rem; }
.hw-2 { left: 5.725937rem; top: 0; width: 6.649063rem; height: 1.304563rem; }

.hero-title {
  left: 18.1875rem; top: 19.5rem; width: 26.5rem;
  font-weight: 700; font-size: 3.4375rem; line-height: normal; color: #fff;
  white-space: pre-wrap;
}

.p-hero {
  left: 18.1875rem; top: 36.1875rem; width: 21.680563rem;
  font-weight: 500; font-size: 1.25rem; line-height: normal; color: #fff;
}
/* Page 2 (safety) desktop: wider intro box so it wraps to one line fewer, aligning its bottom with
   the polaroid on the right (client). Desktop only — mobile .p-hero rule (later in source) wins. */
.p-hero-safety { width: 26.5rem; }

/* Слово з дефісом, яке не можна розривати між рядками (клієнт: "well-being" в інтро на стор. 2).
   Браузер за замовчуванням має право перенести рядок одразу після дефіса. */
.nowrap { white-space: nowrap; }

.h2 { width: 19.5rem; font-weight: 700; font-size: 2.8125rem; line-height: normal; color: #1a5edb; }
.h2-fsc     { left: 18.1875rem; top: 53.125rem; }
.h2-shelter { left: 18.1875rem; top: 75.802734rem; }

.body-20 { font-weight: 500; font-size: 1.25rem; line-height: 1.625rem; color: #000; }
.p-fsc     { left: 18.1875rem;    top: 60.375rem;        width: 19.5rem; }
.p-shelter { left: 18.313125rem; top: 83.052734rem; width: 19.374188rem; }

.impact-label {
  left: 39.5625rem; font-weight: 700; font-size: 1.375rem; line-height: normal;
  color: #7a00d0; white-space: nowrap;
}
.impact-label-1 { top: 53.125rem; }
.impact-label-2 { top: 75.802734rem; }

.line-1 { left: 39.5625rem; top: 55.1875rem;        width: 62.25rem; height: 0.0625rem; }
.line-2 { left: 39.5625rem; top: 77.865234rem; width: 62.25rem; height: 0.0625rem; }

.stat-num {
  font-weight: 700; font-size: 2.1875rem; line-height: normal;
  color: #7a00d0; white-space: nowrap;
}
.stat-cap {
  font-weight: 500; font-size: 1rem; line-height: normal;
  color: #000; text-align: center;
}
.stat-inline {
  font-weight: 500; font-size: 1rem; line-height: normal; color: #000;
  white-space: nowrap;
}

.icon-family { left: 41.984875rem;  top: 57.343688rem; width: 5.34275rem; height: 4.531313rem; }
.stat-3082   { left: 41.90625rem;    top: 62.9375rem; }
.stat-cap-1  { left: 39.5625rem;      top: 65.75rem;    width: 10.125rem; }

.icon-medal  { left: 55.623937rem;  top: 57rem;     width: 4.064625rem; height: 5.125rem; }
.stat-94     { left: 55.59375rem;    top: 62.9375rem; }
.stat-cap-2  { left: 52.59375rem;    top: 65.75rem;    width: 10.125rem; }

.ring88-tip  { left: 68.082375rem; top: 57rem;     width: 2.605125rem;  height: 1.581687rem; }
.ring88      { left: 66.9375rem;     top: 57rem;     width: 7.5rem;     height: 7.5rem; }
.stat-88     { left: 68.65625rem;   top: 59.96875rem; }
.stat-cap-3  { left: 65.625rem;     top: 65.75rem;    width: 10.125rem; }

.ring77      { left: 79.96875rem;   top: 57rem;     width: 7.5rem;    height: 7.5rem; }
.ring77-tip  { left: 79.99675rem; top: 57rem;     width: 3.722rem; height: 3.382563rem; }
.stat-77     { left: 81.6875rem;     top: 59.96875rem; }
.stat-cap-4  { left: 78.65625rem;   top: 65.75rem;    width: 10.125rem; }

.ring64-tip  { left: 92.999969rem; top: 57rem;    width: 3.750062rem;  height: 6.160812rem; }
.ring64      { left: 93.877413rem; top: 57rem;    width: 6.622562rem; height: 7.5rem; }
.stat-64     { left: 94.687687rem;  top: 59.96875rem; }
.stat-cap-5  { left: 91.6875rem;      top: 65.75rem;   width: 10.125rem; }

.icon-house    { left: 42.436375rem; top: 79.706187rem;  width: 8.141312rem; height: 7.443125rem; }
.stat-cap-6    { left: 39.5625rem;     top: 89.052734rem; width: 14.75rem; }
.stat-150      { left: 41.734375rem;  top: 91.744325rem;  color: #8e26d7; }
.stat-inline-1 { left: 45.515625rem;  top: 92.181825rem;  line-height: 1rem; }
.stat-50       { left: 43.671875rem;  top: 93.99835rem;  color: #8e26d7; }
.stat-inline-2 { left: 46.765625rem;  top: 94.43585rem; }
.stat-cap-7    { left: 41.40625rem;   top: 96.127444rem;  width: 11.0625rem; }

.ring71     { left: 58.519375rem;  top: 79.677734rem; width: 7.500875rem; height: 7.5rem; }
.stat-71    { left: 60.457313rem;  top: 82.646484rem; width: 3.625rem;      text-align: center; }
.stat-cap-8 { left: 56.045rem;  top: 89.052734rem; width: 12.449687rem; }

.ring66     { left: 75.325438rem; top: 79.677734rem; width: 7.500031rem; height: 7.5rem; }
.stat-66    { left: 77.044188rem; top: 82.646484rem; width: 4.0625rem;       text-align: center; }
.stat-cap-9 { left: 70.577625rem; top: 89.052734rem; width: 16.996rem; }

.ring53      { left: 91.984rem; top: 79.677734rem; width: 7.50075rem; height: 7.5rem; }
.stat-53     { left: 93.703125rem;  top: 82.646544rem;  width: 4.0625rem;      text-align: center; }
.stat-cap-10 { left: 89.65625rem;   top: 89.052734rem; width: 12.15625rem; }

.rs-wrap {
  left: 18.108rem; top: 109.231375rem; width: 19.378875rem; height: 4.543687rem;
  display: flex; align-items: center; justify-content: center;
}
.rs-img { flex: none; width: 19.21475rem; height: 3.476406rem; transform: rotate(3.2deg); }

.card-wrap {
  left: 42.54625rem; top: 102.250625rem; width: 35.207rem; height: 21.400688rem;
  display: flex; align-items: center; justify-content: center;
}
.card-shape {
  flex: none; width: 33.8125rem; height: 18.75rem;
  background: #fff; border: 0.125rem solid #f178dd; border-radius: 1.875rem;
  transform: rotate(-4.6deg);
}

.card-title-wrap {
  left: 44.578063rem; top: 105.298063rem; width: 19.406rem; height: 5.089037rem;
  display: flex; align-items: center; justify-content: center;
}
.card-title {
  flex: none; width: 19.182125rem; transform: rotate(-4.6deg);
  font-weight: 700; font-size: 1.875rem; line-height: normal; color: #1a5edb;
}

.card-body-wrap {
  left: 45.065375rem; top: 111.3415rem; width: 19.771563rem; height: 7.284813rem;
  display: flex; align-items: center; justify-content: center;
}
.card-body {
  flex: none; width: 19.372937rem; transform: rotate(-4.6deg);
  font-weight: 500; font-size: 1.25rem; line-height: 1.625rem; color: #000;
}

.card-more-wrap {
  left: 51.942875rem; top: 117.785813rem; width: 19.69525rem; height: 2.450788rem;
  display: flex; align-items: center; justify-content: center;
  text-decoration: none;
}
.card-more {
  flex: none; width: 19.6885rem; transform: rotate(-4.6deg);
  font-weight: 700; font-size: 1.25rem; line-height: normal; color: #1a5edb;
  text-align: right;
}

.card-arrow-wrap {
  left: 72.5295rem; top: 116.57225rem; width: 2.832rem; height: 2.889312rem;
  display: flex; align-items: center; justify-content: center;
}
.card-arrow { flex: none; width: 2.625rem; height: 2.6875rem; transform: rotate(-4.6deg); }

.card-book-wrap {
  left: 68.1195rem; top: 104.342562rem; width: 6.698062rem; height: 5.552313rem;
  display: flex; align-items: center; justify-content: center;
}
.card-book { flex: none; width: 6.3125rem; height: 5.0625rem; transform: rotate(-4.6deg); }

.nav-next { left: 62.761125rem; top: 129.938125rem; text-decoration: none; }
.nav-next-label {
  position: absolute; left: 0; top: 1.0625rem; width: 2.625rem;
  font-weight: 500; font-size: 1.25rem; line-height: normal; color: #000;
  text-align: right; white-space: nowrap;
  text-box-trim: trim-both; text-box-edge: cap alphabetic;
  text-box: trim-both cap alphabetic;
}
.nav-next-arrow { left: 3.284875rem; top: 0; width: 3rem; height: 3rem; }
.nav-prev-label {
  left: 54.579rem; top: 131.000625rem; opacity: .2;
  font-weight: 500; font-size: 1.25rem; line-height: normal; color: #000;
  white-space: nowrap;
}
.nav-prev-arrow {
  left: 50.954rem; top: 129.938125rem; width: 3rem; height: 3rem;
  transform: rotate(180deg);
}

.kids-group { left: 18.475625rem;  top: 119.054312rem; width: 17.1875rem;     height: 9.3125rem; }
.girl-right { left: 99.651625rem; top: 117.707125rem; width: 7.164rem; height: 10.631063rem; }

.footer-bg { left: 0; top: 135.8125rem; width: 120rem; height: 26.25rem; background: #1a5edb; }

.footer    { left: 0; top: 0;    width: 120rem; height: 0; }

.f-line { left: 18.188125rem; width: 83.625rem; height: 0.0625rem; background: #fff; }
.f-line-top    { top: 142.039975rem; }
.f-line-bottom { top: 157.034975rem; }

.f-logo { left: 18.192rem; top: 145.155438rem; width: 13.462625rem; height: 4.494187rem; }
/* footer logo links home; contents = no box, so the img keeps its exact layout on every breakpoint */
a.f-logo-link { display: contents; cursor: pointer; }

.f-social img { display: block; width: 100%; height: 100%; }
.f-fb { left: 18.188125rem; top: 152.409975rem; width: 0.723625rem;  height: 1.496813rem; }
.f-ig { left: 20.399375rem; top: 152.409975rem; width: 1.5rem;      height: 1.5rem; }
.f-tt { left: 23.3875rem; top: 152.409975rem; width: 1.30075rem;  height: 1.496813rem; }
.f-li { left: 26.18125rem; top: 152.532437rem;  width: 1.497125rem;  height: 1.374375rem; }
/* Клієнт: посилання на основний сайт Allkin поруч із соцмережами. Той самий крок між
   іконками, що в макеті (~1.49rem), і розмір як в Instagram (1.5rem). */
.f-web { left: 29.17rem; top: 152.409975rem; width: 1.5rem; height: 1.5rem; }

.f-divider { left: 34.911875rem; top: 145.164975rem; width: 0.0625rem; height: 8.74175rem; background: #fff; }

.f-head {
  font-weight: 600; font-size: 1.125rem; line-height: normal;
  color: #ff9b00; white-space: nowrap;
}
.f-head-services { left: 38.17125rem;  top: 145.164975rem; }
.f-head-stories  { left: 83.88875rem; top: 145.164975rem; }

.f-link {
  text-decoration: none;
  font-weight: 500; font-size: 1rem; line-height: normal;
  color: #fff; white-space: nowrap;
}
.f-c1 { left: 38.191875rem; }
.f-c2 { left: 59.691875rem; }
.f-c3 { left: 83.88875rem; }
.f-c1-1, .f-c2-1, .f-c3-1 { top: 147.389975rem; }
.f-c1-2, .f-c3-2 { top: 149.347475rem; }
.f-c2-2 { top: 149.327475rem; }
.f-c1-3, .f-c3-3 { top: 151.284975rem; }
.f-c2-3 { top: 151.264975rem; }
.f-c1-4, .f-c3-4 { top: 153.222475rem; }

.f-legal {
  text-decoration: none;
  top: 158.909975rem;
  font-weight: 500; font-size: 1rem; line-height: normal;
  color: #fff; text-align: right; white-space: nowrap;
}
.f-privacy { right: 95.91625rem; }
.f-terms   { right: 18.186875rem; }

.nav-menu { height: 1.5rem; }
/* Клієнт: «Services & Impact» -> «Our Impact», «Stories» -> «Our Stories». Стрілка стоїть
   right: 0, тож ширина пункту = текст + зазор як у макеті + стрілка 1.5rem; другий пункт
   зсунуто так, щоб проміжок між пунктами лишився макетний (2.125rem).
   Ширини тексту заміряні в браузері на 1920: Our Impact 6.3008rem, Our Stories 6.1533rem. */
.nav-menu-services { left: 21.618063rem; top: 5.345781rem; width: 7.8369rem; }
.nav-menu-stories  { left: 31.580rem;    top: 5.345781rem; width: 7.6728rem; }

.nav-trigger {
  position: absolute; inset: 0;
  display: block; width: 100%; height: 100%;
  background: none; border: 0; padding: 0;
  font: inherit; color: inherit; cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.nav-trigger:focus-visible { outline: 0.125rem solid #ff9b00; outline-offset: 0.25rem; border-radius: 0.25rem; }

.nav-menu .nav-item { left: 0; }
.nav-menu-services .nav-item { top: 0.28125rem; }
.nav-menu-stories  .nav-item { top: 0.34375rem; }

.nav-menu .nav-chev {
  left: auto; right: 0; top: 0;
  transition: transform .22s cubic-bezier(.4, 0, .2, 1);
}
.nav-menu[data-open="true"] .nav-chev { transform: rotate(180deg); }

.nav-panel {
  position: absolute;
  left: -0.108125rem;
  top: 2.468719rem;
  background: #1a5edb;
  border-radius: 0.625rem;
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-0.5rem);
  transition: opacity .2s ease, transform .2s cubic-bezier(.4, 0, .2, 1), visibility .2s;
}
.nav-menu[data-open="true"] .nav-panel {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.nav-panel-services { width: 26.5rem; height: 15.6875rem; }
.nav-panel-stories  { width: 22.5625rem; height: 9.5rem; }

.dd-item {
  position: absolute;
  left: 1.25rem;
  height: 2.0625rem;
  display: flex;
  align-items: center;
  text-decoration: none;
  white-space: nowrap;
}
.dd-item .dd-label {
  display: block;
  font-weight: 500;
  font-size: 1.125rem;
  line-height: normal;
  color: #fff;
  text-box-trim: trim-both;
  text-box-edge: cap alphabetic;
  text-box: trim-both cap alphabetic;
  transition: color .16s ease;
}
.dd-item:hover .dd-label,
.dd-item:focus-visible .dd-label { color: #ff9b00; }

.dd-item[aria-current="page"] .dd-label { color: #ff9b00; }
.dd-item:focus-visible { outline: none; }

.dd-item:nth-child(1) { top: 0.625rem; }
.dd-item:nth-child(2) { top: 2.6875rem; }
.dd-item:nth-child(3) { top: 4.75rem; }
.dd-item:nth-child(4) { top: 6.8125rem; }
.dd-item:nth-child(5) { top: 8.875rem; }
.dd-item:nth-child(6) { top: 10.9375rem; }
.dd-item:nth-child(7) { top: 13rem; }

.f-link, .card-more, .nav-prev-label { transition: color .16s ease, opacity .16s ease; }

a.f-link:hover { color: #ff9b00; }
.f-social { transition: opacity .16s ease; }
.f-social:hover { opacity: .7; }

.card-more-wrap:hover .card-more { color: #ff9b00; }
.card-more-wrap:hover ~ .card-arrow-wrap .card-arrow,
.card-arrow-wrap:hover .card-arrow { transform: rotate(-4.6deg) translateX(0.25rem); }
.card-arrow { transition: transform .2s cubic-bezier(.4, 0, .2, 1); }

.nav-next { cursor: pointer; }
.nav-next .nav-next-arrow { transition: transform .2s cubic-bezier(.4, 0, .2, 1); }
.nav-next:hover .nav-next-arrow { transform: translateX(0.25rem); }
.nav-next:hover .nav-next-label { color: #7a00d0; }

/* Остання сторінка ланцюга: «Next» вести нікуди, тож він неактивний — так само, як «Previous»
   на першій сторінці (opacity .2). Клас вішається на елемент, який уже НЕ <a>. */
.nav-next-off { cursor: default; pointer-events: none; }
.nav-next-off .nav-next-label,
.nav-next-off .nav-next-arrow { opacity: .2; }

/* Previous nav: mirror the Next hover. The prev arrow is now a link (<a class="nav-prev-arrow">);
   its img fills it. Move it LEFT on hover of either the arrow or the "Previous" label. We shift via
   margin (not transform) so we don't clobber the arrow's rotate(180deg). */
a.nav-prev-arrow { cursor: pointer; }
.nav-prev-arrow img { display: block; width: 100%; height: 100%; }
.nav-prev-arrow { transition: margin .2s cubic-bezier(.4, 0, .2, 1); }
a.nav-prev-label:hover ~ a.nav-prev-arrow,
a.nav-prev-arrow:hover { margin-left: -0.25rem; }
a.nav-prev-label:hover { color: #7a00d0; opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  * { transition-duration: .01ms !important; }
  .s-header[data-drawer="open"] .nav-trigger,
  .s-header[data-drawer="open"] .dd-item { animation: none !important; }
}

@media (max-width: 1199.98px) {

  html { font-size: 16px; }
  /* Саме clip, а не hidden. hidden робить body власним контейнером прокрутки
     (overflow-y тоді обчислюється в auto — перевірено, так і було), і в Safari на
     iOS сторінка через це зупиняється й перестає прокручуватись. clip обрізає так
     само, але контейнера прокрутки не створює — на десктопі тут з самого початку clip. */
  body { overflow-x: clip; }

  .page {
    width: 100%;
    height: auto;
    /* clip only the horizontal (decorative) bleed; NEVER clip vertically, or the bottom of a long
       page (the footer) can get cut off / unreachable on iOS Safari. */
    overflow-x: clip;
    overflow-y: visible;

    --pad: 24px;
    --h1: 34px;
    --h2: 28px;
    --body: 17px;
    --cap: 14px;
    --num: 30px;
    --ring-num: 24px;   /* цифра всередині кільця — однакова на всіх сторінках (клієнт) */
    --ico: 84px;
  }

  .s-hero, .s-fsc, .s-shelter, .s-stories, .s-footer {
    position: static;
    width: auto;
    height: auto;
    z-index: auto;
  }

  .hero-copy, .sec-intro, .sec-impact, .stat-grid, .stat, .stat-ico,
  .stat-lines, .stat-line, .story-card, .rs-pager, .f-socials, .f-group,
  .f-legals, .nav-drawer { display: block; }

  .a {
    position: static;
    left: auto; right: auto; top: auto; bottom: auto;
    width: auto; height: auto;
    transform: none;
  }
  .rs-img, .card-shape, .card-title, .card-body, .card-more,
  .card-arrow, .card-book { transform: none; width: auto; }

  .cloud-left, .cloud-right, .wave-band, .ribbon,
  .hero-shade-left, .hero-shade-right, .f-divider, .footer-bg { display: none; }

  .s-header {
    position: absolute;
    left: 0; top: 0;
    width: 100%;
    height: auto;
    padding: 16px var(--pad);
    display: flex;
    align-items: center;
    gap: 14px;
    z-index: 30;
  }

  .s-header::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(to bottom,
      rgba(0, 0, 0, .55) 0%, rgba(0, 0, 0, .28) 55%, rgba(0, 0, 0, 0) 100%);
    pointer-events: none;
  }
  .s-header[data-drawer="open"]::before { background: none; }
  .nav-menu .nav-item { text-shadow: 0 1px 6px rgba(0, 0, 0, .45); }
  .nav-logo, .nav-menu .nav-chev, .nav-burger span {
    filter: drop-shadow(0 1px 5px rgba(0, 0, 0, .45));
  }
  .s-header[data-drawer="open"] .nav-burger span { filter: none; }
  .nav-logo { order: 0; width: 118px; height: auto; flex: none; }
  .annual-report {
    order: 1;
    margin-left: auto;
    font-size: 12px;
    text-shadow: 0 1px 6px rgba(0, 0, 0, .45);
  }

  .nav-burger {
    order: 2;
    flex: none;
    width: 34px; height: 26px;
    display: flex; flex-direction: column; justify-content: space-between;
    background: none; border: 0; padding: 4px 3px; cursor: pointer;
  }
  .nav-burger span {
    display: block; height: 2px; width: 100%;
    background: #fff; border-radius: 2px;
    transition: transform .22s ease, opacity .18s ease;
  }
  .s-header[data-drawer="open"] .nav-burger span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
  .s-header[data-drawer="open"] .nav-burger span:nth-child(2) { opacity: 0; }
  .s-header[data-drawer="open"] .nav-burger span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

  .nav-drawer {
    position: fixed;
    left: 0; right: 0;
    top: var(--hdr-h, 74px);
    bottom: 0;
    display: block;
    background: linear-gradient(180deg, #1a5edb 0%, #1550bd 58%, #0e3f9c 100%);
    padding: 4px 0 calc(30px + env(safe-area-inset-bottom, 0px));
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    box-shadow: 0 18px 40px rgba(0, 0, 0, .25);
    opacity: 0;
    visibility: hidden;
    /* the nav panels inside force visibility:visible, so visibility:hidden alone doesn't stop
       taps on the (invisible) closed drawer — pointer-events:none does. */
    pointer-events: none;
    transform: translateY(-12px);
    transition: opacity .22s ease,
                transform .3s cubic-bezier(.22, .9, .28, 1),
                visibility .3s;
  }
  .s-header[data-drawer="open"] { position: fixed; top: 0; }
  .s-header[data-drawer="open"] .nav-drawer {
    opacity: 1; visibility: visible; transform: none; pointer-events: auto;
  }
  body.nav-lock { overflow: hidden; }

  .nav-menu { position: static; width: auto; height: auto; padding-top: 24px; }
  .nav-trigger {
    position: static;
    display: block; width: 100%; height: auto;
    text-align: left;
    pointer-events: none; cursor: default;
    padding: 0 var(--pad) 11px;
    border-bottom: 1px solid rgba(255, 255, 255, .24);
  }
  .nav-menu .nav-item {
    position: static;
    font-weight: 700; font-size: 12px; letter-spacing: .11em;
    text-transform: uppercase;
    color: #ff9b00;
    white-space: normal;
    text-shadow: none;
  }
  .nav-menu .nav-chev { display: none; }

  .nav-panel {
    position: static;
    width: auto; height: auto;
    background: none; border-radius: 0; box-shadow: none;
    opacity: 1; visibility: visible; transform: none; transition: none;
    padding-top: 0;
  }
  .dd-item {
    position: relative;
    left: auto; top: auto;
    height: auto;
    min-height: 52px;
    display: flex; align-items: center;
    padding: 9px calc(var(--pad) + 20px) 9px var(--pad);
    white-space: normal;
    border-bottom: 1px solid rgba(255, 255, 255, .12);
    -webkit-tap-highlight-color: transparent;
    transition: background-color .16s ease;
  }
  .nav-panel .dd-item:nth-child(n) { left: auto; top: auto; }
  .nav-panel .dd-item:last-child { border-bottom: 0; }
  .dd-label { font-size: 1.0625rem; line-height: 1.28; }

  .dd-item::after {
    content: "";
    position: absolute; right: var(--pad); top: 50%;
    width: 7px; height: 7px;
    border-right: 2px solid rgba(255, 255, 255, .45);
    border-bottom: 2px solid rgba(255, 255, 255, .45);
    transform: translateY(-50%) rotate(-45deg);
    transition: border-color .16s ease;
  }
  .dd-item::before {
    content: "";
    position: absolute; left: 0; top: 50%;
    width: 3px; height: 0;
    background: #ff9b00; border-radius: 0 2px 2px 0;
    transform: translateY(-50%);
    transition: height .2s ease;
  }
  .dd-item[aria-current="page"]::before { height: 24px; }
  .dd-item[aria-current="page"]::after { border-color: #ff9b00; }
  .dd-item:active { background: rgba(255, 255, 255, .08); }

  .s-header[data-drawer="open"] .nav-trigger,
  .s-header[data-drawer="open"] .dd-item {
    animation: nav-in .34s cubic-bezier(.22, .9, .28, 1) backwards;
  }
  @keyframes nav-in {
    from { opacity: 0; transform: translateY(8px); }
  }
  .nav-menu-services .nav-trigger { animation-delay: .02s; }
  .nav-menu-services .dd-item:nth-child(1) { animation-delay: .05s; }
  .nav-menu-services .dd-item:nth-child(2) { animation-delay: .08s; }
  .nav-menu-services .dd-item:nth-child(3) { animation-delay: .11s; }
  .nav-menu-services .dd-item:nth-child(4) { animation-delay: .14s; }
  .nav-menu-services .dd-item:nth-child(5) { animation-delay: .17s; }
  .nav-menu-services .dd-item:nth-child(6) { animation-delay: .20s; }
  .nav-menu-services .dd-item:nth-child(7) { animation-delay: .23s; }
  .nav-menu-stories .nav-trigger { animation-delay: .26s; }
  .nav-menu-stories .dd-item:nth-child(1) { animation-delay: .29s; }
  .nav-menu-stories .dd-item:nth-child(2) { animation-delay: .32s; }
  .nav-menu-stories .dd-item:nth-child(3) { animation-delay: .35s; }
  .nav-menu-stories .dd-item:nth-child(4) { animation-delay: .38s; }

  .hero {
    position: relative;
    width: 100%; height: auto;
    aspect-ratio: 430 / 320;
    overflow: hidden;

    --hf: 1.78605;
    --hx: -66.5116%;
  }
  .hero-bkgd {
    position: absolute; left: var(--hx); top: 0;
    width: calc(100% * var(--hf)); height: 100%;
    object-fit: cover;
  }
  .hero-family {
    position: absolute;
    left: calc(var(--hx) + 53.6458% * var(--hf)); top: 16.1875%;
    width: calc(23.8542% * var(--hf)); height: 56.7489%;
    object-fit: cover;
  }
  .hero-polaroid {
    position: absolute;
    left: calc(var(--hx) + 52.7517% * var(--hf)); top: 13.3125%;
    width: calc(39.3924% * var(--hf)); height: 141.8125%;
    object-fit: cover;
  }

  .hero-copy { background: #1a5edb; padding: 30px var(--pad) 34px; }

  .handwriting {
    position: relative;
    width: 168px; height: auto;
    aspect-ratio: 198 / 20.873;
    margin-bottom: 18px;
  }
  .hw-1 { position: absolute; left: 0;      top: 0; width: 41.639%; height: 78.13%; }
  .hw-2 { position: absolute; left: 46.27%; top: 0; width: 53.73%;  height: 100%; }

  .hero-title {
    font-size: var(--h1);
    line-height: 1.1;
    color: #fff;
    white-space: normal;
  }
  .p-hero {
    margin-top: 16px;
    max-width: 46ch;
    font-size: var(--body);
    line-height: 1.5;
    color: #fff;
  }

  .s-fsc     { padding: 46px var(--pad) 0; }
  .s-shelter { padding: 44px var(--pad) 52px; }

  .h2 { font-size: var(--h2); line-height: 1.12; margin-bottom: 8px; }
  /* short divider line above the 2nd service section title (client); colour = page accent */
  .h2-shelter::before, .h2-rs::before { content: ""; display: block; width: 100%; height: 2px;
    background: #1a5edb; border-radius: 2px; margin: 0 0 20px; }
  .body-20 {
    margin-top: 14px;
    max-width: 62ch;
    font-size: var(--body);
    line-height: 1.5;
  }

  .sec-impact { margin-top: 30px; }
  .impact-label { font-size: 18px; }
  .line-1, .line-2 { width: 100%; height: 1px; margin-top: 11px; }

  .stat-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 30px 18px;
    margin-top: 26px;
  }
  .stat { display: flex; flex-direction: column; align-items: center; text-align: center; }

  .stat-ico {
    position: relative;
    width: var(--ico); height: var(--ico);
    margin-bottom: 12px;
    flex: none;
  }

  .stat-ico > img {
    position: absolute;
    left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    width: auto;
  }
  .icon-family { height: 60.42%; }
  .icon-medal  { height: 68.33%; }
  .icon-house  { height: 99.24%; }

  .stat-ring > img { position: absolute; transform: none; left: 0; top: 0; width: 100%; height: 100%; }
  .stat-ring .ring88-tip { left: 15.265%; top: 0; width: 34.735%; height: 21.089%; }
  .stat-ring .ring77-tip { left: 0.373%;  top: 0; width: 49.627%; height: 45.101%; }
  .stat-ring .ring64-tip { left: 0;       top: 0; width: 50%;     height: 82.144%; }
  .stat-ring .ring64     { left: 11.699%; top: 0; width: 88.301%; height: 100%; }

  .stat-ring .stat-num {
    position: absolute;
    left: 0; right: 0; top: 50%;
    transform: translateY(-50%);
    text-align: center;
  }

  .stat-num { font-size: var(--num); }
  .stat-cap { font-size: var(--cap); line-height: 1.35; }
  .stat > .stat-num { margin-bottom: 8px; }

  /* 2×2 grid on phone (client / Figma): the house+text is the top-left cell, not full-width. */
  .stat-grid-4 > .stat:first-child { grid-column: auto; }
  .stat-lines { margin: 10px 0 10px; }
  /* number on its own line, label beneath it (client / Figma) — stack, ~10px spacing around numbers */
  .stat-line { display: flex; flex-direction: column; align-items: center; gap: 10px; }
  .stat-line + .stat-line { margin-top: 10px; }
  .stat-line .stat-num { font-size: var(--num); line-height: 1.05; }
  .stat-ring .stat-num { font-size: var(--ring-num); }  /* клієнт: однаковий кегль цифр на всіх сторінках */
  .stat-inline { font-size: var(--cap); line-height: 1.2; }

  .s-stories {
    position: relative;
    background: #fff3e0;
    padding: 0 var(--pad) 116px;
  }
  /* gently-arched "Related Stories:" ribbon (client / Figma) — a symmetric upward-bowed purple band
     (inline SVG so it's exact and predictable), full-bleed, with the text centred on it. */
  .rs-wrap {
    position: relative;
    display: flex; align-items: center; justify-content: center;
    margin: 0 calc(var(--pad) * -1);
    min-height: 104px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 90' preserveAspectRatio='none'%3E%3Cpath d='M0 20 Q200 8 400 20 L400 70 Q200 58 0 70 Z' fill='%237a00d0'/%3E%3Cpath d='M0 20 Q200 8 400 20' fill='none' stroke='%23ffffff' stroke-width='3.5'/%3E%3Cpath d='M0 70 Q200 58 400 70' fill='none' stroke='%23ffffff' stroke-width='3.5'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
  }
  /* bigger text; rotate 5deg to fully cancel the SVG's ~5deg baked slant so it sits perfectly
     level on the arch (measured from the artwork) */
  .rs-img { position: relative; z-index: 1; width: min(250px, 66%); height: auto; transform: rotate(5deg); }

  .story-card {
    position: relative;
    margin: 30px auto 0;
    max-width: 430px;
    padding: 24px 22px 26px;
  }
  .card-wrap { position: absolute; inset: 0; }
  .card-shape {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    border-radius: 24px;
  }
  .card-title-wrap, .card-body-wrap, .card-more-wrap,
  .card-arrow-wrap, .card-book-wrap { display: block; }
  .card-book-wrap { position: absolute; right: 18px; top: 16px; width: 62px; height: auto; }
  .card-book { width: 100%; height: auto; }

  .card-title-wrap { position: relative; padding-right: 72px; }
  .card-title { font-size: 22px; line-height: 1.15; }
  .card-body-wrap { position: relative; margin-top: 12px; }
  .card-body { font-size: 15px; line-height: 1.45; }

  .card-more-wrap { position: relative; display: block; margin-top: 16px; padding-right: 42px; }
  .card-more { font-size: 16px; text-align: right; }
  .card-arrow-wrap { position: absolute; right: 22px; bottom: 24px; width: 30px; height: 31px; }
  .card-arrow { width: 100%; height: 100%; }

  .rs-pager {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-top: 26px;
  }
  .nav-prev-arrow { order: 0; width: 38px; height: 38px; transform: rotate(180deg); }
  .nav-prev-label { order: 1; font-size: 16px; margin-right: 12px; }
  .nav-next { order: 2; display: flex; align-items: center; gap: 12px; }
  .nav-next-label { position: static; width: auto; font-size: 16px; }
  .nav-next-arrow { width: 38px; height: 38px; }

  .lavender-band {
    display: block;
    position: absolute;
    left: 0; right: 0; bottom: 0;
    width: auto; height: 100px;
    background: #dcbdf3;
  }
  .kids-group { position: absolute; left: var(--pad); bottom: 14px; width: 148px; height: auto; }
  .girl-right { position: absolute; right: var(--pad); bottom: 14px; width: 62px; height: auto; }

  /* Нижній відступ 26px -> 56px + safe-area. Останній рядок футера (Privacy Policy)
     стояв за 6px від фізичного низу сторінки, тож нижня панель Safari на iOS (~50px)
     повністю його накривала: сторінка вже була в кінці прокрутки, і щоб побачити
     останню смугу, треба було зробити ще один свайп — той лише ховав панель.
     Клієнт це описував як "stops here, need to force 1 more scroll".
     env() додає ще й зону під індикатор Home, коли панель згорнута. */
  /* Просто відступ знизу, без обчислень — за рішенням клієнта. */
  .s-footer { background: #1a5edb;
    padding: 20px var(--pad) calc(34px + env(safe-area-inset-bottom, 0px)); }
  .footer { display: flex; flex-direction: column; }

  .f-line { width: 100%; height: 1px; background: #fff; opacity: .45; }
  .f-line-top    { order: 0; margin-bottom: 26px; }
  .f-line-bottom { order: 5; margin-top: 26px; }

  .f-logo    { order: 1; width: 150px; height: auto; }
  .f-socials { order: 2; display: flex; align-items: center; gap: 20px; margin-top: 20px; }
  .f-social  { height: 22px; width: auto; }
  .f-social img { height: 100%; width: auto; }

  .f-group-services { order: 3; margin-top: 28px; }
  .f-group-stories  { order: 4; margin-top: 24px; }
  .f-head { font-size: 16px; margin-bottom: 12px; }
  .f-link { display: block; white-space: normal; font-size: 15px; line-height: 1.3; }
  .f-link + .f-link { margin-top: 10px; }

  .f-legals { order: 6; display: flex; justify-content: space-between; gap: 18px; margin-top: 18px; }
  .f-legal { font-size: 14px; text-align: left; }
}

@media (min-width: 768px) and (max-width: 1199.98px) {

  .page {
    --pad: 40px;
    --h1: 48px;
    --h2: 38px;
    --body: 19px;
    --cap: 15px;
    --num: 35px;
    --ring-num: 28px;
    --ico: 104px;
  }

  .hero { aspect-ratio: 1920 / 800; --hf: 1; --hx: 0%; }

  .s-header { padding: 26px var(--pad); gap: 24px; }
  .nav-logo { width: 156px; }

  .annual-report { order: 3; margin-left: auto; font-size: 16px; }
  .nav-burger { display: none; }

  .nav-drawer {
    position: static;
    left: auto; right: auto; top: auto; bottom: auto;
    display: flex;
    align-items: center;
    gap: 26px;
    margin-left: 0;
    background: none;
    padding: 0;
    box-shadow: none;
    overflow: visible;
    opacity: 1; visibility: visible; transform: none; transition: none;
    pointer-events: auto;   /* inline nav on tablet stays clickable (reset the phone rule) */
  }
  .s-header[data-drawer="open"] { position: absolute; }
  body.nav-lock { overflow: visible; }
  .nav-menu { position: relative; padding-top: 0; }
  .nav-trigger {
    display: flex; align-items: center; gap: 8px;
    pointer-events: auto; cursor: pointer;
  }
  .nav-menu .nav-item {
    font-weight: 500; font-size: 18px; color: #fff; white-space: nowrap;
    text-shadow: 0 1px 6px rgba(0, 0, 0, .45);
  }
  .nav-menu .nav-chev { display: block; width: 22px; height: 22px; flex: none; }
  .nav-menu[data-open="true"] .nav-chev { transform: rotate(180deg); }

  .nav-panel {
    position: absolute;
    top: calc(100% + 16px);
    background: #1a5edb;
    border-radius: 10px;
    padding: 14px 20px;
    opacity: 0; visibility: hidden;
    transform: translateY(-8px);
    transition: opacity .2s ease, transform .2s cubic-bezier(.4, 0, .2, 1), visibility .2s;
    box-shadow: 0 18px 40px rgba(0, 0, 0, .25);
  }
  .nav-menu[data-open="true"] .nav-panel { opacity: 1; visibility: visible; transform: translateY(0); }
  .nav-panel-services { left: 0;    right: auto; }
  .nav-panel-stories  { left: auto; right: 0; }
  .nav-trigger { padding: 0; border-bottom: 0; }
  .nav-menu .nav-item { text-transform: none; letter-spacing: normal; }
  .dd-item {
    min-height: 0;
    padding: 7px 0;
    white-space: nowrap;
    border-bottom: 0;
    background: none;
  }
  .dd-item::before, .dd-item::after { content: none; }
  .dd-item[aria-current="page"] .dd-label { color: #ff9b00; }
  .dd-label { font-size: 17px; }
  .s-header[data-drawer="open"] .nav-trigger,
  .s-header[data-drawer="open"] .dd-item { animation: none; }

  .hero-copy { padding: 40px var(--pad) 46px; }
  .handwriting { width: 198px; }

  .s-fsc     { padding: 62px var(--pad) 0; }
  .s-shelter { padding: 58px var(--pad) 66px; }

  .stat-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px 28px; }
  .stat-grid-4 > .stat:first-child { grid-column: auto; }

  .s-stories { padding: 0 var(--pad) 140px; }
  .rs-img { width: 260px; }
  .story-card { max-width: 560px; margin-top: 40px; padding: 30px 28px 32px; }
  .card-title { font-size: 26px; }
  .card-body { font-size: 17px; }
  .card-book-wrap { width: 82px; right: 24px; top: 20px; }
  .card-title-wrap { padding-right: 96px; }

  .lavender-band { height: 124px; }
  .kids-group { width: 200px; bottom: 18px; }
  .girl-right { width: 84px; bottom: 18px; }

  .s-footer { padding: 46px var(--pad) 90px; }
  .f-group-services { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 32px; }
  .f-group-services .f-head { grid-column: 1 / -1; }
  .f-group-services .f-link + .f-link { margin-top: 0; }
}

a.nav-logo { display: block; }
a.nav-logo > img { display: block; width: 100%; height: 100%; }

.rs-scene { display: none; }

@media (max-width: 767.98px) {
  /* банер: у <picture> підставляється фото, скадроване під 430x320 (макет «01 1») */
  .hero-bkgd     { left: 0; width: 100%; }
  .hero-polaroid { left: 30.0233%; top: 18.625%; width: 70.3488%; height: 141.8125%; }
  .hero-family   { left: 31.6279%; top: 21.5%;   width: 42.6047%; height: 56.75%; }
}

@media (max-width: 767.98px) {
  /* нижня сцена: небо, хмара, сіро-блакитна смуга, лавандова земля (макет iPhone-2) */
  .s-stories { background: #dde7fa; padding-bottom: 0; }
  .rs-scene {
    display: block; position: relative;
    width: auto; margin: 0 calc(var(--pad) * -1);
    aspect-ratio: 430 / 469;
  }
  .rs-scene > * { position: absolute; }
  .rs-cloud  { left: 0; top: 0; width: 97.907%; height: 76.972%; }
  .rs-band   { left: 0; top: 52.026%; width: 100%; height: 16.418%; background: #96a9d1;
               overflow: hidden; clip-path: polygon(0 33.8%, 100% 0, 100% 100%, 0 100%); }
  .rs-band > img { position: absolute; left: 0; top: 0; width: 100%; height: 115.58%; }
  .rs-ground { left: 0; top: 68.443%; width: 100%; height: 31.557%; background: #dcbdf3; }

  .rs-kids   { left: 10.233%; top: 49.254%; width: 50.93%;  height: auto; }
  .rs-girl   { left: 71.605%; top: 45.544%; width: 21.256%; height: auto; }

  .lavender-band, .kids-group, .girl-right { display: none; }
}

/* ── Lottie ─────────────────────────────────────────────────────────────────────
   Полотно анімації більше за статичну картинку — навколо артворку є поле, у якому
   рухаються деталі. Щоб артворк лягав РІВНО туди, де була картинка, внутрішній шар
   розтягується й зсувається у ВІДСОТКАХ від елемента. Відсотки не залежать від
   брейкпоінта, тож окремі значення під мобільний/планшет не потрібні.
   --lw/--lh = полотно ÷ артворк, --lx/--ly = зсув артворку в полотні (зі знаком мінус).
   До завантаження показуємо статичний файл фоном — щоб нічого не блимало й не зникало,
   якщо JS вимкнено. */
/* position тут НЕ чіпаємо: на десктопі .a вже absolute, і relative його перебивав —
   іконки випадали в потік і ставали одна під одною. */
[data-lottie] { background: center / contain no-repeat; }
[data-lottie].is-lottie { background-image: none; }
[data-lottie] > .lottie-box {
  position: absolute;
  left: var(--lx, 0); top: var(--ly, 0);
  width: var(--lw, 100%); height: var(--lh, 100%);
  pointer-events: none;
}

/* головна, CTA: Donate / Volunteer / Collaborate */
.ms-cta-1 { aspect-ratio: 144 / 213;    background-image: url(../ms-cta-1.svg);
            --lw: 243.06%; --lh: 115.02%; --lx: -71.53%; --ly: -15.02%; }
.ms-cta-2 { aspect-ratio: 96 / 213;     background-image: url(../ms-cta-2.svg);
            --lw: 364.58%; --lh: 115.02%; --lx: -132.29%; --ly: -15.02%; }
.ms-cta-3 { aspect-ratio: 178 / 213;    background-image: url(../ms-cta-3.svg);
            --lw: 196.63%; --lh: 115.02%; --lx: -48.60%; --ly: -15.02%; }

/* Safety: соцпрацівниця і сім'я (десктопні й мобільні копії) */
.girl-right, .rs-girl { aspect-ratio: 114.624 / 170.097; background-image: url(../girl-right.svg);
            --lw: 117.39%; --lh: 100.58%; --lx: -16.52%; --ly: -0.58%; }
.kids-group, .rs-kids { aspect-ratio: 275 / 149;         background-image: url(../group936-kids.svg);
            --lw: 100%;    --lh: 100.67%; --lx: 0;       --ly: -0.67%; }

@media (max-width: 1199.98px) {
  /* тут .a стає static, тож контейнер для внутрішнього шару треба повернути вручну */
  .ms-cta-1, .ms-cta-2, .ms-cta-3 { position: relative; }
}

/* ── Друга партія lottie: кожна сцена лягає рівно там, де стояла статична картинка.
   Значення — це полотно анімації у відсотках від малюнка (--lw/--lh) і зсув полотна
   (--lx/--ly); пораховані зі справжніх меж малюнка в обох файлах, тому збіг точний. */
.lot-in { display: block; position: relative; }
/* На мобільному ці хости беруть width:100% + height:auto. У <img> висоту дає власна
   пропорція файлу, у <div> її нема — тож задаємо пропорцію вихідної картинки. */
.fc-books { aspect-ratio: 463 / 367; }
.ms-sicon-fc > .lot-in, .card-book.lot-in { aspect-ratio: 101 / 81; }
.ms-sicon-lp > .lot-in,
.hd-card-deco > .lot-in,
.hsf-card-deco > .lot-in { aspect-ratio: 100 / 97; }

.fc-books            { --lw: 108.271%; --lh: 107.828%; --lx: -6.696%; --ly: -5.015%;
                       pointer-events: none; }
.ms-sicon-fc > .lot-in,
.card-book.lot-in    { --lw: 108.271%; --lh: 107.961%; --lx: -6.696%; --ly: -5.022%; }
/* Пазл рахуємо по КІНЦЕВОМУ кадру: одна деталь на початку зсунута й повернута,
   зібраний вигляд — саме той, що на статичній картинці. */
.ms-sicon-lp > .lot-in,
.hd-card-deco > .lot-in,
.hsf-card-deco > .lot-in,
.lp-puzzle-top > .lot-in { --lw: 106.929%; --lh: 104.153%; --lx: -5.426%; --ly: -2.102%; }
.lp-puzzle-top > .lot-in { aspect-ratio: 436 / 423; }
.hd-sc-g             { --lw: 102.630%; --lh: 102.997%; --lx: -0.588%; --ly: -1.673%; }
.pm-people           { --lw: 105.343%; --lh: 109.391%; --lx: -3.259%; --ly: -6.165%; }
.age-bush            { --lw: 106.067%; --lh:  99.261%; --lx: -3.044%; --ly:  0.350%; }
.age-pav-people      { --lw:  40.008%; --lh:  36.401%; --lx: 27.852%; --ly: 63.425%; }
.hsf-sc-kids         { --lw: 102.567%; --lh: 101.456%; --lx: -2.194%; --ly: -1.131%; }

/* ---- Відступ між заголовком і текстом на планшеті й телефоні ----
   Клієнт: «при зменшеному вікні й на мобільному відступ між заголовками й текстом дуже малий».
   На десктопі (макет) відступ пропорційний кеглю: під заголовком сторінки послуг ≈ 0.56 кегля,
   під заголовком розділу ≈ 0.68, під заголовком історії ≈ 0.9. А тут стояли фіксовані 12–22px,
   які не росли разом із заголовком — на планшеті (кегль 36–48px) пропорція падала до 0.29–0.37.
   Тому добиваємо різницю padding-bottom у em (від кегля самого заголовка): --hb — цільова
   пропорція з макета, --hg — відступ, який уже дають наявні margin (заміряний, однаковий
   для телефона й планшета). padding, а не margin — щоб не схлопувався з margin сусіднього блоку. */
@media (max-width: 1199.98px) {
  .hero-title, .hsf-h1, .pm-h1, .hd-h1, .age-h1, .vol-h1 { --hb: 0.56; }
  .h2-fsc, .h2-shelter, .h2-cd, .h2-rs, .age-h2, .vol-h2,
  .hsf-t1, .hsf-t2, .pm-t1, .pm-t2, .hd-t1, .hd-t2, .hd-t3, .hd-t4 { --hb: 0.68; }
  .bg-h1, .care-h1, .lp-h1, .fc-h1 { --hb: 0.9; }

  .hsf-h1, .pm-h1, .hd-h1 { --hg: 14px; }
  .hero-title, .age-h1, .vol-h1, .bg-h1, .care-h1, .lp-h1 { --hg: 16px; }
  .h2-fsc, .h2-shelter, .h2-cd, .h2-rs, .age-h2, .vol-h2 { --hg: 14px; }
  .hsf-t1, .hsf-t2, .pm-t1, .pm-t2 { --hg: 12px; }
  .hd-t1, .hd-t2, .hd-t3, .hd-t4 { --hg: 18px; }
  .fc-h1 { --hg: 22px; }

  .hero-title, .hsf-h1, .pm-h1, .hd-h1, .age-h1, .vol-h1,
  .h2-fsc, .h2-shelter, .h2-cd, .h2-rs, .age-h2, .vol-h2,
  .hsf-t1, .hsf-t2, .pm-t1, .pm-t2, .hd-t1, .hd-t2, .hd-t3, .hd-t4,
  .bg-h1, .care-h1, .lp-h1, .fc-h1 {
    padding-bottom: max(0px, calc(var(--hb) * 1em - var(--hg)));
  }
}

/* ---- Кільця-діаграми, де дуга = відсоток (Healthy & Supportive, Holistic Development) ----
   Клієнт: «кільця не відповідають цифрам». Кільця були картинками з макета: на Holistic усі шість
   (97/77/94/88/63/68%) — один і той самий hd-ring.svg, на Healthy 100% і 97% теж одна картинка.
   Тепер дугу малює CSS за --pct із самої розмітки. Кольори й товщина — з тих SVG:
   товщина 11.7 з 120 = 9.75% діаметра = 19.5% радіуса. --draw (0..360deg) — анімація домальовування. */
.pct-ring {
  border-radius: 50%; pointer-events: none;
  background: conic-gradient(var(--ring-on) calc(var(--pct) * 1%), var(--ring-off) 0);
  -webkit-mask:
    radial-gradient(farthest-side, #0000 80.5%, #000 calc(80.5% + 0.6px)),
    conic-gradient(#000 var(--draw, 360deg), #0000 0);
  -webkit-mask-composite: source-in;
          mask:
    radial-gradient(farthest-side, #0000 80.5%, #000 calc(80.5% + 0.6px)),
    conic-gradient(#000 var(--draw, 360deg), #0000 0);
          mask-composite: intersect;
}
.hsf-donut { --ring-on: #7A00D0; --ring-off: #D8B5F1; }
.hd-donut  { --ring-on: #FF9B00; --ring-off: #3F64B3; }
.hsf-donut > .hsf-ring, .hsf-donut > .hsf-tip,
.hd-donut > .hd-ring,   .hd-donut > .hd-tip { display: none !important; }

@media (max-width: 1199.98px) {
  .hsf-donut > .pct-ring, .hd-donut > .pct-ring {
    position: absolute; left: 0; top: 0; width: 100%; height: 100%;
  }
  .hsf-donut::before { content: none; }   /* старе мобільне кільце (помаранчеве, з іншої сторінки) */
}

/* Previous / Next між історіями — той самий вигляд, що й на сторінках Our Impact (стрілка в колі +
   текст), за вказівкою клієнта. Стоять під контентом перед футером; горизонтальні координати —
   базові з цього файлу (пара по центру полотна), висоту задає CSS кожної історії. Фон тут світлий,
   тож текст чорний, а білі стрілки інвертовано. */
.s-pager-story .nav-prev-label, .s-pager-story .nav-next-label { color: #000; opacity: 1; text-decoration: none; }
.s-pager-story .nav-prev-arrow, .s-pager-story .nav-next-arrow { filter: invert(1); }
.s-pager-story .nav-prev-off,
.s-pager-story .nav-next-off .nav-next-label, .s-pager-story .nav-next-off .nav-next-arrow { opacity: .2; }
@media (min-width: 1200px) {
  /* над секціями з фото: на Caring рамка останнього фото тягнеться під футер і перекривала посилання */
  .s-sec.s-pager-story { z-index: 3; }
}
@media (max-width: 1199.98px) {
  .s-pager-story { order: 19; display: flex; align-items: center; justify-content: center; gap: 12px;
    padding: 34px var(--pad) 40px; }
}

/* Картка Related Stories (≤1279): текст обтікає іконку в правому верхньому куті.
   Раніше під іконку резервувалась висота біля заголовка — при заголовку в один рядок між ним і
   текстом лишався великий проміжок (клієнт: «зробіть заголовок ближче до тексту»). Тепер заголовок
   стоїть над текстом зі звичайним відступом, а на початку тексту — невидимий float розміром із ту
   частину іконки, що заходить на текст. Розміри (--ic-w / --ic-h) рахує main.js під кожну ширину. */
@media (max-width: 1199.98px) {
  .card-body-wrap::before, .pm-card-body::before, .age-card-body::before,
  .hsf-card-body::before, .hd-card-body::before,
  .care-intro::before, .fc-intro::before, .bg-intro::before, .lp-body-1::before {
    content: ""; float: right; width: var(--ic-w, 0px); height: var(--ic-h, 0px);
  }
}

/* Телефон у ландшафті (клієнт: «шрифти завеликі, хоча верстка складається нормально»).
   Ширина 844-932px потрапляє в планшетну розкладку, а з нею й планшетні розміри тексту —
   на екрані заввишки ~400px це завелико. Верстку лишаємо планшетною, текст — як на телефоні. */
@media (min-width: 768px) and (max-width: 1199.98px) and (max-height: 500px) {
  .page { --h1: 34px; --h2: 28px; --body: 17px; --cap: 14px; --num: 30px; --ring-num: 24px; }
  .card-title { font-size: 22px; }
}
