.ptdark{position:relative;background:var(--dark);color:#fff;padding:72px 0;overflow:hidden}
.ptdark::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;opacity:.85}
.ptdark--a::after{background:linear-gradient(90deg,var(--red),transparent)}
.ptdark--b::after{background:linear-gradient(90deg,var(--blue),transparent)}
.ptdark__grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:48px;align-items:center}
.ptdark .ab__h2{color:#fff}
.ptdark p{color:#ddd8d4}
.ptdark .mark,.ptdark .ritem{color:#cfcac6}
.ptdark .ritem strong,.ptdark .tagchip strong{color:#fff}
.ptdark__letter{position:relative;display:grid;place-items:center;min-height:440px}
.ptdark__letter span{font-size:clamp(280px,30vw,440px);font-weight:700;line-height:1;position:relative;z-index:1;opacity:0;transform:scale(.82);transition:opacity .7s ease .15s,transform .7s cubic-bezier(.2,.8,.3,1) .15s}
.ptdark__ring{position:absolute;width:min(100%,440px);aspect-ratio:1;overflow:visible}
.ptdark__ring circle{fill:none;stroke-width:1.2;stroke-dasharray:302;stroke-dashoffset:302;transform-origin:50% 50%;transform:rotate(-90deg);transition:stroke-dashoffset 1.5s cubic-bezier(.4,0,.2,1) .1s}
.ptdark__ring .ptdark__orbit{stroke:none;transform-origin:50% 50%;animation:ptorbit 14s linear infinite;opacity:0;transition:opacity .5s ease 1.2s}
.ptdark--a .ptdark__letter span{color:var(--red)}
.ptdark--b .ptdark__letter span{color:var(--blue)}
.ptdark--a .ptdark__ring circle{stroke:rgba(217,32,40,.55)}
.ptdark--b .ptdark__ring circle{stroke:rgba(73,124,255,.6)}
.ptdark--a .ptdark__orbit{fill:var(--red)}
.ptdark--b .ptdark__orbit{fill:var(--blue)}
.ptdark__letter.is-in span{opacity:1;transform:none}
.ptdark__letter.is-in .ptdark__ring circle{stroke-dashoffset:0}
.ptdark__letter.is-in .ptdark__orbit{opacity:1}
.ptdark .marklist .mark,.ptdark .bstats .bstat{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.ptdark .rv.is-in .marklist .mark,.ptdark .rv.is-in .bstats .bstat{opacity:1;transform:none}
.ptdark .marklist .mark:nth-child(1){transition-delay:.10s}
.ptdark .marklist .mark:nth-child(2){transition-delay:.18s}
.ptdark .marklist .mark:nth-child(3){transition-delay:.26s}
.ptdark .marklist .mark:nth-child(4){transition-delay:.34s}
.ptdark .marklist .mark:nth-child(5){transition-delay:.42s}
.ptdark .marklist .mark:nth-child(6){transition-delay:.50s}
.ptdark .bstats .bstat:nth-child(1){transition-delay:.06s}
.ptdark .bstats .bstat:nth-child(2){transition-delay:.12s}
.ptdark .bstats .bstat:nth-child(3){transition-delay:.18s}
.ptdark .bstats .bstat:nth-child(4){transition-delay:.24s}
.ptdark .bstats .bstat:nth-child(5){transition-delay:.30s}
.ptdark .bstats .bstat:nth-child(6){transition-delay:.36s}
@media(prefers-reduced-motion:reduce){
.ptdark__letter span,.ptdark .marklist .mark,.ptdark .bstats .bstat{opacity:1;transform:none;transition:none}
.ptdark__ring circle{stroke-dashoffset:0;transition:none}
.ptdark__orbit{animation:none;opacity:1}
}
@media(max-width:860px){
.ptdark__grid{grid-template-columns:1fr;gap:24px}
.ptdark__letter{order:2;min-height:280px}
.ptdark__letter span{font-size:200px}
.ptdark__ring{width:min(88%,280px)}
}
.ctacard{padding:72px 0}
.ctacard__box{position:relative;overflow:hidden;background:var(--dark);color:#fff;border-radius:24px;padding:clamp(32px,5vw,64px);display:grid;grid-template-columns:1.4fr auto;gap:36px;align-items:center}
.ctacard__box::before{content:"";position:absolute;right:-120px;top:50%;transform:translateY(-50%);width:420px;aspect-ratio:1;border-radius:50%;border:1.5px solid rgba(217,32,40,.45);pointer-events:none}
.ctacard__box::after{content:"";position:absolute;right:284px;top:calc(50% - 210px);width:13px;height:13px;border-radius:50%;background:var(--red);transform:translate(50%,-50%);pointer-events:none}
.ctacard h2{font-size:clamp(24px,3.4vw,42px);font-weight:700;line-height:1.15;margin:0 0 12px;max-width:720px}
.ctacard h2 em{font-style:normal;color:var(--red)}
.ctacard p{font-size:15px;line-height:1.55;margin:0;max-width:600px;color:#ddd8d4}
.ctacard .btn{position:relative;z-index:1}
html[data-theme="dark"] .ctacard__box{border:1px solid var(--line)}
@media(max-width:860px){
.ctacard__box{grid-template-columns:1fr;border-radius:18px}
.ctacard__box::before{right:-180px;opacity:.6}
.ctacard__box::after{display:none}
}
.bstats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:22px 0 18px}
.bstat{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.12);border-top:3px solid var(--blue);border-radius:12px;padding:16px 16px 14px}
.bstat__num{font-size:clamp(26px,2.8vw,38px);font-weight:700;line-height:1;margin:0 0 6px;color:#fff;white-space:nowrap}
.bstat__num small{font-size:.55em;font-weight:600;color:#8d94a8}
.bstat__label{font-size:12.5px;line-height:1.4;color:#b9bfd0;margin:0}
.ptdark__extra{font-size:14px;line-height:1.6;color:#b9bfd0;margin:0}
.ptdark__extra strong{color:#fff}
@media(max-width:860px){
.bstats{grid-template-columns:repeat(2,1fr)}
}
.growth__intro{max-width:none}
.gplist{list-style:none;margin:36px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:20px 48px}
.gp{position:relative;padding-left:30px;font-size:14.5px;line-height:1.55;color:var(--text-2);margin:0}
.gp::before{content:"\2713";position:absolute;left:0;top:0;color:var(--blue);font-weight:700;font-size:17px}
@media(max-width:860px){
.gplist{grid-template-columns:1fr;gap:16px}
}
.concl__lead{max-width:900px;font-size:clamp(17px,2vw,21px);line-height:1.5;font-weight:700;color:var(--text);margin:0 0 14px}
.concl__sub{max-width:900px;font-size:15px;line-height:1.6;color:var(--text-2);margin:0}
.concl__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:38px}
.ccard{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:26px 24px 24px;box-shadow:0 10px 30px rgba(9,13,26,.06)}
html[data-theme="dark"] .ccard{background:var(--surface-2);box-shadow:none}
.ccard::before{content:"";position:absolute;left:24px;right:24px;top:0;height:3px;border-radius:0 0 3px 3px}
.ccard--1::before{background:var(--red)}
.ccard--2::before{background:var(--blue)}
.ccard--3::before{background:linear-gradient(90deg,var(--red),var(--blue))}
.ccard__n{display:block;font-size:12px;font-weight:700;letter-spacing:.14em;color:var(--text-3);margin:0 0 10px}
.ccard__t{font-size:17px;font-weight:700;line-height:1.25;margin:0 0 8px;color:var(--text)}
.ccard__d{font-size:14.5px;line-height:1.55;color:var(--text-2);margin:0}
@media(max-width:860px){
.concl__grid{grid-template-columns:1fr}
}
.csteps__col{position:sticky;top:92px;align-self:start}
@media(max-width:1024px){
.csteps__col{position:static}
}
.opart{display:grid;grid-template-columns:1fr;gap:16px}
.opart>picture{display:block}
.opart>picture img{width:100%;height:auto;display:block}
.opart__row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.opart__row svg{width:100%;height:auto;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.12);display:block}
.brand{display:grid;grid-template-columns:1.2fr .8fr;gap:32px;align-items:start;margin-top:30px}
.brandtiles{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.brandtile{margin:0}
.brandtile svg{width:100%;height:auto;border-radius:16px;border:1px solid var(--line);display:block}
.brandtile figcaption{font-size:12.5px;line-height:1.4;color:var(--text-3);margin-top:8px}
.palette{display:grid;gap:14px;margin:0;padding:0;list-style:none}
.swatch{display:flex;align-items:center;gap:14px;font-size:13px;line-height:1.4;color:var(--text-3)}
.swatch i{width:46px;height:46px;border-radius:10px;flex:none;border:1px solid var(--line)}
.swatch b{display:block;font-size:14px;color:var(--text)}
.deliv{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:30px}
.deliv__i{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px 18px}
html[data-theme="dark"] .deliv__i{background:var(--surface-2)}
.deliv__n{font-size:11.5px;font-weight:700;letter-spacing:.14em;color:var(--red);display:block;margin-bottom:8px}
.deliv__t{font-size:15.5px;font-weight:700;margin:0 0 6px;color:var(--text)}
.deliv__d{font-size:13.5px;line-height:1.5;color:var(--text-2);margin:0}
@media(max-width:1000px){
.deliv{grid-template-columns:1fr 1fr}
}
@media(max-width:860px){
.brand{grid-template-columns:1fr;gap:24px}
}
@media(max-width:560px){
.deliv{grid-template-columns:1fr}
.opart__row{grid-template-columns:1fr}
}
.rvw__q{display:block;font-family:Georgia,'Times New Roman',serif;font-size:96px;line-height:.55;font-weight:700;color:rgba(255,255,255,.4);margin:0 0 26px}
.rvw__text{margin:20px 0 0;padding:0;border:0;font-size:clamp(15px,1.8vw,17.5px);line-height:1.6;color:#e8eeff}
.rvw__who{margin:14px 0 0;font-size:13.5px;line-height:1.5;color:rgba(255,255,255,.72)}
.rvw__shot{margin:0}
.rvw__shot img{width:100%;height:auto;display:block;border-radius:14px;box-shadow:0 18px 40px rgba(0,0,0,.28)}
.rvw__cap{margin:12px 0 0;font-size:12.5px;color:rgba(255,255,255,.66)}
@media(max-width:860px){
.rvw__q{font-size:72px;margin-bottom:18px}
}

@keyframes ptorbit{to{transform:rotate(360deg)}}

/* Мокап iMac лежить на прозорому тлі, а зміст екрана в ньому майже чорний
   (#0a0e11) — на темній секції кейсу екран зливався з фоном і читався як
   діра. Тонкий світлий контур по силуету монітора й м'яка тінь відділяють
   мокап від сторінки; drop-shadow іде по альфі, тому обводить саме монітор,
   а не прямокутник картинки. */
.opart>picture img{
  filter:drop-shadow(0 0 1px rgba(255,255,255,.5)) drop-shadow(0 20px 44px rgba(0,0,0,.5));
}
html[data-theme="light"] .opart>picture img,
:root:not([data-theme="dark"]) .opart>picture img{
  filter:drop-shadow(0 0 1px rgba(9,13,26,.28)) drop-shadow(0 20px 44px rgba(9,13,26,.22));
}
@media (prefers-color-scheme:dark){
  html:not([data-theme="light"]) .opart>picture img{
    filter:drop-shadow(0 0 1px rgba(255,255,255,.5)) drop-shadow(0 20px 44px rgba(0,0,0,.5));
  }
}

/* Мокап телефона — запис екрана. Тло в кадрі світле, тому відео оформлене
   як світла картка: так само, як плитки з логотипом нижче на цій сторінці.
   Розміри задані співвідношенням, щоб до завантаження нічого не стрибало.
   Ширина — як у мокапа на кейсі Грантів: на всю колонку мінус поля figure
   (40px), до 520px на вузьких екранах (правило з main.css). */
.csteps__media--video video{
  width:100%;
  height:auto;
  aspect-ratio:793/1122;
  display:block;
  border-radius:14px;
  background:#fff;
  object-fit:cover;
  box-shadow:0 18px 40px rgba(0,0,0,.35);
}
html[data-theme="light"] .csteps__media--video video,
:root:not([data-theme="dark"]) .csteps__media--video video{
  box-shadow:0 18px 40px rgba(9,13,26,.16);
}
@media (prefers-color-scheme:dark){
  html:not([data-theme="light"]) .csteps__media--video video{
    box-shadow:0 18px 40px rgba(0,0,0,.35);
  }
}

/* Мокап-відео — звичайний плеєр, як на кейсі дитячого одягу: постер із кнопкою
   Play, після кліку — нативні кнопки браузера (js/main: [data-vplayer]).
   Без overflow:hidden і власної тіні — тінь лишається на самому відео. */
.cvideo__player{position:relative;border-radius:14px}
.cvfacade{position:absolute;inset:0;border:0;padding:0;margin:0;cursor:pointer;background:transparent;display:grid;place-items:center;border-radius:inherit}
.cvfacade::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(9,13,26,.12),rgba(9,13,26,.58))}
.cvplay{position:relative;z-index:2;width:76px;height:76px;border-radius:50%;background:var(--red);display:grid;place-items:center;box-shadow:0 14px 34px rgba(217,32,40,.5);transition:transform .25s}
.cvfacade:hover .cvplay,.cvfacade:focus-visible .cvplay{transform:scale(1.08)}
.cvplay svg{width:26px;height:26px;fill:#fff;margin-left:4px}
.cvplay::before{content:"";position:absolute;inset:-12px;border-radius:50%;border:2px solid rgba(255,255,255,.45);animation:cvpulse 2.4s ease-out infinite}
@keyframes cvpulse{0%{transform:scale(.9);opacity:.85}70%{transform:scale(1.4);opacity:0}100%{opacity:0}}
.cvideo__player.is-playing .cvfacade{display:none}
@media (prefers-reduced-motion:reduce){.cvplay::before{animation:none}}
/* Звуку в ролику немає, але у файлі є порожня звукова доріжка — через неї кнопка
   звуку в нативних контролах активна навіть із muted. Ховаємо (Chromium, Safari). */
.csteps__media--video video::-webkit-media-controls-mute-button{display:none}

/* Кнопка на сайт — розмітка й правило як на кейсі Грантів (.csteps__cta).
   Плюс та сама рамка, що й у figure над нею: інакше на планшеті кнопка
   центрується по колонці, а мокап притиснутий ліворуч. */
.csteps__cta{display:flex;justify-content:center;margin-top:18px}
.csteps__media--video + .csteps__cta{margin:28px 40px 0}
@media (max-width:1024px){.csteps__media--video + .csteps__cta{max-width:520px}}
/* Колонка липка: поки вона стоїть, верх кнопки нижче за лінію появи .rv (70 % екрана)
   на екранах ~900px — тож кнопка з'являється разом із макетом над нею. */
html.js .csteps__media--video.is-in + .csteps__cta{opacity:1;transform:none}

/* режими мокап-відео */
.csteps__media--controls video{background:#000}
.csteps__hint{
  margin:10px 0 0;
  font-size:13px;
  color:var(--text-3);
  text-align:center;
}
@media (hover:none){ .csteps__hint{display:none} }

/* Кнопки керування стоять НАД відео: якби вони лежали на ньому, дотягнутися
   до них означало б навести курсор — а наведення ставить відео на паузу. */
.vctl{display:flex;gap:8px;margin:0 0 12px}
.vctl__b{
  width:38px;height:38px;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:999px;
  border:1px solid var(--line);
  background:var(--surface-2);
  color:var(--text);
  cursor:pointer;
  padding:0;
  transition:border-color .18s,transform .18s,background-color .18s;
}
.vctl__b svg{width:17px;height:17px;fill:currentColor;display:block}
.vctl__b:hover{border-color:var(--red);transform:translateY(-1px)}
.vctl__b:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
/* На паузі перша кнопка показує трикутник замість двох рисок */
.vctl__b.is-paused svg{display:none}
.vctl__b.is-paused::after{
  content:"";
  width:0;height:0;
  border-left:11px solid currentColor;
  border-top:7px solid transparent;
  border-bottom:7px solid transparent;
  margin-left:3px;
}
@media (prefers-reduced-motion:reduce){
  .vctl__b{transition:none}
  .vctl__b:hover{transform:none}
}
