/* Approved illustrated layouts. Typography and actions remain native HTML. */
@font-face{font-family:Caveat;src:url('/assets/fonts/Caveat-service.woff2') format('woff2');font-style:normal;font-weight:700;font-display:swap}
.sd-page{overflow:clip}
.sd-artwork{display:block;position:relative;width:100%;isolation:isolate}
.sd-band-continuation{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:-1;pointer-events:none;clip-path:inset(-100% -100vw -100% -40px)}
.sd-split--reverse .sd-band-continuation{clip-path:inset(-100% -40px -100% -100vw)}
.sd-hero .sd-band-continuation{clip-path:inset(-100% -100vw -100% -24px)}
.sd-copy,.sd-hero__copy{position:relative;z-index:2;isolation:isolate;background:#fff;background-clip:content-box}
.sd-art-note{position:absolute;right:2%;top:2%;width:25%;font-family:Caveat,cursive;font-weight:700;font-size:clamp(18px,2.3vw,34px);line-height:1.05;transform:rotate(-7deg);color:#111115}
.sd-art-note svg{display:block;width:95%;height:16px;fill:none;stroke:#e5007d;stroke-width:5;stroke-linecap:round}
.sd-art-note--ai-training-hero{width:17%;right:1%;top:8%;font-size:clamp(16px,1.7vw,24px)}
.sd-art-note--ai-implementation-tools{width:18%;right:0;top:16%;font-size:clamp(16px,1.8vw,25px)}
.sd-hero .sd-artwork{align-self:center}
@media(max-width:700px){.sd-hero .sd-art{max-height:none!important}.sd-art-note{font-size:22px}.sd-art-note--ai-implementation-tools{font-size:16px}}
@media(max-width:700px){.sd-hero .sd-artwork:has(.sd-art-note){padding-top:62px}.sd-hero .sd-artwork:has(.sd-art-note) .sd-band-continuation{top:62px;height:calc(100% - 62px)}.sd-hero .sd-art-note{top:0;right:22px;width:75%;font-size:22px;line-height:1.05;text-align:right;transform:rotate(-3deg)}.sd-hero .sd-art-note svg{width:70%;margin-left:auto;height:12px}}
html.service-root,body.service-page{background:#fff;color:#111115;color-scheme:light}
body.service-page{font-family:var(--body);font-weight:400;line-height:1.5;min-width:320px}
.service-page .service-page-main{max-width:none;width:100%;padding:0;margin:0}
.service-page .site-header{position:relative;background:#fff;border-bottom:0;width:100%;max-width:1440px;margin:auto}
.sd-page{max-width:1440px;margin:auto;padding:0 4%}
.sd-page h1,.sd-page h2,.sd-page h3{font-family:var(--display);font-weight:400;color:#111115;letter-spacing:-.035em;line-height:1.08;text-wrap:balance;margin:0 0 20px}
.sd-page h1{font-size:clamp(36px,4.8vw,72px)}
.sd-page h2{font-size:clamp(28px,3.35vw,50px)}
.sd-page h3{font-size:clamp(20px,1.7vw,26px)}
.sd-page p{font-size:clamp(16px,1.4vw,20px);max-width:62ch;color:#36363c;margin:0 0 24px}
.sd-page figure{margin:0;min-width:0}
.sd-art{display:block;width:100%;height:auto;object-fit:contain}
.sd-hero{display:grid;grid-template-columns:32% 68%;align-items:center;margin:0 -4.35% 0 0;min-height:640px}
.sd-hero__copy{position:relative;z-index:1;padding:34px 24px 34px 0;min-width:0}
.sd-hero h1{overflow-wrap:anywhere}
html[lang=ru] .sd-hero{grid-template-columns:40% 60%}
html[lang=ru] .sd-hero h1{font-size:clamp(34px,4.1vw,60px)}
.sd-hero__copy p{max-width:35ch}
.sd-hero figure{align-self:stretch;display:flex;align-items:center}
.sd-button{display:inline-flex;align-items:center;gap:22px;padding:16px 26px;min-height:52px;background:#e5007d;color:#fff!important;border:0;border-radius:7px;text-decoration:none;font-weight:600;transition:background-color 150ms ease,transform 150ms ease}
.sd-button span{font-size:23px;line-height:1}
.sd-button:active{transform:scale(.96)}
.sd-button:focus-visible,.sd-page a:focus-visible,.sd-page summary:focus-visible{outline:3px solid #111115;outline-offset:5px}
.sd-section{padding:42px 0}
.sd-section>p{margin-bottom:38px}
.sd-page .sd-explain{font-size:clamp(16px,1.25vw,18px);line-height:1.65;color:#44444d;max-width:64ch}
.sd-split .sd-explain{max-width:55ch}
.sd-split{display:grid;grid-template-columns:38% 62%;align-items:center;gap:0}
.sd-copy{padding:24px 40px 24px 0;min-width:0}
.sd-split--reverse{grid-template-columns:60% 40%}
.sd-split--reverse .sd-copy{grid-column:2;grid-row:1;padding:24px 0 24px 40px}
.sd-split--reverse figure{grid-column:1;grid-row:1}
.sd-list{list-style:none;padding:0;margin:32px 0;display:grid;gap:18px}
.sd-list li{display:flex;gap:16px;align-items:baseline;font-size:18px}
.sd-list li::before{content:'✓';display:inline-grid;place-items:center;flex:none;width:26px;height:26px;border-radius:4px;background:#e5007d;color:white;font-weight:600}
.sd-list li:nth-child(3n+2)::before{background:#00bdd9;color:#111115}
.sd-list li:nth-child(3n)::before{background:#ffeb29;color:#111115}
.sd-steps{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:30px;margin-top:38px}
.sd-steps .sd-art{aspect-ratio:1.2;object-fit:cover;margin-bottom:22px}
.service-page[data-theme=pilot] .sd-steps .sd-art{aspect-ratio:.75}
.sd-steps p{font-size:17px}
.sd-exercise{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:30px}
.sd-exercise>div{background:#f7f8fa;border:1px solid #dadce1;border-radius:8px;overflow:hidden}
.sd-exercise strong{display:block;background:#e5007d;color:#fff;padding:12px;font-size:15px}
.sd-exercise>div:nth-child(2) strong{background:#00bedb;color:#111115}
.sd-exercise>div:nth-child(3) strong{background:#ffeb29;color:#111115}
.sd-exercise p{padding:16px;font-size:16px;margin:0}
.sd-document{display:block;width:48px;height:60px;border:2px solid #afb6c3;border-radius:3px;background:repeating-linear-gradient(to bottom,transparent 0 8px,#dce1e9 8px 12px);margin:18px}
.service-page[data-theme=training] .sd-hero+.sd-split{grid-template-columns:60% 40%}
.sd-wide{margin-top:40px!important;position:relative}
.sd-labels{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:22px;font-family:Caveat,cursive;font-weight:700;font-size:28px;line-height:1.1}
.sd-labels span{position:relative;text-align:center}
.sd-labels span::after{content:'';display:block;margin:5px auto;width:70%;height:6px;background:#ffdf00;transform:rotate(-3deg)}
.sd-labels span:nth-child(2)::after{background:#e5007d}
.sd-labels span:nth-child(3)::after{background:#00bdd9}
@media(min-width:701px){.sd-wide .sd-labels{position:absolute;z-index:2;top:0;left:20%;right:2%;margin:0;grid-template-columns:repeat(3,1fr);font-size:clamp(20px,2.3vw,32px)}.sd-wide .sd-labels span:first-child{transform:translateY(25px)}}
.sd-phones{display:grid;grid-template-columns:repeat(3,1fr);gap:50px;margin-top:42px}
.sd-phone{border:8px solid #20232a;border-radius:32px;background:#edf5fb;padding:22px 15px;min-height:410px;max-width:280px;margin:0 auto 28px;box-shadow:0 7px 18px #11111512;position:relative}
.sd-phone::before{content:'';display:block;width:40%;height:10px;background:#20232a;border-radius:0 0 10px 10px;position:absolute;top:0;left:30%}
.sd-phone__top{font-weight:600;background:#fff;padding:14px 8px;margin-bottom:22px;border-radius:6px}
.sd-phone p,.sd-message{font-size:16px!important;padding:12px;background:#fff;border-radius:8px;margin:12px 0!important}
.sd-message--out{background:#42b8f3;color:#111115;margin-left:20px!important}
.sd-input{margin-top:35px;border-radius:20px;padding:9px 14px;background:#fff;color:#6d7481;font-size:14px}
.sd-architecture{display:grid;grid-template-columns:repeat(3,1fr);gap:35px;margin-top:40px}
.sd-architecture article{padding:0 18px;background:#fff}
.sd-architecture .sd-art{aspect-ratio:1.35;object-fit:contain;margin-bottom:22px}
.sd-architecture article:nth-child(2){border-color:#e5007d}
.sd-architecture article:nth-child(3){border-color:#ffdf00}
.sd-architecture p{font-size:17px;margin-top:16px}
.sd-final{text-align:center;padding:85px 0}
.sd-final p{margin-inline:auto}
.sd-details{margin:40px 0;border-top:1px solid #e5e5e9;border-bottom:1px solid #e5e5e9}
/* два текстовых блока подряд (география и подробности) делят одну линию, а не две с пустой полосой */
.sd-details:has(+.sd-details){margin-bottom:0}
.sd-details+.sd-details{margin-top:0;border-top:0}
.sd-prose{max-width:900px;padding:40px 0 65px}
.sd-prose h2{font-size:30px;margin-top:44px}
.sd-prose h3{font-size:23px}
.sd-prose p,.sd-prose li{font-size:18px}
.sd-prose table{width:100%;border-collapse:collapse;display:block;overflow-x:auto;margin:26px 0}
.sd-prose th,.sd-prose td{padding:14px;border-bottom:1px solid #dedee4;text-align:left;color:#111115;background:#fff}
.sd-prose blockquote{background:#f5f7fa;color:#111115;padding:24px;margin:20px 0}
.sd-related{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding:35px 0 70px}
.sd-related a{color:#111115;text-decoration:none;font-weight:600}
.sd-related img{width:100%;height:auto;aspect-ratio:1.5;object-fit:cover;margin-bottom:14px}
.service-page footer{background:#fff;color:#111115;border-top:1px solid #e5e5e9}
.service-page footer a,.service-page footer p{color:#44444d}
.service-page footer .brandmark img{filter:none}
@media(hover:hover) and (pointer:fine){.sd-button:hover{background:#bd0069}.sd-related a:hover{color:#bd0069}.sd-related img{transition:transform 200ms ease}.sd-related a:hover img{transform:translateY(-4px)}}
@media(max-width:1000px){.sd-hero{min-height:0}.sd-page h1{font-size:42px}.sd-copy{padding-right:22px}.sd-phones{gap:24px}.sd-section{padding:45px 0}.sd-steps{gap:18px}.sd-page p{font-size:17px}}
@media(max-width:700px){.sd-page{padding:0 22px}.sd-hero{display:flex;flex-direction:column;margin:0 -22px;align-items:stretch}.sd-hero__copy{padding:32px 22px 25px}.sd-page h1{font-size:40px;max-width:16ch}.sd-hero figure{width:100%;max-height:none}.sd-hero .sd-art{max-height:490px;object-fit:contain}.sd-section{padding:35px 0}.sd-split,.sd-split--reverse,.service-page[data-theme=training] .sd-hero+.sd-split{display:flex;flex-direction:column;gap:22px}.sd-copy,.sd-split--reverse .sd-copy{padding:0;width:100%}.sd-split figure{width:100%}.sd-page h2{font-size:31px}.sd-steps{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 18px}.sd-steps h3{font-size:20px}.sd-steps p{font-size:16px}.sd-exercise{gap:8px}.sd-exercise strong{font-size:12px;padding:10px 7px}.sd-exercise p{font-size:13px;padding:10px}.sd-document{width:32px;height:44px;margin:12px}.sd-phones{grid-template-columns:1fr;gap:36px}.sd-phones article{display:grid;grid-template-columns:1fr 1fr;column-gap:18px;align-items:start}.sd-phone{grid-row:1/3;width:100%;min-height:350px;border-width:6px;padding:15px 8px;border-radius:22px;margin:0}.sd-phones h3{margin-top:28px}.sd-phone p,.sd-message{font-size:13px!important;padding:9px}.sd-architecture{grid-template-columns:1fr;gap:15px}.sd-labels{font-size:15px;gap:10px}.sd-related{grid-template-columns:repeat(2,1fr);gap:25px 18px}.sd-related span{font-size:15px}.sd-prose h2{font-size:26px}.sd-final{padding:45px 0}}
@media(prefers-reduced-motion:reduce){.sd-page *{animation:none!important;transition:none!important}}

/* ============================ Motion layer ============================
   Сервисные страницы живут в языке главной: заголовки поднимаются по словам,
   иллюстрация появляется, её цветные полосы выезжают из кромки картинки в фон
   (шов с картинкой неподвижен - масштаб от кромки), рукописная подпись пишется,
   мемфис-зигзаг рисуется и потом «дышит». Скрытые состояния - только при .js
   и разрешённом движении; конечный кадр совпадает с утверждённой вёрсткой. */
.sd-zig{display:block;width:3.2rem;height:1.2rem;margin-top:28px;overflow:visible;fill:none;stroke:#111115;stroke-width:2.5;stroke-linejoin:round}
.sd-hero__copy .sd-zig{margin-top:40px}
.sd-band--left{transform-box:fill-box;transform-origin:100% 50%}
.sd-band--right{transform-box:fill-box;transform-origin:0 50%}
:is(.sd-list li,.sd-exercise>div,.sd-steps article,.sd-phones article,.sd-architecture article,.sd-related>a,.sd-labels span):nth-child(2){--k:1}
:is(.sd-list li,.sd-exercise>div,.sd-steps article,.sd-phones article,.sd-architecture article,.sd-related>a,.sd-labels span):nth-child(3){--k:2}
:is(.sd-list li,.sd-exercise>div,.sd-steps article,.sd-phones article,.sd-architecture article,.sd-related>a,.sd-labels span):nth-child(4){--k:3}
:is(.sd-list li,.sd-exercise>div,.sd-steps article,.sd-phones article,.sd-architecture article,.sd-related>a,.sd-labels span):nth-child(5){--k:4}
:is(.sd-list li,.sd-exercise>div,.sd-steps article,.sd-phones article,.sd-architecture article,.sd-related>a,.sd-labels span):nth-child(6){--k:5}
:is(.sd-list li,.sd-exercise>div,.sd-steps article,.sd-phones article,.sd-architecture article,.sd-related>a,.sd-labels span):nth-child(7){--k:6}
.sd-phone .sd-message:nth-of-type(3){--m:1}
.sd-phone .sd-message:nth-of-type(4){--m:2}
@keyframes sd-settle{from{scale:1.05}}
@keyframes sd-band-out{from{scale:0 1}}
@keyframes sd-rise{from{opacity:0;translate:0 26px}}
@keyframes sd-art-in{from{opacity:0;translate:0 48px}}
@keyframes sd-write{from{clip-path:inset(-.3em 100% -.5em -.3em)}to{clip-path:inset(-.3em -.3em -.5em -.3em)}}
@keyframes sd-zoom{from{scale:1.09}}
@keyframes sd-bubble{from{opacity:0;translate:0 10px;scale:.94}}
@keyframes sd-art-drift{from{translate:0 24px}to{translate:0 -24px}}

@media (prefers-reduced-motion:no-preference){
  /* первый экран: при загрузке; картинка (LCP) видна сразу и только мягко садится */
  .sd-hero h1.split{--split-delay:60ms}
  .sd-hero__copy>p{animation:sd-rise 720ms var(--ease-out) 380ms backwards}
  .sd-hero__copy>.sd-button{animation:sd-rise 720ms var(--ease-out) 470ms backwards}
  .sd-hero .sd-art{animation:sd-settle 1700ms var(--ease-out) backwards;transform-origin:60% 85%}
  .sd-hero .sd-band{animation:sd-band-out 1100ms var(--ease-out) 280ms backwards}
  .sd-hero .sd-art-note{animation:sd-write 900ms cubic-bezier(.45,.1,.55,.95) 950ms backwards}
  .sd-hero .sd-art-note path{stroke-dasharray:1;animation:draw 520ms var(--ease-out) 1800ms backwards}
  .sd-hero .sd-zig path{stroke-dasharray:1;animation:draw 700ms var(--ease-draw) 750ms backwards}

  /* секции: до появления скрыты, затем короткий каскад */
  .js .sd-section:not(.is-visible) :is(.sd-copy>p,.sd-section>p,.sd-list li,.sd-exercise>div,.sd-steps article,.sd-phones article,.sd-architecture article,figure>.sd-artwork,.sd-labels span,.sd-copy>.sd-button,.sd-final>.sd-button),
  .js .sd-related:not(.is-visible)>a{opacity:0}
  .sd-section.is-visible :is(.sd-copy>p,.sd-section>p){animation:sd-rise 700ms var(--ease-out) 240ms backwards}
  .sd-section.is-visible :is(.sd-copy>p,.sd-section>p)+p{animation-delay:340ms}
  .sd-section.is-visible figure>.sd-artwork{animation:sd-art-in 1000ms var(--ease-out) 80ms backwards}
  .sd-section.is-visible .sd-band{animation:sd-band-out 1100ms var(--ease-out) 460ms backwards}
  .sd-section.is-visible .sd-art-note{animation:sd-write 900ms cubic-bezier(.45,.1,.55,.95) 950ms backwards}
  .sd-section.is-visible .sd-art-note path{stroke-dasharray:1;animation:draw 520ms var(--ease-out) 1800ms backwards}
  .sd-section.is-visible .sd-zig path{stroke-dasharray:1;animation:draw 700ms var(--ease-draw) 900ms backwards}
  .sd-section.is-visible .sd-list li{animation:sd-rise 560ms var(--ease-out) calc(420ms + var(--k,0) * 80ms) backwards}
  .sd-section.is-visible .sd-list li::before{animation:pop-in 480ms var(--ease-pop) calc(540ms + var(--k,0) * 80ms) backwards}
  .sd-section.is-visible :is(.sd-exercise>div,.sd-steps article,.sd-phones article,.sd-architecture article),
  .sd-related.is-visible>a{animation:sd-rise 700ms var(--ease-out) calc(300ms + var(--k,0) * 110ms) backwards}
  .sd-section.is-visible .sd-steps .sd-art{animation:sd-zoom 1300ms var(--ease-out) calc(300ms + var(--k,0) * 110ms) backwards}
  .sd-section.is-visible .sd-message{animation:sd-bubble 480ms var(--ease-out) calc(760ms + var(--k,0) * 110ms + var(--m,0) * 280ms) backwards}
  .sd-section.is-visible .sd-labels span{animation:sd-rise 600ms var(--ease-out) calc(520ms + var(--k,0) * 140ms) backwards}
  .sd-section.is-visible :is(.sd-copy,.sd-final)>.sd-button{animation:pop-in 560ms var(--ease-pop) 560ms backwards}

  /* мемфис живёт постоянно, как на главной */
  .sd-zig{animation:mem-breathe 13s ease-in-out 2s infinite}
  .sd-split--reverse .sd-zig{animation-name:mem-breathe-b;animation-duration:17s}
}
/* иллюстрации с полосами слегка отстают от прокрутки - крупные цветные плоскости
   движутся вместе с картинкой, шов не расходится */
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference) and (min-width:701px){
    :is(.sd-hero,.sd-split) figure{animation:sd-art-drift linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
  }
}
.data-limited .sd-page *{animation:none!important}
