/* ProFit 2 · прототип. Поверх ds.css. Одна светлая тема (решение владельца). */
html,body{height:100%}
body{margin:0;background:#e9e9eb;font-family:var(--ds-font);color:var(--ds-ink)}
.stage{min-height:100%;display:flex;align-items:center;justify-content:center;gap:40px;padding:20px 16px;box-sizing:border-box}
.stage-note{max-width:300px;display:flex;flex-direction:column;gap:12px;color:var(--ds-muted);font:var(--ds-t-small)}
.stage-note h1{font:600 26px/1.15 var(--ds-font);color:var(--ds-ink);margin:0;letter-spacing:-.02em}
.stage-note b{color:var(--ds-ink);font-weight:600}
.stage-note button{align-self:flex-start}
@media (max-width:900px){.stage-note{display:none}}

.phone{width:390px;height:min(844px,calc(100vh - 40px));background:var(--ds-bg);border-radius:44px;overflow:hidden;position:relative;
  box-shadow:0 0 0 1px rgba(0,0,0,.06),0 30px 60px -30px rgba(0,0,0,.35);display:flex;flex-direction:column;isolation:isolate}
@media (max-width:500px){.stage{padding:0}.phone{width:100%;height:100vh;height:100dvh;border-radius:0;box-shadow:none}}

.view{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}
.scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.scroll::-webkit-scrollbar{display:none}
.pad{padding:16px var(--ds-gutter) 24px;display:flex;flex-direction:column;gap:var(--ds-gap)}
.pad>*{flex:none}
.with-tab .pad{padding-bottom:110px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px var(--ds-gutter) 4px;flex:none}
.topbar .t{font:600 17px/1.2 var(--ds-font)}
.ds-tab{position:absolute;bottom:16px}
.fadein{animation:fadein .22s ease both}
@keyframes fadein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.push{animation:push .26s cubic-bezier(.2,.8,.2,1) both}
@keyframes push{from{opacity:.4;transform:translateX(28px)}to{opacity:1;transform:none}}

/* сегодня */
.ring-card{display:flex;align-items:center;gap:18px}
.macros{flex:1;display:flex;flex-direction:column;gap:10px;min-width:0}
.mac .t{display:flex;justify-content:space-between;font:var(--ds-t-small)}
.mac .t span:last-child{color:var(--ds-muted)}
.mac .ds-bar{margin-top:5px}
.quick{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.qcard{background:var(--ds-surf);border-radius:var(--ds-r-card);padding:14px;display:flex;flex-direction:column;gap:10px;border:0;text-align:left;color:var(--ds-ink);font:inherit}
.qcard .row{display:flex;align-items:center;gap:10px}
.moods{display:flex;gap:6px}
.moods button{flex:1;height:36px;border-radius:12px;border:0;background:var(--ds-bg);color:var(--ds-muted);display:grid;place-items:center}
.moods button[aria-pressed="true"]{background:var(--ds-graph);color:#fff}
.wcard{display:flex;align-items:center;gap:14px}
.wcard .main{flex:1;min-width:0}
.done-badge{display:inline-flex;align-items:center;gap:6px;font:var(--ds-t-small);color:var(--ds-muted)}
.actionbar{position:absolute;left:16px;right:16px;bottom:94px;display:flex;gap:10px;z-index:20}
.actionbar .ds-btn{flex:1;box-shadow:0 10px 24px -12px rgba(0,0,0,.5)}
.actionbar .ds-round{width:54px;height:54px;background:var(--ds-bg);box-shadow:0 0 0 1px var(--ds-line),0 10px 24px -14px rgba(0,0,0,.4)}
.with-action .pad{padding-bottom:180px}

/* шит снизу */
.scrim{position:absolute;inset:0;background:rgba(20,20,22,.32);z-index:60;animation:fade .2s both}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet{position:absolute;left:0;right:0;bottom:0;z-index:61;background:var(--ds-bg);border-radius:28px 28px 0 0;max-height:92%;display:flex;flex-direction:column;animation:up .28s cubic-bezier(.2,.8,.2,1) both}
@keyframes up{from{transform:translateY(40%);opacity:.3}to{transform:none;opacity:1}}
.sheet .grab{width:40px;height:5px;border-radius:3px;background:var(--ds-surf2);margin:8px auto 0;flex:none}
.sheet .pad{padding-bottom:28px}
.sheet-h{display:flex;align-items:center;justify-content:space-between;gap:12px}

/* запись голосом */
.rec{display:flex;flex-direction:column;align-items:center;gap:18px;padding:18px 0 6px;text-align:center}
.rec .big-mic{width:96px;height:96px;border-radius:50%;background:var(--ds-graph);color:#fff;display:grid;place-items:center;border:0;position:relative}
.rec .big-mic::before{content:"";position:absolute;inset:-10px;border-radius:50%;border:2px solid var(--ds-graph);opacity:.25;animation:pulse 1.4s ease-out infinite}
@keyframes pulse{from{transform:scale(.9);opacity:.35}to{transform:scale(1.25);opacity:0}}
.wave{display:flex;align-items:center;gap:3px;height:36px}
.wave i{width:4px;border-radius:2px;background:var(--ds-graph);animation:bar 1s ease-in-out infinite}
@keyframes bar{0%,100%{height:20%}50%{height:100%}}
.quote{font:500 19px/1.35 var(--ds-font);letter-spacing:-.01em}
.item-g{display:flex;align-items:center;gap:6px}
.stepper{display:flex;align-items:center;background:var(--ds-bg);border-radius:999px;border:1px solid var(--ds-line)}
.stepper button{width:30px;height:30px;border:0;background:none;color:var(--ds-ink);display:grid;place-items:center;border-radius:50%}
.stepper span{min-width:52px;text-align:center;font:var(--ds-t-small);color:var(--ds-ink)}
.total{display:flex;justify-content:space-between;align-items:baseline}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips .ds-chip{cursor:pointer}
.photo-fake{height:180px;border-radius:22px;background:radial-gradient(circle at 50% 55%,#d9d9dc 0 34%,#ececee 35% 38%,#f4f4f5 39%);display:grid;place-items:center;color:var(--ds-muted);position:relative;overflow:hidden}
.scanline{position:absolute;left:0;right:0;height:2px;background:var(--ds-graph);opacity:.5;animation:scan 1.2s ease-in-out infinite alternate}
@keyframes scan{from{top:10%}to{top:90%}}

/* вес */
.weight-big{display:flex;align-items:center;justify-content:center;gap:18px;padding:12px 0}
.weight-big .v{font:600 56px/1 var(--ds-font);letter-spacing:-.04em;min-width:170px;text-align:center}
.weight-big .v small{font:400 18px var(--ds-font);color:var(--ds-muted);letter-spacing:0}
.weight-big .ds-round{width:52px;height:52px}

/* тренировка */
.ex-hero{height:150px;border-radius:22px;background:var(--ds-surf);display:grid;place-items:center;color:var(--ds-graph)}
.ex-hero .ds-ic{width:64px;height:64px;stroke-width:1.5}
.set{display:grid;grid-template-columns:28px 1fr 1fr 44px;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--ds-line)}
.set:first-child{border-top:0}
.set .n{color:var(--ds-muted);font:var(--ds-t-small)}
.set .cell{background:var(--ds-bg);border-radius:12px;height:40px;display:flex;align-items:center;justify-content:center;font:var(--ds-t-body-m)}
.set .cell small{color:var(--ds-muted);font:var(--ds-t-small);margin-left:4px}
.set .chk{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--ds-faint);background:none;display:grid;place-items:center;color:transparent}
.set.done .chk{background:var(--ds-graph);border-color:var(--ds-graph);color:#fff}
.set.done .cell{color:var(--ds-muted)}
.progress-dots{display:flex;gap:6px}
.progress-dots i{flex:1;height:4px;border-radius:2px;background:var(--ds-surf2)}
.progress-dots i.on{background:var(--ds-graph)}
.rest{position:absolute;inset:0;z-index:70;background:var(--ds-graph);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;animation:fade .2s both}
.rest .clock{font:600 72px/1 var(--ds-font);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.rest .ds-btn{background:#fff;color:var(--ds-graph);width:auto}
.rest .sub{color:#a9a9ad}

/* чат */
.chat-head{display:flex;align-items:center;gap:12px;padding:12px var(--ds-gutter);border-bottom:1px solid var(--ds-line);flex:none}
.coach-ava{width:44px;height:44px;border-radius:50%;background:var(--ds-graph);color:#fff;display:grid;place-items:center;font-weight:600;flex:none}
.chat .pad{gap:8px;padding-bottom:190px}
.ds-msg{white-space:pre-line}
.msg-card{background:var(--ds-bg);border-radius:14px;padding:10px 12px;margin-top:8px;display:flex;flex-direction:column;gap:6px;font:var(--ds-t-small);color:var(--ds-ink);white-space:normal}
.msg-card .r{display:flex;gap:8px;align-items:center}
.msg-card .dot{width:20px;height:20px;border-radius:50%;background:var(--ds-graph);color:#fff;font-size:11px;display:grid;place-items:center;flex:none}
.typing{display:inline-flex;gap:4px;padding:14px 16px}
.typing i{width:6px;height:6px;border-radius:50%;background:var(--ds-muted);animation:typ 1s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes typ{0%,100%{opacity:.3}50%{opacity:1}}
.composer{position:absolute;left:12px;right:12px;bottom:94px;display:flex;flex-direction:column;gap:8px;z-index:20}
.composer .chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:2px}
.composer .chips::-webkit-scrollbar{display:none}
.composer .chips .ds-chip{background:var(--ds-bg);flex:none}
.composer form{display:flex;gap:8px;align-items:center}
.composer input{flex:1;height:48px;border-radius:24px;border:1px solid var(--ds-line);background:var(--ds-surf);padding:0 18px;font:var(--ds-t-body);color:var(--ds-ink);outline:none;min-width:0}
.composer input:focus{border-color:var(--ds-graph);background:var(--ds-bg)}
.composer .send{width:48px;height:48px;border-radius:50%;border:0;background:var(--ds-graph);color:#fff;display:grid;place-items:center;flex:none}

/* прогресс */
.badges{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.badge{background:var(--ds-surf);border-radius:16px;padding:12px 4px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;font:var(--ds-t-cap);color:var(--ds-ink)}
.badge .ds-icb{background:var(--ds-graph);color:#fff;width:38px;height:38px;border-radius:50%}
.badge.locked{color:var(--ds-muted)}
.badge.locked .ds-icb{background:var(--ds-surf2);color:var(--ds-faint)}
.photos{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ph{aspect-ratio:3/4;border-radius:18px;background:linear-gradient(160deg,#ececee,#dcdcdf);position:relative;display:flex;align-items:flex-end;padding:10px;color:var(--ds-ink);font:var(--ds-t-small);max-width:100%}
.ph svg.sil{position:absolute;inset:18% 22% 0;width:56%;height:82%;color:#c3c3c7}
.ph span{position:relative;background:rgba(255,255,255,.85);border-radius:10px;padding:4px 8px}
.streak{display:flex;align-items:center;gap:14px}
.week{display:flex;gap:6px;margin-top:10px}
.week i{flex:1;height:28px;border-radius:9px;background:var(--ds-surf2);display:grid;place-items:center;font:var(--ds-t-cap);font-style:normal;color:var(--ds-muted)}
.week i.on{background:var(--ds-graph);color:#fff}

/* онбординг */
.ob{flex:1;min-height:0;display:flex;flex-direction:column}
.ob .scroll .pad{gap:18px;padding-top:8px}
.ob-foot{padding:12px var(--ds-gutter) 24px;display:flex;flex-direction:column;gap:6px;flex:none;background:var(--ds-bg)}
.ob-hero{flex:1;display:flex;flex-direction:column;justify-content:center;gap:16px;padding:0 var(--ds-gutter)}
.ob-hero .logo{font:700 15px var(--ds-font);letter-spacing:.3em}
.ob-hero h1{font:600 40px/1.05 var(--ds-font);letter-spacing:-.04em;margin:0;text-wrap:balance}
.ob-hero p{margin:0;color:var(--ds-muted);font:var(--ds-t-body);max-width:32ch}
.ob-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.ob-list div{display:flex;gap:12px;align-items:center;font:var(--ds-t-body-m)}
.q{font:600 26px/1.15 var(--ds-font);letter-spacing:-.03em;margin:0;text-wrap:balance}
.q-sub{color:var(--ds-muted);font:var(--ds-t-small);margin-top:-8px}
.seg-chips{display:flex;gap:8px;flex-wrap:wrap}
.seg-chips button{height:44px;padding:0 18px;border-radius:999px;border:1.5px solid transparent;background:var(--ds-surf);font:var(--ds-t-body-m);color:var(--ds-ink)}
.seg-chips button[aria-pressed="true"]{background:var(--ds-graph);color:#fff}
.analyze{flex:1;display:flex;flex-direction:column;justify-content:center;gap:22px;padding:0 var(--ds-gutter)}
.astep{display:flex;align-items:center;gap:12px;font:var(--ds-t-body-m);color:var(--ds-faint);transition:color .3s}
.astep.on{color:var(--ds-ink)}
.astep .c{width:26px;height:26px;border-radius:50%;border:1.5px solid currentColor;display:grid;place-items:center;flex:none}
.astep.on .c{background:var(--ds-graph);border-color:var(--ds-graph);color:#fff}
.res-big{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.res-big .ds-card{display:flex;flex-direction:column;gap:2px}
.forecast{background:var(--ds-graph);color:#fff}
.forecast .ds-sub{color:#a9a9ad}
.fc-line{display:flex;align-items:flex-end;gap:4px;height:70px;margin-top:12px}
.fc-line i{flex:1;background:rgba(255,255,255,.22);border-radius:4px 4px 0 0}
.fc-line i.last{background:#fff}
.coach-pick{display:flex;flex-direction:column;gap:12px}
.coach-card{display:flex;gap:14px;align-items:flex-start;text-align:left;padding:16px;border-radius:22px;border:1.5px solid transparent;background:var(--ds-surf);color:var(--ds-ink);font:inherit;width:100%}
.coach-card[aria-pressed="true"]{border-color:var(--ds-graph);background:var(--ds-bg)}
.coach-card .coach-ava{width:52px;height:52px;font-size:18px}
.coach-card i{font-style:normal;display:block;font:var(--ds-t-small);color:var(--ds-muted);margin-top:6px}
.coach-card q{display:block;margin-top:8px;font:var(--ds-t-small);color:var(--ds-ink)}

/* профиль / пейволл */
.hero-pay{background:var(--ds-graph);color:#fff;border-radius:26px;padding:22px;display:flex;flex-direction:column;gap:4px}
.hero-pay .p{font:600 42px/1.05 var(--ds-font);letter-spacing:-.03em}
.hero-pay .p small{font:400 16px var(--ds-font);opacity:.6;letter-spacing:0}
.trial{display:flex;align-items:center;gap:12px}

/* тост */
.toast-wrap{position:absolute;left:0;right:0;top:18px;display:flex;justify-content:center;z-index:90;pointer-events:none}
.toast-wrap .ds-toast{animation:toast 2.2s ease both}
@keyframes toast{0%{opacity:0;transform:translateY(-10px)}10%,85%{opacity:1;transform:none}100%{opacity:0}}
.foot-note{text-align:center;font:var(--ds-t-cap);color:var(--ds-muted)}
.ds-btn.pay10{flex-direction:column;gap:2px;height:auto;min-height:56px;padding:10px 16px}.ds-btn.pay10 small{font-weight:400;font-size:13px;opacity:.65}
.link{background:none;border:0;color:var(--ds-muted);font:var(--ds-t-small);text-decoration:underline;text-underline-offset:3px;padding:6px;cursor:pointer}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.coach-card q{quotes:none}

/* ===== ProFit 2: приложение на весь экран (а не телефон-рамка прототипа) ===== */
html,body{height:100%;margin:0;overflow:hidden;background:#fff}
.stage{display:none}
#p2app.phone{position:fixed;inset:0;width:100%;height:100%;border-radius:0;box-shadow:none;max-width:560px;margin:0 auto;
  padding-top:env(safe-area-inset-top,0px)}
@media (min-width:600px){#p2app.phone{box-shadow:0 0 0 1px var(--ds-line)}}
.ds-tab,.actionbar,.composer{bottom:calc(16px + env(safe-area-inset-bottom,0px))}
.actionbar{bottom:calc(94px + env(safe-area-inset-bottom,0px))}
.composer{bottom:calc(94px + env(safe-area-inset-bottom,0px))}
.ds-tab{bottom:calc(16px + env(safe-area-inset-bottom,0px))}
textarea.ds-input{font:var(--ds-t-body);line-height:1.4}
.ds-btn[disabled]{opacity:.6}

/* уведомление тренера сверху */
.tbanner{position:absolute;left:12px;right:12px;top:calc(10px + env(safe-area-inset-top,0px));z-index:95;display:flex;gap:12px;align-items:center;text-align:left;
  background:var(--ds-graph);color:#fff;border:0;border-radius:20px;padding:12px 14px;font:inherit;box-shadow:0 14px 30px -12px rgba(0,0,0,.45);animation:drop .35s cubic-bezier(.2,.8,.2,1) both}
.tbanner .coach-ava{background:#fff;color:var(--ds-graph);width:38px;height:38px}
.tbanner .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.tbanner .main span{font:var(--ds-t-small);color:#d0d0d4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@keyframes drop{from{transform:translateY(-120%);opacity:0}to{transform:none;opacity:1}}
.dot-unread{position:absolute;top:8px;right:16px;width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--ds-graph)}
.ds-tab button[aria-current="page"] .dot-unread{display:none}

/* состояние дня */
.st-dots{display:flex;gap:4px}
.st-dot{width:24px;height:24px;border-radius:8px;background:var(--ds-bg);display:grid;place-items:center;color:var(--ds-faint)}
.st-dot.on{background:var(--ds-graph);color:#fff}
.st-dot .ds-ic{width:14px;height:14px}
.st-row{display:flex;flex-direction:column;gap:8px;padding:10px 0;border-top:1px solid var(--ds-line)}
.st-row:first-of-type{border-top:0}
.st-name{display:flex;align-items:center;gap:10px;font:var(--ds-t-body-m)}
.st-row .moods button{height:54px;flex-direction:column;gap:2px;display:flex;align-items:center;justify-content:center;background:var(--ds-surf)}
.st-row .moods button small{font:var(--ds-t-cap);color:inherit}
.st-row .moods button[aria-pressed="true"]{background:var(--ds-graph);color:#fff}

/* фото */
.ph{overflow:hidden}
.ph-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ph-del{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;border:0;background:rgba(255,255,255,.9);display:grid;place-items:center;color:var(--ds-ink)}
/* подсказки по технике: жёлтая лампочка (единственный цветной акцент — по просьбе владельца) */
:root{--tip:#F2B705;--tip-bg:#FFF6D6;--tip-ink:#7A5B00}
.tip-card{display:flex;gap:12px;align-items:center;width:100%;text-align:left;border:0;border-radius:var(--ds-r-card);padding:14px 16px;background:var(--tip-bg);color:var(--ds-ink);font:inherit}
.tip-card .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.tip-card .main span{font:var(--ds-t-small);color:var(--tip-ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tip-card.warn{background:#FFF0E0}
.tip-bulb{width:36px;height:36px;border-radius:12px;background:var(--tip);color:#3D2E00;display:grid;place-items:center;flex:none}
.tip-bulb.warn,.tip-card.warn .tip-bulb{background:#F59E0B;color:#3D2400}
.tech-sec{display:flex;gap:10px;align-items:center;margin-top:4px}
.tech-sec b{font:var(--ds-t-h3)}
.tech-list{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:8px;font:var(--ds-t-body)}
.tech-err{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:14px;background:#FFF0E0;font:var(--ds-t-body)}
.tech-err .ds-ic{color:#C77700;margin-top:2px}

/* шкалы показателей тела */
.metric{display:flex;flex-direction:column;gap:12px}
.m-head{display:flex;justify-content:space-between;align-items:baseline}
.m-head span{font:var(--ds-t-body-m)}
.m-head b{font:600 24px/1 var(--ds-font);letter-spacing:-.02em}
.gauge{padding-top:26px}
.g-bar{position:relative;display:flex;height:10px;border-radius:5px;overflow:visible}
.g-bar i{display:block;height:100%}
.g-bar i:first-child{border-radius:5px 0 0 5px}.g-bar i:last-of-type{border-radius:0 5px 5px 0}
.g-low{background:#d6d6da}.g-ok{background:#2A2A2D}.g-mid{background:#8e8e93}.g-high{background:#55555a}
.g-mark{position:absolute;top:-6px;width:4px;height:22px;margin-left:-2px;border-radius:2px;background:#fff;box-shadow:0 0 0 2px var(--ds-graph)}
.g-mark span{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);background:var(--ds-graph);color:#fff;font:600 11px/1 var(--ds-font);padding:4px 7px;border-radius:8px;white-space:nowrap}
.g-labels{display:flex;margin-top:8px;font:var(--ds-t-cap);color:var(--ds-muted)}
.g-labels span{text-align:center;overflow:hidden;white-space:nowrap;text-overflow:clip}

/* ===== 15.10: подробный прогресс, награды, свои тренировки и план ===== */
.chart svg{display:block;width:100%;height:auto}
.ch-x{display:flex;justify-content:space-between;font:var(--ds-t-cap);color:var(--ds-muted);margin-top:4px}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font:var(--ds-t-cap);color:var(--ds-muted);margin-top:8px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.card-t{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:8px}
.card-t b{font:600 15px var(--ds-font)}
.card-t span{font:var(--ds-t-cap);color:var(--ds-muted);text-align:right}
.kpi{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.kpi div{background:var(--ds-surf);border-radius:16px;padding:12px;min-width:0}
.kpi span{display:block;font:var(--ds-t-cap);color:var(--ds-muted)}
.kpi b{font:600 22px/1.15 var(--ds-font);letter-spacing:-.02em}
.kpi small{font:var(--ds-t-cap);color:var(--ds-muted);margin-left:4px}
.chips-p{display:flex;gap:6px;flex-wrap:wrap}
.chips-p button{height:34px;padding:0 14px;border-radius:999px;border:0;background:var(--ds-surf);font:500 13px var(--ds-font);color:var(--ds-ink)}
.chips-p button.on{background:var(--ds-graph);color:#fff}
.seg5 button{padding:0 4px;font-size:14px}
.ex-row{display:flex;align-items:center;gap:10px;padding:10px 0;border:0;border-top:1px solid var(--ds-line);background:none;width:100%;text-align:left;font:inherit;color:inherit}
.ds-card.list .ex-row:first-of-type{border-top:0}
.ex-row.sel{box-shadow:inset 3px 0 0 var(--ds-graph);padding-left:10px}
.ex-row .m{flex:1;min-width:0;display:flex;flex-direction:column}
.ex-row .m b{font:500 14px var(--ds-font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ex-row .m span{font:var(--ds-t-cap);color:var(--ds-muted)}
.ex-row .spark{width:64px;height:24px;flex:none}
.ex-row em{font-style:normal;font:600 13px var(--ds-font);min-width:38px;text-align:right}
.heat{display:grid;grid-template-columns:58px repeat(14,1fr);gap:3px;align-items:center;font:var(--ds-t-cap);color:var(--ds-muted)}
.heat i{height:16px;border-radius:4px;background:var(--ds-surf2)}
.heat i.g{background:#2A2A2D}.heat i.o{background:#8e8e93}.heat i.b{background:#d6d6da}
.rec-chip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 9px;border-radius:999px;background:var(--ds-graph);color:#fff;font:500 11px var(--ds-font);flex:none}
.rec-chip .ds-ic{width:13px;height:13px}
/* награды */
.medal{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--ds-graph);color:#fff;position:relative}
.medal.l2{box-shadow:0 0 0 3px var(--ds-bg),0 0 0 5px #2A2A2D}
.medal.l3{box-shadow:0 0 0 3px var(--ds-bg),0 0 0 5px #2A2A2D,0 0 0 7px var(--ds-bg),0 0 0 9px #2A2A2D}
.medal.lock{background:var(--ds-surf2);color:var(--ds-faint)}
.medal .lv{position:absolute;bottom:-4px;right:-4px;background:#fff;color:var(--ds-ink);border-radius:8px;font:600 10px/1 var(--ds-font);padding:3px 5px;box-shadow:0 0 0 1px var(--ds-line)}
.medal.big{width:56px;height:56px;background:#fff;color:var(--ds-graph)}
.aw-list{display:flex;flex-direction:column;gap:8px}
.aw{display:flex;gap:14px;align-items:center;background:var(--ds-surf);border-radius:18px;padding:12px 14px}
.aw .m{flex:1;min-width:0}.aw .m b{display:block;font:600 14px var(--ds-font)}.aw .m span{display:block;font:var(--ds-t-cap);color:var(--ds-muted);margin:2px 0 6px}
.aw .ds-bar{height:5px}
.aw-top{display:flex;gap:14px;align-items:center}
.aw-top b{display:block;font:600 16px var(--ds-font);margin:2px 0}
.aw-prev{display:flex;align-items:center;gap:12px;border:0;text-align:left;font:inherit;color:inherit;width:100%}
.aw-prev .medals{display:flex}
.aw-prev .medals .medal{width:30px;height:30px;margin-right:-8px;box-shadow:0 0 0 2px var(--ds-surf)}
.aw-prev .medals .medal .ds-ic{width:15px;height:15px}
.aw-prev .medals .medal .lv{display:none}
.aw-prev .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;margin-left:8px}
.aw-prev .main b{font:600 15px var(--ds-font)}
.aw-prev .main span{font:var(--ds-t-cap);color:var(--ds-muted)}
/* подписка без давления */
.soft-pay{display:flex;gap:12px;align-items:center;width:100%;text-align:left;font:inherit;color:inherit;background:none;border:1.5px dashed var(--ds-faint);border-radius:18px;padding:14px}
.soft-pay .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.soft-pay b{font:600 14px var(--ds-font)}.soft-pay .main span{font:var(--ds-t-cap);color:var(--ds-muted)}
.lock-chip{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px;border-radius:999px;background:var(--ds-bg);font:500 12px var(--ds-font);color:var(--ds-ink);flex:none}
.lock-chip .ds-ic{width:13px;height:13px}
.ex-hero.lockv{border:0;width:100%;display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;font:inherit;color:var(--ds-faint)}
.tip-card.locked{background:var(--ds-surf)}.tip-card.locked .tip-bulb{background:var(--ds-surf2);color:var(--ds-muted)}.tip-card.locked .main span{color:var(--ds-muted)}
.plaque{position:relative;padding:0;overflow:hidden}
.plaque .pl-main{display:flex;align-items:center;gap:12px;width:100%;border:0;background:none;color:inherit;font:inherit;text-align:left;padding:16px 48px 16px 16px}
.plaque .pl-x{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:50%;border:0;background:rgba(255,255,255,.12);color:#fff;display:grid;place-items:center}
.ds-btn.ghost.free-start{color:var(--ds-ink);font-weight:600;font-size:15px;background:var(--ds-surf);height:50px;margin-top:4px}
/* подходы: факт против плана */
.set .cell{border:0;font:var(--ds-t-body-m);color:var(--ds-ink);width:100%}
.set .cell.off{box-shadow:inset 0 0 0 1.5px var(--ds-graph);font-weight:700}
.set .cell[disabled]{color:var(--ds-faint)}
.set-acts{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 0 8px;border-top:1px solid var(--ds-line)}
.set-acts>span:last-child{display:flex;gap:6px;align-items:center}
.ds-round.sm{width:34px;height:34px}
.ds-round[disabled]{opacity:.35}
/* мой план питания */
.plan-meal{background:var(--ds-surf);border-radius:18px;padding:12px 14px;display:flex;flex-direction:column}
.plan-meal .h{display:flex;justify-content:space-between;font:600 15px var(--ds-font);padding-bottom:6px}
.plan-meal .h span:last-child{font:var(--ds-t-small);color:var(--ds-muted)}
.plan-meal .it{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"nm nm x" "st kc kc";align-items:center;column-gap:10px;row-gap:4px;padding:8px 0;border-top:1px solid var(--ds-line);font:var(--ds-t-small)}
.plan-meal .it .nm{grid-area:nm;min-width:0;font-weight:500;color:var(--ds-ink);overflow-wrap:anywhere}
.plan-meal .it .stepper{grid-area:st}
.plan-meal .it .kc{grid-area:kc;text-align:right;color:var(--ds-muted);white-space:nowrap}
.plan-meal .it .x{grid-area:x;width:28px;height:28px;background:none;justify-self:end}
.plan-meal .stepper span{min-width:46px}
.pm-acts{display:flex;gap:8px;flex-wrap:wrap;padding-top:8px}
.pm-acts .ds-chip{cursor:pointer;gap:4px}
/* разбор в браузере без аккаунта: результат «за стеклом» + сохранение аккаунта */
.scroll.blurred{filter:blur(6px);opacity:.55;pointer-events:none;user-select:none}
.save-acc{position:absolute;left:0;right:0;bottom:0;z-index:40;max-height:84%;overflow-y:auto;background:var(--ds-bg);border-radius:28px 28px 0 0;box-shadow:0 -16px 40px -18px rgba(0,0,0,.3);
  padding:20px var(--ds-gutter) calc(20px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:12px;animation:up .4s cubic-bezier(.2,.8,.2,1) both}
.save-acc .ds-field{gap:4px}
.save-acc .foot-note a{color:inherit}
.or{display:flex;align-items:center;gap:10px;font:var(--ds-t-cap);color:var(--ds-muted)}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--ds-line)}
/* мои тренировки: дни недели, список, ввод веса с клавиатуры */
.days7{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.days7 button{height:42px;border-radius:14px;border:0;background:var(--ds-surf);font:500 14px var(--ds-font);color:var(--ds-ink)}
.days7 button[aria-pressed="true"]{background:var(--ds-graph);color:#fff}
.mywo{display:flex;align-items:center;gap:10px;background:var(--ds-surf);border-radius:20px;padding:14px 14px 14px 16px}
.mywo .mw-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;border:0;background:none;text-align:left;font:inherit;color:inherit;padding:0}
.mywo .mw-main b{font:600 16px var(--ds-font)}
.mywo .mw-main span{font:var(--ds-t-small);color:var(--ds-muted)}
.mywo .mw-ex{font:var(--ds-t-cap)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mywo .ds-chip{cursor:pointer;flex:none;height:34px}
.weight-big .v-in{width:4.2ch;font:inherit;letter-spacing:inherit;border:0;background:none;text-align:center;color:var(--ds-ink);outline:none;border-bottom:2px dashed var(--ds-faint);border-radius:0;padding:0}
.weight-big .v-in:focus{border-bottom-color:var(--ds-graph)}
.stepper .st-in{width:54px;border:0;background:none;text-align:center;font:var(--ds-t-small);color:var(--ds-ink);outline:none}
/* состояние дня: пока не отмечено — мягкая пульсирующая точка */
.qcard.todo{position:relative}
.qcard.todo::after{content:"";position:absolute;top:12px;right:12px;width:8px;height:8px;border-radius:50%;background:var(--ds-graph);animation:stp 2.2s ease-in-out infinite}
@keyframes stp{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}
/* план питания: дни недели, у заполненных — точка, сегодня — подчёркнут */
.plan-days button{position:relative}
.plan-days button.today:not([aria-pressed="true"]){box-shadow:inset 0 0 0 1.5px var(--ds-graph)}
.plan-days button i{position:absolute;bottom:5px;left:50%;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:currentColor;opacity:.6}
.picked{display:inline-flex;align-self:flex-start;align-items:center;gap:8px;height:36px;padding:0 14px 0 4px;border-radius:999px;background:var(--ds-surf);font:500 14px var(--ds-font)}
.picked .coach-ava{width:28px;height:28px;font-size:12px}
.tag3{display:inline-block;font:600 11px/1.4 var(--ds-font);background:var(--ds-graph);color:#fff;border-radius:999px;padding:1px 8px;margin-left:6px;vertical-align:2px}
.ds-opt[aria-pressed="true"] .tag3{background:var(--ds-graph)}

/* ===== 16.10: пыльные тона по карте цветов. Графит главный: кнопки, текст, графики, меню. Цвет — только плитка значка и значок ===== */
:root{--t-sand:#EFE6D8;--t-sand-i:#8A6A2E;--t-sage:#E1E8DF;--t-sage-i:#46604A;--t-sky:#DFE5EA;--t-sky-i:#3F6485;--t-clay:#EEDFD9;--t-clay-i:#A34B3C;--t-lav:#E6E2EA;--t-lav-i:#5D5368}
/* плитка значка получает тон по самому значку — одинаково на всех экранах */
.ds-icb:has(use[href="#water"]),.ds-icb:has(use[href="#glass"]),.ds-icb:has(use[href="#dumbbell"]),.ds-icb:has(use[href="#barbell"]),.ds-icb:has(use[href="#steps"]),.ds-icb:has(use[href="#timer"]),.ds-icb:has(use[href="#calendar"]),.ds-icb:has(use[href="#list"]),.ds-icb:has(use[href="#repeat"]){background:var(--t-sky);color:var(--t-sky-i)}
.ds-icb:has(use[href="#heart"]),.ds-icb:has(use[href="#scale"]),.ds-icb:has(use[href="#target"]),.ds-icb:has(use[href="#snack"]),.ds-icb:has(use[href="#bandage"]),.ds-icb:has(use[href="#face-hot"]){background:var(--t-clay);color:var(--t-clay-i)}
.ds-icb:has(use[href="#flame"]),.ds-icb:has(use[href="#breakfast"]),.ds-icb:has(use[href="#sun"]),.ds-icb:has(use[href="#sunrise"]),.ds-icb:has(use[href="#bell"]),.ds-icb:has(use[href="#trophy"]),.ds-icb:has(use[href="#star"]),.ds-icb:has(use[href="#bolt"]){background:var(--t-sand);color:var(--t-sand-i)}
.ds-icb:has(use[href="#lunch"]),.ds-icb:has(use[href="#leaf"]),.ds-icb:has(use[href="#food"]),.ds-icb:has(use[href="#chat"]),.ds-icb:has(use[href="#pill"]){background:var(--t-sage);color:var(--t-sage-i)}
.ds-icb:has(use[href="#dinner"]),.ds-icb:has(use[href="#sleep"]),.ds-icb:has(use[href="#tape"]),.ds-icb:has(use[href="#photo"]),.ds-icb:has(use[href="#camera"]),.ds-icb:has(use[href="#video"]),.ds-icb:has(use[href="#book"]){background:var(--t-lav);color:var(--t-lav-i)}
/* корона подписки на тёмной плашке — жёлтая */
.ds-icb:has(use[href="#crown"]){color:#E0B23A!important}
/* вода — синяя полоска */
.qcard[data-act="water"] .ds-bar i{background:var(--t-sky-i)}
/* состояние: хорошо — шалфей, средне — песок, плохо — глина */
.st-dot.on.v-good{background:var(--t-sage);color:var(--t-sage-i)}
.st-dot.on.v-ok{background:var(--t-sand);color:var(--t-sand-i)}
.st-dot.on.v-bad{background:var(--t-clay);color:var(--t-clay-i)}
.st-row .moods button.v-good[aria-pressed="true"]{background:var(--t-sage);color:var(--t-sage-i)}
.st-row .moods button.v-ok[aria-pressed="true"]{background:var(--t-sand);color:var(--t-sand-i)}
.st-row .moods button.v-bad[aria-pressed="true"]{background:var(--t-clay);color:var(--t-clay-i)}
.st-row .moods button[aria-pressed="true"] small{font-weight:600}
/* тренировка: сделанный подход — шалфей, ошибки — глина (лампочка остаётся жёлтой) */
.set.done .chk{background:var(--t-sage-i);border-color:var(--t-sage-i)}
.tip-card.warn{background:var(--t-clay)}
.tip-card.warn .tip-bulb,.tip-bulb.warn{background:#fff;color:var(--t-clay-i)}
.tech-err{background:var(--t-clay)}
.tech-err .ds-ic{color:var(--t-clay-i)}
.rec-chip{background:var(--t-sand);color:var(--t-sand-i)}
/* медали: у каждой линейки свой тон */
.medal.tone-sand{background:var(--t-sand);color:var(--t-sand-i)}.medal.tone-sage{background:var(--t-sage);color:var(--t-sage-i)}
.medal.tone-sky{background:var(--t-sky);color:var(--t-sky-i)}.medal.tone-clay{background:var(--t-clay);color:var(--t-clay-i)}.medal.tone-lav{background:var(--t-lav);color:var(--t-lav-i)}
.medal.lock{background:var(--ds-surf2);color:var(--ds-faint)}
.medal.big{background:#fff;color:var(--ds-graph)}
.aw-top .medal.big{color:var(--t-sand-i)}
/* тренеры: Макс — небо, Аня — глина, Гоша — шалфей */
body[data-coach="strict"] .coach-ava{background:var(--t-sky);color:var(--t-sky-i)}
body[data-coach="soft"] .coach-ava{background:var(--t-clay);color:var(--t-clay-i)}
body[data-coach="irony"] .coach-ava{background:var(--t-sage);color:var(--t-sage-i)}
.coach-card[data-arg="strict"] .coach-ava{background:var(--t-sky);color:var(--t-sky-i)}
.coach-card[data-arg="soft"] .coach-ava{background:var(--t-clay);color:var(--t-clay-i)}
.coach-card[data-arg="irony"] .coach-ava{background:var(--t-sage);color:var(--t-sage-i)}
.tbanner .coach-ava{background:#fff!important}
.online-dot{width:10px;height:10px;border-radius:50%;background:#34C759;box-shadow:0 0 0 2px #fff;margin:22px 0 0 -18px;flex:none}
/* прогресс: плитки с цифрами — бледный тон вкладки; самочувствие картой — шалфей / песок / глина */
.kpi.kt-clay div{background:var(--t-clay)}.kpi.kt-sage div{background:var(--t-sage)}.kpi.kt-sky div{background:var(--t-sky)}.kpi.kt-lav div{background:var(--t-lav)}.kpi.kt-sand div{background:var(--t-sand)}
.kpi.kt-clay b{color:var(--t-clay-i)}.kpi.kt-sage b{color:var(--t-sage-i)}.kpi.kt-sky b{color:var(--t-sky-i)}.kpi.kt-lav b{color:var(--t-lav-i)}
.heat i.g{background:#46604A}.heat i.o{background:#B99C66}.heat i.b{background:#C98A7D}
.ex-row.sel{box-shadow:inset 3px 0 0 var(--t-lav-i)}
.streak .ds-icb{color:#E0B23A!important}
.week i.on{background:var(--t-sand-i)}
/* ===== ощущение приложения, а не сайта (16.10) ===== */
/* iPhone приближает экран, если в поле шрифт меньше 16px — делаем 16 во всех полях */
.ds-input,.composer input,textarea.ds-input,.stepper .st-in{font-size:16px}
/* нет двойного тапа-зума, подсветки нажатия, «резинки» и обновления страницы свайпом вниз */
html,body{overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
*{-webkit-tap-highlight-color:transparent}
body{touch-action:manipulation}
.scroll{overscroll-behavior:contain}
button,.ds-tab,.ds-row,.ds-chip,.ds-seg,.actionbar,.topbar,.ds-icb,svg{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
img{-webkit-user-drag:none;-webkit-touch-callout:none}
/* согласие на автосписание перед привязкой карты */
.card-agree{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:var(--ds-r-tile,16px);background:var(--ds-surf);font:var(--ds-t-small);line-height:1.45;color:var(--ds-ink);cursor:pointer}
.card-agree input{flex:none;width:22px;height:22px;margin:1px 0 0;accent-color:var(--ds-graph)}
.card-agree a{color:inherit}
.foot-note a{color:inherit;text-underline-offset:2px}
/* промокод на экране оплаты */
.promo-row{display:flex;gap:8px}
.promo-row .ds-input{flex:1;min-width:0;text-transform:uppercase}

/* фильтр оборудования в «Добавить упражнение» (21.10) */
.eqp{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.eqp button{display:flex;align-items:center;gap:8px;min-height:44px;padding:6px 10px;border:0;border-radius:12px;background:var(--ds-surf);color:var(--ds-ink);font:500 13px var(--ds-font);text-align:left;cursor:pointer}
.eqp button svg{flex:none;width:22px;height:22px}
.eqp button.on{background:var(--ds-graph);color:#fff}
#expick-list{display:flex;flex-direction:column;gap:6px}

/* свой продукт (21.10) */
.tag-my{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--ds-surf);color:var(--ds-muted,#6e6e73);vertical-align:2px}
.srch-own{flex-direction:column;align-items:stretch!important;gap:8px;border-top:1px solid var(--ds-line)}
.mf-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.mf-f{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ds-muted,#6e6e73)}
.mf-f .ds-input{padding-left:10px;padding-right:6px;font-weight:600}
.mf-scan{display:flex;align-items:center;justify-content:center;gap:8px}

/* план питания на главной (21.10) */
.plan-home{display:flex;flex-direction:column;gap:8px}
.plan-home .ph-h{display:flex;justify-content:space-between;align-items:baseline}
.plan-home .ph-h b{font-weight:600;font-size:17px}
.pl-row{display:flex;gap:12px;align-items:center;background:var(--ds-bg,#fff);border-radius:14px;padding:10px 10px 10px 12px}
.pl-row .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pl-row .name{font-weight:600}
.pl-row.ate{background:var(--t-sage)}
.pl-check{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;border:1.5px solid var(--ds-line);background:var(--ds-bg,#fff);color:var(--ds-faint,#a1a1a6);cursor:pointer}
.pl-check.on{background:var(--t-sage-i);border-color:transparent;color:#fff}
.pl-other{align-self:flex-start;margin-top:4px;height:30px;padding:0 12px;border-radius:999px;border:1px solid var(--ds-line);background:none;font:500 13px var(--ds-font);color:var(--ds-ink);cursor:pointer}
.pl-edit{display:flex;align-items:center;justify-content:center;gap:4px;min-height:40px;border:0;background:none;font:500 14px var(--ds-font);color:var(--ds-muted,#6e6e73);cursor:pointer}

/* туториал (21.10) */
.tour{position:fixed;inset:0;z-index:200}
.tour-spot{position:fixed;border-radius:18px;box-shadow:0 0 0 2000px rgba(20,20,22,.6);transition:all .3s ease;pointer-events:none}
.tour-tip{position:fixed;left:16px;right:16px;max-width:420px;margin:0 auto;background:var(--ds-bg,#fff);color:var(--ds-ink);border-radius:20px;padding:16px;display:flex;flex-direction:column;gap:8px;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.tour-tip .tt-h{display:flex;align-items:center;gap:10px}.tour-tip .tt-h b{font-weight:600;font-size:16px}
.tour-tip .coach-ava{width:34px;height:34px;font-size:14px;flex:none}
.tour-tip p{margin:0;font-size:14px;line-height:1.45;color:var(--ds-ink)}
.tour-tip .tt-f{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tour-tip .tt-dots{display:flex;gap:5px}.tour-tip .tt-dots i{width:6px;height:6px;border-radius:6px;background:var(--ds-line)}.tour-tip .tt-dots i.on{width:16px;background:var(--ds-graph)}
.tour-tip .ds-btn.auto{min-height:44px;padding:0 18px}
@media (prefers-reduced-motion:reduce){.tour-spot{transition:none}}

/* рецепт в чате (21.10) */
.rc-card{align-self:flex-start;width:100%;max-width:360px;background:var(--ds-surf);border-radius:20px;overflow:hidden}
.rc-img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--ds-line)}
.rc-wait{display:grid;place-items:center;color:var(--ds-muted,#6e6e73);font-size:14px;animation:rcw 1.4s ease-in-out infinite alternate}
@keyframes rcw{from{opacity:.55}to{opacity:1}}
.rc-b{padding:14px;display:flex;flex-direction:column;gap:8px}
.rc-t{font-weight:600;font-size:17px;line-height:1.25}
.rc-k{display:flex;gap:12px;flex-wrap:wrap;font-size:14px}.rc-k b{font-weight:600}
.rc-ing{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:14px}
.rc-ing li{display:flex;justify-content:space-between;gap:8px;border-bottom:1px dashed var(--ds-line);padding-bottom:4px}
.rc-ing li span:last-child{color:var(--ds-muted,#6e6e73);white-space:nowrap}
.rc-steps summary{cursor:pointer;font-weight:600;font-size:14px;min-height:32px;display:flex;align-items:center}
.rc-steps ol{margin:4px 0 0;padding-left:20px;font-size:14px;line-height:1.45;display:flex;flex-direction:column;gap:4px}
.rc-acts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.rc-acts .ds-btn{min-height:44px;font-size:14px;padding:0 10px}
@media (prefers-reduced-motion:reduce){.rc-wait{animation:none}}

/* значок на экран (21.10) */
.pwa-steps{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:8px;font-size:15px;line-height:1.45}

/* награды: уровень профиля и лесенка ступеней (21.10) */
.aw-rank{display:flex;flex-direction:column;gap:6px}.aw-rank b{font-size:24px;font-weight:700}
.aw-rank .ds-bar{background:rgba(255,255,255,.18)}.aw-rank .ds-bar i{background:#9cc0a2}
.aw-how summary{cursor:pointer;font-weight:600;min-height:28px;display:flex;align-items:center}.aw-how p{margin:8px 0 0;font-size:14px;line-height:1.5;color:var(--ds-ink)}
.aw .m b small{font-weight:500;font-size:12px;color:var(--ds-muted,#6e6e73);margin-left:4px}
.aw-lad{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.aw .m .aw-lad span{min-width:30px;height:30px;line-height:1;padding:0 6px;box-sizing:border-box;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;text-align:center;margin:0;font-size:11px;font-weight:600;background:var(--ds-bg,#fff);color:var(--ds-faint,#a1a1a6);border:1px solid var(--ds-line)}
.aw .m .aw-lad span.got{background:var(--ds-graph);color:#fff;border-color:transparent}
.aw .m .aw-lad span.next{color:var(--ds-ink);border-color:var(--ds-graph)}

/* фото прогресса: вес и изменение (21.10) */
.ph span b{font-weight:700;margin-left:2px}

/* разбор: «насколько важно» и «давай подытожим» (21.10) */
.want10{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.want10 button{height:48px;border-radius:14px;border:0;background:var(--ds-surf);font:600 17px var(--ds-font);color:var(--ds-ink);cursor:pointer}
.want10 button[aria-pressed="true"]{background:var(--ds-graph);color:#fff}
.mirror{display:flex;flex-direction:column;gap:8px}
.mirror .mr{display:flex;flex-direction:column;gap:2px;padding-top:8px;border-top:1px solid var(--ds-line)}
.mirror .mr span{font-size:12px;color:var(--ds-muted,#6e6e73);text-transform:uppercase;letter-spacing:.05em}
.mirror .mr b{font-weight:500;font-size:15px;line-height:1.4}

/* план внутри приёмов на главной (22.10) */
.meal-blk{border-top:1px solid var(--ds-line)}.meal-blk>.ds-row{border-top:0!important}
.pl-hint{display:flex;align-items:center;gap:10px;margin:0 0 12px 52px;padding:10px 12px;border-radius:12px;background:var(--t-sage)}
.pl-hint .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.pl-hint .nm{font-size:13px;line-height:1.35;color:var(--ds-ink);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.pl-hint .ds-chip{flex:none;cursor:pointer;gap:4px;white-space:nowrap}

/* прогресс: итоги недели, рекомендации, закрытый вид без подписки (22.10) */
.wk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.wk-grid>div{background:var(--ds-bg,#fff);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.wk-grid span{font-size:12px;color:var(--ds-muted,#6e6e73)}.wk-grid b{font:600 18px var(--ds-font)}.wk-grid small{font-size:11px;color:var(--ds-muted,#6e6e73)}
.wk-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}.wk-list>div{display:flex;justify-content:space-between;gap:8px;font-size:14px}.wk-list b{font-weight:600;white-space:nowrap}
.wk-tips ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px;font-size:14px;line-height:1.45}
.pro-cta{display:flex;align-items:center;gap:12px;border:0;width:100%;text-align:left;color:#fff;font:inherit;cursor:pointer}
.pro-cta .main{flex:1;display:flex;flex-direction:column;gap:2px}.pro-cta .main b{font-weight:600}.pro-cta .main span{font-size:13px;opacity:.75}
.locked{position:relative;user-select:none}
.locked .ds-card>:not(.card-t),.locked .kpi,.locked .chips-p,.locked .ex-row,.locked .ds-small{filter:blur(7px);pointer-events:none}
.locked .card-t{position:relative}

/* оплата: предупреждение про VPN (22.10) */
.vpn-note{display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:10px 12px;border-radius:14px;background:var(--t-sand,#efe6d8);font-size:13px;line-height:1.45;color:var(--ds-ink);text-align:left}
.vpn-note svg{flex:none;margin-top:2px}.vpn-note b{font-weight:600}

/* календарь тренировок (23.10) */
.cal-top{display:flex;flex-direction:column;gap:10px}
.cal-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}.cal-nav b{font-weight:600;font-size:16px;text-align:center;flex:1}
.cal-fwd svg{transform:rotate(180deg)}
.cal-wd{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center;font-size:11px;color:var(--ds-muted,#6e6e73);text-transform:uppercase;letter-spacing:.04em}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal-d{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;border:0;border-radius:14px;background:var(--ds-surf);color:var(--ds-ink);font:inherit;cursor:pointer;padding:6px 0}
.cal-grid.m-week .cal-d{min-height:72px}
.cal-d .wd{font-size:11px;color:var(--ds-muted,#6e6e73)}.cal-d b{font-weight:600;font-size:15px}
.cal-d.dim{opacity:.4}.cal-d.today b{color:var(--t-sage-i)}.cal-d.today{box-shadow:inset 0 0 0 1.5px var(--t-sage-i)}
.cal-d.sel{background:var(--ds-graph);color:#fff}.cal-d.sel .wd{color:rgba(255,255,255,.7)}.cal-d.sel.today b{color:#fff}
.cal-d .dots{display:flex;gap:3px;min-height:6px}
.cd{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ds-graph)}
.cd.done{background:var(--t-sage-i)}.cd.missed{background:none;box-shadow:inset 0 0 0 1.5px var(--t-clay-i)}.cd.my{background:var(--t-sky-i)}
.cal-d.sel .cd.prog,.cal-d.sel .cd.my{background:#fff}
.cal-leg{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ds-muted,#6e6e73)}.cal-leg span{display:flex;align-items:center;gap:5px}
.cal-item{display:flex;flex-direction:column;gap:6px}.cal-item b{font-weight:600;font-size:16px}
.cal-st{font-size:13px;color:var(--ds-muted,#6e6e73);display:flex;align-items:center;gap:4px}.cal-st.done{color:var(--t-sage-i)}.cal-st.missed{color:var(--t-clay-i)}
.cal-ex{margin:2px 0 4px;padding-left:18px;font-size:14px;line-height:1.5}
.cal-log{list-style:none;margin:4px 0;padding:0;display:flex;flex-direction:column;gap:8px}.cal-log li{display:flex;flex-direction:column;gap:1px;font-size:14px;line-height:1.35}.cal-log .nm{font-weight:600}.cal-log .st{color:var(--ds-muted)}.cal-log .up{color:var(--ds-sage,#46604a);font-weight:600;font-size:12px}

/* напарник на отдыхе (23.10) */
.rest-tip{display:flex;align-items:center;gap:8px;max-width:320px;margin:6px auto 0;padding:8px 10px;border-radius:14px;background:rgba(255,255,255,.12);font-size:14px;line-height:1.35;text-align:left}
.rest-tip .coach-ava{width:28px;height:28px;font-size:12px;flex:none}.rest-tip span:nth-child(2){flex:1}
.rest-tip .link{flex:none;font-size:12px;opacity:.75;color:inherit;min-height:32px}

/* письмо недели и квест в чате (23.10) */
.wk-card{align-self:flex-start;width:100%;max-width:360px;background:var(--ds-surf);border-radius:18px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.wbars{position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;height:130px;align-items:end}
.wb{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px}
.wb .bar{display:block;width:70%;max-height:calc(100% - 18px);border-radius:6px;background:var(--ds-graph)}.wb .bar.ok{background:var(--t-sage-i)}.wb .bar.empty{background:var(--ds-line)}
.wb small{font-size:11px;color:var(--ds-muted,#6e6e73)}
.wn{position:absolute;left:0;right:0;border-top:2px dashed var(--t-clay-i);opacity:.7}
.quest{display:flex;flex-direction:column;gap:6px;width:100%;max-width:360px}.quest .ds-btn{white-space:normal;text-align:left;min-height:48px;height:auto;padding:10px 14px;font-size:14px}
.quest .qv{flex:none;width:26px;height:26px;border-radius:50%;background:var(--ds-graph);color:#fff;display:inline-grid;place-items:center;font-size:13px;margin-right:10px}
.quest .ds-btn{display:flex;align-items:center;justify-content:flex-start}

/* запись еды из чата (23.10) */
.cf-card{align-self:flex-start;width:100%;max-width:360px;background:var(--ds-surf);border-radius:18px;padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.cf-card li.unk{opacity:.55}.cf-card li small{font-size:11px;color:var(--ds-muted,#6e6e73)}
.cf-tot{font-weight:600;font-size:15px}
.cf-done{display:flex;align-items:center;gap:6px;color:var(--t-sage-i);font-weight:600;font-size:14px}
.mail-code{font:600 28px var(--ds-font);letter-spacing:.4em;text-align:center}
/* меню на неделю от тренера: кнопка в сообщении чата и «собираю…» в плане */
.ds-msg .msg-btn{margin-top:10px;height:42px;font-size:14px;background:var(--ds-surf,#fff)}
.plan-gen{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--ds-muted)}.plan-gen .typing{padding:4px 6px}
/* список покупок */
.shop-cat{display:flex;flex-direction:column;gap:2px;padding:12px 16px}
.shop-cat .ds-cap{margin-bottom:4px}
.shop-it{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:12px;width:100%;min-height:44px;padding:6px 0;background:none;border:0;border-top:1px solid var(--ds-line);text-align:left;color:var(--ds-ink);font:var(--ds-t-small);cursor:pointer}
.shop-it:first-of-type{border-top:0}
.shop-it .box{width:22px;height:22px;border-radius:7px;border:1.5px solid var(--ds-line2,var(--ds-line));display:grid;place-items:center}
.shop-it .nm{min-width:0;font-weight:500;overflow-wrap:anywhere}
.shop-it .amt{color:var(--ds-ink2,var(--ds-ink));white-space:nowrap}
.shop-it.on .box{background:var(--ds-graph);border-color:var(--ds-graph);color:#fff}
.shop-it.on .nm,.shop-it.on .amt{text-decoration:line-through;opacity:.45}
/* шкала пробного периода */
.trial-tl{display:flex;flex-direction:column;gap:14px;padding:16px}
.tl-row{display:grid;grid-template-columns:14px 1fr;gap:12px;position:relative}
.tl-row:not(:last-child)::after{content:"";position:absolute;left:6px;top:18px;bottom:-14px;width:2px;background:var(--ds-line)}
.tl-dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--ds-graph);background:var(--ds-bg,#fff);margin-top:3px;position:relative;z-index:1}
.tl-row.on .tl-dot{background:var(--ds-graph)}
.tl-when{font:var(--ds-t-cap,600 12px/1.3 var(--ds-font));opacity:.6;text-transform:uppercase;letter-spacing:.04em}
.tl-row .name{font-weight:600}

/* «по подходам» в своей тренировке (28.10) */
.seg2{display:grid;grid-template-columns:1fr 1fr;background:var(--ds-bg);border:1px solid var(--ds-line);border-radius:999px;padding:3px;gap:3px}
.seg2 button{height:36px;border:0;border-radius:999px;background:none;color:var(--ds-ink);font:inherit;font-size:14px}
.seg2 button[aria-pressed="true"]{background:var(--ds-graph,#1d1d1f);color:#fff}
.bsets{padding:6px 12px;display:flex;flex-direction:column}
.bset{display:grid;grid-template-columns:22px 64px auto 56px auto 28px;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid var(--ds-line)}
.bset .bs-n{font:var(--ds-t-small);opacity:.55;text-align:center}
.bset .st-in{font-size:16px;width:100%;height:36px;border:1px solid var(--ds-line);border-radius:10px;background:var(--ds-bg);text-align:center;font-family:inherit;color:var(--ds-ink)}
.bset .bs-u{font-size:13px;opacity:.6}
.bset .bs-x{width:28px;height:28px;border:0;background:none;color:var(--ds-ink);opacity:.5;display:grid;place-items:center;border-radius:50%}
.bs-add{height:40px;border:0;background:none;color:var(--ds-ink);font:inherit;display:flex;align-items:center;justify-content:center;gap:6px;opacity:.75}

/* реплика тренера на тренировке (28.10) */
.coach-note{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:16px;background:var(--ds-bg);border:1px solid var(--ds-line);font-size:14px;line-height:1.35;color:var(--ds-ink)}
.coach-note .coach-ava{width:30px;height:30px;font-size:12px;flex:none}

/* экран оплаты «Твой план» (29.10) */
.pw{gap:12px}
.pw-tag{align-self:flex-start;font:var(--ds-t-cap);letter-spacing:.05em;text-transform:uppercase;padding:6px 10px;border-radius:999px;background:#e3f5ea;color:#1f9d55}
.pw-h{margin:0}
.pw-sub{font:var(--ds-t-body);color:var(--ds-muted)}
.pay-chart{padding:12px 14px 6px}
.pw-list{padding:4px 16px}
.pw-row{display:flex;align-items:center;gap:12px;padding:11px 0}.pw-row+.pw-row{border-top:1px solid var(--ds-line)}
.pw-row .name{font:var(--ds-t-body-m);font-weight:600}.pw-row .desc{font:var(--ds-t-small);color:var(--ds-muted);margin-top:1px}
.pw-ic{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;flex:none;position:relative}
.pw-ic .ds-ic{width:22px;height:22px}
.pw-ic.g{background:#e3f5ea;color:#1f9d55}.pw-ic.o{background:#fde7df;color:#e8613c}.pw-ic.b{background:#e3ecfd;color:#2f6fe4}.pw-ic.y{background:#fff3d6;color:#e8a317}.pw-ic.v{background:#efe8fd;color:#7a4fe0}
.pw-dot{position:absolute;right:-2px;top:-2px;width:12px;height:12px;border-radius:50%;background:#22c55e;border:2px solid #fff;animation:pwpulse 2s infinite}
@keyframes pwpulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.pw-on{font:var(--ds-t-cap);font-size:12px;color:#1f9d55;margin-left:6px;font-weight:600}
.pw-price{display:flex;justify-content:space-between;align-items:center;gap:10px}
.pw-price b{font-size:38px;font-weight:700;letter-spacing:-.02em;color:#fff}.pw-price span{margin-left:6px;opacity:.6}
.pw-day{text-align:right;font-size:13px;opacity:.7;line-height:1.3}
.pw-cap{margin:4px 2px -4px}
.pw-pms{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pw-pm{border:1.5px solid var(--ds-line);border-radius:16px;padding:10px 12px;background:var(--ds-bg);display:flex;flex-direction:column;gap:2px;text-align:left;font:inherit;color:var(--ds-ink)}
.pw-pm.on{border-color:var(--ds-graph);box-shadow:inset 0 0 0 1px var(--ds-graph)}
.pw-pm b{font-size:15px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pw-pm small{font-size:12px;color:var(--ds-muted)}
.pw-badge{font-size:10px;font-weight:600;padding:2px 6px;border-radius:999px;background:#e3f5ea;color:#1f9d55}
.ds-btn.pw-cta{gap:10px;color:#fff;background:linear-gradient(100deg,#2a2a2d 0%,#3a3a3e 42%,#4a4232 50%,#3a3a3e 58%,#2a2a2d 100%);background-size:220% 100%;animation:pwshine 3.2s ease-in-out infinite;box-shadow:0 8px 24px rgba(242,193,78,.35),inset 0 0 0 1.5px rgba(242,193,78,.75)}
.ds-btn.pw-cta .ds-ic{color:#F2C14E;width:22px;height:22px}
.ds-btn.pw-cta span{background:linear-gradient(90deg,#fff,#F7D98B);-webkit-background-clip:text;background-clip:text;color:transparent}
@keyframes pwshine{0%,100%{background-position:100% 0}50%{background-position:0 0}}
@media (prefers-reduced-motion:reduce){.ds-btn.pw-cta,.pw-dot{animation:none}}

/* экран оплаты на одном экране: «Оформить» меняет карточку на способы оплаты (29.10) */
.pw{gap:10px}.pw .hero-pay{margin:0}
.pw-swap{animation:pwswap .28s ease}
@keyframes pwswap{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.pw-mh{display:flex;justify-content:space-between;align-items:center;padding:12px 0 10px}.pw-mh b{font:var(--ds-t-h3)}
.pw-mh .link{font-size:14px;min-height:32px}
.pw-list .pw-pms{padding-bottom:4px}
.pw-fine{font:var(--ds-t-small);font-size:12px;color:var(--ds-muted);padding:10px 0 12px;line-height:1.35}
.pw-row{padding:9px 0}
@media (prefers-reduced-motion:reduce){.pw-swap{animation:none}}
