:root{--bg:#09090D;--bg2:#0D0C12;--s:#19181E;--s2:#211F27;--border:#302E36;--border-subtle:rgba(255,255,255,.08);--t:#F5F3F7;--m:#9A97A1;--tertiary:#706D77;--disabled:#55525C;--accent:#8B4CFF;--accent-light:#9655FF;--accent-dark:#7435E8;--accent-text:#A878FF;--accent-soft:rgba(139,76,255,.12);--accent-border:rgba(139,76,255,.45);--accent-glow:rgba(139,76,255,.25);--grad:linear-gradient(90deg,#9655FF 0%,#7435E8 100%);--g:var(--accent);--a:var(--accent-dark);--danger:#F87171;--r-sm:var(--radius-sm);--r-badge:var(--radius-pill);--r-btn:var(--radius-lg);--r-input:var(--radius-lg);--r-card:var(--radius-lg);--r-feature:var(--radius-lg);--font:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text",system-ui,Roboto,sans-serif;--r:var(--r-card);--ir:var(--r-input);--br:var(--r-btn);--surface:var(--s);--surface-2:var(--s2);--secondary:var(--m);--text:var(--t);--primary:var(--accent);--safe:max(env(safe-area-inset-bottom,0px),var(--tg-safe-area-inset-bottom,0px),var(--tg-content-safe-area-inset-bottom,0px));--safe-top:calc(max(env(safe-area-inset-top,0px),var(--tg-safe-area-inset-top,0px)) + var(--tg-content-safe-area-inset-top,0px));--safe-left:max(env(safe-area-inset-left,0px),var(--tg-safe-area-inset-left,0px),var(--tg-content-safe-area-inset-left,0px));--safe-right:max(env(safe-area-inset-right,0px),var(--tg-safe-area-inset-right,0px),var(--tg-content-safe-area-inset-right,0px));--k-bg1:#09090D;--k-bg2:#0D0C12;--k-bubble:#19181E;--k-bubble-b:#302E36;--k-surface2:#211F27;--k-cta1:#8B4CFF;--k-cta2:#7435E8;--k-m:#9A97A1;--fs-xs:14px;--fs-sm:16px;--fs-md:18px;--fs-lg:20px;--fs-xl:24px;--fs-2xl:28px;--fs-3xl:32px;--fs-4xl:36px;--fs-d1:48px;--fs-d2:64px;--fs-d3:72px;--radius-xs:4px;--radius-sm:12px;--radius-md:16px;--radius-lg:24px;--radius-pill:999px;--warn:#E7B86A;--effort-easy:#2DD4BF;--effort-hard:#FB923C;--accent-deep:#251C3D;--line:#FFFFFF1F;--line-soft:#FFFFFF12;--t-soft:#E4E1E8;color-scheme:dark;}*{box-sizing:border-box}html,body{margin:0;width:100%;min-height:100%;background:var(--bg);color:var(--t);font-family:var(--font);overflow-x:hidden;overflow-x:clip}body{min-height:var(--tg-viewport-stable-height,100dvh)}button,input,textarea,select{font:inherit}button{cursor:pointer;touch-action:manipulation}img{max-width:100%;display:block}.shell{width:100%;max-width:640px;min-height:100dvh;margin:0 auto;padding:var(--safe-top) max(16px,var(--safe-left)) calc(86px + var(--safe)) max(16px,var(--safe-right))}.shell.no-nav{padding-bottom:calc(16px + var(--safe));display:flex;flex-direction:column}.shell.no-nav .step{min-height:0;flex:1;padding-bottom:0}.shell.no-nav>.stage,.shell.no-nav>.ready-screen{flex:1}.shell.no-nav>.ai-analysis-screen{min-height:0;flex:1;padding:0}.screen{animation:in .25s ease}@keyframes in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.top{height:52px;display:grid;grid-template-columns:40px minmax(0,1fr) 40px;align-items:center;position:sticky;top:0;z-index:5;background:linear-gradient(var(--bg) 75%,transparent)}.shell>.top{margin-top:calc(-1 * var(--safe-top));padding-top:var(--safe-top);height:calc(52px + var(--safe-top))}.top-slot{min-width:0;display:flex;align-items:center;min-height:40px}.top-slot-left{justify-content:flex-start}.top-slot-right{justify-content:flex-end}.brand{min-width:0;max-width:100%;display:flex;align-items:center;justify-content:center;gap:8px}.brand-wordmark{width:164px;height:auto;aspect-ratio:430 / 96;object-fit:contain;display:block;flex:none}.brand-mark{width:53px;height:30px;object-fit:contain;display:block;flex:none}.top-title{min-width:0;max-width:calc(100% - 38px);font-size:var(--fs-md);line-height:22px;font-weight:600;color:var(--t);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon{width:40px;height:40px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--s);color:var(--t)}.top-back{margin:0}.root-top .top-slot-left,.root-top .top-slot-right{min-height:40px}h1{font-size:var(--fs-3xl);line-height:40px;margin:12px 0 8px}h2{font-size:var(--fs-xl);line-height:32px;margin:0}h3{font-size:var(--fs-lg);line-height:28px;margin:0}.body{font-size:var(--fs-md);line-height:27px}.muted,.caption{color:var(--m)}.caption{font-size:var(--fs-xs);line-height:19px}.stack{display:flex;flex-direction:column;gap:12px}.section{margin-top:24px}.row{display:flex;align-items:center;gap:12px}.between{display:flex;align-items:center;justify-content:space-between;gap:12px}.card{background:var(--s);border:1px solid var(--border);border-radius:var(--r);padding:16px}.primary,.secondary,.outline{width:100%;min-height:48px;border-radius:var(--br);padding:12px 16px;font-weight:600;border:0}.primary{background:var(--g);color:#fff}.secondary{background:var(--s2);color:var(--t)}.outline{background:transparent;color:var(--t);border:1px solid var(--border)}.primary:disabled{opacity:.4;cursor:not-allowed}.nav{position:fixed;z-index:20;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:640px;padding:7px 8px calc(7px + var(--safe));display:grid;grid-template-columns:repeat(5,1fr);background:#09090df0;border-top:1px solid var(--border)}.nav button{border:0;background:none;color:var(--m);min-height:54px;border-radius:var(--radius-sm);font-size:var(--fs-xs);white-space:nowrap}.nav .on{color:var(--accent-text);background:#8b4cff0f}.nav i{display:flex;justify-content:center;margin-bottom:3px}.nav svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.hero{min-height:var(--tg-viewport-stable-height,100dvh);width:100%;max-width:640px;margin:0 auto;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden;padding-bottom:calc(24px + var(--safe))}.hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 55% 30%,#8b4cff20,transparent 45%)}.hero-art{position:absolute;inset:0;display:flex;justify-content:center;align-items:flex-start;padding:calc(24px + var(--safe-top)) 16px 0}.hero-art img{width:min(62%,230px);height:min(34vh,300px);object-fit:cover;object-position:100% 30%;border-radius:var(--radius-lg)}.hero-copy{position:relative;padding:calc(24px + var(--safe-top) + min(34vh,300px) + 20px) max(16px,var(--safe-left)) 0}.hero-copy h1{font-size:clamp(26px,8vw,32px);line-height:1.2;margin:0 0 10px}.logo{width:150px;height:auto;margin-bottom:18px}.progress{height:6px;border-radius:var(--radius-pill);background:var(--s2);overflow:hidden}.progress>span{display:block;height:100%;background:var(--g)}.step{min-height:var(--tg-viewport-stable-height,100dvh);display:flex;flex-direction:column;padding-bottom:24px}.stepmain{flex:1;display:flex;flex-direction:column;justify-content:center}.stepmain.is-top{justify-content:flex-start;padding-top:20px}.step-actions{position:sticky;bottom:0;z-index:3;padding:12px 0 0;background:linear-gradient(transparent,var(--bg) 22%)}.option{width:100%;text-align:left;border:1px solid var(--border);background:var(--s);color:var(--t);border-radius:var(--radius-md);padding:16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.option.sel{border-color:var(--g);background:#8b4cff0f}.check{width:22px;height:22px;border:1px solid var(--m);border-radius:50%;display:grid;place-items:center;flex:none}.sel .check{background:var(--g);color:#fff;border-color:var(--g)}.goalgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.goal{min-height:130px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between}.goal-icon{font-size:var(--fs-4xl);line-height:1}.num{font-size:var(--fs-d2);line-height:1;font-weight:600;text-align:center;margin-top:28px}.stepper{display:grid;grid-template-columns:56px 1fr 56px;gap:12px;align-items:center;margin-top:28px}.stepper button{height:52px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--s);color:var(--t);font-size:var(--fs-2xl)}.stepper button:disabled{opacity:.35;cursor:not-allowed}.range{width:100%;accent-color:var(--g)}textarea,input,select{width:100%;border:1px solid var(--border);background:var(--s);color:var(--t);border-radius:var(--ir);padding:13px;outline:0}textarea{min-height:150px;resize:vertical}textarea:focus,input:focus,select:focus{border-color:var(--g)}.summary>div{padding:12px 0;border-bottom:1px solid var(--border)}.summary>div:last-child{border:0}.summary button{width:auto;min-height:44px;padding:7px 12px}.kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kpi strong{display:block;font-size:var(--fs-2xl)}.kpi span{font-size:var(--fs-xs);color:var(--m)}.homehero{display:flex;align-items:stretch;gap:12px;min-height:180px;overflow:hidden;padding:0}.homehero img{width:36%;flex:none;max-width:none;object-fit:cover;object-position:100% 50%}.homecopy{flex:1;min-width:0;padding:16px 0 16px 16px}.homecopy h2{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--fs-xl);line-height:31px}.workout{border-color:#8b4cff30;background:linear-gradient(145deg,#8b4cff14,var(--s) 48%)}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.tag{padding:5px 9px;border-radius:var(--radius-pill);background:var(--s2);color:var(--m);font-size:var(--fs-xs);white-space:nowrap}.tag.red{color:var(--danger);background:#f8717118}.tag.green{color:var(--accent-text);background:#8b4cff12}.list{display:grid;gap:10px}.exercise{display:grid;grid-template-columns:64px 1fr auto;gap:11px;align-items:center}.media{width:64px;height:64px;border-radius:var(--radius-sm);background:var(--s2)}.loader{width:32px;height:32px;border:3px solid #ffffff20;border-top-color:var(--g);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 12px}@keyframes spin{to{transform:rotate(360deg)}}.stage{min-height:0;display:flex;flex-direction:column}.stage-main{flex:1;display:flex;flex-direction:column;justify-content:center;text-align:center}.ring{width:164px;height:164px;border-radius:50%;margin:0 auto 24px;display:grid;place-items:center;background:conic-gradient(var(--g) var(--p),var(--s2) 0);position:relative}.ring:after{content:"";position:absolute;width:132px;height:132px;border-radius:50%;background:var(--bg)}.ring>div{position:relative;z-index:1}.ring strong{display:block;font-size:var(--fs-4xl)}.resttime{font-size:var(--fs-d3);line-height:1;font-weight:600}.rest-ring{width:200px;height:200px;margin-bottom:20px}.rest-ring:after{width:164px;height:164px}.rest-ring .resttime{font-size:var(--fs-d1);display:block}.next-step{text-align:left}.state{padding:18px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--s)}.error{border-color:#ef444455}.empty{text-align:center;color:var(--m);padding:28px}.modal{position:fixed;inset:0;z-index:40;background:#0009;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:640px;margin:0;max-height:88dvh;overflow-y:auto;overscroll-behavior:contain;background:var(--s);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:20px 16px calc(20px + var(--safe))}.pre-line{white-space:pre-line}.splash{min-height:var(--tg-viewport-stable-height,100dvh);display:grid;place-items:center}.splash .loader{margin:0}@media(min-width:520px){.shell{padding-left:max(24px,var(--safe-left));padding-right:max(24px,var(--safe-right))}}.kira{position:relative;isolation:isolate;height:100dvh;--kshift:max(0px,calc(var(--safe-top) + 58px - min(100vw,640px)*.144))}.kira-step{position:relative}.kira-chat{flex:1;min-height:0;overflow-y:auto;padding:12px 0 14px;display:flex;flex-direction:column;gap:10px}.kira-hero{position:relative;width:calc(100% + 32px);margin:-14px -16px 4px;height:320px;overflow:hidden}.kira-hero img{width:100%;height:100%;object-fit:cover;object-position:50% 25%}.kira-row{display:flex;gap:9px;align-items:flex-end;max-width:84%}.kira-avatar{width:32px;height:32px;border-radius:50%;flex:none;overflow:hidden;background:var(--k-bubble)}.kira-row.active .kira-avatar{box-shadow:0 0 0 2px var(--k-cta1),0 0 10px 2px rgba(139,76,255,.5)}.kira-avatar img{width:100%;height:100%;object-fit:cover}.kira-bubble{background:var(--k-bubble);border:1px solid var(--k-bubble-b);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-xs);padding:12px 15px;font-size:var(--fs-sm);line-height:23px;color:#fff}.kira-bubble.q{font-weight:600}.kira-bubble.active{border-color:var(--k-cta1);box-shadow:0 0 0 1px var(--k-cta1),0 0 26px 4px rgba(139,76,255,.45)}.kira-user{align-self:flex-end;max-width:80%;background:var(--grad);color:#fff;font-weight:500;border-radius:var(--radius-lg) var(--radius-lg) var(--radius-xs) var(--radius-lg);padding:10px 14px;font-size:var(--fs-sm)}.kira-user-input-row{display:flex;justify-content:flex-end;margin-top:2px}.kira-user-input{max-width:60%;width:164px;background:var(--k-bubble);border:1px solid var(--k-bubble-b);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-xs) var(--radius-lg);padding:10px 14px;font-size:var(--fs-md);font-weight:500;color:#fff;text-align:right}.kira-user-input::placeholder{color:var(--k-m);font-weight:400}.kira-user-input:focus{outline:0;border-color:var(--k-cta1);box-shadow:none}.kira-user-input:not(:placeholder-shown){background:var(--grad);border-color:transparent}.kira-user-input.shake{animation:kiraShake .3s}@keyframes kiraShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}.kira-panel{padding:12px 0 6px;display:flex;flex-direction:column;gap:10px;position:sticky;bottom:0}.kira-chips{display:flex;flex-direction:column;gap:10px}
.kira-focus-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.kira-focus-grid .kira-chip{min-height:52px;padding:8px 12px}
.kira-focus-none{grid-column:1/-1}
.kira-focus-hint{color:var(--warn);text-align:center}
.kira-progress{margin-top:12px;padding:0 2px;text-shadow:0 1px 6px rgba(9,9,13,.7)}
.kira-progress-bar{height:3px;border-radius:var(--radius-xs);background:rgba(255,255,255,.3);box-shadow:0 0 0 1px rgba(9,9,13,.35)}
.kira-progress-bar span{display:block;height:100%;border-radius:var(--radius-xs);background:var(--accent);transition:width .25s ease}
.kira-progress-text{display:block;margin-top:6px;text-align:right;font-size:var(--fs-xs);color:var(--t);white-space:nowrap}.kira-chip{width:100%;min-height:52px;padding:10px 18px;border-radius:var(--radius-md);border:1px solid var(--border);color:#fff;font-size:var(--fs-sm);font-weight:500;background:var(--k-bubble);text-align:center}.kira-chip-icon{display:flex;align-items:center;justify-content:space-between;gap:10px}.kira-chip-icon-label{display:flex;align-items:center;gap:10px}.kira-chip.sel{background:var(--grad);border-color:transparent;font-weight:600}.kira-input{width:100%;background:var(--k-bubble)!important;border:1px solid var(--border)!important;border-radius:var(--radius-md)!important}.kira-input:focus{border-color:var(--k-cta1)!important;box-shadow:none}.kira-input-sm{min-height:60px!important}.kira-equip-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kira-equip{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;height:96px;border-radius:var(--radius-lg);background:var(--k-bubble);border:1.5px solid var(--border);color:#fff;font-size:var(--fs-xs);font-weight:500}.kira-equip.sel{border-color:var(--k-cta1);color:var(--k-cta1)}.kira-equip-none{grid-column:1/-1;flex-direction:row;height:60px;border-radius:var(--radius-md)}.kira-summary{display:flex;flex-direction:column;background:var(--k-bubble);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2px 16px}.kira-srow{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-soft);border-left:0;border-right:0;border-top:0;background:transparent;text-align:left}.kira-srow:last-child{border-bottom:0}.kira-srow span:first-child{color:var(--k-m);font-size:var(--fs-xs)}.kira-srow span:last-child{color:#fff;font-size:var(--fs-xs);font-weight:600;text-align:right}.kira .primary{background:var(--grad);color:#fff;border-radius:var(--radius-md)}.kira .primary:disabled{opacity:.35}
.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px;background:var(--surface);border-radius:var(--radius-sm)}.segmented button{min-height:40px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--secondary);font:600 14px/22px var(--font)}.segmented button.on{background:var(--surface-2);color:var(--text)}

