/* ============================================================
   FitAI — лендинг v2 «продукт». Подключается после styles.css.
   Всё под .nl. Палитра: белая бумага, чернила, глубокий синий,
   три пастельных тона для плиток. Шрифты: Unbounded + Onest.
   ============================================================ */
.nl{
  --paper:#FAFAF8;
  --white:#FFFFFF;
  --ink:#121418;
  --ink-2:#454A53;
  --ink-3:#5C616B;
  --line:#E6E5E1;
  --line-2:#D2D0CA;
  --blue:#2F3E5C;
  --blue-2:#1F2B44;
  --blue-3:#42579A;
  --sky:#E7EDF8;
  --sand:#F4ECDD;
  --stone:#EEECE6;
  --brass:#B08F5C;
  --brass-ink:#7A5F33;
  --display:"Unbounded","Manrope",system-ui,sans-serif;
  --sans:"Onest","Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  --r:20px;--r-s:12px;

  background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:18px;line-height:1.55;
  -webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:clip;
}
.nl *{box-sizing:border-box}

/* ============================================================
   ЗАЩИТА ОТ ТЕМЫ КАБИНЕТА  (вставлено рано — намеренно)
   app.js:7102 fai126ApplyTheme() безусловно ставит data-theme="dark"
   на <html> и <body>; в styles.css под тёмную тему 107 правил с
   !important, которые красят b/a/small/span и фоны header/footer/.card.
   Лендинг — светлая витрина и не должен от этого зависеть.
   :where() держит специфичность ровно (0,2,0): выше кабинетных
   (0,1,2), но ниже моих компонентных правил ниже по файлу —
   поэтому они продолжают работать как задумано.
   ============================================================ */
/* Блэнкет только на теги, которым я сам никогда не задаю цвет напрямую:
   они берут цвет у своего контейнера, а его я контролирую. */
.nl.nl :where(b,strong,small,em,text,tspan){color:inherit!important}
.nl.nl :where(p){color:var(--ink-2)!important}
.nl.nl :where(h1,h2,h3,h4,h5,h6){color:var(--ink)!important}

