/* Main page sonifai.com and the books stub. Design: canvas «SonifAi главная» (owner 2026-11-15): Jost, ink and white,
   one crimson accent, square buttons, logo of notes. v2.0.0 */
:root{
  --ink:#0A0A0B; --panel:#141416; --lane:#1B1B1E; --chip:#1E1E21; --line:rgba(255,255,255,.14);
  --text:#F5F4F2; --soft:rgba(255,255,255,.86); --mute:rgba(255,255,255,.6); --paper:#F2F0EB;
  --accent:#FF3D6E; --strings:#EDEBE6; --bass:#9C9A95; --drums:#6E6C68;
}
*{box-sizing:border-box}
html{color-scheme:dark}
body{margin:0;background:var(--ink);color:var(--text);font-family:Jost,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit}
img{display:block;max-width:100%}
.wrap{width:100%;max-width:1320px;margin:0 auto;padding-left:32px;padding-right:32px}
@media (max-width:640px){.wrap{padding-left:16px;padding-right:16px}}
.accent{color:var(--accent)}
.eyebrow{margin:0 0 20px;font-weight:500;font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.eyebrow--dim{color:var(--mute)}
.h2{margin:0;font-weight:500;font-size:clamp(38px,5.4vw,84px);line-height:1;letter-spacing:-.03em}

/* Buttons: square, like Ableton */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 20px;font-weight:600;font-size:16px;text-decoration:none;border:0;cursor:pointer;white-space:nowrap}
.btn--big{padding:18px 30px;font-size:18px}
.btn--light{background:#fff;color:var(--ink)}
.btn--light:hover{background:#e9e7e2}
.btn--accent{background:var(--accent);color:var(--ink)}
.btn--accent:hover{background:#ff6a8e}
.btn--line{color:#fff;border:1.5px solid rgba(255,255,255,.45)}
.btn--line:hover{border-color:#fff}

/* Nav */
.nav{position:relative;z-index:3;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding-top:26px;padding-bottom:26px}
.brand{display:flex;align-items:center;min-height:44px}
.nav__links{display:flex;flex-wrap:wrap;align-items:center;gap:6px 26px;font-size:16px;font-weight:500}
.nav__links a:not(.btn){text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.nav__dim{color:rgba(255,255,255,.72)}
.nav__links a:not(.btn):hover{color:#fff}
@media (max-width:760px){.nav__links a.nav__sect{display:none}}

/* Act 1: the person, a clip per role */
.hero{position:relative;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;overflow:hidden;background:var(--ink)}
.hero__scene{position:absolute;inset:0;opacity:0;transition:opacity .9s ease}
.hero__scene.is-on{opacity:1}
.hero__video{width:100%;height:100%;object-fit:cover;object-position:50% 50%}
@media (max-width:900px){.hero__video{object-position:var(--posm) 50%}}
.hero__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,11,.55) 0%,rgba(10,10,11,.12) 32%,rgba(10,10,11,.9) 100%)}
.hero__body{position:relative;z-index:2;margin-top:auto;padding-bottom:40px}
.hero__who{display:none}
.hero__who.is-on{display:block}
.hero__h1{margin:0;font-weight:500;font-size:clamp(64px,11vw,176px);line-height:.92;letter-spacing:-.035em;color:#fff}
.hero__row{margin-top:28px;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px}
.hero__lines{flex:1 1 420px;max-width:600px;min-height:3em}
.hero__line{display:none;margin:0;font-size:21px;line-height:1.5;color:var(--soft)}
.hero__line.is-on{display:block}
.tabs{margin-top:48px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:20px}
.tab{position:relative;padding:16px 0 4px;min-height:44px;text-align:left;background:none;border:0;color:#fff;font:inherit;font-size:17px;font-weight:500;opacity:.65;cursor:pointer}
.tab.is-on{opacity:1}
.tab::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:rgba(255,255,255,.25)}
.tab__bar{position:absolute;left:0;top:0;height:2px;width:0;background:var(--accent)}
.tab.is-on .tab__bar{width:100%;transition:width var(--dur,9s) linear}
.tab.is-done .tab__bar{width:100%}
@media (max-width:640px){
  .hero__h1{font-size:64px}
  .hero__line{font-size:17px}
  .hero__row .btn{width:100%}
  .tabs{display:flex;gap:18px;overflow-x:auto;scrollbar-width:none;margin-right:-16px;padding-right:16px}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex:0 0 auto;font-size:15px}
}

/* Act 2: the track is built as the page scrolls (data-step 1..4 set by home.js) */
.story{position:relative;height:340vh;background:var(--ink)}
.story__pin{position:sticky;top:0;min-height:100vh;display:flex;align-items:center;padding:72px 0}
.story__grid{margin-top:56px;display:flex;flex-wrap:wrap;gap:48px;align-items:flex-start}
.steps{flex:1 1 320px;min-width:0;margin:0;padding:0;list-style:none}
.step{padding:20px 0;border-top:1px solid var(--line);opacity:.4;transition:opacity .3s}
.step h3{margin:6px 0 4px;font-weight:600;font-size:24px;letter-spacing:-.02em}
.step p{margin:0;font-size:16px;line-height:1.5;color:rgba(255,255,255,.75)}
.step__n{font-weight:500;font-size:13px}
.story[data-step="1"] [data-step-item="1"],.story[data-step="2"] [data-step-item="2"],.story[data-step="3"] [data-step-item="3"],.story[data-step="4"] [data-step-item="4"]{opacity:1;border-top-color:var(--accent)}
.story[data-step="1"] [data-step-item="1"] .step__n,.story[data-step="2"] [data-step-item="2"] .step__n,.story[data-step="3"] [data-step-item="3"] .step__n,.story[data-step="4"] [data-step-item="4"] .step__n{color:var(--accent)}
.story__hint{margin:28px 0 0;font-size:14px;color:rgba(255,255,255,.45)}
.session{flex:2 1 560px;min-width:0;background:var(--panel);border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:24px}
.session__top{display:flex;gap:8px;min-height:34px;font-size:14px;opacity:0;transition:opacity .35s}
.chip{padding:8px 12px;border-radius:8px;background:var(--chip)}
.toggle{display:flex;border-radius:8px;overflow:hidden;background:var(--chip)}
.toggle span{padding:8px 12px;color:rgba(255,255,255,.5)}
.toggle .on{background:#fff;color:var(--ink)}
.lanes{margin-top:18px;display:flex;flex-direction:column;gap:10px}
.lane{display:grid;grid-template-columns:130px minmax(0,1fr);gap:12px;align-items:center}
.lane__name{font-size:15px;font-weight:500}
.lane__inst{display:none}
.lane__midi{color:rgba(255,255,255,.5)}
.roll{position:relative;height:44px;background:var(--lane);border-radius:6px}
.roll i{position:absolute;height:7px;border-radius:2px;background:rgba(255,255,255,.35);transition:background .4s}
.faders{margin-top:18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;max-height:0;overflow:hidden;opacity:0;transition:max-height .45s ease,opacity .35s}
.fader{position:relative;height:110px;background:var(--lane);border-radius:8px}
.fader::before{content:"";position:absolute;left:50%;top:12px;bottom:26px;width:2px;margin-left:-1px;background:#34343a}
.fader i{position:absolute;left:50%;width:34px;height:12px;margin-left:-17px;border-radius:3px}
.fader b{position:absolute;left:0;right:0;bottom:6px;text-align:center;font-weight:500;font-size:11px;color:rgba(255,255,255,.5)}
.fader--0 i{background:var(--accent)}.fader--1 i{background:var(--strings)}.fader--2 i{background:var(--bass)}.fader--3 i{background:var(--drums)}
.session__foot{margin-top:18px;display:flex;justify-content:flex-end;min-height:40px}
.session__logic{background:#fff;color:var(--ink);font-weight:600;font-size:14px;padding:11px 16px;opacity:0;transition:opacity .35s}
.story:not([data-step="1"]) .lane__midi{display:none}
.story:not([data-step="1"]) .lane__inst{display:inline}
.story:not([data-step="1"]) .lane--piano i{background:var(--accent)}
.story:not([data-step="1"]) .lane--strings i{background:var(--strings)}
.story:not([data-step="1"]) .lane--bass i{background:var(--bass)}
.story:not([data-step="1"]) .lane--drums i{background:var(--drums)}
.story[data-step="3"] .faders,.story[data-step="4"] .faders{max-height:130px;opacity:1}
.story[data-step="4"] .session__top,.story[data-step="4"] .session__logic{opacity:1}
@media (max-width:640px){
  .story{height:300vh}
  .story__pin{padding:48px 0}
  .story__grid{margin-top:28px;gap:20px;flex-direction:column-reverse}
  .steps,.session{flex:none;width:100%}
  .steps .step{display:none;border-top:2px solid var(--accent);opacity:1}
  .story[data-step="1"] [data-step-item="1"],.story[data-step="2"] [data-step-item="2"],.story[data-step="3"] [data-step-item="3"],.story[data-step="4"] [data-step-item="4"]{display:block}
  .session{padding:16px}
  .lane{grid-template-columns:84px minmax(0,1fr)}
  .lane__name{font-size:12px}
  .roll{height:36px}
  .fader{height:84px}
}

/* Short screens (laptops at 600-860 px): the pinned block must fit, so only the current step keeps its text */
@media (max-height:860px) and (min-width:641px){
  .story__pin{padding:32px 0}
  .story__grid{margin-top:28px;gap:32px}
  .h2{font-size:clamp(36px,4.6vw,64px)}
  .step{padding:12px 0}
  .step p{display:none}
  .story[data-step="1"] [data-step-item="1"] p,.story[data-step="2"] [data-step-item="2"] p,.story[data-step="3"] [data-step-item="3"] p,.story[data-step="4"] [data-step-item="4"] p{display:block}
  .roll{height:34px}
  .fader{height:78px}
  .story__hint{display:none}
}

/* Act 3: people */
.people{background:var(--paper);color:var(--ink);padding:120px 0}
.people__head{display:flex;flex-wrap:wrap;gap:32px;justify-content:space-between;align-items:flex-end}
.people__head .h2{flex:1 1 560px}
.people__head p{flex:1 1 320px;max-width:460px;margin:0;font-size:20px;line-height:1.5;color:#3b3a37}
.mosaic{margin-top:64px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:272px;gap:16px}
.mosaic figure{margin:0;border-radius:16px;overflow:hidden;background:#d8d5cd}
.mosaic img{width:100%;height:100%;object-fit:cover}
.mosaic__big{grid-row:span 2}
@media (max-width:760px){.people{padding:72px 0}.mosaic{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:190px;gap:8px}.mosaic__big{grid-column:span 2;grid-row:span 2}}

/* Act 4: releases */
.release{position:relative;min-height:720px;display:flex;align-items:center;overflow:hidden}
.release__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.release::after{content:"";position:absolute;inset:0;background:rgba(10,10,11,.62)}
.release__body{position:relative;z-index:1;padding-top:120px;padding-bottom:120px}
.release__q{margin:0 0 18px;font-size:28px;font-weight:500;color:var(--soft)}
.release__h{margin:0;max-width:1100px;font-weight:500;font-size:clamp(42px,6.4vw,104px);line-height:.98;letter-spacing:-.03em;color:#fff}
@media (max-width:640px){.release{min-height:620px;align-items:flex-end}.release__body{padding-top:64px;padding-bottom:48px}.release__q{font-size:21px}}

/* Audiobooks */
.books{padding:96px 0}
.books__body{display:flex;flex-wrap:wrap;gap:32px;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:48px}
.books__body>div{flex:1 1 480px}
.books__h{margin:0;font-weight:500;font-size:40px;letter-spacing:-.03em}
.books__t{margin:14px 0 0;max-width:640px;font-size:18px;line-height:1.5;color:rgba(255,255,255,.7)}

/* Footer */
.foot{border-top:1px solid rgba(255,255,255,.08)}
.foot .wrap{padding-top:32px;padding-bottom:32px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;align-items:center;font-size:14px;color:rgba(255,255,255,.55)}
.foot .name{font-weight:600;font-size:18px;color:#fff}
.foot nav{display:flex;flex-wrap:wrap;gap:4px 22px}
.foot nav a{color:rgba(255,255,255,.7);text-decoration:none;min-height:32px;display:inline-flex;align-items:center}
.foot nav a:hover{color:#fff}

/* books.sonifai.com stub */
.stub{min-height:100vh;display:flex;flex-direction:column}
.stub__main{flex:1;display:flex;align-items:center}
.stub__box{padding-top:48px;padding-bottom:96px;max-width:860px;margin-left:auto;margin-right:auto}
.stub__mark{width:84px;height:84px;border-radius:20px;background:#FFB020;color:var(--ink);display:flex;align-items:center;justify-content:center;margin-bottom:28px}
.stub__t{margin:20px 0 0;font-size:20px;line-height:1.55;color:var(--soft)}
.stub__help{margin:14px 0 0;font-size:17px;color:var(--mute)}
.stub__help a{color:#FFB020}
.stub__cta{margin-top:32px;display:flex;flex-wrap:wrap;gap:12px}

@media (prefers-reduced-motion: reduce){
  .hero__scene,.step,.roll i,.faders,.session__top,.session__logic{transition:none}
  .tab.is-on .tab__bar{transition:none}
}