.media{width:48px;height:48px;border-radius:var(--radius-sm);background:var(--surface-2);display:grid;place-items:center;overflow:hidden}.media img{width:100%;height:100%;object-fit:contain}.exercise-detail-media{width:100%;height:220px;border-radius:var(--radius-md);background:var(--surface);display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:16px}.exercise-detail-media img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.bars{display:grid;gap:12px}.barrow{display:grid;gap:5px}.bar{height:8px;border-radius:var(--radius-pill);background:var(--surface-2);overflow:hidden}.bar span{display:block;height:100%;background:var(--primary);border-radius:inherit}

.rep-scale-wrap{margin-top:10px;overflow-x:auto;overflow-y:hidden;padding:2px 1px 8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.rep-scale-wrap::-webkit-scrollbar{display:none}.rep-scale{display:flex;gap:8px;min-width:max-content}.rep-option{width:56px;height:56px;flex:none;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--s);color:var(--t);font-size:var(--fs-lg);font-weight:600}.rep-option.in-target{background:#8b4cff18;border-color:#8b4cff55;color:var(--accent-text)}.rep-option.selected{background:var(--g);border-color:var(--g);color:#fff;box-shadow:0 0 0 2px #8b4cff30}.rep-option:focus-visible{outline:2px solid var(--g);outline-offset:2px}

/* Active workout: compact, viewport-bound layout */
.workout-screen{
  width:100%;
  max-width:640px;
  min-height:var(--tg-viewport-stable-height,100dvh);
  margin:0 auto;
  padding:var(--safe-top) max(16px,var(--safe-left)) 0 max(16px,var(--safe-right));
  display:flex;
  flex-direction:column;
}
.workout-header{flex:none}
.profile-screen>.section{margin-top:12px}
.profile-screen .profile-head{display:flex;align-items:center;gap:19px;padding:13px 19px}
.profile-av{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#A56BFF,#6A2FE0);color:#fff;font-size:var(--fs-lg);font-weight:600;line-height:1}
.profile-who{min-width:0;display:flex;flex-direction:column}
.profile-screen .profile-who h3{font-size:var(--fs-lg);line-height:28px;margin:0;overflow-wrap:anywhere}
.rerun-link{display:inline-flex;align-items:center;gap:6px}
.rerun-link:disabled{opacity:.45;cursor:default}
.profile-screen .profile-data{padding-bottom:9px}
.profile-screen .profile-data h3{margin:0;line-height:28px}
.profile-screen .profile-data .rerun-link{min-height:28px;padding:0 6px}
.profile-screen .profile-data .data-rows{margin-top:2px}
.profile-screen .profile-data .data-value{font-size:var(--fs-xs);line-height:19.6px}
.profile-screen .weight-card{padding:14px 20px 13px}
.profile-screen .settings-link{padding:10px 20px}
.workout-header .top{
  height:52px;
  position:relative;
  background:none;
}
.workout-header .brand-mark{width:53px;height:30px}.workout-header .top-title{font-size:var(--fs-sm);line-height:20px;max-width:calc(100% - 38px)}
.workout-header .icon{width:40px;height:40px}
.workout-content{
  flex:1;
  min-height:0;
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  gap:12px;
  padding:2px 0 8px;
}
.workout-screen .caption{color:var(--m);font-size:var(--fs-xs);line-height:19px}
.workout-progress{
  flex:none;
}
.set-segments{display:flex;gap:6px}
.set-seg{flex:1;height:8px;border-radius:var(--radius-xs);background:var(--s2)}
.set-seg.done{background:var(--g)}
.set-seg.current{box-shadow:inset 0 0 0 2px var(--g)}
.workout-progress-label{
  margin-top:6px;
  color:var(--m);
  font-size:var(--fs-sm);
  line-height:23px;
  font-weight:600;
}
.workout-exercise{
  flex:none;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.workout-exercise-name{min-width:0}
.workout-exercise h1{
  font-size:var(--fs-xl);
  line-height:29px;
  margin:0;
}
.workout-muscle{
  margin-top:2px;
  color:var(--m);
  font-size:var(--fs-sm);
  line-height:23px;
}
.workout-target{
  flex:none;
  color:var(--m);
  font-size:var(--fs-sm);
  line-height:23px;
}
.workout-reps{
  flex:none;
}
.workout-inputs{flex:none;display:flex;flex-direction:column;gap:inherit}
.workout-reps .between,.workout-weight .between{margin-bottom:4px}
.workout-weight{
  flex:none;
}
.weight-control{
  display:grid;
  grid-template-columns:52px minmax(0,1fr) 52px;
  gap:8px;
  align-items:center;
  margin-top:4px;
}
.rep-value{
  height:52px;
  display:grid;
  place-items:center;
  border:1px solid var(--s2);
  border-radius:var(--ir);
  background:var(--s);
  font-size:var(--fs-xl);
  font-weight:600;
}
.weight-stepper{
  width:52px;
  height:52px;
  border:1px solid var(--s2);
  border-radius:var(--br);
  background:var(--s);
  color:var(--t);
  font-size:var(--fs-2xl);
  line-height:1;
}
.weight-stepper:active{background:var(--s2)}
.weight-control input{
  min-width:0;
  height:52px;
  padding:8px 10px;
  text-align:center;
  font-size:var(--fs-xl);
  font-weight:600;
  background:var(--s);
}
.workout-technique{
  flex:none;
  width:44px;
  height:44px;
  display:grid;
  place-items:center;
  border:1px solid var(--s2);
  border-radius:var(--br);
  background:var(--s);
  color:var(--accent-text);
}
.workout-technique svg{width:20px;height:20px;fill:currentColor}
.workout-technique-wrap{flex:none;display:flex;flex-direction:column;align-items:center;gap:2px}.workout-technique-cap{font-size:var(--fs-xs);line-height:18px;font-weight:600;color:var(--accent-text);cursor:pointer}
.workout-footer{
  flex:none;
  position:sticky;
  bottom:0;
  z-index:3;
  padding:10px 0 max(12px,var(--safe));
  background:linear-gradient(transparent,var(--bg) 14px);
}
.workout-footer .primary{
  min-height:58px;
  height:58px;
  font-size:var(--fs-md);
}
@media (max-height:720px){
  .workout-screen{padding-left:max(12px,var(--safe-left));padding-right:max(12px,var(--safe-right))}
  .workout-content{gap:8px;padding-bottom:4px}
  .workout-exercise h1{font-size:var(--fs-lg);line-height:26px}
  .weight-stepper,.weight-control input,.rep-value{height:46px}
  .weight-stepper{width:46px}
  .weight-control{grid-template-columns:46px minmax(0,1fr) 46px}
  .workout-technique{width:40px;height:40px}
  .workout-footer .primary{height:52px;min-height:52px}
}
@media (max-width:340px){
  .workout-exercise h1{font-size:var(--fs-lg);line-height:24px}
  .workout-muscle{font-size:var(--fs-xs);line-height:19px}
}
.workout-history{display:none}
/* Tall phones: the sets table (today vs last time) fills the spare height, inputs get bigger and stay above the button (thumb reach) */
@media (min-height:780px){
  .workout-history{display:flex;flex:1 1 0;min-height:0;max-height:calc(var(--rows,4) * 52px + 56px);flex-direction:column;justify-content:space-evenly;padding:6px 14px;background:var(--s);border-radius:var(--radius-md)}
  .hist-row{display:grid;grid-template-columns:28px 1fr 1fr;align-items:center;gap:8px;min-height:30px;font-size:var(--fs-md);font-weight:600}
  .workout-history.no-last .hist-row{grid-template-columns:28px 1fr}
  .hist-head{color:var(--m);font-size:var(--fs-xs);font-weight:400}
  .hist-n,.hist-last{color:var(--m);font-weight:400}
  .hist-ok{color:var(--accent-text)}
  .hist-row.cur{background:#8b4cff20;border-radius:var(--radius-sm);padding:4px 6px;margin:0 -6px;color:var(--accent-text)}
  .workout-previous{display:none}
  .workout-content{gap:20px;padding-top:8px}
  .set-seg{height:10px}
  .workout-exercise h1{font-size:var(--fs-2xl);line-height:34px}
  .workout-target,.workout-previous{font-size:var(--fs-sm);line-height:23px}
  .workout-screen .caption{font-size:var(--fs-sm)}
  .workout-inputs{margin-top:auto}
  .weight-control{grid-template-columns:76px minmax(0,1fr) 76px;gap:10px}
  .weight-stepper{width:76px;height:76px;font-size:var(--fs-3xl);border-radius:var(--radius-md)}
  .rep-value,.weight-control input{height:76px;font-size:var(--fs-4xl);border-radius:var(--radius-md)}
  .workout-technique{width:48px;height:48px}
  .rest-load.compact .load-face{min-height:64px}
}

.workout-previous{color:var(--m);font-size:var(--fs-sm);line-height:23px;margin-top:-6px}

/* Rest screen: compact timer, result of the set just done, optional rating, what is next */
.rest-screen .stage-main{justify-content:flex-start;gap:12px;padding-top:4px}
.rest-screen .caption{color:var(--m);font-size:var(--fs-xs);line-height:19px}
.rest-screen .rest-ring{width:140px;height:140px;margin:0 auto}
.rest-screen .rest-ring:after{width:112px;height:112px}
.rest-screen .rest-ring .resttime{font-size:var(--fs-d1)}
.rest-summary{display:flex;align-items:center;justify-content:center;gap:8px;font-weight:600}
.rest-load{text-align:left}
.rest-rate-error{color:var(--danger);text-align:left}
.rest-rate-error:empty{display:none}
.rest-screen .next-step{padding:10px 12px}
.finish-title{margin:8px 0 0;font-size:var(--fs-xl);line-height:31px}
.plan-row{display:flex;align-items:center;gap:10px;width:100%;padding:9px 0;border:0;background:none;color:var(--t);font-size:var(--fs-sm);text-align:left}
.plan-dot{width:18px;height:18px;flex:none;border-radius:50%;background:var(--s2);display:grid;place-items:center;font-size:var(--fs-xs);color:#fff}
.plan-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plan-row.done .plan-dot{background:var(--g)}
.plan-row.done .plan-name{color:var(--m)}
.plan-row.cur{background:#8b4cff20;border-radius:var(--radius-sm);padding:9px 8px;margin:0 -8px;width:calc(100% + 16px)}
.plan-row.cur .plan-dot{background:transparent;box-shadow:inset 0 0 0 2px var(--g)}
.plan-row.cur .plan-name{color:var(--accent-text);font-weight:600}
.plan-info{flex:none;color:var(--m);font-size:var(--fs-xs)}
.plan-more{color:var(--m)}
.plan-sheet-title{margin:0 0 8px;font-size:var(--fs-lg)}
.plan-block{display:flex;align-items:center;gap:10px;width:100%;padding:12px 12px;text-align:left;color:var(--t);font:inherit;cursor:pointer}
.plan-block:active{opacity:.8}
/* the next set and the plan are one group: closer to each other than to the rest; the waves of the background must not eat the edge of a card */
.rest-screen .plan-block{margin-top:-4px}
.rest-screen .card{border-color:#3d3a45;box-shadow:0 6px 18px rgba(0,0,0,.35)}
.plan-block-icon{flex:none;width:36px;height:36px;display:grid;place-items:center;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-text)}
.plan-block-icon svg{width:24px;height:24px}
.plan-block-copy{flex:1;min-width:0;display:flex;flex-direction:column}
.plan-block-copy b{font-size:var(--fs-sm);line-height:22px;white-space:nowrap}
.plan-block-copy .caption{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plan-block-count{flex:none;color:var(--m);font-size:var(--fs-xs)}
@media (min-height:780px){
  .rest-screen .stage-main{gap:16px;min-height:0;padding-bottom:12px}
  .rest-screen .rest-ring{width:200px;height:200px}
  .rest-screen .rest-ring:after{width:164px;height:164px}
  .rest-screen .rest-ring .resttime{font-size:var(--fs-d1)}
  .rest-screen .load-face{min-height:92px}
  .rest-screen .load-face svg{width:40px;height:40px}
}

/* Per-set perceived load: three faces, optional */
.load-faces{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}
.load-face{
  min-height:76px;
  padding:8px 4px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  border:1px solid var(--s2);
  border-radius:var(--br);
  background:var(--s);
  color:var(--t);
  font-size:var(--fs-xs);
  font-weight:600;
}
.load-face svg{width:32px;height:32px;fill:var(--face);stroke:none}
.load-face.on{background:var(--s2);box-shadow:inset 0 0 0 2px var(--face)}
.load-easy{--face:var(--effort-easy)}
.load-optimal{--face:var(--accent-text)}
.load-hard{--face:var(--effort-hard)}
@media (max-height:720px){.load-face{min-height:62px}.load-face svg{width:28px;height:28px}}

/* Workout completion */








.next-workout{background:var(--s);text-align:left}
.recommendation-list{margin-top:14px}
.recommendation-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 0;border-top:1px solid var(--border)}
.recommendation-row:first-child{border-top:0;padding-top:0}
.recommendation-copy{min-width:0}
.recommendation-copy b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}
.recommendation-value{display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:var(--fs-sm)}
.recommendation-value strong{color:var(--accent-text);font-size:var(--fs-md);min-width:16px;text-align:center}
.recommendation-value strong.muted{color:var(--m)}
@media(max-width:380px){.recommendation-row{grid-template-columns:minmax(0,1fr) auto;gap:8px}.recommendation-value{font-size:var(--fs-xs)}.recommendation-value strong{font-size:var(--fs-md)}}


/* AI workout analysis state */
.ai-analysis-screen{
  width:min(640px,100%);
  min-height:100dvh;
  margin:0 auto;
  padding:var(--safe-top) 16px calc(24px + var(--safe));
  display:flex;
  align-items:center;
  justify-content:center;
}
.ai-analysis-main{
  width:100%;
  max-width:520px;
  text-align:center;
}
.ai-analysis-loader{
  width:84px;
  height:84px;
  margin:0 auto 20px;
  border-radius:var(--radius-lg);
  display:grid;
  place-items:center;
  background:#8b4cff0d;
  border:1px solid #8b4cff30;
}
.ai-analysis-loader .loader{
  width:34px;
  height:34px;
  margin:0;
}
.ai-analysis-main h1{
  margin:6px 0 10px;
  font-size:var(--fs-2xl);
  line-height:34px;
}
.ai-analysis-main>.body{
  max-width:460px;
  margin:0 auto;
}
.ai-analysis-list{
  margin-top:28px;
  display:grid;
  gap:10px;
  text-align:left;
}
.ai-analysis-item{
  min-height:48px;
  display:flex;
  align-items:center;
  gap:12px;
  padding:12px 14px;
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  background:var(--s);
  color:var(--t);
}
.ai-analysis-dot{
  width:8px;
  height:8px;
  flex:none;
  border-radius:50%;
  background:var(--g);
  box-shadow:0 0 0 5px #8b4cff12;
}
@media(max-width:380px){
  .ai-analysis-main h1{font-size:var(--fs-2xl);line-height:35px}
  .ai-analysis-list{margin-top:22px}
  .ai-analysis-item{min-height:44px;padding:10px 12px}
}

/* My Program / exercise detail */
.program-summary{background:linear-gradient(145deg,#8b4cff12,var(--s) 55%);border-color:#8b4cff30}
.program-day{overflow:hidden}
.exercise-button{width:100%;border:0;color:var(--t);text-align:left;padding:0;background:transparent;cursor:pointer}
.exercise-button:active{opacity:.82}
.exercise-button:focus-visible{outline:2px solid var(--g);outline-offset:3px;border-radius:var(--radius-sm)}
.exercise-copy{min-width:0}
.exercise-copy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chev{display:block;width:22px;height:22px;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.exercise-arrow{display:grid;place-items:center;color:var(--m)}.row-chev{display:grid;place-items:center;flex:none;color:var(--m)}
/* My Program mobile hierarchy */
.program-screen{padding-bottom:18px}
.program-subtitle{margin-top:0}
.program-summary{padding:18px 16px}
.program-summary .program-title{margin-top:7px;font-size:var(--fs-2xl);line-height:34px}
.program-goal{margin-top:8px;color:var(--t);font-size:var(--fs-md);line-height:25px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.program-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.program-meta .tag{display:inline-flex;align-items:center;gap:6px}
.program-meta .tag span{color:var(--m)}
.program-days{gap:12px}
.program-day{padding:16px}
.program-day-head{display:flex;flex-direction:column;gap:10px}
.program-day-title h3{margin-top:3px;font-size:var(--fs-xl);line-height:30px}
.program-day-meta{display:flex;flex-wrap:wrap;gap:7px}
.program-exercises{margin-top:14px}
.program-exercises .exercise-button{padding:9px 0}
.program-exercises .exercise-copy b{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:23px}
.program-exercises .caption{margin-top:2px}
.program-exercises .media{width:64px;height:64px}
@media(max-width:380px){
  .program-summary .program-title{font-size:var(--fs-2xl);line-height:33px}
  .program-day-title h3{font-size:var(--fs-xl);line-height:31px}
}

/* UI audit fixes (see docs/ui_local_testing.md) */
button:focus-visible,select:focus-visible{outline:2px solid var(--g);outline-offset:2px}
input:focus-visible,textarea:focus-visible{border-color:var(--g);box-shadow:0 0 0 2px #8b4cff40}
.outline[data-a="reset"]{color:var(--danger);border-color:#f8717166}
.state.inline{padding:10px 12px;font-size:var(--fs-sm);line-height:23px;flex:none}
.state .actions{margin-top:12px;display:grid;gap:10px}
.bar.neg span{background:var(--danger)}
.rep-scale-wrap.has-more{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}
.workout-note{padding:10px 12px;border:1px dashed var(--s2);border-radius:var(--br);color:var(--m);font-size:var(--fs-sm);line-height:23px}
.switch{position:relative;width:52px;height:32px;flex:none}
.switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;background:none;opacity:0;cursor:pointer;z-index:1}
.switch span{position:absolute;inset:0;border-radius:var(--radius-pill);background:var(--s2);transition:background .2s}
.switch span:after{content:"";position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .2s}
.switch input:checked+span{background:var(--g)}
.switch input:checked+span:after{transform:translateX(20px)}
.switch input:focus-visible+span{outline:2px solid var(--g);outline-offset:2px}
.setting-status{min-height:20px;margin-top:8px;color:var(--accent-text);font-size:var(--fs-xs)}
/* the profile: the three vibration variants; the chosen one is lit */
.lang-options{display:grid;gap:8px;margin-top:12px}
.lang-option{min-height:48px;padding:10px 16px;border-radius:var(--br);border:1px solid var(--border);background:transparent;color:var(--t);font:inherit;font-weight:600;text-align:left;cursor:pointer}
.lang-option.on{border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent-text)}
@keyframes pulse{0%,100%{opacity:.25}50%{opacity:1}}
.barrow .between>span:last-child{white-space:nowrap;flex:none}

/* Home: coach hero, season path and weekly quest (FR-5 of docs/functional_requirements.md, stage 1) */
.home-game{display:flex;flex-direction:column;gap:18px;padding-top:0;min-height:calc(100svh - var(--safe-top) - 86px - var(--safe))}
.home-game>*{min-width:0}
.coach-flag{display:inline-flex;align-items:center;gap:4px;background:#a878ff24;border:1px solid #a878ff59;color:var(--accent-text);border-radius:var(--radius-pill);padding:2px 8px;font-size:var(--fs-xs);font-weight:600;white-space:nowrap}
.coach-flag svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.coach-hero{position:relative;margin:calc(-1 * var(--safe-top)) -16px 0;flex:1 0 auto;min-height:260px;display:flex;flex-direction:column;overflow:hidden;background:#09090d}
.coach-hero:before{content:"";position:absolute;left:0;right:0;top:0;height:calc(150px + var(--safe-top));background:linear-gradient(#09090df2 35%,#09090d00);z-index:1;pointer-events:none}
.shell{position:relative}
.top.home-top{position:absolute;left:0;right:0;top:0;margin:0;padding-left:max(16px,var(--safe-left));padding-right:max(16px,var(--safe-right));z-index:6;background:none;grid-template-columns:minmax(0,1fr)}
@media (min-width:520px){.top.home-top{padding-left:max(24px,var(--safe-left));padding-right:max(24px,var(--safe-right))}}
.home-top .top-slot{display:none}
.home-top .brand{justify-content:flex-start}
.home-top .brand-wordmark{width:150px;filter:drop-shadow(0 1px 6px #09090de6)}
.coach-photo{position:absolute;inset:0;background:#09090d var(--img-home) no-repeat center top/cover}
.coach-hero:after{content:"";position:absolute;left:0;right:0;bottom:0;height:42%;background:linear-gradient(to top,#09090d 12%,#09090d00);pointer-events:none}
.coach-in{position:relative;z-index:2;flex:1;padding:calc(60px + var(--safe-top)) 16px 10px;display:flex;flex-direction:column;justify-content:flex-end}
.coach-hi{margin:0 0 10px;max-width:62%;font-size:var(--fs-2xl);line-height:1.1;font-weight:600;color:var(--t)}
.coach-bubble{position:relative;max-width:min(300px,64%);background:#19181eeb;border:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-xs);padding:12px 14px}
.coach-bubble:after{content:"";position:absolute;right:-7px;top:22px;width:14px;height:14px;background:#19181eeb;border-top:1px solid var(--border);border-right:1px solid var(--border);transform:rotate(45deg)}
.coach-bubble.has-acts{max-width:100%}
.coach-bubble.has-acts:after{display:none}
.coach-bt{font-size:var(--fs-md);line-height:1.25;font-weight:600}
.coach-bx{margin-top:4px;font-size:var(--fs-sm);line-height:1.35;color:var(--t-soft)}
.coach-acts{display:grid;gap:8px;margin-top:12px}
.today-head{display:flex;align-items:center;gap:12px;margin:0 2px -6px}
.week-strip{display:block;width:100%;padding:10px 13px 12px;background:rgba(25,24,30,.96);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--t);text-align:left}
.ws-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ws-copy{display:block;min-width:0}
.ws-title{display:block;font-size:var(--fs-xs);line-height:1.25;font-weight:600}
.ws-sub{display:block;font-size:var(--fs-xs);line-height:1.25;color:var(--m)}
.ws-n{flex:none;display:flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:600;color:var(--accent-text);white-space:nowrap}
.ws-n svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ws-days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-top:9px}
.ws-d{min-width:0;font-size:var(--fs-xs);color:var(--m);text-align:center}
.ws-d i{display:grid;place-items:center;width:22px;height:22px;margin:4px auto 0;border-radius:50%;background:#25232b}
.ws-d svg{width:12px;height:12px;stroke:#fff;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.ws-d.dn i{background:var(--g)}
.ws-d.td{color:var(--t);font-weight:600}
.ws-d.td i{box-shadow:inset 0 0 0 2px var(--g)}
.today-label{font-size:var(--fs-sm);font-weight:600;min-width:0}
.today-card{min-width:0;max-width:100%;display:flex;align-items:center;gap:14px;width:100%;min-height:84px;padding:14px 16px;text-align:left;background:var(--s);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--t)}
.today-thumb{width:64px;height:64px;border-radius:var(--radius-sm);overflow:hidden;flex:none;background:#09090d}
.today-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.today-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.today-name{font-size:var(--fs-md);font-weight:600;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.today-meta{font-size:var(--fs-xs);color:var(--m)}
.today-tags{display:flex;flex-wrap:wrap;gap:6px}
.today-chev{flex:none;color:var(--m)}
.today-chev svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sheet-close{margin-top:14px}
@media (min-width:520px){.coach-hero{margin:0 -24px}}
@media (max-width:340px){.coach-hi{font-size:var(--fs-xl)}.coach-bt{font-size:var(--fs-sm)}.today-label{font-size:var(--fs-xs)}.today-meta{font-size:var(--fs-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media (max-height:700px){.today-card .coach-flag{display:none}.week-strip{display:none}}
@media (max-height:700px){.coach-hi{font-size:var(--fs-lg);max-width:none}.coach-hi{margin-bottom:8px}.coach-bx{font-size:var(--fs-xs);line-height:1.3}.coach-bt{font-size:var(--fs-sm)}}
.game-card{padding:14px 16px}
.game-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.game-title{display:flex;align-items:center;gap:8px;font-size:var(--fs-md);font-weight:600;white-space:nowrap;flex:none}
.game-title svg{width:22px;height:22px;stroke:var(--g);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.game-sub{font-size:var(--fs-xs);color:var(--m);text-align:right;min-width:0}
.season-track{display:flex;gap:8px;margin-top:12px}
.season-grp{display:flex;gap:3px;min-width:0}
.season-grp i{flex:1;min-width:0;height:12px;border-radius:var(--radius-xs);background:var(--s2)}
.season-grp i.d{background:var(--g)}
.season-grp i.c{background:var(--bg);border:2px solid var(--g);box-shadow:0 0 0 3px #8b4cff3a}
.season-grp.bar{height:12px;border-radius:var(--radius-xs);background:var(--s2);overflow:hidden}
.season-grp.bar i{flex:none;height:100%;border-radius:0}
.season-labels{display:flex;gap:8px;margin-top:6px}
.season-labels div{display:flex;justify-content:space-between;align-items:center;min-width:0;font-size:var(--fs-xs);color:var(--m)}
.season-labels div.on{color:#fff;font-weight:600}
.season-labels svg{width:13px;height:13px;stroke:var(--tertiary);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.season-labels div.on svg{stroke:var(--accent-text)}
.season-note{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border);font-size:var(--fs-xs);color:var(--t)}
.season-note svg{width:16px;height:16px;stroke:var(--accent-text);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.week-days{display:flex;justify-content:space-between;margin-top:10px}
.week-days div{flex:1;text-align:center;font-size:var(--fs-xs);color:var(--m)}
.week-days i{display:flex;width:32px;height:32px;border-radius:50%;border:1px solid var(--border);margin:4px auto 0;align-items:center;justify-content:center}
.week-days svg{width:15px;height:15px;stroke:#fff;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.week-days .dn i{background:var(--g);border-color:var(--g)}
.week-days .td i{border:2px solid var(--g)}
.game-sep{height:1px;background:var(--line-soft);margin:12px 0}
.streak-row{display:flex;justify-content:space-between;align-items:center;gap:8px}
.streak-text{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);font-weight:600}
.streak-text.muted{font-size:var(--fs-xs);font-weight:500}
.streak-text svg{width:22px;height:22px;stroke:var(--accent-text);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.shield{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:600;color:var(--accent-text);background:#a878ff1a;border:1px solid #a878ff4d;border-radius:var(--radius-pill);padding:4px 10px;white-space:nowrap}
.shield svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.shield.used{color:var(--m);background:var(--line-soft);border-color:var(--border)}
.streak-hint{margin-top:8px;font-size:var(--fs-xs);color:var(--m)}

/* Stage 2: what the trainer changed, the coach's note and the ladder (FR-5 of docs/functional_requirements.md) */
.game-note{font-size:var(--fs-xs);color:var(--m);margin-top:2px}
.plan-change-list{margin-top:8px}
.plan-kept{margin-top:12px}
.plan-change{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--border)}
.pc-ic{width:26px;height:26px;border-radius:50%;background:var(--accent-deep);display:flex;align-items:center;justify-content:center;flex:none}
.pc-ic svg{width:14px;height:14px;stroke:var(--accent-text);fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.plan-change.down .pc-ic{background:var(--s2)}
.plan-change.down .pc-ic svg{stroke:var(--accent-text)}
.plan-change.same .pc-ic{background:var(--s2)}
.plan-change.same .pc-ic svg{stroke:var(--m)}
.pc-main{flex:1;min-width:0}
.pc-name{font-size:var(--fs-sm);font-weight:600;line-height:1.25}
.pc-lvl{font-size:var(--fs-xs);font-weight:600;color:var(--accent-text);margin-left:4px;white-space:nowrap}
.pc-cap{font-size:var(--fs-xs);color:var(--m);margin-top:2px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.plan-change.down .pc-cap{color:var(--accent-text)}
.plan-change[data-a="pc-toggle"]{cursor:pointer}
.plan-change.open .pc-cap{display:block;-webkit-line-clamp:unset;overflow:visible}
.pc-more{display:none;margin-top:2px;font-size:var(--fs-xs);color:var(--accent-text)}
.plan-change.clipped:not(.open) .pc-more-show,.plan-change.clipped.open .pc-more-hide{display:block}
.pc-chip{font-size:var(--fs-xs);font-weight:600;color:var(--accent-text);background:var(--accent-deep);border-radius:var(--radius-pill);padding:3px 9px;white-space:nowrap;flex:none}
.plan-change.down .pc-chip{color:var(--accent-text);background:var(--s2)}
.plan-change.same .pc-chip{color:var(--m);background:var(--s2)}

/* Stage 3: achievements, block/season summary on the completion screen (FR-5 of docs/functional_requirements.md) */
.season-done-card{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;border-color:#a878ff66;background:linear-gradient(160deg,#a878ff14,var(--s) 60%)}
.season-done-ic{width:60px;height:60px;border-radius:50%;background:#a878ff29;color:var(--accent-text);display:flex;align-items:center;justify-content:center;margin-bottom:4px}
.season-done-ic svg{width:30px;height:30px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.season-done-card .primary{margin-top:10px}
.block-done-card{background:linear-gradient(160deg,#8b4cff14,var(--s) 60%);border-color:#8b4cff4d}
.block-done-row{display:flex;align-items:center;gap:12px}
.block-done-row svg{width:26px;height:26px;stroke:var(--g);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}.kira-welcome{height:var(--tg-viewport-stable-height,100dvh);width:100%;max-width:640px;margin:0 auto;display:flex;flex-direction:column;background:var(--k-bg1);position:relative;overflow:hidden}.kira-welcome-hero{position:relative;width:100%;flex:1;min-height:0;overflow:hidden}.kira-welcome-hero img{width:100%;height:100%;object-fit:cover;object-position:50% 20%}.kira-welcome-hero:after{display:none}.kira-welcome-content{padding:24px max(20px,var(--safe-left)) 0}.kira-welcome-content h1{font-size:var(--fs-2xl);line-height:36px;font-weight:600;color:#fff;margin:0 0 6px;letter-spacing:-0.3px}.kira-welcome-sub{font-size:var(--fs-lg);line-height:26px;font-weight:600;color:var(--k-cta1);margin:0 0 16px}.kira-welcome-body{font-size:var(--fs-sm);line-height:23px;color:var(--k-m);margin:0 0 20px}.kira-welcome-card{margin:0}.kira-welcome-cta{margin-top:auto;padding:20px max(20px,var(--safe-left)) calc(20px + var(--safe))}.kira-welcome-cta .primary{background:var(--grad);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:space-between}.kira-bubble.kira-typing{display:flex;gap:4px;align-items:center;padding:14px 16px}.kira-typing span{width:6px;height:6px;border-radius:50%;background:var(--k-m);animation:kiraDot 1.1s infinite ease-in-out}.kira-typing span:nth-child(2){animation-delay:.15s}.kira-typing span:nth-child(3){animation-delay:.3s}@keyframes kiraDot{0%,60%,100%{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.kira-chips-quick{flex-direction:row;flex-wrap:wrap;gap:8px}.kira-chip-sm{width:auto;min-height:auto;padding:9px 14px;font-size:var(--fs-xs);border-radius:var(--radius-pill)}

.kira-gen{transition:opacity .35s ease}.kira-gen.gen-leave{opacity:0}.gen-main{align-items:stretch;justify-content:flex-end;gap:12px;padding-bottom:min(64px,8dvh)}.gen-row{display:flex;align-items:center;gap:12px}.gen-avatar{width:72px;height:72px;border-radius:50%;overflow:hidden;flex:none;box-shadow:0 0 0 1.5px var(--k-cta1),0 0 8px rgba(139,76,255,.25)}.gen-avatar img{width:100%;height:100%;object-fit:cover}.gen-bubble{flex:1;min-width:0;min-height:72px;padding:16px 18px;font-size:var(--fs-md);line-height:26px;display:flex;align-items:center;border:1px solid rgba(139,76,255,.7);box-shadow:0 0 12px rgba(139,76,255,.18);text-align:left;animation:genIn .3s ease}.gen-dots{display:flex;gap:4px;align-items:center;padding:4px 0}.gen-dots span{width:6px;height:6px;border-radius:50%;background:var(--k-m);animation:kiraDot 1.1s infinite ease-in-out}.gen-dots span:nth-child(2){animation-delay:.15s}.gen-dots span:nth-child(3){animation-delay:.3s}.gen-steps{list-style:none;margin:6px 0 0 84px;padding:0;text-align:left}.gen-step{position:relative;display:flex;gap:14px;padding-bottom:22px;min-height:24px;opacity:.5}.gen-step:last-child{padding-bottom:0}.gen-step:not(:last-child)::before{content:"";position:absolute;left:11px;top:28px;bottom:4px;width:2px;border-radius:1px;background:var(--border)}.gen-step.done::before{background:var(--k-cta1)}.gen-mark{width:24px;height:24px;border-radius:50%;border:2px solid #4a4752;display:grid;place-items:center;flex:none;color:#fff}.gen-text{display:grid;gap:2px;min-width:0}.gen-title{font-size:var(--fs-sm);line-height:21px;font-weight:600;color:var(--k-m)}.gen-sub{font-size:var(--fs-xs);line-height:18px;color:var(--k-m)}.gen-step.active{opacity:1}.gen-step.active .gen-title{color:#fff}.gen-step.active .gen-mark{border-color:var(--k-cta1);background:radial-gradient(circle,#fff 0 26%,transparent 30%);box-shadow:0 0 10px rgba(139,76,255,.45);animation:genPulse 1.4s ease-in-out infinite}.gen-step.done{opacity:1}.gen-step.done .gen-title{color:rgba(255,255,255,.82)}.gen-step.done .gen-mark{background:var(--k-cta1);border-color:var(--k-cta1)}@media(max-height:700px){.gen-sub{display:none}.gen-step{padding-bottom:16px}.gen-step:not(:last-child)::before{bottom:2px}}@keyframes genIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes genPulse{0%,100%{opacity:.55}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.gen-bubble,.gen-step.active .gen-mark,.gen-dots span{animation:none}}

/* ==== design system layer ==== */
/* Dark premium fitness / AI coach. Tokens live in :root; this layer fixes the shared components so every screen
   (onboarding -> generation -> program -> workout -> rest -> finish -> progress -> profile) reads as one product. */
html,body{font-family:var(--font);font-size:var(--fs-md);line-height:1.45;background:var(--bg);color:var(--t);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}
h1{font-size:var(--fs-4xl);line-height:1.12;font-weight:600;letter-spacing:-.01em}
h2{font-size:var(--fs-2xl);line-height:1.15;font-weight:600}
h3{font-size:var(--fs-lg);line-height:1.25;font-weight:600}
.body{font-size:var(--fs-md);line-height:1.45}
.muted,.caption{color:var(--m)}
.caption{font-size:var(--fs-xs);line-height:1.4}

/* buttons */
.primary,.secondary,.outline{min-height:62px;border-radius:var(--r-btn);padding:14px 20px;font-size:var(--fs-md);font-weight:600;transition:transform .15s ease,box-shadow .2s ease,background-color .2s ease,border-color .2s ease}
.primary{background:var(--grad);color:#fff;border:0;box-shadow:0 0 24px rgba(139,76,255,.20)}
.primary:active{transform:scale(.985)}
.primary:disabled{background:var(--s2);color:var(--disabled);box-shadow:none;opacity:1}
.secondary,.outline{background:rgba(255,255,255,.02);color:var(--t);border:1px solid var(--border)}
.secondary:active,.outline:active{background:rgba(255,255,255,.05)}

/* surfaces */
.card,.state{background:var(--s);border:1px solid var(--border);border-radius:var(--r-card);padding:20px}
.icon{border-radius:var(--radius-lg);background:rgba(25,24,30,.88);border:1px solid rgba(255,255,255,.06);color:var(--t)}
.tag{padding:6px 14px;border-radius:var(--r-badge);background:var(--s2);color:var(--m);font-size:var(--fs-sm);line-height:20px}
.tag.green{color:var(--accent-text);background:var(--accent-soft);border:1px solid var(--accent-border)}
.segmented{border-radius:var(--r-input);background:var(--s);border:1px solid var(--border)}
.segmented button{border-radius:var(--radius-md);font-size:var(--fs-sm)}
.segmented button.on{background:var(--accent-soft);color:var(--accent-text);box-shadow:inset 0 0 0 1px var(--accent-border)}

/* inputs */
textarea,input,select{background:var(--s);border:1px solid var(--border);border-radius:var(--r-input);padding:16px 18px;font-size:var(--fs-md);color:var(--t)}
textarea::placeholder,input::placeholder{color:var(--m)}
textarea:focus,input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 16px rgba(139,76,255,.15)}
input:focus-visible,textarea:focus-visible{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 16px rgba(139,76,255,.15)}

/* active / selected: border + accent + faint glow, never neon */
.option.sel,.kira-chip.sel,.kira-equip.sel{border-color:var(--accent);box-shadow:0 0 18px rgba(139,76,255,.20)}

/* bottom navigation */
.nav{background:var(--bg);backdrop-filter:none;-webkit-backdrop-filter:none;border-top:1px solid var(--border)}.nav::before{content:"";position:absolute;z-index:-1;left:0;right:0;bottom:100%;height:24px;pointer-events:none;background:linear-gradient(rgba(9,9,13,0),var(--bg))}
.nav button{font-size:var(--fs-xs);color:var(--m);transition:color .2s ease}
.nav .on{color:var(--accent);background:transparent}
.nav button[data-a="nav:start"] i{width:52px;height:52px;margin:-22px auto -5px;border-radius:50%;align-items:center;background:var(--grad);color:#fff;box-shadow:0 0 24px rgba(139,76,255,.30)}
.nav button[data-a="nav:start"].on{color:var(--accent-text)}
.nav button[data-a="nav:start"] svg{width:24px;height:24px}

/* Kira chat (onboarding) */
.kira-bubble{font-size:var(--fs-md);line-height:26px;padding:14px 18px;border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-xs);background:var(--s);border:1px solid var(--border);color:var(--t)}
.kira-bubble.active{border:2px solid var(--accent);padding:13px 17px;box-shadow:0 0 18px rgba(139,76,255,.20)}
.kira-user{font-size:var(--fs-md);line-height:26px;padding:12px 18px;border-radius:var(--radius-lg) var(--radius-lg) var(--radius-xs) var(--radius-lg);background:var(--grad);color:#fff}
.measure-hint{margin:6px 4px 0;text-align:right;color:var(--danger)}
.kira-user-input{font-size:var(--fs-md);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-xs) var(--radius-lg)}
.kira-row.active .kira-avatar{box-shadow:0 0 0 1.5px var(--accent),0 0 10px rgba(139,76,255,.25)}
.kira-chip{min-height:62px;border-radius:var(--r-btn);font-size:var(--fs-md);background:var(--s);border:1px solid var(--border)}
.kira-chip-sm{min-height:0;border-radius:var(--r-badge);padding:8px 14px;font-size:var(--fs-sm)}
.kira-equip{border-radius:var(--r-card);font-size:var(--fs-sm)}
.kira-summary{border-radius:var(--r-card)}
.kira-srow span:first-child,.kira-srow span:last-child{font-size:var(--fs-sm)}
.kira .primary{border-radius:var(--r-btn)}

/* photo screens: cinematic overlay, photo fitted to the width (never zoomed), opaque below the photo's lower edge */



/* generation: vertical steps, no constant pulsing */
.gen-bubble{font-size:var(--fs-md);line-height:26px;border:2px solid var(--accent);padding:14px 18px;box-shadow:0 0 18px rgba(139,76,255,.20)}
.gen-title{font-size:var(--fs-md);line-height:24px}
.gen-sub{font-size:var(--fs-sm);line-height:22px}
.gen-step.active .gen-mark{animation:none;box-shadow:0 0 12px rgba(139,76,255,.30)}
.gen-step:not(:last-child)::before{background:var(--border)}
.gen-step.done::before{background:var(--accent)}

/* calm motion */
@media(prefers-reduced-motion:reduce){*:not(.loader){animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.plan-change.down .pc-ic svg{stroke:var(--m)}
.plan-change.down .pc-cap,.plan-change.down .pc-chip{color:var(--m)}
.bar.neg span{background:var(--tertiary)}
.program-meta .tag:nth-child(2){color:var(--accent-text);background:var(--accent-soft);border:1px solid var(--accent-border)}
.nav button{padding-left:2px;padding-right:2px;letter-spacing:-.01em}
.gen-sub{font-size:var(--fs-sm);line-height:20px;max-height:40px;overflow:hidden}   /* the edits of "Настроить программу" may be long */
.gen-step{padding-bottom:16px}
.gen-step:last-child{padding-bottom:0}
@media(max-height:700px){.gen-step{padding-bottom:14px}}

/* ==== program screen: the card of Kira (no photo, no chat), the program right below; the settings screens ==== */
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}




/* the dialogs of Kira before a workout (skip, pain, readiness, no such weight) */
.pchat-user{align-self:flex-end;max-width:84%}
.pchat-user .kira-user{background:var(--accent);max-width:none}
.pchat-ask{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.pchat-ask textarea{min-height:130px;resize:none;border-radius:var(--r-card)}
.pchat-ask textarea:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 16px rgba(139,76,255,.15)}
.pchat-rows{display:flex;flex-direction:column;gap:10px}
.pchat-quick{display:flex;flex-wrap:wrap;gap:10px;padding-left:41px}
.pchat-q{min-height:48px;padding:10px 18px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--s);color:var(--t);font-size:var(--fs-sm);font-weight:500;transition:border-color .2s ease,color .2s ease}
.pchat-q:active,.pchat-q:hover{border-color:var(--accent);color:var(--accent-text)}
body.kbd-open .nav{display:none}
.pcard{display:flex;flex-direction:column;gap:10px;margin-bottom:20px;padding:14px 16px}
.pcard-head{display:flex;gap:10px;align-items:center}
.pcard-head .kira-avatar{width:36px;height:36px}
.pcard-summary{flex:1;min-width:0;margin:0;font-size:var(--fs-sm);line-height:24px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.pcard-tune{flex:none;width:40px;height:40px;padding:0;display:grid;place-items:center;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--s2);color:var(--t)}
.pcard-facts{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;border-top:1px solid var(--border);padding-top:8px;color:var(--m);font-size:var(--fs-xs);line-height:20px}
.pcard-fact{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.pcard-fact svg{flex:none;width:16px;height:16px;color:var(--accent-text)}
.pcard-why-toggle{margin:-10px -6px -10px auto;width:32px;height:40px;padding:0;display:grid;place-items:center;border:0;background:none;color:var(--accent-text)}
.pcard-reasons{margin:0;padding:0 0 4px 20px;display:flex;flex-direction:column;gap:10px;font-size:var(--fs-sm);line-height:24px}
.pcard-sheet-summary{margin:0 0 12px}.pcard-sheet-considered{margin:0 0 12px;color:var(--m)}
.pcard-result{display:flex;flex-direction:column;gap:12px}
.pcard-says{display:flex;flex-direction:column;gap:10px}.pcard-say{margin:0;font-size:var(--fs-sm);line-height:24px;overflow-wrap:anywhere}
.pcard-buttons{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.pset-screen{display:flex;flex-direction:column;gap:14px;min-height:calc(100dvh - 120px)}
.pset-kira{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:var(--r-card);background:var(--s);border:1px solid var(--border)}
.pset-kira .kira-avatar{width:36px;height:36px}.pset-kira p{margin:0;font-size:var(--fs-sm);line-height:24px}
.pset-body{display:flex;flex-direction:column;gap:14px}
.pset-row{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;text-align:left;color:var(--t);font-size:var(--fs-md)}
.pset-row .caption{color:var(--m);margin-top:2px}
.pset-block{display:flex;flex-direction:column;gap:12px}
.pset-block textarea{min-height:104px;resize:none;border-radius:var(--r-card)}
.pset-chips{display:flex;flex-wrap:wrap;gap:8px}
.pset-chip{min-height:44px;padding:8px 16px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--s);color:var(--t);font-size:var(--fs-sm);font-weight:500;transition:border-color .2s ease,color .2s ease}
.pset-chip.on{border-color:var(--accent);color:var(--accent-text);background:var(--accent-soft)}
.pset-day{display:flex;flex-direction:column;gap:10px}.pset-day>.caption{color:var(--m)}
.pset-ex{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;padding:10px 12px;border-radius:var(--radius-md);background:var(--s);border:1px solid var(--border)}
.pset-ex .media{width:56px;height:56px;border-radius:var(--radius-sm);overflow:hidden}.pset-ex .media img{width:100%;height:100%;object-fit:cover}
.pset-thumb{width:56px;height:56px;border-radius:var(--radius-sm);background:var(--s2)}
.pset-ex-name{min-width:0;font-size:var(--fs-sm);line-height:22px}.pset-ex-name .caption{color:var(--m)}
.pset-ex.gone .pset-ex-name span:first-child{text-decoration:line-through;color:var(--m)}.pset-ex.gone .media{opacity:.45}
.pset-ex.added{border-color:var(--accent-border)}
.pset-x{min-width:44px;min-height:44px;border-radius:50%;border:1px solid var(--border);background:var(--s2);color:var(--t);font-size:var(--fs-md)}
.pset-plus{border-color:var(--accent-border);color:var(--accent-text);font-size:var(--fs-xl)}
.pset-link{min-height:44px;padding:8px 6px;border:0;background:none;color:var(--accent-text);font-size:var(--fs-sm);font-weight:600}
.pset-add{min-height:52px;border-radius:var(--radius-md);border:1px dashed var(--accent-border);background:none;color:var(--accent-text);font-size:var(--fs-sm);font-weight:600}
.pset-search input{width:100%}.pset-search{padding:8px}
.pset-results{display:flex;flex-direction:column;gap:10px}
.pset-error{color:var(--danger);margin:0;font-size:var(--fs-sm);line-height:22px}
.pset-bottom .pset-error{margin:0 0 10px}
.pset-replace{display:block;margin-top:2px;padding:6px 0;min-height:36px;text-align:left}
.pset-pending,.pcard-pending{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border:1px solid var(--accent-border);background:var(--accent-soft);border-radius:var(--r-card)}
.pcard-pending{border-radius:var(--radius-md)}
.pcard-pending-buttons{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pcard-pending .outline{min-height:44px;font-size:var(--fs-sm);padding:8px 16px}
.pset-error:empty{display:none}
.note-line{margin:0 0 10px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--accent-soft);border:1px solid var(--accent-border);font-size:var(--fs-sm);line-height:21px}
.data-rows{display:flex;flex-direction:column;margin-top:6px}
.data-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;border-top:1px solid var(--border)}
.data-row:first-child{border-top:0}
.data-value{text-align:right;font-size:var(--fs-sm);overflow-wrap:anywhere}
.weight-top{display:flex;justify-content:space-between;align-items:center;gap:12px}
.weight-main{min-width:0}
.weight-line{display:flex;align-items:baseline;gap:10px;margin-top:2px}
.weight-big{font-size:var(--fs-xl);line-height:30px}
.weight-chip{color:var(--accent-text);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}
.weight-period{margin-top:2px}
.weight-plus{flex:none;width:44px;height:44px;padding:0;border:0;border-radius:var(--radius-pill);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-text)}
.progress-screen .weight-card{padding:14px 20px 12px}
.weight-history-link{display:flex;justify-content:space-between;align-items:center;width:100%;margin-top:12px;padding:12px 0 2px;border:0;border-top:1px solid var(--border);background:none;color:var(--accent-text);font-size:var(--fs-md)}
.weight-history-link svg{color:var(--m)}
.weight-sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.weight-sheet-head .plan-sheet-title{margin:0}
.weight-x{flex:none;width:44px;height:44px;margin:-8px -8px 0 0;border:0;background:none;color:var(--m);font-size:var(--fs-lg)}
.weight-entries{display:flex;flex-direction:column;gap:10px;max-height:56dvh;overflow-y:auto}
.weight-entry{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--s2);color:var(--t);text-align:left}
.weight-entry-date{display:block;color:var(--m);font-size:var(--fs-xs);line-height:18px}.weight-entry-date em{font-style:normal;color:var(--accent-text)}
.weight-entry-kg{display:block;margin-top:4px;font-size:var(--fs-lg);line-height:26px;font-weight:600}
.weight-entry-delta{flex:none;white-space:nowrap;color:var(--accent-text);font-size:var(--fs-sm)}.weight-entry-delta.flat{color:var(--m)}
.weight-hint{margin:12px 0 0;text-align:center}
.weight-add .caption{margin:0 0 12px}
.weight-field{display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--s2)}
.weight-field input{flex:1;min-width:0;height:44px;margin:0;text-align:center;font-size:var(--fs-lg)}
.weight-unit{flex:none;font-size:var(--fs-lg);font-weight:600}
.weight-date{display:flex;align-items:center;gap:10px;margin:12px 0 4px;padding:6px 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--s2);color:var(--m)}
.weight-date input{flex:1;min-width:0;height:40px;margin:0;border:0;background:none;color:var(--t);font-size:var(--fs-md)}
.weight-add .primary{margin-top:8px}
.settings-link{display:flex;width:100%;align-items:center;gap:12px;text-align:left;color:var(--t);font:inherit;cursor:pointer}
.settings-link-ic{color:var(--accent-text);display:grid;place-items:center}
.settings-link-copy{flex:1;display:flex;flex-direction:column}
.settings-trainers{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.settings-trainer{display:flex;flex-direction:column;padding:0;border:1.5px solid var(--border);border-radius:var(--radius-md);overflow:hidden;background:var(--s);color:var(--t);text-align:left}
.settings-trainer.sel{border-color:var(--accent);box-shadow:0 0 18px #8b4cff40}
.settings-trainer-photo{display:block;width:100%;aspect-ratio:2/3;background:var(--bg2) center top/cover no-repeat}
.settings-trainer-copy{display:flex;flex-direction:column;padding:8px 10px 10px;gap:2px}
.pset-bottom{position:sticky;bottom:0;z-index:3;display:flex;flex-direction:column;gap:10px;margin-top:auto;padding:12px 0 0;background:linear-gradient(rgba(9,9,13,0),rgba(9,9,13,.92) 22%)}
.pset-bottom .primary,.pset-bottom .outline{width:100%}
.program-data{padding-top:8px}

.program-day{background:none;border:0;padding:0;overflow:visible}
.program-day-head{gap:12px}
.program-exercises{margin-top:12px;gap:10px}
.program-exercises .exercise-button{padding:12px 14px;background:var(--s);border:1px solid var(--border);border-radius:var(--radius-lg);grid-template-columns:64px 1fr auto}
.program-exercises .exercise-arrow{color:var(--m)}
.program-exercises .media{border-radius:var(--radius-sm)}
.program-days{gap:28px}




/* ==== pattern background (assets/background_pattern.svg) instead of a flat black screen ==== */
/* A fixed layer behind the whole app (no `background-attachment: fixed`, which is unreliable on iOS). The page itself and
   the panels that used to be opaque black are transparent so the pattern shows through everywhere. */
html{background:#09090D}
body{background:transparent}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:#09090D url(/static/assets/background_pattern.svg) center/cover no-repeat}
.top{background:linear-gradient(rgba(9,9,13,.92) 70%,rgba(9,9,13,0))}
.step-actions{background:linear-gradient(rgba(9,9,13,0),rgba(9,9,13,.92) 22%)}
.workout-footer{background:linear-gradient(rgba(9,9,13,0),rgba(9,9,13,.92) 14px)}
/* photo screens: the overlay is sized to the photo, below it the pattern shows (it used to be flat black) */

.kira-welcome{background:transparent}
/* the photo dissolves into the pattern: it is its own layer (::before) with a mask, never an opaque dark band */
.kira,.kira-gen{--hph:calc(min(100vw,640px)*1.79)}
.kira::before{content:"";position:absolute;left:0;right:0;top:var(--kshift);height:calc(min(var(--hph),100%) - var(--kshift));z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(9,9,13,.20) 0%,rgba(9,9,13,.35) 35%,rgba(9,9,13,.80) 62%,#09090D 80%,#09090D 100%),var(--img-intro) center top/100% auto no-repeat;-webkit-mask-image:linear-gradient(180deg,#000 0,#000 68%,transparent 100%);mask-image:linear-gradient(180deg,#000 0,#000 68%,transparent 100%)}
.kira::after{content:"";position:absolute;left:0;right:0;top:0;height:calc(var(--kshift) + 1px);z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(9,9,13,.20),rgba(9,9,13,.20)),var(--img-intro) center top/100% calc(var(--hph)*20) no-repeat}
.kira-welcome-hero{-webkit-mask-image:linear-gradient(180deg,#000 0,#000 62%,transparent 100%);mask-image:linear-gradient(180deg,#000 0,#000 62%,transparent 100%)}
/* the active step spins (a calm, functional "working" signal) so a long wait on the last step never looks frozen */
.gen-step.active .gen-mark{position:relative}
.gen-step.active .gen-mark::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid transparent;border-top-color:var(--accent-text);animation:spin 1.1s linear infinite}
@media(prefers-reduced-motion:reduce){.gen-step.active .gen-mark::after{animation:none}}
/* exercise photos: portrait 9:16 photos of Kira; each is shown through a window centred on the athlete (background-position is computed in JS) */
.program-exercises .media img{object-fit:cover}
.exercise-photo{display:block;width:100%;height:auto;border-radius:var(--radius-md);background:var(--s);margin-bottom:16px}
/* the exercise screen of a program day: "2 из 7" on the photo, and the slide after a swipe to the next or the previous exercise */
.exercise-media{position:relative}
/* the full name under the photo: only when the header cuts it with an ellipsis (showFullName in views/exercise_detail.js) */
.exercise-title{display:none;margin:2px 0 0;font-size:var(--fs-lg);line-height:28px;font-weight:600;overflow-wrap:anywhere}
.exercise-title.show{display:block}
.exercise-counter{position:absolute;top:12px;right:12px;padding:3px 10px;border-radius:var(--radius-pill);background:rgba(9,9,13,.62);color:#fff;font-size:var(--fs-xs);line-height:18px;font-weight:600;pointer-events:none}
/* the muscle card under the tags: the body from the front and the back, the main muscles lit strongly, the helpers softly, and the same in words */
.mus-card{display:flex;align-items:center;gap:14px;margin-top:14px;padding:12px 14px}
.mus-figures{display:flex;gap:4px;flex:none}
.body-fig{display:block;width:80px;height:158px}
.mz{fill:#403d4b;stroke:var(--s);stroke-width:1.2;stroke-linejoin:round}
.mus-glow{fill:var(--accent);opacity:.9}
.mz.s{fill:rgba(139,76,255,.55)}
.mz.p{fill:var(--accent)}
.mus-words{display:grid;gap:12px;min-width:0}
.mus-line .caption{display:flex;align-items:center;gap:6px}
.mus-dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--accent)}
.mus-dot.s{background:rgba(139,76,255,.55)}
.mus-names{margin-top:2px;font-size:var(--fs-sm);line-height:22px;font-weight:600;overflow-wrap:anywhere}
#app.again .screen:not(.slide-next):not(.slide-prev){animation:none}
.screen.slide-next{animation:slide-from-right .22s ease}
.screen.slide-prev{animation:slide-from-left .22s ease}
@keyframes slide-from-left{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
@keyframes slide-from-right{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.screen.slide-next,.screen.slide-prev{animation:none}}
/* workout: the photo is the background of the top of the screen (its own masked layer, like Kira on the program screen), a dark veil keeps the title readable */
.workout-screen.has-photo{position:relative}
.workout-screen.has-photo::before{content:"";position:absolute;left:0;right:0;top:0;height:min(100%,min(100vw,640px),46dvh);z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(9,9,13,.62) 0%,rgba(9,9,13,.40) 38%,rgba(9,9,13,.78) 78%,#09090D 100%),var(--wphoto) var(--wpos)/100% auto no-repeat;-webkit-mask-image:linear-gradient(180deg,#000 0,#000 70%,transparent 100%);mask-image:linear-gradient(180deg,#000 0,#000 70%,transparent 100%)}
.workout-screen.has-photo .workout-exercise h1,.workout-screen.has-photo .workout-muscle,.workout-screen.has-photo .workout-progress-label{text-shadow:0 1px 8px rgba(9,9,13,.85)}
.workout-screen.has-photo .workout-progress-label,.workout-screen.has-photo .workout-target,.workout-screen.has-photo .workout-muscle{color:var(--t-soft)}
/* technique: a step-by-step instruction, one step open at a time */
.guide{margin-top:20px}
.guide-intro{margin:8px 0 0;color:var(--m);font-size:var(--fs-sm);line-height:24px;white-space:pre-line;overflow-wrap:anywhere}
.guide-steps{display:grid;gap:10px;margin-top:12px}
.guide-step{background:var(--s);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;transition:border-color .2s}
.guide-step.open{border-color:var(--accent-border,#8b4cff55)}
.guide-head{width:100%;min-height:60px;display:flex;align-items:center;gap:14px;padding:12px 16px;border:0;background:transparent;color:var(--t);text-align:left;cursor:pointer;font:inherit}
.guide-head:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:var(--radius-lg)}
.guide-num{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--s2);color:var(--m);font-size:var(--fs-xs);font-weight:600;letter-spacing:.02em;transition:background .2s,color .2s}
.guide-step.open .guide-num{background:var(--accent);color:#fff}
.guide-title{flex:1;min-width:0;font-size:var(--fs-md);line-height:24px;font-weight:600;overflow-wrap:anywhere}
.guide-chevron{flex:none;width:22px;height:22px;color:var(--m);transition:transform .25s}
.guide-step.open .guide-chevron{transform:rotate(180deg);color:var(--accent-text)}
.guide-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s ease}
.guide-step.open .guide-body{grid-template-rows:1fr}
.guide-body-clip{overflow:hidden;min-height:0}
.guide-body p{margin:0;padding:0 16px 16px 66px;color:#cfccd4;font-size:var(--fs-sm);line-height:24px;white-space:pre-line;overflow-wrap:anywhere}
@media(prefers-reduced-motion:reduce){.guide-body,.guide-chevron,.guide-num,.guide-step{transition:none}}
/* the rest and set screens link to the exercise screen */
.plan-row{width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.plan-more,.next-more{margin-left:auto;color:var(--m);font-size:var(--fs-lg);line-height:1}
.next-step-link{display:flex;align-items:center;gap:12px;width:100%;text-align:left;color:var(--t);font:inherit;cursor:pointer}
.next-step-link:active,.plan-row:active,.next-exercise:active{opacity:.8}
/* rest screen, the exercise has ended: the next one in full (photo, name, numbers), above the plan list and on every phone size */
.next-exercise{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;text-align:left;color:var(--t);font:inherit;cursor:pointer}
.next-exercise .media,.next-step .media{width:64px;height:64px;flex:none}
.next-exercise-copy{flex:1;min-width:0}
.next-step-copy{flex:1;min-width:0;overflow-wrap:anywhere}
.next-exercise-copy b{display:block;margin:1px 0;font-size:var(--fs-sm);line-height:22px;overflow-wrap:anywhere}
.rest-done{position:sticky;top:0;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 16px 0;padding:10px 12px 10px 16px;border-radius:var(--radius-md);background:var(--accent-soft);border:1px solid var(--accent-border);color:var(--t);font-size:var(--fs-sm);font-weight:600}
.rest-done-go{flex:none;min-height:44px;padding:0 18px;border:0;border-radius:var(--radius-sm);background:var(--accent);color:#fff;font:inherit;font-weight:600;cursor:pointer}
/* "Не могу сейчас" */
.workout-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}
.rest-offer{width:100%;padding:14px 16px}
.lw-card{padding:14px 16px;margin-bottom:12px}
.lw-card .stack{margin-top:12px}
.coach-chip{display:inline-flex;align-self:flex-start;background:#a878ff24;border:1px solid #a878ff59;color:var(--accent-text);border-radius:var(--radius-pill);padding:2px 10px;font-size:var(--fs-xs);font-weight:600;margin:-3px 0 9px}
.week-line{margin:6px 0 0;color:var(--accent-text)}
.week-line{margin:0 0 12px}
.lighter-note{margin:8px 0 0}
.rest-offer-text{margin:0 0 12px;font-size:var(--fs-sm);line-height:23px}
.workout-adjusted{color:var(--accent-text);font-size:var(--fs-xs);line-height:20px;margin-top:-6px}
.lighter-card{width:100%;padding:14px 16px}
.lighter-card h3{margin:0 0 6px;font-size:var(--fs-sm);line-height:22px}
.lighter-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:8px 0;border-top:1px solid var(--border)}
.lighter-row:first-of-type{border-top:0}
.lighter-name{font-size:var(--fs-sm);line-height:21px;min-width:0}
.lighter-change{flex:none;font-size:var(--fs-sm);line-height:21px;color:var(--accent-text);text-align:right}
.workout-meta .workout-target{flex:1;min-width:0}
.workout-skip{flex:none;display:inline-flex;align-items:center;min-height:44px;margin-block:-4px;padding:0 4px;border:0;background:transparent;color:var(--m);font:inherit;font-size:var(--fs-xs);font-weight:500;text-decoration:none;cursor:pointer}
.workout-skip:active{opacity:.7}
.workout-links{display:flex;flex-direction:column;align-items:flex-end;flex:none}
.rest-links{display:flex;justify-content:center;gap:18px;flex-wrap:wrap}
.rest-links .workout-links{flex-direction:row;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 18px}
.skip-screen{display:flex;flex-direction:column;gap:16px;padding-bottom:32px}
.skip-actions{display:flex;flex-direction:column;gap:12px}
.skip-reasons{padding-left:0}
.skip-screen .stack{display:grid;gap:10px}
.plan-row.skipped .plan-dot{background:var(--s2);color:var(--m)}
.plan-row.skipped .plan-name{color:var(--m);text-decoration:line-through}

/* ==== workout completion: Kira after the workout over the photo, her analysis in cards below ==== */
.completion-screen{padding-bottom:calc(24px + var(--safe))}
.done-hero{--hph:calc(min(100vw,640px)*1.79);position:relative;margin:calc(-1 * var(--safe-top)) -16px 0;padding:calc(var(--safe-top) + min(74vw,310px)) 16px 20px;min-height:min(104vw,430px);isolation:isolate;text-align:left;display:flex;flex-direction:column;justify-content:flex-end}
.done-hero::before{content:"";position:absolute;left:0;right:0;top:0;height:min(var(--hph),100%);z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(9,9,13,.10) 0%,rgba(9,9,13,.15) 40%,rgba(9,9,13,.72) 70%,#09090D 100%),var(--img-after) center top/100% auto no-repeat;-webkit-mask-image:linear-gradient(180deg,#000 0,#000 72%,transparent 100%);mask-image:linear-gradient(180deg,#000 0,#000 72%,transparent 100%)}
@media(min-width:520px){.done-hero{margin-left:-24px;margin-right:-24px;padding-left:24px;padding-right:24px}}
.done-hero h1{margin:0 0 6px}
.done-facts{margin:0;font-size:var(--fs-sm);line-height:23px;color:var(--m)}
.done-head{display:flex;align-items:center;gap:12px}
.done-head h3{margin:0}
.done-av{width:44px;height:44px;flex:none;border-radius:50%;overflow:hidden;border:1.5px solid var(--accent);box-shadow:0 0 10px var(--accent-glow)}
.done-av img{width:100%;height:100%;object-fit:cover;display:block}
.done-kira{border-color:#8b4cff45;background:linear-gradient(145deg,#8b4cff12,var(--s) 58%)}
.done-text{margin:14px 0 0;font-size:var(--fs-md);line-height:27px}
.done-sub-caption{margin-top:14px;color:var(--m)}
.done-list h3{margin:0 0 10px}
.done-list ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.done-list li{display:flex;gap:10px;align-items:flex-start;font-size:var(--fs-sm);line-height:24px}
.done-mark{width:22px;height:22px;flex:none;border-radius:50%;display:grid;place-items:center;margin-top:1px;background:#8b4cff1f;color:var(--accent-text)}
.done-mark svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.done-mark.warn{background:#e7b86a1f;color:var(--warn)}
.done-mark.skip{background:var(--s2);color:var(--m)}
.done-results h3{margin:0 0 6px}
.done-result{padding:12px 0;border-top:1px solid var(--border)}
.done-result:first-of-type{border-top:0}
.done-result-name{font-size:var(--fs-sm);font-weight:600;line-height:23px}
.done-sets{margin-top:2px;font-size:var(--fs-sm);color:var(--accent-text);font-variant-numeric:tabular-nums}
.done-note{display:flex;gap:8px;align-items:center;margin-top:6px;font-size:var(--fs-sm);line-height:21px;color:var(--m)}
.done-note .done-mark{width:18px;height:18px;margin:0}
.done-note .done-mark svg{width:10px;height:10px}
.ai-analysis-photo{position:relative;isolation:isolate}
.ai-analysis-photo::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(9,9,13,.55) 0%,rgba(9,9,13,.82) 45%,#09090D 100%),var(--img-after) center top/cover no-repeat}
.ai-analysis-photo{align-items:flex-end}

/* ==== progress: period, numbers, charts, Kira's comment ==== */
.pnav{display:flex;align-items:center;gap:8px}
.pnav-btn{width:44px;height:44px;flex:none;border-radius:50%;border:1px solid var(--border);background:var(--s);color:var(--t);font-size:var(--fs-xl);line-height:1;display:grid;place-items:center}
.pnav-btn:disabled{opacity:.35}
.pnav-title{flex:1;min-width:0;text-align:center;display:flex;flex-direction:column;gap:2px}
.pnav-title b{font-size:var(--fs-md);line-height:24px}
.pnav-title .caption{color:var(--m)}
.progress-body{transition:opacity .15s}
.progress-body.loading{opacity:.5;pointer-events:none}
.progress-screen .kpi{position:relative}
.kpi-up strong{color:var(--accent-text)}
.chart-card h3{margin:0}
.chart-card .caption{color:var(--m);margin-top:2px}
.chart-box{position:relative;height:190px;margin-top:14px}
.chart-box.chart-failed canvas{display:none}
.chart-empty{margin-top:10px;color:var(--m);font-size:var(--fs-sm);line-height:21px}
.muscles{display:flex;align-items:center;gap:18px;margin-top:14px}
.muscles-chart{position:relative;width:140px;height:140px;flex:none}
.muscles-legend{list-style:none;margin:0;padding:0;flex:1;min-width:0;display:grid;gap:8px}
.muscles-legend li{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);line-height:20px}
.mdot{width:10px;height:10px;border-radius:50%;flex:none}
.mname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mval{color:var(--m);font-variant-numeric:tabular-nums}
.gains{display:grid;margin-top:8px}
.gain{display:flex;align-items:center;gap:10px;padding:11px 0;border-top:1px solid var(--border)}
.gain:first-child{border-top:0}
.gain-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.gain-main b{font-size:var(--fs-sm);line-height:22px}
.gain-main .caption{color:var(--m)}
.ask-kira{border-color:#8b4cff45;background:linear-gradient(145deg,#8b4cff12,var(--s) 58%)}
.ask-kira h3{margin:0}
.ask-body{margin-top:14px;display:grid;gap:12px}
.ask-text{margin:0;font-size:var(--fs-sm);line-height:25px}
.ask-text.muted{color:var(--m)}
.ask-kira .kira-bubble{width:fit-content}

/* ==== progress: exercises ==== */
.segmented.seg2{grid-template-columns:repeat(2,1fr)}
.pchips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;margin-top:12px}
.pchips.section{margin-top:20px}
.pchips::-webkit-scrollbar{display:none}
.pchip{flex:none;min-height:36px;padding:7px 14px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--s);color:var(--m);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}
.pchip.on{background:var(--accent-soft);color:var(--accent-text);border-color:var(--accent-border)}
.pex-row{width:100%;display:flex;align-items:center;gap:12px;padding:12px 14px;text-align:left;color:var(--t);cursor:pointer}
.pex-row:active{opacity:.82}
.pex-row .media{flex:none}
.pex-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pex-main b{font-size:var(--fs-sm);line-height:22px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pex-main .caption{color:var(--m)}
.pex-side{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.spark path{fill:none;stroke:var(--accent-text);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.spark circle{fill:var(--accent-text)}
.pex-chip{font-size:var(--fs-xs);font-weight:600;line-height:20px;padding:1px 8px;border-radius:var(--radius-pill);background:var(--accent-deep);color:var(--accent-text);white-space:nowrap}
.pex-chip.down{background:#2b2418;color:var(--warn)}
.pex-chip.same{background:var(--s2);color:var(--m)}
.pex-head{display:flex;align-items:center;gap:14px}
.pex-head .media{width:72px;height:72px;border-radius:var(--radius-md);flex:none}
.pex-head h2{margin:0;font-size:var(--fs-lg);line-height:28px}
.pex-head .caption{color:var(--m);margin-top:2px}
.kpis3{grid-template-columns:minmax(0,.8fr) minmax(0,1.35fr) minmax(0,1fr)}
.kpis3 .kpi span{white-space:nowrap}
.kpi-small{font-size:var(--fs-md);line-height:36px;white-space:nowrap}
.pex-history .done-result:first-child{border-top:0}
.pex-history{margin-top:4px}
.chart-card .pchips{margin-top:10px}

/* ==== progress: workouts ==== */
.pw-week{margin:0 0 10px;font-size:var(--fs-sm);line-height:22px;color:var(--m);font-weight:600}
.pw-row{width:100%;display:flex;align-items:center;gap:14px;padding:12px 14px;text-align:left;color:var(--t);cursor:pointer}
.pw-row:active{opacity:.82}
.pw-date{flex:none;width:46px;height:52px;border-radius:var(--radius-sm);background:var(--s2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}
.pw-date b{font-size:var(--fs-lg);line-height:22px}
.pw-date span{font-size:var(--fs-xs);line-height:16px;color:var(--m)}
.pw-count{margin-top:20px;text-align:center;color:var(--m)}
.pw-head h2{margin:0;font-size:var(--fs-xl);line-height:30px}
.pw-head .caption{color:var(--m);margin-top:4px}
.done-next-label{margin-top:14px}
.done-next{margin-top:2px}
.kpis3 .kpi{padding:16px 12px}
.kpis3.kpis-even{grid-template-columns:repeat(3,minmax(0,1fr))}

/* ==== progress: how the strength is counted ==== */
.info-btn{width:22px;height:22px;margin-left:6px;padding:0;border-radius:50%;border:1px solid var(--accent-border);background:var(--accent-soft);color:var(--accent-text);font-size:var(--fs-xs);font-weight:600;line-height:1;vertical-align:middle;display:inline-grid;place-items:center;cursor:pointer}
.chart-card h3 .info-btn{vertical-align:2px}
.sinfo h3{margin:0 0 12px;font-size:var(--fs-lg);line-height:28px}
.sinfo h4{margin:20px 0 8px;font-size:var(--fs-sm);line-height:23px}
.sinfo-text{margin:10px 0 0;font-size:var(--fs-sm);line-height:23px}
.sinfo-text.muted{color:var(--m)}
.sinfo-rows{display:grid;margin-top:6px}
.sinfo-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--border)}
.sinfo-row:first-child{border-top:0}
.sinfo-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.sinfo-main b{font-size:var(--fs-sm);line-height:22px}
.sinfo-main .caption{color:var(--m)}
.sinfo-close{margin-top:20px;width:100%}

/* general warm-up block before the first exercise */
.warmup-trail{display:contents}.warmup-trail>.pchat-item{opacity:.6}   /* the dialog before the warm-up stays above it, muted */
.kira-note{margin-top:6px;color:var(--m)}

/* the arrows over the photo of an exercise opened from the program: the same as the swipe (48 px target, the edges of the day have none) */
.exercise-step{position:absolute;top:50%;width:48px;height:48px;margin-top:-24px;border:0;border-radius:50%;background:rgba(9,9,13,.55);color:#fff;font-size:var(--fs-2xl);line-height:44px;text-align:center;padding:0}
.exercise-step-prev{left:8px}
.exercise-step-next{right:8px}
.exercise-step:active{background:rgba(9,9,13,.8)}

/* Kira's one-time explanation of a game word: a card on the home screen (button "Понятно") and a line in the completion cards */

/* the trainer: the big photos are variables, Mark's are set when the profile (or the draft) says so */
:root{--img-home:url(/static/assets/kira_home.webp?v=2);--img-intro:url(/static/assets/kira_intro.jpg);--img-program:url(/static/assets/kira_program.jpg);--img-after:url(/static/assets/kira_after_workout.webp)}
html[data-trainer="mark"]{--img-home:url(/static/assets/mark_home.webp);--img-intro:url(/static/assets/mark_intro.jpg);--img-program:url(/static/assets/mark_program.jpg);--img-after:url(/static/assets/mark_after_workout.webp)}

/* the first screen: the choice of the trainer */
.choose-screen{min-height:var(--tg-viewport-stable-height,100dvh);max-width:640px;margin:0 auto;padding:calc(var(--safe-top) + 16px) 16px calc(24px + var(--safe));display:flex;flex-direction:column;align-items:flex-start;text-align:left}
.choose-logo{align-self:center}
.choose-logo img{height:40px;width:auto;display:block}
.choose-title{margin:28px 0 8px;font-size:var(--fs-3xl);line-height:1.12;font-weight:600;letter-spacing:-.5px}
.choose-title span{color:var(--accent-text)}
.choose-sub{margin:0 0 24px;color:var(--m);font-size:var(--fs-md);line-height:1.35}
.choose-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}
.choose-card{position:relative;display:flex;flex-direction:column;min-width:0;padding:0 0 6px;border:1.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg2);color:var(--t);text-align:left}
.choose-card.sel{border-color:var(--accent);box-shadow:0 0 22px #8b4cff40}
.choose-photo{position:relative;display:block;width:100%;aspect-ratio:2/3;background:var(--bg2) center top/cover no-repeat}
.choose-copy{display:block;margin:14px 12px 10px}
.choose-copy b{display:block;font-size:var(--fs-xl);line-height:1.1;font-weight:600}
.choose-copy span{display:block;margin-top:4px;color:var(--m);font-size:var(--fs-xs);line-height:1.3}
.choose-points{list-style:none;margin:0;padding:0 10px;display:grid}
.choose-points li{display:flex;align-items:center;gap:7px;min-width:0;padding:11px 0;border-top:1px solid var(--border);font-size:calc(var(--fs-xs) * .9);line-height:1.25;text-align:left}
.choose-ic{display:flex;align-items:center;justify-content:center;flex:none;width:26px;height:26px;border-radius:var(--radius-sm);background:var(--s);color:var(--accent-text)}
.choose-check{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;background:var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/18px no-repeat;box-shadow:0 0 14px #8b4cff80}
.choose-go{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:28px}

.line-icon{flex:none}.title-ic{display:inline-block;vertical-align:-4px;margin-right:8px;color:var(--accent-text)}.done-hero h1 .title-ic{vertical-align:-3px}.coach-bt{display:flex;align-items:flex-start;gap:8px}.coach-bt-ic{flex:none;color:var(--accent-text);display:grid;place-items:center;height:1.25em}.coach-bt-ic .line-icon{width:1.1em;height:1.1em}.coach-bt>span:last-child{text-wrap:balance}
/* Mark's photo is framed closer than Kira's: it starts below the band of Telegram, so the head is whole */
html[data-trainer="mark"] .coach-photo{background-position:center calc(var(--safe-top) * .8)}

/* Progress, the overview: the strength card, three tiles, the rows of notes, the caption of the period */
.kpis.kpis-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.strength-hero{padding:16px}
.sh-title{font-size:var(--fs-md);font-weight:600}
.sh-value{display:flex;align-items:center;gap:8px;margin-top:8px;color:var(--accent-text)}
.sh-value strong{font-size:var(--fs-3xl);line-height:1.1;font-weight:600}
.sh-value.down{color:var(--warn)}
.sh-value.none,.sh-value.same{color:var(--m)}
.sh-arrow{font-size:var(--fs-2xl);line-height:1;font-weight:600}
.sh-cap{margin-top:6px;color:var(--m);font-size:var(--fs-xs);line-height:1.3}
.sh-sep{height:1px;margin:14px 0 10px;background:var(--line-soft)}
.sh-link{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:0;background:none;border:0;color:var(--accent-text);font-size:var(--fs-sm);font-weight:600;text-align:left}
.sh-q{display:inline-grid;place-items:center;width:24px;height:24px;border:1.5px solid currentColor;border-radius:50%;font-size:var(--fs-xs);line-height:1}
.sh-chev,.prow-chev{margin-left:auto;font-size:var(--fs-lg);line-height:1;color:var(--m)}
.progress-rows{padding:2px 14px}
.prow{display:flex;align-items:center;gap:12px;width:100%;min-height:54px;padding:0;background:none;border:0;border-bottom:1px solid var(--line-soft);color:var(--t);font-size:var(--fs-sm);text-align:left}
.prow:last-child{border-bottom:0}
.prow-ic{display:grid;place-items:center;width:26px;flex:none;color:var(--accent-text)}
.prow-ic svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.prow-l{flex:1;min-width:0}
.prow-v{flex:none;color:var(--m);white-space:nowrap}
.prow-chev{margin-left:0}
.sh-chart{margin-top:12px}
.sh-chart-empty{margin-top:10px;padding:14px 0 4px;text-align:left}

/* Progress audit: the overview tiles never break a value; the exercise tiles are two lines: the record on its own, then two equal ones */
.kpis.kpis-3 .kpi strong{white-space:nowrap;font-size:clamp(20px,6.6vw,28px)}
.kpis3.kpis-ex{grid-template-columns:repeat(2,minmax(0,1fr))}
.kpis-ex .kpi:nth-child(2){grid-column:1/-1;order:-1}
.kpis-ex .kpi:nth-child(2) .kpi-small{font-size:var(--fs-xl)}
.kpis-ex .kpi span{white-space:normal}

/* The screen of a warm-up set: what comes next, as text in a card */
.warmup-next{display:flex;align-items:center;gap:14px;padding:12px 14px}
.warmup-next-icon{flex:none;width:28px;height:28px;color:var(--m)}
.warmup-next-icon svg{width:28px;height:28px;display:block}
.warmup-next-copy{min-width:0}
.warmup-next-copy .caption{color:var(--m)}
.warmup-next-copy b{display:block;font-size:var(--fs-sm);line-height:23px;overflow-wrap:anywhere}
@media (max-height:640px){.warmup-next{display:none}}

/* "Нет такого веса": the link under the weight field and the dialog */
.workout-noweight{display:flex;align-items:center;justify-content:flex-end;width:fit-content;margin:-4px 0 0 auto;min-height:44px;padding:0;text-align:right;border:0;background:transparent;color:var(--accent-text);font:inherit;font-size:var(--fs-xs);font-weight:600;text-decoration:none;cursor:pointer}
.workout-noweight:active{opacity:.7}
.noweight-screen .noweight-field{margin:12px 0 4px}
.noweight-screen .noweight-field input{width:100%;height:56px;font-size:var(--fs-xl);text-align:center}
.noweight-option{margin:0 0 12px;padding:14px 16px;width:100%}
.noweight-option .caption{margin:2px 0 10px}
.noweight-screen .kira-user-input-row{margin-top:12px}
.noweight-screen .noweight-keep{display:block;margin:8px auto 0}
.weight-stepper:disabled{opacity:.35;cursor:default}
.rest-load.asked .rest-checkin-q{color:var(--t);font-size:var(--fs-sm);font-weight:600}
:root{font-variant-numeric:tabular-nums}
h1,h2,h3,b,strong{font-weight:600}

.explain-lead{display:flex;align-items:center;gap:12px}
.explain-lead p{margin:0;font-size:var(--fs-sm);line-height:24px}
.explain-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.explain-stat{display:flex;flex-direction:column;gap:6px;min-width:0;padding:12px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--s)}
.explain-stat b{font-size:var(--fs-xl);line-height:28px;font-weight:600;overflow-wrap:anywhere}
.explain-stat b small{font-size:var(--fs-xs);color:var(--m);font-weight:500}
.explain-stat.accent b{font-size:var(--fs-md);line-height:24px;color:var(--accent-text)}
.explain-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.explain-chip{padding:6px 12px;border-radius:var(--radius-pill);border:1px solid var(--accent-border);background:var(--accent-soft);color:var(--t);font-size:var(--fs-xs)}
.explain-summary{margin:0}
.explain-summary p{margin:0}
.explain-label{margin:8px 2px 0;font-size:var(--fs-xs);line-height:19px;letter-spacing:.06em;text-transform:uppercase;color:var(--m);font-weight:600}
.explain-why-list{display:flex;flex-direction:column;gap:10px}
.explain-why{display:flex;align-items:flex-start;gap:12px;padding:14px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--s)}
.explain-why-text{flex:1;min-width:0;font-size:var(--fs-sm);line-height:24px}
.explain-why-n{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-text);font-size:var(--fs-xs);font-weight:600}
.explain-screen .step-actions{padding-top:28px;background:linear-gradient(rgba(9,9,13,0),var(--bg) 40%)}
.err-actions{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.err-actions:empty{display:none}
.feedback-kinds{display:flex;gap:8px;flex-wrap:wrap}
.feedback-kind{padding:8px 14px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--s);color:var(--t);font-size:var(--fs-sm)}
.feedback-kind.sel{border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent-text)}
.feedback-text{min-height:160px;margin-top:12px}
.feedback-note{margin:8px 2px 0}
.feedback-thanks p{margin:6px 0 0}