/* точечно — то, что кабинет красит по тегу/классу */
.nl.nl .nl-mark{color:var(--ink)!important}
.nl.nl .nl-mark i{color:#fff!important}
.nl.nl .nl-nav nav a{color:var(--ink-2)!important}
.nl.nl .nl-nav .login{color:var(--ink-2)!important}
.nl.nl .nl-foot button,.nl.nl .nl-foot a{color:var(--ink-2)!important}
.nl.nl .nl-g-item i{color:var(--blue)!important}
.nl.nl .nl-step .n{color:#fff!important}
.nl.nl .nl-cal span.on{color:#fff!important}
.nl.nl .nl-ai .nl-din i{color:var(--ink)!important}
.nl.nl .nl-plan-card,.nl.nl .nl-plan-card .nl-plan-tag{color:#fff!important}

/* фоны, которые кабинет навязывает по тегу/классу */
.nl.nl .nl-nav{background:rgba(250,250,248,.86)!important}
.nl.nl .nl-foot{background:var(--paper)!important}
.nl.nl .nl-phone{background:#0F1116!important}
.nl.nl .nl-screen{background:var(--paper)!important}
.nl.nl .nl-screen .card{background:var(--white)!important;border-color:var(--line)!important;color:var(--ink)!important}
.nl.nl .nl-screen .card.dark{background:var(--ink)!important;color:#fff!important}
.nl.nl .nl-screen .go{background:var(--blue)!important;color:#fff!important}
.nl.nl .pill{background:var(--white)!important;color:var(--ink-2)!important;border-color:var(--line)!important}
/* цены: задаём цвет явно — у их предков кабинет ставит светлый */
.nl.nl .nl-plan .amount,.nl.nl .nl-plan .amount b{color:var(--ink)!important}
.nl.nl .nl-offer .cost,.nl.nl .nl-offer .cost b{color:var(--ink)!important}
.nl.nl .nl-price .free,.nl.nl .nl-price .free b{color:var(--blue-2)!important}
.nl.nl .nl-stats article,.nl.nl .nl-stats b{color:var(--ink)!important}
.nl.nl .nl-hero .proof,.nl.nl .nl-hero .proof b{color:var(--ink)!important}
.nl.nl .nl-phase,.nl.nl .nl-phase b{color:var(--ink)!important}
.nl.nl .nl-g-item,.nl.nl .nl-g-item b{color:var(--ink)!important}
.nl.nl .nl-float,.nl.nl .nl-float b{color:var(--ink)!important}

.nl h1,.nl h2,.nl h3{font-family:var(--display);margin:0;text-wrap:balance;letter-spacing:-.02em}
.nl h1{font-size:clamp(38px,4.7vw,64px);line-height:1.04;font-weight:600}
.nl h2{font-size:clamp(30px,4vw,54px);line-height:1.06;font-weight:600}
.nl h3{font-size:22px;line-height:1.2;font-weight:500}
.nl h1 em,.nl h2 em{font-style:normal;color:var(--blue-3)}
.nl p{margin:0}
.nl a{color:inherit}
.nl img{max-width:100%;display:block}
.nl .k{font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.nl .num{font-variant-numeric:tabular-nums}
.nl .lead{font-size:clamp(18px,1.5vw,22px);line-height:1.5;color:var(--ink-2)}
.nl .wrap{max-width:1240px;margin:0 auto;padding-inline:clamp(18px,4vw,48px)}
.nl section{padding-block:clamp(64px,8vw,120px)}
.nl .sec-head{display:grid;gap:18px;max-width:760px;margin-bottom:clamp(36px,4vw,56px)}
.nl .sec-head.center{margin-inline:auto;text-align:center;justify-items:center}

/* ---------- pill / кнопки ---------- */
.nl .pill{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:var(--white);border:1px solid var(--line);font-size:14px;font-weight:500;color:var(--ink-2)}
.nl .pill i{width:8px;height:8px;border-radius:50%;background:var(--blue-3);display:inline-block}
.nl .btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font:600 16px/1 var(--sans);padding:18px 28px;border-radius:999px;border:1px solid transparent;
  cursor:pointer;text-decoration:none;white-space:nowrap;
  transition:transform .18s ease,background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease;
  box-shadow:none;text-transform:none;width:auto;min-height:0;height:auto;margin:0;
}
.nl .btn:hover{transform:translateY(-1px)}
.nl .btn.btn.primary{background:var(--ink)!important;color:#fff!important;border-color:transparent!important}
.nl .btn.btn.primary:hover{background:var(--blue-2)!important}
.nl .btn.btn.blue{background:var(--blue)!important;color:#fff!important;border-color:transparent!important}
.nl .btn.btn.blue:hover{background:var(--blue-2)}
.nl .btn.btn.ghost{background:var(--white)!important;color:var(--ink)!important;border-color:var(--line-2)!important}
.nl .btn.btn.ghost:hover{border-color:var(--ink)!important}
.nl .btn.small{padding:12px 18px;font-size:14.5px}
.nl .btn .arrow{transition:transform .18s ease}
.nl .btn:hover .arrow{transform:translateX(3px)}
.nl .btn:focus-visible,.nl a:focus-visible,.nl summary:focus-visible{outline:2px solid var(--blue-3);outline-offset:3px}

/* ---------- навигация ---------- */
.nl-nav{position:sticky;top:0;z-index:30;background:rgba(250,250,248,.82);backdrop-filter:saturate(160%) blur(14px);border-bottom:1px solid transparent}
.nl-nav .wrap{display:flex;align-items:center;gap:28px;height:72px}
.nl-mark{font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:-.03em;text-decoration:none;display:flex;align-items:center;gap:10px}
.nl-mark i{width:28px;height:28px;border-radius:9px;background:var(--blue);display:grid;place-items:center;color:#fff;font-size:13px;font-style:normal}
.nl-nav nav{display:flex;gap:4px;margin-left:8px}
.nl-nav nav a{font-size:15px;font-weight:500;text-decoration:none;color:var(--ink-2);padding:8px 12px;border-radius:999px;transition:background .15s ease,color .15s ease}
.nl-nav nav a:hover{color:var(--ink);background:var(--stone)}
.nl-nav .actions{margin-left:auto;display:flex;gap:8px;align-items:center}
.nl-nav .login{background:none;border:0;font:500 15px var(--sans);color:var(--ink-2);cursor:pointer;padding:10px 12px}
.nl-nav .login:hover{color:var(--ink)}

/* ---------- hero ---------- */
.nl-hero{position:relative;padding-block:clamp(36px,5vw,72px) clamp(56px,6vw,96px);overflow:hidden}
.nl-hero::before{content:"";position:absolute;inset:-20% -10% auto;height:120%;pointer-events:none;
  background:
    radial-gradient(52% 60% at 78% 22%,rgba(78,99,160,.16),transparent 70%),
    radial-gradient(40% 50% at 18% 80%,rgba(176,143,92,.14),transparent 70%);
  filter:blur(6px)}
.nl-hero .wrap{position:relative;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(28px,5vw,72px);align-items:center}
.nl-hero .copy{display:grid;gap:26px;justify-items:start}
.nl-hero h1{max-width:13ch}
.nl-hero .cta{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.nl-hero .proof{display:flex;gap:26px;flex-wrap:wrap;align-items:center;margin-top:6px}
.nl-hero .proof div{display:grid;gap:2px}
.nl-hero .proof b{font-family:var(--display);font-weight:600;font-size:22px;line-height:1}
.nl-hero .proof span{font-size:13.5px;color:var(--ink-3)}

/* композиция: телефон + летающие карточки */
.nl-stage{position:relative;min-height:640px;display:grid;place-items:center;justify-items:end;padding-right:8px}
.nl-phone{
  width:318px;aspect-ratio:9/19;border-radius:46px;background:#0F1116;padding:12px;
  box-shadow:0 40px 90px -30px rgba(18,20,24,.45),0 0 0 1px rgba(255,255,255,.06) inset;
  position:relative;z-index:2;
}
.nl-phone::before{content:"";position:absolute;top:22px;left:50%;transform:translateX(-50%);width:104px;height:30px;border-radius:999px;background:#0F1116;z-index:3}
.nl-screen{width:100%;height:100%;border-radius:36px;background:var(--paper);overflow:hidden;display:grid;grid-template-rows:auto 1fr;font-size:12.5px}
.nl-screen .sb{display:flex;justify-content:space-between;padding:16px 22px 0;font-weight:600;font-size:12px}
.nl-screen .body{padding:26px 16px 16px;display:grid;gap:12px;align-content:start}
.nl-screen .hi{display:flex;justify-content:space-between;align-items:end}
.nl-screen .hi b{font-family:var(--display);font-size:17px;font-weight:600;display:block;letter-spacing:-.02em}
.nl-screen .hi span{color:var(--ink-3);font-size:11.5px}
.nl-screen .hi .ava{width:30px;height:30px;border-radius:50%;background:var(--sand)}
.nl-screen .card{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:14px}
.nl-screen .card.dark{background:var(--ink);color:#fff;border-color:transparent}
.nl-screen .today{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.nl-screen .today small{display:block;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;opacity:.6;margin-bottom:4px}
.nl-screen .today b{font-size:15px;font-weight:600;display:block;line-height:1.2}
.nl-screen .today span{font-size:11.5px;opacity:.7}
.nl-screen .ring{width:58px;height:58px}
.nl-screen .ring circle{fill:none;stroke-width:6}
.nl-screen .ring .bg{stroke:rgba(255,255,255,.14)}
.nl-screen .ring .fg{stroke:#fff;stroke-linecap:round;stroke-dasharray:157;stroke-dashoffset:60;transform:rotate(-90deg);transform-origin:50% 50%}
.nl-screen .ring text{fill:#fff;font-size:13px;font-weight:600;text-anchor:middle;dominant-baseline:central}
.nl-screen .go{background:var(--blue);color:#fff;border-radius:999px;padding:11px;text-align:center;font-weight:600;font-size:12.5px}
.nl-screen .row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.nl-screen .mini small{display:block;color:var(--ink-3);font-size:10.5px;margin-bottom:6px}
.nl-screen .mini b{font-family:var(--display);font-size:18px;font-weight:600;display:block;line-height:1}
.nl-screen .mini em{font-style:normal;color:var(--blue-3);font-size:11px;font-weight:600}
.nl-screen .week{display:flex;gap:5px}
.nl-screen .week i{flex:1;height:5px;border-radius:3px;background:var(--line)}
.nl-screen .week i.on{background:var(--blue)}
.nl-screen .week i.now{background:var(--brass)}
.nl-screen .tabs{margin-top:auto;display:flex;justify-content:space-around;padding-top:10px;border-top:1px solid var(--line);font-size:10.5px;color:var(--ink-3)}
.nl-screen .tabs b{color:var(--ink);font-weight:600}

.nl-float{position:absolute;z-index:3;background:var(--white);border:1px solid var(--line);border-radius:18px;padding:14px 16px;box-shadow:0 24px 50px -24px rgba(18,20,24,.3);width:230px}
.nl-float.ai{left:-16px;top:96px;width:214px}
.nl-float.ai .who{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;margin-bottom:8px}
.nl-float.ai .who i{width:20px;height:20px;border-radius:6px;background:var(--blue);display:grid;place-items:center;color:#fff;font-size:10px;font-style:normal}
.nl-float.ai p{font-size:13px;line-height:1.4;color:var(--ink-2)}
.nl-float.measure{right:-6px;bottom:120px;width:212px}
.nl-float.measure small{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px}
.nl-float.measure .v{display:flex;justify-content:space-between;align-items:baseline}
.nl-float.measure b{font-family:var(--display);font-size:24px;font-weight:600}
.nl-float.measure em{font-style:normal;color:var(--blue-3);font-weight:600;font-size:14px}
.nl-float.measure .bar{margin-top:10px;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.nl-float.measure .bar i{display:block;height:100%;width:62%;background:linear-gradient(90deg,var(--blue-3),var(--blue))}
.nl-float.tech{left:36px;bottom:-24px;width:180px;padding:10px}
.nl-float.tech img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px}
.nl-float.tech span{display:block;font-size:12px;font-weight:600;margin-top:8px}
.nl-float.tech small{font-size:11px;color:var(--ink-3)}

/* ---------- полоса цифр ---------- */
.nl-stats{padding-block:0}
.nl-stats .wrap > div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r);background:var(--white);overflow:hidden}
.nl-stats article{padding:28px 30px;border-right:1px solid var(--line)}
.nl-stats article:last-child{border-right:0}
.nl-stats b{font-family:var(--display);font-weight:600;font-size:clamp(30px,3vw,42px);display:block;line-height:1;letter-spacing:-.02em}
.nl-stats span{font-size:14.5px;color:var(--ink-2);display:block;margin-top:8px}

/* ---------- цели (плитки) ---------- */
.nl-goals .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.nl-goal{position:relative;border-radius:var(--r);overflow:hidden;aspect-ratio:3/4;display:grid;align-content:end;padding:22px;text-decoration:none;color:var(--ink);isolation:isolate;cursor:pointer;border:0;text-align:left;font:inherit}
.nl-goal img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.nl-goal:hover img{transform:scale(1.05)}
.nl-goal::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(250,250,248,0) 35%,rgba(250,250,248,.96) 72%)}
.nl-goal.sky{background:var(--sky)}.nl-goal.sand{background:var(--sand)}.nl-goal.stone{background:var(--stone)}
.nl-goal .tag{position:absolute;top:16px;left:16px;font-size:12px;font-weight:600;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.85);backdrop-filter:blur(6px)}
.nl-goal b{font-family:var(--display);font-weight:600;font-size:20px;line-height:1.15;display:block;letter-spacing:-.02em}
.nl-goal span{font-size:14px;color:var(--ink-2);display:block;margin-top:6px}
.nl-goal .go{margin-top:12px;font-size:14px;font-weight:600;color:var(--blue)}

/* ---------- бенто «что внутри» ---------- */
.nl-bento .grid{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:minmax(240px,auto);gap:16px}
.nl-cell{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:26px;display:grid;grid-template-rows:auto 1fr;gap:18px;overflow:hidden;position:relative;transition:transform .25s ease,box-shadow .25s ease}
.nl-cell:hover{transform:translateY(-3px);box-shadow:0 30px 60px -40px rgba(18,20,24,.35)}
.nl-cell h3{font-size:20px}
.nl-cell p{font-size:15px;color:var(--ink-2);margin-top:6px;max-width:34ch}
.nl-cell.c1{grid-column:span 4}.nl-cell.c2{grid-column:span 2}.nl-cell.c3{grid-column:span 2}.nl-cell.c4{grid-column:span 2}.nl-cell.c5{grid-column:span 2}.nl-cell.c6{grid-column:span 3}.nl-cell.c7{grid-column:span 3}
.nl-cell.sky{background:var(--sky);border-color:transparent}.nl-cell.sand{background:var(--sand);border-color:transparent}.nl-cell.stone{background:var(--stone);border-color:transparent}
.nl-cell .viz{align-self:end}

/* виз: недели */
.nl-weeksviz{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;align-items:end;height:120px}
.nl-weeksviz div{position:relative;background:var(--white);border-radius:10px;border:1px solid rgba(47,62,92,.12);display:grid;align-content:end;padding:8px;font-size:11px;font-weight:600;color:var(--ink-2)}
.nl-weeksviz div:nth-child(1){height:34%}.nl-weeksviz div:nth-child(2){height:40%}.nl-weeksviz div:nth-child(3){height:52%}.nl-weeksviz div:nth-child(4){height:58%}
.nl-weeksviz div:nth-child(5){height:70%}.nl-weeksviz div:nth-child(6){height:78%}.nl-weeksviz div:nth-child(7){height:90%}.nl-weeksviz div:nth-child(8){height:100%;background:var(--blue);color:#fff;border-color:transparent}
.nl-weeksviz div::before{content:attr(data-p);position:absolute;top:-22px;left:0;right:0;text-align:center;font-size:10.5px;color:var(--ink-3);font-weight:500;white-space:nowrap}
.nl-weeksviz div:nth-child(8)::before{content:""}

/* виз: чат */
.nl-chat{display:grid;gap:8px}
.nl-chat div{max-width:88%;padding:10px 13px;border-radius:14px;font-size:13.5px;line-height:1.4}
.nl-chat .u{justify-self:end;background:var(--ink);color:#fff;border-bottom-right-radius:4px}
.nl-chat .a{background:var(--white);border:1px solid var(--line);border-bottom-left-radius:4px}
.nl-chat .a b{display:block;font-size:11px;color:var(--blue-3);margin-bottom:3px;text-transform:uppercase;letter-spacing:.06em}

/* виз: техника */
.nl-tech{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.nl-tech figure{margin:0;background:var(--white);border-radius:12px;overflow:hidden;border:1px solid var(--line)}
.nl-tech img{aspect-ratio:4/3;width:100%;object-fit:cover}
.nl-tech figcaption{font-size:12px;font-weight:600;padding:8px 10px}

/* виз: график */
.nl-spark{width:100%;height:120px}
.nl-spark path{fill:none;stroke:var(--blue);stroke-width:2.5;stroke-linecap:round}
.nl-spark .area{fill:url(#nlg);stroke:none}
.nl-spark circle{fill:var(--white);stroke:var(--blue);stroke-width:2.5}
.nl-spark text{font-size:11px;fill:var(--ink-3);font-family:var(--sans)}

/* виз: рецепты */
.nl-recipes{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.nl-recipes img{aspect-ratio:1;width:100%;object-fit:cover;border-radius:12px}

/* виз: календарь */
.nl-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.nl-cal span{aspect-ratio:1;border-radius:9px;background:var(--white);border:1px solid var(--line);display:grid;place-items:center;font-size:12px;font-weight:600;color:var(--ink-3)}
.nl-cal span.on{background:var(--blue);color:#fff;border-color:transparent}
.nl-cal span.skip{background:var(--stone);color:var(--ink-3);text-decoration:line-through}
.nl-cal span.moved{border:2px dashed var(--brass);color:var(--brass)}

/* ---------- AI секция (тёмная) ---------- */
.nl-ai{background:var(--ink);color:#fff;border-radius:calc(var(--r) + 8px);margin-inline:clamp(12px,2vw,24px)}
.nl-ai .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:center}
.nl .nl-ai h2,.nl .nl-ai h2 *{color:#fff!important}.nl .nl-ai h2 em{color:#AFC0EA!important}
.nl-ai h2 em{color:#AFC0EA}
.nl .nl-ai .lead{color:rgba(255,255,255,.72)!important}
.nl .nl-ai .nl-chips{background:transparent!important;display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.nl-ai .nl-chips span{padding:9px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.18);font-size:14px;color:rgba(255,255,255,.85)}
.nl-ai .copy{display:grid;gap:22px;justify-items:start}
.nl .nl-ai .btn.primary{background:#fff!important;color:var(--ink)!important}
.nl .nl-ai .btn.primary:hover{background:#E7EDF8!important}
.nl-ai .nl-demo{background:#171A21;border:1px solid rgba(255,255,255,.08);border-radius:24px;padding:22px;display:grid;gap:12px;box-shadow:0 40px 80px -40px rgba(0,0,0,.7)}
.nl-ai .nl-demo .nl-dh{color:rgba(255,255,255,.6)!important;display:flex;align-items:center;gap:10px;font-size:13px;color:rgba(255,255,255,.6);padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.08)}
.nl-ai .nl-demo .nl-dh i{width:22px;height:22px;border-radius:7px;background:var(--blue-3);display:grid;place-items:center;font-size:11px;font-style:normal;color:#fff}
.nl-ai .nl-demo .nl-dm{max-width:86%;padding:12px 15px;border-radius:16px;font-size:14.5px;line-height:1.45}
.nl-ai .nl-demo .nl-du{justify-self:end;background:#2A2F3A;color:#fff;border-bottom-right-radius:4px}
.nl-ai .nl-demo .nl-da{background:#fff;color:var(--ink);border-bottom-left-radius:4px}
.nl-ai .nl-demo .nl-da b{display:block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--blue-3);margin-bottom:4px}
.nl-ai .nl-demo .nl-din{margin-top:6px;display:flex;align-items:center;justify-content:space-between;background:#0F1116;border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:10px 10px 10px 16px;font-size:13.5px;color:rgba(255,255,255,.45)}
.nl-ai .nl-demo .nl-din i{width:30px;height:30px;border-radius:50%;background:#fff;display:grid;place-items:center;color:var(--ink);font-style:normal;font-size:13px}

/* ---------- программа ---------- */
.nl-program .phases{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}
.nl-phase{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:22px;display:grid;gap:10px;position:relative}
.nl-phase .w{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--blue-3)}
.nl-phase b{font-family:var(--display);font-weight:600;font-size:18px;letter-spacing:-.02em}
.nl-phase p{font-size:14.5px;color:var(--ink-2)}
.nl-phase .bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.nl-phase .bar i{display:block;height:100%;background:var(--blue)}
.nl-phase:nth-child(1) .bar i{width:25%}.nl-phase:nth-child(2) .bar i{width:50%}.nl-phase:nth-child(3) .bar i{width:75%}.nl-phase:nth-child(4) .bar i{width:100%}
.nl-phase.m::after{content:"замер";position:absolute;top:18px;right:18px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--brass);background:var(--sand);padding:5px 9px;border-radius:999px}
.nl-offer{background:var(--white);border:1px solid var(--line);border-radius:var(--r);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;padding:32px 36px;align-items:center}
.nl-offer ul{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px 28px}
.nl-offer li{display:grid;grid-template-columns:22px 1fr;gap:10px;font-size:15.5px;color:var(--ink-2)}
.nl-offer li::before{content:"✓";color:var(--blue-3);font-weight:700}
.nl-offer .cost{text-align:right;display:grid;gap:8px;justify-items:end;background:transparent!important;box-shadow:none!important;padding:0!important;border:0!important}
.nl-offer .cost b{font-family:var(--display);font-weight:600;font-size:44px;line-height:1;letter-spacing:-.03em}
.nl-offer .cost span{font-size:14px;color:var(--ink-3)}
.nl-offer .cost em{font-style:normal;font-size:14px;color:var(--brass);font-weight:600}

/* ---------- шаги ---------- */
.nl-how .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.nl-step{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:26px;display:grid;gap:16px}
.nl-step .n{width:36px;height:36px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-family:var(--display);font-weight:600;font-size:14px}
.nl-step p{font-size:15.5px;color:var(--ink-2)}
.nl-step .shot{background:var(--stone);border-radius:14px;padding:14px;display:grid;gap:8px;font-size:13px}
.nl-step .shot .q{background:var(--white);border-radius:10px;padding:10px 12px;font-weight:500}
.nl-step .shot .opts{display:flex;gap:6px;flex-wrap:wrap}
.nl-step .shot .opts span{padding:6px 10px;border-radius:999px;background:var(--white);border:1px solid var(--line);font-size:12px}
.nl-step .shot .opts span.on{background:var(--blue);color:#fff;border-color:transparent}

/* ---------- отзывы ---------- */
.nl-reviews{background:var(--ink);color:#fff;border-radius:calc(var(--r) + 8px);margin-inline:clamp(12px,2vw,24px)}
.nl .nl-reviews h2{color:#fff!important}.nl .nl-review .who b,.nl .nl-review blockquote{color:#fff!important}
.nl-reviews .sec-head p{color:rgba(255,255,255,.6)}
.nl-reviews .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.nl-review{background:#171A21;border:1px solid rgba(255,255,255,.08);border-radius:var(--r);padding:26px;display:grid;gap:16px;align-content:start}
.nl-review .stars{color:var(--brass);letter-spacing:2px;font-size:14px}
.nl-review blockquote{margin:0;font-size:16.5px;line-height:1.5;color:rgba(255,255,255,.9)}
.nl-review .who{display:flex;align-items:center;gap:12px}
.nl-review .who i{width:38px;height:38px;border-radius:50%;background:var(--sand);display:grid;place-items:center;color:var(--ink);font-style:normal;font-weight:700;font-size:14px}
.nl-review .who b{display:block;font-size:14.5px}
.nl-review .who span{font-size:12.5px;color:rgba(255,255,255,.55)}
.nl-review .sample{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--brass);border:1px solid rgba(176,143,92,.4);border-radius:999px;padding:5px 9px;justify-self:start}

/* ---------- цена ---------- */
.nl-price .grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;max-width:920px;margin-inline:auto}
.nl-plan{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:32px;display:grid;gap:18px;align-content:start}
.nl-plan.hot{border-color:var(--ink);box-shadow:0 30px 60px -40px rgba(18,20,24,.35)}
.nl-plan .top{display:flex;justify-content:space-between;align-items:center}
.nl-plan .badge{font-size:12px;font-weight:700;padding:6px 10px;border-radius:999px;background:var(--sand);color:var(--brass)}
.nl-plan h3{font-size:24px}
.nl-plan .amount{display:flex;align-items:baseline;gap:10px}
.nl-plan .amount b{font-family:var(--display);font-weight:600;font-size:48px;line-height:1;letter-spacing:-.03em}
.nl-plan .amount span{font-size:14px;color:var(--ink-3)}
.nl-plan .anchor{font-size:14.5px;color:var(--brass);font-weight:600;margin-top:-6px}
.nl-plan ul{list-style:none;margin:0;padding:18px 0 0;border-top:1px solid var(--line);display:grid;gap:10px}
.nl-plan li{display:grid;grid-template-columns:22px 1fr;gap:10px;font-size:15px;color:var(--ink-2)}
.nl-plan li::before{content:"✓";color:var(--blue-3);font-weight:700}
.nl-plan .btn{justify-self:stretch;margin-top:6px}
.nl-price .free{max-width:920px;margin:16px auto 0;background:var(--sky);border-radius:var(--r);padding:20px 26px;display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;font-size:15.5px;color:var(--blue-2)}
.nl-price .free b{font-family:var(--display);font-weight:600;font-size:20px;white-space:nowrap}

/* ---------- вопросы ---------- */
.nl-faq .list{max-width:860px;margin-inline:auto;display:grid;gap:10px}
.nl-faq details{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:0 24px}
.nl-faq details[open]{border-color:var(--line-2)}
.nl-faq summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr 32px;gap:16px;align-items:center;padding:20px 0;font-weight:600;font-size:17px}
.nl-faq summary::-webkit-details-marker{display:none}
.nl-faq summary i{width:32px;height:32px;border-radius:50%;background:var(--stone);display:grid;place-items:center;font-style:normal;font-size:18px;transition:transform .2s ease}
.nl-faq details[open] summary i{transform:rotate(45deg)}
.nl-faq details p{padding:0 0 22px;color:var(--ink-2);font-size:15.5px;line-height:1.55;max-width:62ch}

/* ---------- финал + футер ---------- */
.nl-final .box{background:var(--blue);color:#fff;border-radius:calc(var(--r) + 8px);padding:clamp(40px,6vw,80px);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:center;position:relative;overflow:hidden}
.nl-final .box::after{content:"";position:absolute;right:-10%;top:-40%;width:50%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.14),transparent 70%)}
.nl .nl-final h2{color:#fff!important;max-width:16ch}
.nl .nl-final p{color:rgba(255,255,255,.78)!important;margin-top:12px;max-width:44ch}
.nl .nl-final .btn.primary{background:#fff!important;color:var(--ink)!important;position:relative}
.nl .nl-final .btn.primary:hover{background:var(--sky)!important}
.nl-foot{padding-block:28px 40px}
.nl-foot .wrap{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;font-size:14px;color:var(--ink-3)}
.nl-foot .links{display:flex;gap:22px;flex-wrap:wrap}
.nl-foot button,.nl-foot a{background:none;border:0;padding:0;font:inherit;color:var(--ink-2);cursor:pointer;text-decoration:none}
.nl-foot button:hover,.nl-foot a:hover{color:var(--ink)}

/* ---------- движение ---------- */
@media (prefers-reduced-motion:no-preference){
  .nl-hero .copy > *{animation:nl-in .7s cubic-bezier(.2,.7,.2,1) both}
  .nl-hero .copy > :nth-child(2){animation-delay:.08s}.nl-hero .copy > :nth-child(3){animation-delay:.16s}.nl-hero .copy > :nth-child(4){animation-delay:.24s}.nl-hero .copy > :nth-child(5){animation-delay:.32s}
  .nl-phone{animation:nl-in .9s .2s cubic-bezier(.2,.7,.2,1) both}
  .nl-float{animation:nl-in .8s .6s cubic-bezier(.2,.7,.2,1) both,nl-float 6s 1.4s ease-in-out infinite}
  .nl-float.measure{animation-delay:.75s,1.9s}
  .nl-float.tech{animation-delay:.9s,2.3s}
}
@keyframes nl-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes nl-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}

/* ---------- адаптив ---------- */
@media (max-width:1080px){
  .nl-bento .grid{grid-template-columns:repeat(2,1fr)}
  .nl-cell.c1,.nl-cell.c2,.nl-cell.c3,.nl-cell.c4,.nl-cell.c5,.nl-cell.c6,.nl-cell.c7{grid-column:span 1}
  .nl-cell.c1{grid-column:span 2}
  .nl-goals .grid,.nl-stats .wrap > div{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nl-stats article:nth-child(2){border-right:0}.nl-stats article:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .nl-program .phases{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:900px){
  .nl-hero .wrap,.nl-ai .wrap{grid-template-columns:1fr}
  .nl-stage{min-height:0;padding:40px 0 20px}
  .nl-float.ai{left:0;top:10px}.nl-float.measure{right:0;bottom:30px}.nl-float.tech{display:none}
  .nl-how .grid,.nl-reviews .grid{grid-template-columns:1fr}
  .nl-offer{grid-template-columns:1fr}.nl-offer .cost{text-align:left;justify-items:start}
  .nl-nav nav{display:none}
  .nl-final .box{grid-template-columns:1fr}
}
@media (max-width:600px){
  .nl{font-size:17px}
  .nl-stats article{padding:18px 16px}.nl-stats b{font-size:24px}.nl-stats span{font-size:13px}
  .nl-weeksviz div::before{display:none}.nl-weeksviz{height:90px}
  .nl-bento .grid{grid-template-columns:1fr}.nl-cell.c1{grid-column:span 1}
  .nl-goals .grid{grid-template-columns:1fr 1fr;gap:10px}.nl-goal{padding:14px;aspect-ratio:3/4}.nl-goal b{font-size:16px}.nl-goal span{display:none}
  .nl-price .grid,.nl-program .phases{grid-template-columns:1fr}
  .nl-offer ul{grid-template-columns:1fr}
  .nl-phone{width:280px}
  .nl-float{width:190px;padding:12px}
  .nl-nav .login{display:none}
  .nl-hero .proof{gap:18px}
  .nl-price .free{grid-template-columns:1fr}
}

/* ============================================================
   Кабинет (вне .nl): логотип и виджет после перекраски
   ============================================================ */
.fp-brand-v72 img,.sidebar .brand img{display:none!important}
.sidebar .brand.fp-brand-v72::before{content:"FitAI";display:block;font-family:"Unbounded","Manrope",sans-serif;font-weight:700;font-size:22px;letter-spacing:-.03em;line-height:1;color:#121418}
.sidebar .fp-sidebar-upgrade-v71,.sidebar .fai112-upgrade-card{background:#E7EDF8!important;border:1px solid #D5DDEC!important;box-shadow:none!important}
.sidebar .fp-sidebar-upgrade-v71 b{color:#121418!important}
.sidebar .fp-sidebar-upgrade-v71 p{color:#4B5059!important}
.sidebar .fp-sidebar-upgrade-v71 .fai112-upgrade-link{color:#2F3E5C!important}
.sidebar .fp-sidebar-upgrade-icon-v71{background:#2F3E5C!important;color:#fff!important}

/* ============================================================
   СЛОЙ ЧИТАЕМОСТИ — идёт последним, чтобы победить кабинет.
   Кабинет вешает html[data-theme="light"] p/h/.btn/table {…!important}.
   Здесь возвращаем корректные цвета по поверхностям.
   ============================================================ */
/* светлые поверхности: тело абзацев — тёмно-серый, не блёклый */
.nl p{color:var(--ink-2)!important}
.nl li,.nl summary,.nl figcaption,.nl blockquote{color:var(--ink-2)}
.nl h1,.nl h2,.nl h3{color:var(--ink)!important}
.nl h1 em,.nl h2 em{color:var(--blue-3)!important}

/* мелкая латунь на светлом — тёмный оттенок */
.nl-plan .anchor,.nl-offer .cost em,.nl-phase.m::after,.nl-cal span.moved{color:var(--brass-ink)!important}
.nl-cal span.moved{border-color:var(--brass-ink)}

/* бейдж «Живой человек» — синий чип с белым текстом вместо блёклой латуни */
.nl-plan .badge{background:var(--blue)!important;color:#fff!important}
.nl-phase.m::after{background:var(--sand)!important}

/* календарь: пропуски и обычные дни читаемы */
.nl-cal span{color:var(--ink-2)!important}
.nl-cal span.skip{color:var(--ink-3)!important;background:var(--stone)!important}
.nl-cal span.on{color:#fff!important;background:var(--blue)!important}

/* стрелки в кнопках наследуют цвет кнопки, а не серый кабинета */
.nl .btn .arrow{color:inherit!important}

/* тёмные поверхности: возвращаем светлый текст поверх слоя выше */
.nl-ai p,.nl-ai li,.nl-ai .lead,.nl-ai .k{color:rgba(255,255,255,.74)!important}
.nl-ai h2{color:#fff!important}
.nl-ai .nl-demo .nl-da,.nl-ai .nl-demo .nl-da *{color:var(--ink)!important}
.nl-ai .nl-demo .nl-da b{color:var(--blue-3)!important}
.nl-reviews h2,.nl-reviews .sec-head p{color:#fff!important}
.nl-reviews .sec-head p{color:rgba(255,255,255,.66)!important}
.nl-review blockquote{color:rgba(255,255,255,.94)!important}
.nl-review .who b{color:#fff!important}
.nl-review .who span{color:rgba(255,255,255,.6)!important}
.nl-review .sample{color:#D9BC8A!important}
.nl-final h2{color:#fff!important}
.nl-final p{color:rgba(255,255,255,.82)!important}

/* добивка: победить более специфичный html[data-theme=light] p (0,1,2) */
.nl-bento .nl-cell p,.nl-program .nl-phase p,.nl-how .nl-step p,.nl-price .nl-plan p,.nl-program .nl-offer p,.nl-goals .nl-goal span{color:var(--ink-2)!important}
/* кабинет насильно красит любой <footer> в тёмное — возвращаем бумагу */
.nl-foot{background:var(--paper)!important}
.nl-foot button,.nl-foot a,.nl-foot span{color:var(--ink-2)!important}
.nl-foot .wrap > span{color:var(--ink-3)!important}

/* ============================================================
   Интерактивный опросник + гарантия (v2 доработка блоков)
   ============================================================ */
.nl-quiz .wrap{}
.nl-quiz-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(24px,4vw,56px);align-items:center;
  background:var(--white);border:1px solid var(--line);border-radius:calc(var(--r) + 6px);padding:clamp(24px,3vw,44px);
  box-shadow:0 30px 70px -50px rgba(18,20,24,.4)}

.nl-plan-card{background:var(--blue);border-radius:var(--r);padding:28px;display:grid;gap:16px;color:#fff;box-shadow:0 30px 60px -34px rgba(47,62,92,.7)}
.nl-plan-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.nl-plan-tag{font-size:12.5px;font-weight:600;background:rgba(255,255,255,.14);padding:6px 12px;border-radius:999px}
.nl-plan-ready{font-size:12.5px;font-weight:600;color:#CFE0FF}
.nl-plan-card h3{font-family:var(--display);font-weight:600;font-size:28px;color:#fff!important;line-height:1.1;letter-spacing:-.02em}
.nl-plan-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;border-top:1px solid rgba(255,255,255,.14);border-bottom:1px solid rgba(255,255,255,.14);padding:16px 0}
.nl-plan-stats > div{display:grid;gap:2px}
.nl-plan-stats b{font-family:var(--display);font-weight:600;font-size:26px;line-height:1}
.nl-plan-stats span{font-size:12.5px;color:rgba(255,255,255,.7)}
.nl-plan-track{height:8px;border-radius:99px;background:rgba(255,255,255,.16);overflow:hidden}
.nl-plan-fill{display:block;height:100%;background:linear-gradient(90deg,#8FA6E0,#CFE0FF);border-radius:99px;transition:width .4s cubic-bezier(.2,.7,.2,1)}
.nl-plan-note{font-size:14.5px;color:rgba(255,255,255,.82)!important;min-height:2.4em}
.nl-plan-card .btn.btn{justify-self:stretch;background:#fff!important;color:var(--ink)!important;border-color:transparent!important}
.nl-plan-card .btn:hover{background:var(--sky)!important}
.nl-plan-fine{font-size:12.5px;color:rgba(255,255,255,.6);text-align:center}


@media (max-width:900px){
  .nl-quiz-grid{grid-template-columns:1fr;gap:24px}
}

/* планово-карточный текст — победить кабинетные !important на h3/p */
.nl-quiz .nl-plan-card h3,
.nl-quiz .nl-plan-card .nl-plan-stats b{color:#fff!important}
.nl-quiz .nl-plan-card .nl-plan-note{color:rgba(255,255,255,.85)!important}
.nl-quiz .nl-plan-card .btn.btn{background:#fff!important;color:var(--ink)!important;border-color:transparent!important}

/* ============================================================
   v3: онбординг-демо, интерактивный AI, два формата, доработки
   ============================================================ */

/* ---------- 2. пятая плитка «+16 программ» ---------- */
.nl-goals .grid{grid-template-columns:repeat(4,minmax(0,1fr)) 150px}
.nl-goal-more{
  border:1px dashed var(--line-2);border-radius:var(--r);background:var(--white);
  display:grid;align-content:center;justify-items:start;gap:10px;padding:22px 18px;
  cursor:pointer;text-align:left;font:inherit;transition:border-color .2s ease,background .2s ease;
}
.nl-goal-more:hover{border-color:var(--blue);background:var(--sky)}
.nl-goal-more b{font-family:var(--display);font-weight:600;font-size:30px;line-height:1;letter-spacing:-.03em;color:var(--blue)!important}
.nl-goal-more span{font-size:13px;line-height:1.4;color:var(--ink-2)!important}
.nl-goal-more i{font-style:normal;font-size:13.5px;font-weight:600;color:var(--blue)!important}

/* ---------- 1+3. онбординг-демо ---------- */
.nl-ob-card{
  background:var(--white);border:1px solid var(--line);border-radius:var(--r);
  padding:28px;display:grid;gap:14px;align-content:start;min-height:360px;
}
.nl-ob-prog{height:6px;border-radius:99px;background:var(--stone);overflow:hidden;margin-bottom:4px}
.nl-ob-prog i{display:block;height:100%;background:var(--blue);border-radius:99px;transition:width .35s cubic-bezier(.2,.7,.2,1)}
.nl-ob-step{font-size:12.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)!important}
.nl-ob-q{font-family:var(--display);font-weight:600;font-size:23px;line-height:1.2;letter-spacing:-.02em;color:var(--ink)!important}
.nl-ob-opts{display:grid;gap:8px;margin-top:2px}
.nl-ob-opt{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:15px 18px;border-radius:14px;border:1px solid var(--line-2);background:var(--white);
  font:500 15.5px var(--sans);color:var(--ink)!important;cursor:pointer;text-align:left;
  transition:border-color .15s ease,background .15s ease,transform .15s ease;
}
.nl-ob-opt i{font-style:normal;color:var(--ink-3)!important;transition:transform .15s ease}
.nl-ob-opt:hover{border-color:var(--blue);background:var(--sky);transform:translateX(2px)}
.nl-ob-opt:hover i{transform:translateX(3px);color:var(--blue)!important}
.nl-ob-opt.on{background:var(--blue)!important;border-color:var(--blue);color:#fff!important}
.nl-ob-opt.on i{color:#fff!important}
.nl-ob-opt:focus-visible{outline:2px solid var(--blue-3);outline-offset:2px}
.nl-ob-back,.nl-ob-reset{
  justify-self:start;background:none;border:0;padding:6px 0;cursor:pointer;
  font:500 14px var(--sans);color:var(--ink-3)!important;
}
.nl-ob-back:hover,.nl-ob-reset:hover{color:var(--ink)!important}
.nl-ob-done{display:grid;gap:10px;align-content:center;min-height:240px}
.nl-ob-done b{font-family:var(--display);font-weight:600;font-size:26px;letter-spacing:-.02em;color:var(--ink)!important}
.nl-ob-done p{font-size:15.5px;color:var(--ink-2)!important;max-width:38ch}

/* правая панель: чипы ответов и прогноз */
.nl-plan-chips{display:flex;flex-wrap:wrap;gap:6px}
.nl-plan-chips span{
  font-size:12.5px;padding:6px 11px;border-radius:999px;
  background:rgba(255,255,255,.14);color:rgba(255,255,255,.92)!important;
}
.nl-plan-forecast{
  display:grid;gap:3px;padding:14px 16px;border-radius:14px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);
}
.nl-plan-forecast b{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.6)!important;font-weight:600}
.nl-plan-forecast span{font-family:var(--display);font-weight:600;font-size:19px;letter-spacing:-.02em;color:#fff!important}
.nl-plan-forecast small{font-size:11.5px;color:rgba(255,255,255,.55)!important}

/* ---------- 4. календарь: повтор недели ---------- */
.nl-cal span.back{border:2px dashed var(--brass);background:var(--white)}
.nl-cal-legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;font-size:12px;color:var(--ink-2)!important}
.nl-cal-legend i{width:14px;height:14px;border-radius:5px;display:inline-block;margin-left:8px}
.nl-cal-legend i:first-child{margin-left:0}
.nl-cal-legend i.skip{background:var(--stone);border:1px solid var(--line-2)}
.nl-cal-legend i.back{border:2px dashed var(--brass);background:var(--white)}
.nl-cal-legend i.on{background:var(--blue)}

/* ---------- 5. интерактивный AI ---------- */
.nl-ai-hint{font-size:14.5px;color:rgba(255,255,255,.75)!important;margin-top:-6px}
.nl-ai .nl-chips button{
  padding:9px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.22);
  background:transparent;font:500 14px var(--sans);color:rgba(255,255,255,.9)!important;
  cursor:pointer;transition:background .15s ease,border-color .15s ease,opacity .15s ease;
}
.nl-ai .nl-chips button:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.4)}
.nl-ai .nl-chips button.used{opacity:.32;cursor:default}
.nl-ai .nl-chips button:focus-visible{outline:2px solid #AFC0EA;outline-offset:2px}
.nl-dlog{display:grid;gap:12px;max-height:330px;overflow-y:auto;padding-right:4px;scroll-behavior:smooth}
.nl-dots{display:inline-flex;gap:4px;align-items:center;height:18px}
.nl-dots i{width:6px;height:6px;border-radius:50%;background:var(--ink-3);display:block;animation:nl-blink 1.2s infinite}
.nl-dots i:nth-child(2){animation-delay:.18s}
.nl-dots i:nth-child(3){animation-delay:.36s}
@keyframes nl-blink{0%,60%,100%{opacity:.25}30%{opacity:1}}

/* ---------- 6. чипы в шагах: по высоте контента ---------- */
.nl-step .shot .opts{align-items:center}
.nl-step .shot .opts span{line-height:1.35}

/* ---------- 7. фото в отзывах ---------- */
.nl-review .who img{
  width:46px;height:46px;border-radius:50%;object-fit:cover;flex:none;
  border:1px solid rgba(255,255,255,.18);
}

/* ---------- 9. два формата ---------- */
.nl-fmt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:980px;margin-inline:auto}
.nl-fmt{
  background:var(--white);border:1px solid var(--line);border-radius:var(--r);
  padding:30px;display:grid;gap:16px;align-content:start;
}
.nl-fmt.hot{border-color:var(--ink);box-shadow:0 30px 60px -40px rgba(18,20,24,.35)}
.nl-fmt-top{display:grid;gap:8px}
.nl-fmt-k{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--blue-3)!important}
.nl-fmt h3{font-size:25px}
.nl-fmt-who{font-size:15px;color:var(--ink-2)!important;padding-bottom:14px;border-bottom:1px solid var(--line)}
.nl-fmt ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.nl-fmt li{display:grid;grid-template-columns:22px 1fr;gap:10px;font-size:15px;color:var(--ink-2)!important}
.nl-fmt li::before{content:"✓";color:var(--blue-3);font-weight:700}
.nl-fmt-foot{display:flex;align-items:baseline;gap:10px;padding-top:6px}
.nl-fmt-foot b{font-family:var(--display);font-weight:600;font-size:32px;line-height:1;letter-spacing:-.03em;color:var(--ink)!important}
.nl-fmt-foot span{font-size:13.5px;color:var(--ink-3)!important}
.nl-fmt .btn{justify-self:stretch}
.nl-fmt-extra{text-align:center;margin-top:22px;font-size:14.5px;color:var(--ink-2)!important}
.nl-fmt-extra a{color:var(--blue)!important;text-decoration:underline;text-underline-offset:3px}

/* ---------- адаптив новых блоков ---------- */
@media (max-width:1080px){
  .nl-goals .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nl-goal-more{grid-column:span 2;justify-items:center;text-align:center}
}
@media (max-width:900px){
  .nl-fmt-grid{grid-template-columns:1fr}
  .nl-ob-card{min-height:0}
  .nl-dlog{max-height:none}
}
@media (max-width:600px){
  .nl-goals .grid{gap:10px}
  .nl-goal-more{grid-column:span 2;padding:18px}
  .nl-ob-card{padding:20px}
  .nl-ob-q{font-size:20px}
  .nl-ob-opt{padding:13px 15px;font-size:15px}
}

/* кабинет красит всё, где в классе есть "chip"/"pill" — гасим для наших блоков */
.nl.nl .nl-plan-chips,.nl.nl .nl-chips{background:transparent!important;border:0!important}
.nl.nl .nl-plan-chips span{background:rgba(255,255,255,.14)!important;color:#fff!important}

/* кабинет: button:not(…):not(…):not(…){border-color:#15171B!important} (0,3,1).
   Перебиваем тем же весом или выше — иначе рамки чернеют. */
.nl.nl button.nl-ob-opt{border-color:var(--line-2)!important}
.nl.nl button.nl-ob-opt:hover{border-color:var(--blue)!important}
.nl.nl button.nl-ob-opt.on{border-color:var(--blue)!important}
.nl.nl button.nl-goal-more{border-color:var(--line-2)!important}
.nl.nl button.nl-goal-more:hover{border-color:var(--blue)!important}
.nl.nl .nl-ai .nl-chips button{border-color:rgba(255,255,255,.3)!important}
.nl.nl .nl-ai .nl-chips button:hover{border-color:rgba(255,255,255,.55)!important}
.nl.nl .nl-ai .nl-chips button.used{opacity:.4;background:rgba(255,255,255,.06)!important}

/* «+16»: кабинет красит button в белый — задаём цвета явно и с нужным весом */
.nl.nl button.nl-goal-more{color:var(--ink)!important}
.nl.nl button.nl-goal-more b{color:var(--blue)!important}
.nl.nl button.nl-goal-more span{color:var(--ink-2)!important}
.nl.nl button.nl-goal-more i{color:var(--blue)!important}
/* .nl-ai-hint — это <p>, его ловит слой защиты :where(p); нужен вес выше (0,2,0) */
.nl .nl-ai .nl-ai-hint{color:rgba(255,255,255,.75)!important}

/* ============================================================
   v4: онбординг-баннер, программы в 4 колонки, строка «+16»
   ============================================================ */

/* цифры в hero: длинное «~25 мин» не должно ломать строку */
.nl-hero .proof b{white-space:nowrap}

/* полоса цифр: длинная подпись в четвёртой плитке */
.nl-stats span{text-wrap:pretty}

/* программы снова 4 в ряд (пятая плитка убрана) */
.nl-goals .grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.nl-goals-more{
  margin-top:22px;font-size:15.5px;line-height:1.55;color:var(--ink-2)!important;max-width:78ch;
}
.nl-goals-more button{
  background:none;border:0;padding:0;margin-left:4px;cursor:pointer;
  font:600 15.5px var(--sans);color:var(--blue)!important;
  text-decoration:underline;text-underline-offset:3px;
}
.nl-goals-more button:hover{color:var(--blue-2)!important}

/* ---------- онбординг-баннер ---------- */
.nl-onb-box{
  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(28px,5vw,64px);align-items:center;
  background:var(--sky);border-radius:calc(var(--r) + 8px);
  padding:clamp(28px,4vw,56px);
}
.nl-onb-copy{display:grid;gap:18px;justify-items:start}
.nl-onb-copy h2{max-width:18ch}
.nl-onb-copy .lead{max-width:52ch}
.nl-onb-list{display:grid;gap:12px;margin-top:2px}
.nl-onb-list div{display:grid;grid-template-columns:28px 1fr;gap:12px;align-items:start;font-size:15.5px;line-height:1.5}
.nl-onb-list i{
  width:28px;height:28px;border-radius:50%;background:var(--blue);
  display:grid;place-items:center;font-style:normal;font-size:13px;font-weight:700;
  color:#fff!important;
}
.nl-onb-list span{color:var(--ink-2)!important}
.nl-onb-fine{font-size:13.5px;color:var(--ink-3)!important}

.nl-onb-viz{display:grid;place-items:center;min-height:300px}
.nl-onb-stack{position:relative;width:min(340px,100%);height:300px}
.nl-onb-c{
  position:absolute;left:0;right:0;background:var(--white);border:1px solid var(--line);
  border-radius:18px;padding:18px 20px;display:grid;gap:8px;
  box-shadow:0 20px 40px -28px rgba(18,20,24,.4);
}
.nl-onb-c span{font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)!important}
.nl-onb-c b{font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:-.02em;color:var(--ink)!important}
.nl-onb-c.c3{top:0;transform:scale(.88) translateY(-6px);opacity:.5}
.nl-onb-c.c2{top:26px;transform:scale(.94);opacity:.75}
.nl-onb-c.c1{top:58px;z-index:2}
.nl-onb-bar{height:5px;border-radius:99px;background:var(--stone);overflow:hidden;margin-bottom:4px}
.nl-onb-bar i{display:block;height:100%;width:17%;background:var(--blue);border-radius:99px}
.nl-onb-opts{display:grid;gap:7px;margin-top:4px}
.nl-onb-opts em{
  font-style:normal;font-size:13.5px;padding:10px 13px;border-radius:11px;
  border:1px solid var(--line-2);color:var(--ink-2)!important;
}
.nl-onb-opts em.on{background:var(--blue);border-color:var(--blue);color:#fff!important}

@media (max-width:900px){
  .nl-onb-box{grid-template-columns:1fr;gap:32px}
  .nl-goals .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:600px){
  .nl-onb-viz{min-height:270px}
  .nl-onb-stack{height:270px}
  .nl-stats b{font-size:22px}
}

/* полоса цифр: число не переносим, иначе плитки разной высоты */
.nl-stats b{white-space:nowrap;font-size:clamp(24px,2.4vw,36px)}

/* стопка онбординга: задние карточки — просто «листы», без текста */
.nl-onb-stack{min-height:280px;height:auto}
.nl-onb-c.c3{top:0;left:24px;right:24px;height:56px;transform:none;opacity:.45;padding:0}
.nl-onb-c.c2{top:14px;left:12px;right:12px;height:56px;transform:none;opacity:.7;padding:0}
.nl-onb-c.c1{position:relative;top:30px;left:0;right:0}

/* на узких экранах плитка цифр ýже — уменьшаем число, иначе nowrap обрезает */
@media (max-width:600px){
  .nl-stats b{font-size:20px}
  .nl-stats article{padding:16px 14px}
}

/* ============================================================
   v5: CTA-баннеры вместо блока онбординга
   ============================================================ */
.nl-cta{padding-block:0}
.nl-cta-box{
  display:flex;justify-content:space-between;align-items:center;gap:28px;flex-wrap:wrap;
  background:var(--sky);border-radius:calc(var(--r) + 4px);padding:clamp(24px,3vw,34px) clamp(22px,3vw,38px);
}
.nl-cta.dark .nl-cta-box{background:var(--ink)}
.nl-cta-copy{display:grid;gap:7px;max-width:64ch}
.nl-cta-copy b{
  font-family:var(--display);font-weight:600;font-size:clamp(20px,2vw,26px);
  letter-spacing:-.02em;line-height:1.15;color:var(--ink)!important;
}
.nl-cta-copy span{font-size:15.5px;line-height:1.5;color:var(--ink-2)!important}
.nl-cta.dark .nl-cta-copy b{color:#fff!important}
.nl-cta.dark .nl-cta-copy span{color:rgba(255,255,255,.72)!important}
.nl-cta.dark .btn.btn.primary{background:#fff!important;color:var(--ink)!important}
.nl-cta.dark .btn.btn.primary:hover{background:var(--sky)!important}
@media (max-width:700px){
  .nl-cta-box{flex-direction:column;align-items:flex-start;gap:20px}
  .nl-cta-box .btn{width:100%}
}

/* ============================================================
   v5: форма входа/регистрации под новый дизайн.
   app.js инжектит <style> с зелёной темой модалки через ID:
   #fai82Auth .fai82-auth-card{...!important} = (1,1,0).
   Поэтому пишем #fai82Auth.fai82-auth ... = (1,2,0) и выше,
   иначе их правила выигрывают по специфичности.
   ============================================================ */
#fai82Auth.fai82-auth{
  position:fixed!important;inset:0!important;z-index:9999!important;
  display:grid!important;place-items:center!important;padding:20px!important;
  background:rgba(18,20,24,.55)!important;backdrop-filter:blur(8px)!important;
  font-family:"Onest","Manrope",system-ui,sans-serif!important;
}
#fai82Auth.fai82-auth .fai82-auth-card{
  position:relative!important;width:min(430px,100%)!important;
  background:#FFFFFF!important;border:1px solid #E6E5E1!important;border-radius:22px!important;
  padding:34px 32px 30px!important;display:grid!important;gap:14px!important;
  box-shadow:0 40px 90px -40px rgba(18,20,24,.5)!important;max-height:92vh;overflow-y:auto;
}
/* зелёный логотип-бегун меняем на словесный знак */
#fai82Auth.fai82-auth .fai82-logo img{display:none!important}
#fai82Auth.fai82-auth .fai82-logo{margin:0 0 2px!important;padding:0!important;background:none!important}
#fai82Auth.fai82-auth .fai82-logo::before{
  content:"FitAI";font-family:"Unbounded","Manrope",sans-serif;font-weight:700;
  font-size:22px;letter-spacing:-.03em;color:#121418;display:block;
}
#fai82Auth.fai82-auth .fai82-x{
  position:absolute!important;top:14px!important;right:14px!important;
  width:34px!important;height:34px!important;border-radius:50%!important;
  background:#F2F1EC!important;border:0!important;color:#4B5059!important;
  font-size:19px!important;line-height:1!important;cursor:pointer!important;
  display:grid!important;place-items:center!important;box-shadow:none!important;min-height:0!important;
}
#fai82Auth.fai82-auth .fai82-x:hover{background:#E6E5E1!important;color:#121418!important}
#fai82Auth.fai82-auth .fai82-auth-copy{display:grid!important;gap:7px!important;margin-bottom:6px!important}
#fai82Auth.fai82-auth .fai82-kicker{
  font-size:12px!important;font-weight:600!important;letter-spacing:.1em!important;
  text-transform:uppercase!important;color:#5C616B!important;background:none!important;
  padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;
  display:block!important;width:auto!important;
}
#fai82Auth.fai82-auth h2{
  font-family:"Unbounded","Manrope",sans-serif!important;font-weight:600!important;
  font-size:30px!important;line-height:1.1!important;letter-spacing:-.02em!important;
  color:#121418!important;margin:0!important;
}
#fai82Auth.fai82-auth .fai82-auth-copy p{font-size:15px!important;line-height:1.5!important;color:#454A53!important;margin:0!important}
#fai82Auth.fai82-auth .fai82-auth-card label{
  display:grid!important;gap:7px!important;
  font-size:13.5px!important;font-weight:600!important;color:#454A53!important;
}
#fai82Auth.fai82-auth .fai82-auth-card input{
  width:100%!important;font:400 15.5px "Onest","Manrope",sans-serif!important;
  padding:14px 16px!important;border-radius:13px!important;min-height:0!important;
  border:1px solid #D2D0CA!important;background:#FFFFFF!important;color:#121418!important;
  box-shadow:none!important;transition:border-color .15s ease,box-shadow .15s ease!important;
}
#fai82Auth.fai82-auth .fai82-auth-card input::placeholder{color:#8B9099!important}
#fai82Auth.fai82-auth .fai82-auth-card input:focus{
  outline:none!important;border-color:#2F3E5C!important;
  box-shadow:0 0 0 3px rgba(47,62,92,.12)!important;
}
#fai82Auth.fai82-auth .fai82-primary{
  width:100%!important;margin-top:6px!important;
  font:600 16px "Onest","Manrope",sans-serif!important;
  padding:16px 24px!important;border-radius:999px!important;border:0!important;min-height:0!important;
  background:#2F3E5C!important;background-image:none!important;color:#FFFFFF!important;cursor:pointer!important;
  box-shadow:none!important;text-transform:none!important;letter-spacing:0!important;
  transition:background .18s ease!important;
}
#fai82Auth.fai82-auth .fai82-primary:hover{background:#1F2B44!important}
#fai82Auth.fai82-auth .fai119-forgot{
  justify-self:center!important;background:none!important;border:0!important;padding:4px!important;
  font:500 14px "Onest",sans-serif!important;color:#5C616B!important;cursor:pointer!important;
  text-decoration:underline!important;text-underline-offset:3px!important;box-shadow:none!important;min-height:0!important;
}
#fai82Auth.fai82-auth .fai119-forgot:hover{color:#121418!important}
#fai82Auth.fai82-auth .fai82-switch{
  text-align:center!important;font-size:14.5px!important;color:#454A53!important;
  padding-top:12px!important;margin-top:4px!important;border-top:1px solid #E6E5E1!important;
}
#fai82Auth.fai82-auth .fai82-switch button{
  background:none!important;border:0!important;padding:0 0 0 6px!important;cursor:pointer!important;
  font:600 14.5px "Onest",sans-serif!important;color:#2F3E5C!important;
  text-decoration:underline!important;text-underline-offset:3px!important;box-shadow:none!important;min-height:0!important;
}
#fai82Auth.fai82-auth .fai82-switch button:hover{color:#1F2B44!important}

/* ============================================================
   v6: отступы полосы цифр, баннер с траекторией, знак «+16»
   ============================================================ */

/* 1. полоса цифр стояла между двумя секциями с padding 120 — слишком воздушно */
.nl-hero{padding-bottom:clamp(24px,3vw,40px)}
.nl-stats{padding-block:0}
.nl-stats + .nl-bento{padding-top:clamp(30px,3.5vw,50px)}

/* 2. баннер: копия слева с крупной кнопкой, справа — траектория */
.nl-cta-box{gap:clamp(24px,4vw,56px);align-items:center}
.nl-cta-copy{display:grid;gap:12px;justify-items:start;max-width:46ch;flex:1 1 320px}
.nl-cta-btn{margin-top:6px;padding:20px 34px!important;font-size:17px!important}
.nl-cta-viz{flex:0 1 340px;display:grid;gap:6px;justify-items:center;min-width:240px}
.nl-traj{width:100%;height:auto;display:block;overflow:visible}
.nl-traj .grid{stroke:rgba(47,62,92,.18);stroke-width:1;stroke-dasharray:3 5}
.nl-traj .area{fill:url(#nltg)}
.nl-traj .line{fill:none;stroke:#2F3E5C;stroke-width:2.5;stroke-linecap:round}
.nl-traj circle{fill:#FFFFFF;stroke:#2F3E5C;stroke-width:2.5}
.nl-traj circle.end{fill:#2F3E5C}
.nl-traj .val{fill:#2F3E5C;font-family:var(--display);font-weight:600;font-size:14px}
.nl-traj .val.mid{fill:#5C616B;font-size:12px}
.nl-traj .lbl{fill:#5C616B;font-family:var(--sans);font-weight:500;font-size:11.5px}
.nl-traj-cap{font-size:12px;color:var(--ink-3)!important}
/* на тёмном баннере линию и подписи осветляем */
.nl-cta.dark .nl-traj .line{stroke:#AFC0EA}
.nl-cta.dark .nl-traj circle{fill:var(--ink);stroke:#AFC0EA}
.nl-cta.dark .nl-traj circle.end{fill:#AFC0EA}
.nl-cta.dark .nl-traj .val{fill:#DCE5FA}
.nl-cta.dark .nl-traj .lbl,.nl-cta.dark .nl-traj-cap{fill:rgba(255,255,255,.6);color:rgba(255,255,255,.6)!important}

/* 3. знак «+16» справа от заголовка — как возрастной рейтинг */
.nl-goals-head{display:flex;justify-content:space-between;align-items:flex-start;gap:32px}
.nl-goals-head .sec-head{margin-bottom:clamp(36px,4vw,56px)}
.nl-goals-badge{
  flex:none;display:grid;gap:3px;justify-items:center;cursor:pointer;
  padding:14px 18px 12px;border-radius:14px;background:transparent;
  border:2px solid var(--ink);transition:border-color .18s ease,background .18s ease;
}
.nl-goals-badge b{font-family:var(--display);font-weight:700;font-size:26px;line-height:1.2;letter-spacing:-.03em;color:var(--ink)!important}
.nl-goals-badge span{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)!important}
.nl-goals-badge:hover{background:var(--sky)}
.nl.nl button.nl-goals-badge{border-color:var(--ink)!important}
.nl.nl button.nl-goals-badge:hover{border-color:var(--blue)!important}

@media (max-width:820px){
  .nl-goals-head{flex-direction:row;align-items:center}
  .nl-goals-badge{padding:10px 14px}
  .nl-goals-badge b{font-size:22px}
}
/* v5. На телефоне .nl-goals-head оставался двухколоночным: заголовок
   сжимался до ~199 px и рвался на шесть строк, а плашка «+16 программ»
   вылезала за правый край контейнера (366 против 358). Складываем в
   столбец и ставим плашку под текст. */
@media (max-width:640px){
  .nl .nl-goals-head{flex-direction:column!important;align-items:flex-start!important;gap:0!important}
  .nl .nl-goals-head .sec-head{width:100%!important;margin-bottom:14px!important}
  .nl .nl-goals-badge{
    flex-direction:row!important;align-items:baseline!important;gap:7px!important;
    align-self:flex-start!important;margin-bottom:clamp(28px,6vw,40px)!important;
    padding:9px 14px!important;
  }
  .nl .nl-goals-badge b{font-size:19px!important}
  .nl .nl-goals-badge span{font-size:10.5px!important}
}
@media (max-width:700px){
  .nl-cta-viz{order:-1;width:100%;flex-basis:auto}
  .nl-cta-btn{width:100%}
}
/* «+16» — это button, кабинет красит его текст белым; задаём явно */
.nl.nl button.nl-goals-badge{color:var(--ink)!important}
.nl.nl button.nl-goals-badge b{color:var(--ink)!important}
.nl.nl button.nl-goals-badge span{color:var(--ink-2)!important}

/* ============================================================
   v5 — отзывы: портреты вместо кадров из карточек курсов.
   Раньше в .who подставлялись фото из media/course-cards с
   ручным object-position — оттуда брались случайные куски
   чужих кадров. Теперь отдельные портреты 320×320.
   ============================================================ */
.nl .nl-review .who img{
  width:52px;height:52px;flex:0 0 52px;
  border-radius:50%;object-fit:cover;object-position:50% 30%;
  border:1px solid rgba(255,255,255,.14);
}
/* пометка о том, что отзывы пока иллюстративные */
.nl .nl-reviews .nl-rev-note{
  margin:10px 0 0;max-width:62ch;
  color:rgba(255,255,255,.52)!important;
  font-size:13px;line-height:1.5;
}
@media (max-width:700px){
  .nl .nl-review{padding:20px!important}
  .nl .nl-review blockquote{font-size:15.5px!important}
  .nl .nl-review .who img{width:46px;height:46px;flex:0 0 46px}
}

/* ============================================================
   v5 — мобильные правки лендинга по итогам прохода на 390 px.
   ============================================================ */
@media (max-width:640px){
  /* «Первая тренировка — 1 ₽»: у .free стоял white-space:nowrap,
     строка в 20 px занимала 319 px при доступных 274 — знак ₽
     уезжал за правый край экрана. */
  .nl .nl-price .free{padding:18px 18px!important}
  .nl .nl-price .free b{
    white-space:normal!important;
    font-size:17.5px!important;line-height:1.25!important;
  }

  /* заголовок героя: «— дома» висело отдельной строкой */
  .nl .nl-hero h1{font-size:clamp(30px,8.6vw,38px)!important;line-height:1.08!important;letter-spacing:-.03em!important}

  /* плашки в шапке: длинная строка «AI-программа · 8 недель · по 25 минут»
     не помещалась в 362 px */
  .nl .nl-hero .pill{
    white-space:normal!important;line-height:1.35!important;
    padding:9px 14px!important;font-size:12px!important;
  }

  /* Финальный блок: padding был clamp(40px,6vw,80px), то есть на
     телефоне честные 40 px с каждой стороны. От 326 px ширины на
     текст оставалось 246 — каждая строка рвалась. */
  .nl .nl-final .box{padding:26px 20px!important;gap:20px!important}

  /* То же самое у тёмного баннера и карточек цены */
  .nl .nl-cta-box{padding:24px 20px!important}
  .nl .nl-price .nl-plan{padding:24px 20px!important}
}
/* подпись под именем может уйти на две строки — портрет держим сверху */
@media (max-width:700px){
  .nl .nl-review .who{align-items:flex-start!important}
  .nl .nl-review .who span{line-height:1.35!important}
}
