/* -------------------------------------------------------------------------
   Daily goals (client /me) + trainer log
   NOTE: This must live in /static/app.css (templates load this file).
--------------------------------------------------------------------------- */

/* --- Daily goals (premium switches) --- */
.cp-goals-card{
  border:1px solid var(--card-border);
  background:linear-gradient(180deg,rgba(244,140,22,.06),rgba(0,0,0,0));
}
.cp-goals-list{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:.8rem;
}
@media (max-width:1280px){
  .cp-goals-list{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:760px){
  .cp-goals-list{ grid-template-columns:1fr; }
}
.cp-goal-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:.9rem;
  min-width:0;
  padding:.85rem .9rem;
  border-radius:1rem;
  border:1px solid var(--card-border);
  background:rgba(255,255,255,.03);
  position:relative;
  overflow:hidden;
  transition:transform .18s ease, background .18s ease, border-color .18s ease, opacity .18s ease, box-shadow .18s ease;
}
html[data-theme="light"] .cp-goal-row{ background:rgba(0,0,0,.02); }
.cp-goal-row .min-w-0{ min-width:0; }
.cp-goal-main{
  display:flex;
  align-items:center;
  gap:.78rem;
  min-width:0;
}
.cp-goal-copy{ min-width:0; }
.cp-goal-ico{
  width:2.15rem;
  height:2.15rem;
  display:grid;
  place-items:center;
  border-radius:.8rem;
  flex:0 0 auto;
  font-size:1.08rem;
  background:rgba(244,140,22,.12);
  border:1px solid rgba(244,140,22,.28);
}
html[data-theme="light"] .cp-goal-ico{ background:rgba(244,140,22,.14); }
.cp-goal-title{
  line-height:1.12;
  font-size:1rem;
  white-space:normal;
  overflow-wrap:anywhere;
}
.cp-goal-subtitle{
  margin-top:.16rem;
  line-height:1.22;
  font-size:.9rem;
  color:var(--muted);
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.cp-goal-controls{
  display:grid;
  grid-template-columns:minmax(6.9rem,7.6rem) auto;
  align-items:center;
  gap:.55rem;
  flex:0 0 auto;
}
.cp-goal-controls.is-checkbox-only{
  grid-template-columns:auto;
}
.cp-goal-value-control{
  height:2.14rem;
  width:100%;
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:.32rem;
  padding:.18rem .46rem .18rem .55rem;
  border-radius:.8rem;
  border:1px solid var(--card-border);
  background:rgba(255,255,255,.045);
  transition:border-color .16s ease, background .16s ease, box-shadow .16s ease;
}
.cp-goal-value-control:focus-within{
  border-color:rgba(244,140,22,.58);
  box-shadow:0 0 0 .16rem rgba(244,140,22,.12);
}
.cp-goal-value-control.is-manual{ border-color:rgba(244,140,22,.34); }
.cp-goal-value-control.is-phone{ border-style:dashed; }
html[data-theme="light"] .cp-goal-value-control{ background:rgba(255,255,255,.82); border-color:rgba(20,24,36,.12); }
html[data-theme="light"] .cp-goal-value-control.is-manual{ border-color:rgba(244,140,22,.42); }
.cp-goal-value-input{
  width:100%;
  min-width:0;
  padding:0;
  border:0;
  outline:0;
  background:transparent;
  color:var(--text);
  font:inherit;
  font-size:.88rem;
  line-height:1;
  font-weight:760;
  text-align:right;
  appearance:textfield;
  -moz-appearance:textfield;
}
.cp-goal-value-input::-webkit-outer-spin-button,
.cp-goal-value-input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.cp-goal-value-input:disabled{ opacity:.62; }
.cp-goal-value-unit{
  flex:0 0 auto;
  color:var(--muted);
  font-size:.66rem;
  line-height:1;
  white-space:nowrap;
  pointer-events:none;
}
.cp-goal-row.is-done{
  background:rgba(244,140,22,.08);
  border-color:rgba(244,140,22,.35);
  box-shadow:0 12px 30px rgba(244,140,22,.08);
}
html[data-theme="light"] .cp-goal-row.is-done{ background:rgba(244,140,22,.11); }
.cp-goal-row.is-pending{ opacity:.75; }
.cp-goal-row.is-pop{ animation: cpGoalPop .38s ease; }
.cp-goal-row.is-pop::after{
  content:"";
  position:absolute;
  inset:-60% -40%;
  background:radial-gradient(circle, rgba(244,140,22,.35), transparent 60%);
  opacity:0;
  animation:cpGoalGlow .60s ease;
  pointer-events:none;
}
@keyframes cpGoalPop{
  0%{ transform:scale(1); }
  50%{ transform:scale(1.02); }
  100%{ transform:scale(1); }
}
@keyframes cpGoalGlow{
  0%{ opacity:0; transform:translateX(-18%) rotate(0deg); }
  40%{ opacity:.55; }
  100%{ opacity:0; transform:translateX(18%) rotate(10deg); }
}
.cp-goals-progress .progress-bar{ transition:width .35s ease; }
.cp-goals-progress{ height:.55rem; border-radius:999px; overflow:hidden; background:rgba(255,255,255,.08); }
html[data-theme="light"] .cp-goals-progress{ background:rgba(0,0,0,.08); }
.cp-goals-progress .progress-bar{ background:var(--brand); }

/* Make Bootstrap switches feel more premium */
.cp-switch .form-check-input{
  width:2.85rem;
  height:1.45rem;
  cursor:pointer;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.18);
  background-color:rgba(255,255,255,.08);
  box-shadow:0 8px 20px rgba(0,0,0,.18) inset;
}
html[data-theme="light"] .cp-switch .form-check-input{
  border:1px solid rgba(0,0,0,.18);
  background-color:rgba(0,0,0,.06);
  box-shadow:0 8px 18px rgba(0,0,0,.12) inset;
}
.cp-switch .form-check-input:checked{
  background-color:var(--brand);
  border-color:rgba(244,140,22,.8);
}
.cp-switch .form-check-input:focus{
  box-shadow:0 0 0 .2rem rgba(244,140,22,.25);
  border-color:rgba(244,140,22,.85);
}
.cp-switch .form-check-input:disabled{ opacity:.6; cursor:not-allowed; }
@media (max-width:920px){
  .cp-goal-row{ padding:.78rem .82rem; }
  .cp-goal-title{ font-size:.98rem; }
  .cp-goal-subtitle{ font-size:.86rem; }
  .cp-goal-controls{ grid-template-columns:minmax(6.5rem,7.1rem) auto; gap:.45rem; }
}
@media (max-width:480px){
  .cp-goal-row{
    grid-template-columns:minmax(0,1fr) auto;
    padding:.68rem .7rem;
    gap:.42rem;
  }
  .cp-goal-main{ gap:.45rem; }
  .cp-goal-ico{
    width:1.82rem;
    height:1.82rem;
    border-radius:.68rem;
    font-size:.94rem;
  }
  .cp-goal-title{
    font-size:clamp(.84rem,3.7vw,.92rem);
    white-space:nowrap;
    overflow:visible;
    overflow-wrap:normal;
    letter-spacing:-.015em;
  }
  .cp-goal-subtitle{
    font-size:.76rem;
    white-space:nowrap;
    text-overflow:ellipsis;
    display:block;
    overflow:hidden;
    margin-top:.12rem;
  }
  .cp-goal-controls{
    grid-template-columns:minmax(4.75rem,5.15rem) 2.45rem;
    gap:.25rem;
  }
  .cp-goal-controls.is-checkbox-only{ grid-template-columns:2.45rem; }
  .cp-goal-value-control{
    height:1.92rem;
    padding-left:.3rem;
    padding-right:.3rem;
    gap:.22rem;
  }
  .cp-goal-value-input{ font-size:.77rem; }
  .cp-goal-value-unit{ font-size:.54rem; }
  .cp-switch .form-check-input{ width:2.45rem; height:1.3rem; }
}
@media (max-width:340px){
  .cp-goal-row{ padding-left:.62rem; padding-right:.62rem; gap:.3rem; }
  .cp-goal-main{ gap:.35rem; }
  .cp-goal-ico{ width:1.72rem; height:1.72rem; }
  .cp-goal-title{ font-size:.81rem; }
  .cp-goal-controls{ grid-template-columns:minmax(4.45rem,4.75rem) 2.3rem; gap:.18rem; }
  .cp-goal-controls.is-checkbox-only{ grid-template-columns:2.3rem; }
  .cp-switch .form-check-input{ width:2.3rem; }
}

/* --- Trainer daily goals log + synced health analytics --- */
.cp-goals-log-card{
  border: 1px solid var(--card-border);
}
.cp-goals-log-controls .form-select{ border-radius:.85rem; }
.cp-goals-log-body{ min-height: 2rem; }

.cp-goals-analytics-wrap{
  margin-bottom:.85rem;
}
.cp-goals-analytics{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:.55rem;
}
.cp-goals-analytics-tile{
  min-width:0;
  padding:.72rem .75rem;
  border:1px solid var(--card-border);
  border-radius:.9rem;
  background:rgba(255,255,255,.035);
}
.cp-goals-analytics-tile.is-primary{
  border-color:rgba(244,140,22,.34);
  background:linear-gradient(180deg,rgba(244,140,22,.12),rgba(244,140,22,.045));
}
.cp-goals-analytics-label{
  color:var(--muted);
  font-size:.72rem;
  line-height:1.2;
  margin-bottom:.28rem;
}
.cp-goals-analytics-value{
  color:var(--text);
  font-size:clamp(1rem,2vw,1.3rem);
  font-weight:800;
  line-height:1.08;
  letter-spacing:-.025em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.cp-goals-analytics-meta{
  color:var(--muted);
  font-size:.67rem;
  line-height:1.3;
  margin-top:.32rem;
  min-height:1.7em;
}
.cp-goals-analytics-note{
  color:var(--muted);
  font-size:.68rem;
  line-height:1.4;
  margin-top:.5rem;
}
html[data-theme="light"] .cp-goals-analytics-tile{
  background:linear-gradient(180deg,rgba(255,255,255,.99),rgba(247,248,250,.97));
  border-color:rgba(20,24,36,.08);
  box-shadow:0 7px 20px rgba(20,24,36,.035);
}
html[data-theme="light"] .cp-goals-analytics-tile.is-primary{
  background:linear-gradient(180deg,#fff8f0 0%,#fff2e2 100%);
  border-color:rgba(244,140,22,.30);
}
html[data-theme="dark"] .cp-goals-analytics-tile{
  background:linear-gradient(180deg,rgba(20,24,36,.82),rgba(14,18,28,.91));
  border-color:rgba(255,255,255,.075);
}
html[data-theme="dark"] .cp-goals-analytics-tile.is-primary{
  background:linear-gradient(180deg,rgba(244,140,22,.17),rgba(244,140,22,.07));
  border-color:rgba(244,140,22,.32);
}

.cp-goals-log-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:.8rem;
}
.cp-goals-log-row{
  display:grid;
  grid-template-columns:minmax(150px, 190px) minmax(0,1fr);
  align-items:center;
  gap:1rem;
  min-width:0;
  padding:.88rem .95rem;
  border-radius:1rem;
  border:1px solid var(--card-border);
  background:rgba(255,255,255,.03);
}
html[data-theme="light"] .cp-goals-log-row{
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(246,247,249,.96));
  border-color:rgba(20,24,36,.08);
  box-shadow:0 8px 24px rgba(20,24,36,.04);
}
html[data-theme="dark"] .cp-goals-log-row{
  background:linear-gradient(180deg,rgba(20,24,36,.92),rgba(14,18,28,.96));
  border-color:rgba(255,255,255,.08);
  box-shadow:0 10px 28px rgba(0,0,0,.22);
}
.cp-goals-log-left{
  display:flex;
  align-items:baseline;
  gap:.55rem;
  flex-wrap:wrap;
  min-width:0;
}
.cp-goals-log-date{
  flex:0 0 auto;
  font-weight:650;
  letter-spacing:.1px;
  white-space:nowrap;
  word-break:keep-all;
}
.cp-goals-log-day-score{
  flex:0 0 auto;
  white-space:nowrap;
}
.cp-goals-log-badges{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  min-width:0;
  gap:.5rem;
  justify-items:stretch;
}
.cp-goals-badge-row{
  width:100%;
  display:grid;
  gap:.45rem;
}
.cp-goals-badge-row.is-metrics{
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
}
.cp-goals-badge-row.is-goals{
  grid-template-columns:repeat(8,minmax(0,1fr));
}
.cp-goals-badge{
  width:100%;
  min-width:0;
  aspect-ratio:1 / 1;
  height:auto;
  min-height:2.25rem;
  display:grid;
  place-items:center;
  border-radius:.8rem;
  border:1px solid var(--card-border);
  background:rgba(255,255,255,.03);
  opacity:.55;
  transition:transform .16s ease,opacity .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease,filter .16s ease;
  user-select:none;
}
.cp-goals-badge.is-metric{
  width:100%;
  min-width:0;
  max-width:none;
  aspect-ratio:auto;
  height:2.35rem;
  min-height:2.35rem;
  padding:0 .75rem;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.25rem;
  white-space:nowrap;
  font-size:.76rem;
  font-weight:750;
  letter-spacing:-.01em;
}
.cp-goals-badge.has-health-value{
  opacity:1;
  filter:none;
  border-style:solid !important;
}
html[data-theme="light"] .cp-goals-badge{
  background:#f3f4f6;
  border-color:rgba(20,24,36,.10);
  color:rgba(20,24,36,.34);
  opacity:1;
  filter:grayscale(1);
}
html[data-theme="light"] .cp-goals-badge:not(.is-on):not(.has-health-value){
  border-style:dashed;
}
html[data-theme="dark"] .cp-goals-badge{
  background:rgba(255,255,255,.045);
  border-color:rgba(255,255,255,.10);
  color:rgba(255,255,255,.34);
  opacity:1;
  filter:grayscale(1);
}
html[data-theme="dark"] .cp-goals-badge:not(.is-on):not(.has-health-value){
  border-style:dashed;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.02);
}
html[data-theme="light"] .cp-goals-badge.has-health-value{
  background:#f7f9fb;
  color:#334155;
  border-color:rgba(51,65,85,.16);
}
html[data-theme="dark"] .cp-goals-badge.has-health-value{
  background:rgba(148,163,184,.10);
  color:#d8e0eb;
  border-color:rgba(148,163,184,.18);
}
.cp-goals-badge.is-on{
  opacity:1;
  background:rgba(244,140,22,.12);
  border-color:rgba(244,140,22,.35);
}
html[data-theme="light"] .cp-goals-badge.is-on{
  background:linear-gradient(180deg,#fff3e7 0%,#ffe4c5 100%);
  border-color:rgba(244,140,22,.58);
  color:#b85a00;
  filter:none;
  box-shadow:0 10px 22px rgba(244,140,22,.18),inset 0 0 0 1px rgba(255,255,255,.58);
  transform:translateY(-1px) scale(1.02);
}
html[data-theme="dark"] .cp-goals-badge.is-on{
  background:linear-gradient(180deg,rgba(244,140,22,.26) 0%,rgba(244,140,22,.18) 100%);
  border-color:rgba(244,140,22,.62);
  color:#ffd4a4;
  filter:none;
  box-shadow:0 12px 26px rgba(244,140,22,.18),inset 0 0 0 1px rgba(255,190,120,.12);
  transform:translateY(-1px) scale(1.02);
}
.cp-goals-log-row:hover .cp-goals-badge.is-on{ transform:translateY(-1px); }

@media (max-width:1100px){
  .cp-goals-analytics{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:820px){
  .cp-goals-log-grid{ grid-template-columns:1fr; }
}
@media (max-width:575.98px){
  .cp-goals-analytics{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .cp-goals-analytics-tile{ padding:.65rem .68rem; }
  .cp-goals-analytics-value{ font-size:1.05rem; }
  .cp-goals-log-row{
    grid-template-columns:1fr;
    align-items:flex-start;
    gap:.68rem;
    padding:.76rem .8rem;
  }
  .cp-goals-log-left{
    width:100%;
    justify-content:space-between;
  }
  .cp-goals-badge-row.is-metrics{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .cp-goals-badge-row.is-goals{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
  .cp-goals-badge{
    min-height:2.15rem;
    border-radius:.74rem;
  }
  .cp-goals-badge.is-metric{
    height:2.15rem;
    min-height:2.15rem;
    padding:0 .48rem;
    font-size:clamp(.67rem,2.9vw,.78rem);
    letter-spacing:-.02em;
    overflow:hidden;
    text-overflow:ellipsis;
  }
}
@media (max-width:360px){
  .cp-goals-analytics{ grid-template-columns:1fr; }
  .cp-goals-badge-row.is-metrics{ grid-template-columns:1fr; }
  .cp-goals-badge-row.is-goals{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}


/* Availability modal – calendar-like (mobile friendly)
   (UI inspired by iOS/Google Calendar; uses CoachPRO theme variables, not Bootstrap defaults) */
.cp-av-layout{display:grid;grid-template-columns:320px 1fr;gap:16px;}
@media (max-width: 991.98px){.cp-av-layout{grid-template-columns:1fr;} }

.cp-av-mini{background:var(--surface2);border:1px solid var(--border);border-radius:16px;padding:12px;box-shadow:var(--shadow-soft);}
.cp-mini-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;font-size:12px;color:var(--muted);margin-bottom:6px;text-align:center;}
.cp-mini-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.cp-mini-day{position:relative;width:100%;aspect-ratio:1/1;border-radius:14px;border:1px solid transparent;background:transparent;color:var(--text);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;cursor:pointer;}
.cp-mini-day.is-empty{border:0;background:transparent;cursor:default;}
.cp-mini-day:hover{background:var(--hover);border-color:var(--border);}
.cp-mini-day.is-selected{background:rgba(230,90,26,0.14);border-color:rgba(230,90,26,0.35);}
.cp-mini-day .num{font-weight:700;font-size:13px;line-height:1;}
.cp-mini-day .dotbar{display:flex;justify-content:center;gap:3px;margin-top:6px;height:6px;}
.cp-mini-day .dot{width:18px;height:4px;border-radius:999px;opacity:0;margin-top:6px;}
.cp-mini-day .dot.avail{opacity:1;background:var(--progress);}
.cp-mini-day .dot.block{opacity:1;background:#ef4444;}
.cp-mini-day .dot.mix{opacity:1;background:#f59e0b;}

.cp-agenda-list .list-group-item{border-radius:16px;margin-bottom:10px;border:1px solid var(--border);background:var(--surface2);color:var(--text);}
.cp-agenda-item{position:relative;overflow:hidden;}
.cp-agenda-item::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:rgba(242,242,243,0.35);opacity:0.9;}
html[data-theme="light"] .cp-agenda-item::before{background:rgba(11,11,13,0.22);}
.cp-agenda-item.is-avail::before{background:var(--progress);}
.cp-agenda-item.is-block::before{background:#ef4444;}
.cp-agenda-main{display:flex;flex-direction:column;gap:2px;padding-left:8px;}
.cp-agenda-title{font-weight:700;}
.cp-agenda-sub{font-size:12px;color:var(--muted);}
.cp-agenda-meta{padding-left:8px;}
.cp-agenda-actions{padding-left:8px;}

.cp-av-agenda .dropdown-menu{background:var(--surface);border:1px solid var(--border);}
.cp-av-agenda .dropdown-item{color:var(--text);}
.cp-av-agenda .dropdown-item:hover{background:var(--hover);}

.cp-av-editor.offcanvas{background:var(--surface);color:var(--text);border-top-left-radius:20px;border-top-right-radius:20px;border-left:1px solid var(--border);border-right:1px solid var(--border);border-top:1px solid var(--border);box-shadow:var(--shadow);height:min(72vh,520px);padding-bottom:env(safe-area-inset-bottom);}
@media (max-width: 520px){.cp-av-editor.offcanvas{height:min(85vh,680px);} }
.cp-av-editor.offcanvas-end{
  /* Desktop drawer: avoid bottom-sheet look */
  height: 100% !important;
  max-height: 100% !important;
  width: min(420px, 92vw);
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  border-top-left-radius: 20px;
  border-bottom-left-radius: 20px;
  padding-bottom: 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  border-right: 0;
}
.cp-av-editor .offcanvas-header{border-bottom:1px solid var(--border);} 
.cp-av-editor .btn-close{opacity:.9;}
html[data-theme="dark"] .btn-close{filter:invert(1);}
html[data-theme="light"] .btn-close{filter:none;}
html[data-theme="light"] .cp-av-editor .btn-close{filter:none;}
.cp-av-editor .form-label{color:var(--muted);}
.cp-av-editor .form-control,.cp-av-editor .form-select{background:var(--input-bg);border-color:var(--input-border);color:var(--text);}
.cp-av-editor .form-control::placeholder{color:var(--placeholder);}

/* ---------------- Premium UX: onboarding checklist + empty plan alert + plan item basic/pro ---------------- */

.cp-onboarding-card{position:relative;overflow:hidden;}
.cp-onboarding-card::before{content:'';position:absolute;inset:-1px;pointer-events:none;background:radial-gradient(900px 220px at 12% -20%, rgba(245,158,11,0.22), transparent 60%);}
html[data-theme="light"] .cp-onboarding-card::before{background:radial-gradient(900px 220px at 12% -20%, rgba(245,158,11,0.18), transparent 60%);} 

.cp-progress{height:10px;border-radius:999px;overflow:hidden;background:var(--surface2);border:1px solid var(--border);}
.cp-progress .progress-bar{background:var(--brand);}

.cp-checklist{display:flex;flex-direction:column;gap:10px;}
.cp-checklist-item{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:12px 12px;border:1px solid var(--border);border-radius:18px;background:var(--surface2);box-shadow:0 0 0 1px rgba(255,255,255,0.02) inset;}
html[data-theme="light"] .cp-checklist-item{box-shadow:0 0 0 1px rgba(0,0,0,0.03) inset;}
.cp-checklist-left{display:flex;gap:10px;min-width:0;}
.cp-checklist-title{font-weight:700;letter-spacing:.2px;}
.cp-checklist-sub{font-size:12px;color:var(--muted);margin-top:2px;line-height:1.35;}
.cp-checklist-right{flex:0 0 auto;display:flex;align-items:center;gap:10px;}

.cp-checkmark{width:26px;height:26px;border-radius:999px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);color:var(--muted);background:rgba(255,255,255,0.02);font-weight:700;flex:0 0 auto;}
html[data-theme="light"] .cp-checkmark{background:rgba(0,0,0,0.02);} 
.cp-checklist-item.is-done .cp-checkmark{border-color:rgba(34,197,94,0.45);color:rgba(34,197,94,0.95);background:rgba(34,197,94,0.12);} 

@media (max-width: 520px){
  .cp-checklist-item{flex-direction:column;align-items:stretch;}
  .cp-checklist-right{justify-content:flex-start;}
}

/* Empty active plan alert (client page) */
.cp-empty-plan-alert{border:1px solid rgba(245,158,11,0.35);background:linear-gradient(135deg, rgba(245,158,11,0.12), transparent 60%);}
html[data-theme="light"] .cp-empty-plan-alert{border-color:rgba(245,158,11,0.30);background:linear-gradient(135deg, rgba(245,158,11,0.10), transparent 60%);} 
.cp-empty-plan-alert .cp-empty-plan-top{display:flex;gap:12px;align-items:flex-start;}
.cp-empty-plan-ico{width:36px;height:36px;border-radius:14px;display:flex;align-items:center;justify-content:center;background:rgba(245,158,11,0.18);border:1px solid rgba(245,158,11,0.25);font-size:18px;flex:0 0 auto;}
.cp-empty-plan-title{font-weight:700;letter-spacing:.2px;}
.cp-empty-plan-sub{color:var(--muted);font-size:12px;line-height:1.35;margin-top:2px;}

/* Plan item: basic/pro mode */
.cp-planitem-wrap{position:relative;}
.cp-planitem-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.cp-planitem-hint{font-size:12px;color:var(--muted);}
.cp-pro-switch{display:flex;align-items:center;gap:8px;}
.cp-pro-switch .form-check-input{cursor:pointer;}

.cp-planitem-wrap.is-basic .cp-advanced{display:none !important;}
.cp-planitem-wrap.is-basic .cp-pro-badge{display:none !important;}

.cp-mode-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface2);font-size:12px;color:var(--muted);}
.cp-mode-pill .dot{width:8px;height:8px;border-radius:999px;background:var(--brand);}

/* LIVE: supersets (make them hard to miss) */
.superset-pill{letter-spacing:0.2px;font-weight:700;}
.superset-hint{margin-top:2px;opacity:.9;}

.superset-group-header{
  margin-top:14px;
  margin-bottom:8px;
  padding:10px 12px;
  border-radius:16px;
  border:1px solid rgba(245,158,11,0.35);
  background:linear-gradient(135deg, rgba(245,158,11,0.14), transparent 60%);
}
html[data-theme="light"] .superset-group-header{
  border-color:rgba(245,158,11,0.30);
  background:linear-gradient(135deg, rgba(245,158,11,0.10), transparent 60%);
}
.superset-group-sub{color:var(--muted);font-size:12px;}
.superset-group-tip{color:var(--muted);font-size:12px;}

/* Visual link: a subtle left rail across exercises in the same superset */
.live-exercise-card.is-superset{
  border-left:4px solid rgba(245,158,11,0.65);
}
.live-exercise-card.is-superset-first{margin-top:8px;}
.live-exercise-card.is-superset-last{margin-bottom:2px;}

@media (max-width: 520px){
  .superset-group-header{border-radius:18px;padding:10px 12px;}
  .superset-group-tip{display:none;}
}


/* ---------- Warmup box (live session) ---------- */
.cp-warmup-card{
  padding: 14px 16px;
  border-left: 3px solid rgba(230,90,26,0.55);
}

.cp-warmup-row{
  display: flex;
  gap: 12px;
  align-items: flex-start;
}

.cp-warmup-icon{
  width: 38px;
  height: 38px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  background: rgba(230,90,26,0.18);
  border: 1px solid rgba(230,90,26,0.35);
  box-shadow: 0 8px 24px rgba(230,90,26,0.08);
}

.cp-warmup-content{ flex: 1; min-width: 0; }

.cp-warmup-title-wrap{
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.cp-warmup-title{
  font-weight:700;
  letter-spacing: .2px;
}

.cp-warmup-sub{
  margin-top: 2px;
  font-size: 12px;
  color: var(--muted);
}

.cp-warmup-note{
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 14px;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  line-height: 1.35;
  white-space: normal;
}

@media (max-width: 576px){
  .cp-warmup-card{ padding: 12px 12px; }
  .cp-warmup-icon{ width: 34px; height: 34px; border-radius: 12px; font-size: 17px; }
  .cp-warmup-note{ padding: 10px 10px; }
}


/* =========================
   Premium navbar drawers (notifications / chat)
   ========================= */

.cp-drawer-backdrop{
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(2px);
  opacity: 0;
  pointer-events: none;
  transition: opacity .18s ease;
  z-index: 1050;
}
.cp-drawer-backdrop.is-open{
  opacity: 1;
  pointer-events: auto;
}

body.cp-drawer-open{ overflow: hidden; }

/* Navbar in this app is sticky with a high z-index (1200).
   When the drawer is open we lower the navbar stacking context so
   the drawer header isn't hidden behind it (desktop + mobile). */
body.cp-drawer-open .nav-brand{ z-index: 1040 !important; }

/* Client/Trainer pages may have a sticky tabbar (cp-tabs) with a high z-index.
   Ensure the drawer is always on top when open. */
body.cp-drawer-open .cp-tabbar.cp-tabbar-sticky{ z-index: 1030 !important; }

.cp-drawer{
  position: fixed;
  top: 0;
  right: 0;
  height: 100vh;
  height: 100dvh; /* mobile browsers with dynamic viewport */
  max-height: 100dvh;
  width: min(420px, 92vw);
  background: linear-gradient(180deg, rgba(20,20,25,0.98), rgba(12,12,16,0.98));
  border-left: 1px solid var(--border-strong);
  box-shadow: var(--shadow);
  transform: translateX(103%);
  transition: transform .22s ease;
  z-index: 1060;
  display: flex;
  flex-direction: column;
}
html[data-theme="light"] .cp-drawer{
  background: linear-gradient(180deg, rgba(255,255,255,0.98), rgba(246,247,251,0.98));
}
.cp-drawer.is-open{ transform: translateX(0); }

.cp-drawer__header{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  padding-top: calc(14px + env(safe-area-inset-top));
  border-bottom: 1px solid var(--border);
  background: rgba(255,255,255,0.02);
  backdrop-filter: blur(10px);
}
.cp-drawer__title{
  font-size: 16px;
  font-weight:700;
  letter-spacing: 0.2px;
}
.cp-drawer__close{
  width: 34px;
  height: 34px;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.03);
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  line-height: 1;
}
.cp-drawer__close:hover{ background: rgba(255,255,255,0.06); }

.cp-drawer__body{
  padding: 14px 14px 12px;
  flex: 1;
  overflow: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
.cp-drawer__hint{
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 10px;
}
.cp-drawer__loading{
  font-size: 13px;
  color: var(--muted);
  padding: 10px 2px;
  display: none;
}
.cp-drawer__loading.cp-skeleton-list{
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.cp-drawer__empty{
  padding: 12px 10px;
  border-radius: 16px;
  border: 1px dashed var(--border);
  background: rgba(255,255,255,0.03);
  color: var(--muted);
  font-size: 13px;
}
.cp-drawer__list{ display: flex; flex-direction: column; gap: 10px; }
.cp-drawer-section-title{
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
  margin: 10px 6px -2px;
}

.cp-drawer-item.is-read{
  background: rgba(255,255,255,0.02);
}
.cp-drawer-item__dot.is-read{
  background: rgba(255,255,255,0.18);
  box-shadow: none;
}
html[data-theme="light"] .cp-drawer-item__dot.is-read{
  background: rgba(11,11,13,0.14);
}


.cp-drawer__footer{
  padding: 12px 14px 14px;
  border-top: 1px solid var(--border);
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  background: rgba(255,255,255,0.02);
}

/*
  Light theme fix:
  The drawer footer uses a Bootstrap .btn-outline-light for "Zamknij".
  On white theme it becomes almost invisible, so we restyle it only inside the drawer.
*/
html[data-theme="light"] .cp-drawer__footer .btn-outline-light{
  color: #0B0B0D !important;
  border-color: rgba(11,11,13,0.18) !important;
  background: rgba(11,11,13,0.04) !important;
}
html[data-theme="light"] .cp-drawer__footer .btn-outline-light:hover{
  background: rgba(11,11,13,0.08) !important;
  border-color: rgba(11,11,13,0.26) !important;
}

.cp-drawer-item{
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px;
  align-items: start;
  padding: 12px 12px;
  border-radius: 18px;
  text-decoration: none;
  color: var(--text);
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  transition: transform .12s ease, background .12s ease, border-color .12s ease;
}
.cp-drawer-item:hover{
  transform: translateY(-1px);
  border-color: rgba(230,90,26,0.35);
  background: rgba(230,90,26,0.08);
}

.cp-drawer-item__dot{
  width: 10px;
  height: 10px;
  border-radius: 999px;
  margin-top: 4px;
  background: var(--brand);
  box-shadow: 0 0 0 4px rgba(230,90,26,0.14);
}

.cp-drawer-item__avatar{
  width: 32px;
  height: 32px;
  min-width: 32px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight:700;
  font-size: 11px;
  line-height: 1;
  background: linear-gradient(135deg, rgba(255,111,35,0.98), rgba(198,76,18,0.98));
  border: 1px solid rgba(230,90,26,0.45);
  color: #fff;
  overflow: hidden;
  position: relative;
}
.cp-drawer-item__avatar img{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.cp-drawer-item__avatar--image{
  background: rgba(255,255,255,0.04);
  border-color: rgba(230,90,26,0.55);
  box-shadow: 0 0 0 2px rgba(230,90,26,0.10);
}
.cp-drawer-item__avatar--image .cp-drawer-item__avatar-fallback{
  opacity: 0;
}

.cp-drawer-item__main{ min-width: 0; }
.cp-drawer-item__title{
  font-weight:700;
  font-size: 14px;
  line-height: 1.2;
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}
.cp-drawer-item__sub{
  margin-top: 4px;
  font-size: 12.5px;
  color: var(--muted);
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.cp-drawer-item__meta{
  font-size: 11.5px;
  color: var(--muted);
  text-align: right;
  white-space: nowrap;
  margin-left: 6px;
}

.cp-pill{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(230,90,26,0.18);
  border: 1px solid rgba(230,90,26,0.35);
  font-size: 12px;
  font-weight:700;
}

/* Mobile: zostaw "pas" po lewej stronie (łatwiejsze zamykanie kciukiem / gestem)
   zamiast zasłaniania praktycznie całego ekranu. */
@media (max-width: 576px){
  .cp-drawer{
    /* zostawiamy większy pas po lewej (łatwiejszy chwyt kciukiem) i ograniczamy szerokość panelu */
    width: clamp(280px, calc(100vw - 56px), 360px);
    border-top-left-radius: 20px;
    border-bottom-left-radius: 20px;
  }
  .cp-drawer__footer{ justify-content: space-between; }
}


/* =========================
   Unified section headings + clear click targets (APP ONLY)
   ========================= */
body:not(.public-shell){
  --cp-h1: clamp(1.35rem, 1.10rem + 1.0vw, 1.85rem);
  --cp-h2: clamp(1.15rem, 1.00rem + 0.9vw, 1.55rem);
  --cp-h3: clamp(1.00rem, 0.92rem + 0.6vw, 1.25rem);
  --cp-h4: clamp(0.95rem, 0.90rem + 0.3vw, 1.10rem);

  --cp-head-fw: 800;
  --cp-subhead-fw: 750;

  --cp-accent: var(--brand);
  --cp-focus: rgba(255, 122, 0, .22);
}

/* Headings: make hierarchy consistent regardless of Bootstrap utility classes */
body:not(.public-shell) h1,
body:not(.public-shell) .h1{ font-size: var(--cp-h1) !important; font-weight: var(--cp-head-fw) !important; letter-spacing: -0.02em; }
body:not(.public-shell) h2,
body:not(.public-shell) .h2{ font-size: var(--cp-h2) !important; font-weight: var(--cp-head-fw) !important; letter-spacing: -0.015em; }
body:not(.public-shell) h3,
body:not(.public-shell) .h3{ font-size: var(--cp-h3) !important; font-weight: var(--cp-subhead-fw) !important; letter-spacing: -0.01em; }
body:not(.public-shell) h4,
body:not(.public-shell) .h4{ font-size: var(--cp-h4) !important; font-weight:700 !important; }

/* Section title helper (useful in templates, but also we auto-style common headings) */
body:not(.public-shell) .cp-section-title,
body:not(.public-shell) h2.mb-0,
body:not(.public-shell) h2.mb-1,
body:not(.public-shell) h2.mb-2{
  position: relative;
  padding-bottom: .35rem;
  margin-bottom: .65rem;
}

/* Subtle orange underline to guide the eye (disabled for accordion headers) */
body:not(.public-shell) .cp-section-title::after,
body:not(.public-shell) h2.mb-0::after,
body:not(.public-shell) h2.mb-1::after,
body:not(.public-shell) h2.mb-2::after{
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 52px;
  height: 3px;
  border-radius: 99px;
  background: var(--cp-accent);
  opacity: .9;
}
body:not(.public-shell) h2.accordion-header{ padding-bottom: 0; margin-bottom: 0; }
body:not(.public-shell) h2.accordion-header::after{ display:none !important; }

/* Clickable rows/cards (data-href is used in several places) */
body:not(.public-shell) [data-href]{
  cursor: pointer;
  border-radius: 14px;
  transition: transform .12s ease, box-shadow .12s ease, background-color .12s ease;
}
body:not(.public-shell) [data-href]:hover{
  background: rgba(255,255,255,.04);
  box-shadow: 0 8px 22px rgba(0,0,0,.20);
  transform: translateY(-1px);
}
body:not(.public-shell) [data-href]:active{ transform: translateY(0px); box-shadow: 0 4px 14px rgba(0,0,0,.18); }

/* Buttons: primary actions pop a bit more (without neon) */
body:not(.public-shell) .btn{
  font-weight:700;
}
body:not(.public-shell) .btn-primary,
body:not(.public-shell) .btn-success,
body:not(.public-shell) .btn-warning{
  box-shadow: 0 10px 22px rgba(0,0,0,.22);
}
body:not(.public-shell) .btn-primary:focus-visible,
body:not(.public-shell) .btn-success:focus-visible,
body:not(.public-shell) .btn-warning:focus-visible,
body:not(.public-shell) .btn:focus-visible{
  box-shadow: 0 0 0 .22rem var(--cp-focus), 0 10px 22px rgba(0,0,0,.22) !important;
}

/* Touch/mobile: tapped controls should not keep a sticky focus look after the tap.
   Real keyboard accessibility stays on :focus-visible. */
html.cp-touch .nav-icon-btn:focus:not(:focus-visible),
html.cp-touch .navbar.nav-brand .navbar-nav .nav-link:focus:not(:focus-visible),
html.cp-touch body:not(.public-shell) .btn:focus:not(:focus-visible),
html.cp-touch body:not(.public-shell) .dropdown-item:focus:not(:focus-visible),
html.cp-touch body:not(.public-shell) [role="button"]:focus:not(:focus-visible){
  outline: none !important;
  box-shadow: none !important;
}
@media (pointer: coarse){
  .nav-icon-btn:focus:not(:focus-visible),
  .navbar.nav-brand .navbar-nav .nav-link:focus:not(:focus-visible),
  body:not(.public-shell) .btn:focus:not(:focus-visible),
  body:not(.public-shell) .dropdown-item:focus:not(:focus-visible),
  body:not(.public-shell) [role="button"]:focus:not(:focus-visible){
    outline: none !important;
    box-shadow: none !important;
  }
}

/* Bigger tap targets for list items in side drawers (messages/notifications) */
body:not(.public-shell) .cp-drawer a,
body:not(.public-shell) .cp-drawer button,
body:not(.public-shell) .cp-drawer .list-group-item{
  min-height: 44px;
}

/* Small “hint” style for secondary text under section headers */
body:not(.public-shell) .cp-section-hint{
  color: var(--text-dim);
  font-size: .95rem;
  margin-top: -.35rem;
  margin-bottom: .75rem;
}


/* === Mobile: Trainer calendar action buttons aligned in one row === */
.tr-cal-toolbar-right{
  display:flex;
  gap:10px;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
}
@media (max-width: 576px){
  .tr-cal-toolbar-right{flex-direction:column; align-items:stretch;}
  .tr-cal-toolbar-right select{width:100%;}
  .tr-cal-actions{width:100%;}
  .tr-cal-actions .btn{padding-left:10px; padding-right:10px;}
}

/* === Trainer calendar: visually separated agenda sections (requests / planned / done) === */
.me-cal-agenda-section{
  border:1px solid var(--border);
  background: rgba(255,255,255,0.03);
  border-radius:16px;
  padding:12px;
  margin-bottom:12px;
}
.me-cal-agenda-section > .d-flex{gap:10px;}
.me-cal-agenda-section .fw-semibold{letter-spacing:.2px;}
.me-cal-agenda-section.is-requests{border-left:4px solid rgba(239,68,68,0.98); background: linear-gradient(90deg, rgba(239,68,68,0.14), rgba(255,255,255,0.03) 35%);}
.me-cal-agenda-section.is-planned{border-left:4px solid rgba(245,158,11,0.98); background: linear-gradient(90deg, rgba(245,158,11,0.16), rgba(255,255,255,0.03) 35%);}
.me-cal-agenda-section.is-live{border-left:4px solid rgba(34,197,94,0.98); background: linear-gradient(90deg, rgba(34,197,94,0.14), rgba(255,255,255,0.03) 35%);}
.me-cal-agenda-section.is-done{border-left:4px solid var(--brand); background: linear-gradient(90deg, rgba(255,90,31,0.14), rgba(255,255,255,0.03) 35%);}
.me-cal-agenda-section.is-cancelled{border-left:4px solid rgba(148,163,184,0.95); background: linear-gradient(90deg, rgba(148,163,184,0.10), rgba(255,255,255,0.03) 35%);}

/* === Client detail: keep "Klient:" and back button on one line on mobile === */
.client-context{min-width:0;}
.cp-back-to-clients{white-space:nowrap;}

/* === Availability modal: buffer selector (readable on all devices) === */
.cp-buffer-wrap{
  display:flex;
  align-items:center;
  gap:10px;
}
.cp-buffer-label{
  display:flex;
  flex-direction:column;
  line-height:1.05;
}
.cp-buffer-select{
  width:140px;
}
@media (max-width: 576px){
  .cp-buffer-wrap{flex-direction:column; align-items:stretch; gap:6px;}
  .cp-buffer-select{width:100%;}
}

/* Availability modal header: avoid cutting the buffer label/select on tablets */
.cp-av-modal-header .cp-av-header-actions{row-gap:8px;}
@media (max-width: 1024px){
  .cp-av-modal-header .cp-av-header-actions{width:100%;}
  .cp-av-modal-header .cp-buffer-wrap{width:100%; justify-content:space-between;}
  .cp-av-modal-header .cp-buffer-label{min-width:190px;}
  .cp-av-modal-header .cp-buffer-select{min-width:150px;}
}



/* =========================================================
   Landing Premium (scoped) – .lp
   ========================================================= */
.lp{
  --lp-max: 1120px;
  --lp-pad: 18px;
  --lp-r: 22px;
  --lp-bg-0: rgba(0,0,0,0.12);
  --lp-bg-1: rgba(0,0,0,0.18);
  --lp-bd: rgba(255,255,255,0.10);
  --lp-bd2: rgba(255,255,255,0.14);
  --lp-soft: rgba(255,140,0,0.14);
  --lp-soft-bd: rgba(255,140,0,0.22);
}
html[data-theme="light"] .lp{
  --lp-bg-0: rgba(0,0,0,0.03);
  --lp-bg-1: rgba(0,0,0,0.04);
  --lp-bd: rgba(0,0,0,0.10);
  --lp-bd2: rgba(0,0,0,0.12);
  --lp-soft: rgba(230,90,26,0.10);
  --lp-soft-bd: rgba(230,90,26,0.18);
}

.lp-container{max-width: var(--lp-max); margin: 0 auto; padding: 0 var(--lp-pad)}

/*
  Landing renderuje się wewnątrz <main class="container"> w base.html.
  Żeby uniknąć „ucięć” tła/cieni (subpiksele + 100vw + scrollbar),
  landing nie używa sztuczek z 100vw i ujemnymi marginesami.
  Szerokość i padding ogarniamy przez reset kontenera w landing.html.
*/
.lp{width:100%; margin:0; background: var(--bg); overflow-x:hidden; position:relative; isolation:isolate;}
html[data-theme="light"] .lp{ background: var(--bg); }

/*
  Globalny „miękki” gradient dla całego landingu.
  Zamiast kilku pseudo-tła per sekcja (które potrafią kończyć się ostrą linią),
  trzymamy jedno tło w tle całej strony – dzięki temu nie ma „przycięć”
  i wrażenia sklejonych bloków.
*/
.lp::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:0;
  background:
    radial-gradient(900px 520px at 50% 22%, rgba(255,140,0,0.12), transparent 62%),
    radial-gradient(1100px 640px at 18% 58%, rgba(255,255,255,0.06), transparent 60%),
    radial-gradient(1100px 680px at 82% 68%, rgba(255,106,31,0.10), transparent 62%),
    linear-gradient(180deg, rgba(0,0,0,0.10), transparent 55%);
}
html[data-theme="light"] .lp::before{
  background:
    radial-gradient(900px 520px at 50% 22%, rgba(255,106,31,0.16), transparent 62%),
    radial-gradient(1100px 640px at 18% 58%, rgba(0,0,0,0.03), transparent 60%),
    radial-gradient(1100px 680px at 82% 68%, rgba(255,140,0,0.10), transparent 62%),
    linear-gradient(180deg, rgba(0,0,0,0.03), transparent 55%);
}

/* Wszystko na landingu ma być nad globalnym tłem */
.lp > *{position:relative; z-index:1;}

.lp-section{padding: 56px 0; position:relative}
@media (min-width: 992px){.lp-section{padding: 86px 0}}
.lp-section > .lp-container{position:relative; z-index: 1;}

/* Subtelne oddzielenie sekcji (premium, bez "sklejki") */
.lp-section::before{
  content:"";
  position:absolute; left:0; right:0; top:0;
  height: 1px;
  /* miękka linia – bez "pasków" na ciemnym tle */
  background: linear-gradient(90deg, transparent, rgba(0,0,0,0.10), transparent);
  opacity: .55;
  pointer-events:none;
}
.lp-section::after{
  content:"";
  position:absolute; left:0; right:0; top:0;
  height: 24px;
  /* delikatny fade, który nie wygląda jak odcięta belka */
  background: linear-gradient(180deg, rgba(255,255,255,0.10), rgba(255,255,255,0));
  opacity: .35;
  pointer-events:none;
}
html[data-theme="dark"] .lp-section::before{
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.10), transparent);
  opacity: .50;
}
html[data-theme="dark"] .lp-section::after{
  background: linear-gradient(180deg, rgba(0,0,0,0.45), rgba(0,0,0,0));
  opacity: .55;
}
.lp-hero + .lp-section::before,
.lp-hero + .lp-section::after{display:none;}

/* Delikatne pasy tła dla wybranych sekcji (spójne, bez losowych cięć) */
.lp-section-alt{background: rgba(255,255,255,0.06);}
.lp-section-compare{background: rgba(255,255,255,0.08);}
html[data-theme="dark"] .lp-section-alt{background: rgba(255,255,255,0.02);}
html[data-theme="dark"] .lp-section-compare{background: rgba(255,255,255,0.03);}

/* HERO "badge" -> bardziej jak kiedyś: niska, gruba typografia (bez pigułki) */
.lp-eyebrow{
  display:inline-block;
  padding: 0;
  border-radius: 0;
  background: transparent;
  border: 0;
  color: var(--muted);
  font-weight:700;
  font-size: 11px;
  line-height: 1.1;
  letter-spacing: .7px;
  text-transform: uppercase;
}
.lp-h1{font-weight:700; letter-spacing:-0.8px; line-height:1.05; font-size: clamp(30px, 3.4vw, 54px); margin: 14px 0 0}
.lp-h2{font-weight:700; letter-spacing:-0.5px; line-height:1.08; font-size: clamp(22px, 2.2vw, 34px); margin: 0}
.lp-lead{margin: 0; color: var(--muted); font-size: 15px; line-height:1.55; max-width: none; width: 100%; text-align: justify; text-justify: inter-word; hyphens: auto;}
@media (min-width: 992px){.lp-lead{font-size: 16px}}
.lp-leadwrap{margin-top: 12px; width: 100%;}
.lp-lead2{margin-top: 8px;}
.lp-sub{margin: 10px 0 0; color: var(--muted); font-size: 14px; line-height:1.55; max-width: 70ch}

.lp-hero{padding: 10px 0 18px}
@media (min-width: 992px){.lp-hero{padding: 34px 0 30px}}

/* Mobile Safari: landing HERO starts under a sticky navbar.
   We removed main.container padding for landing (to avoid the "odd strip"),
   so we must re-introduce safe top spacing INSIDE the hero.
   Using padding (not margin) keeps the background consistent (no different shade strip). */
@media (max-width: 991.98px){
  .lp-hero{padding-top: calc(var(--nav-h, 0px) + 10px) !important;}
}
.lp-hero-grid{display:grid; gap: 22px; align-items:center}
@media (min-width: 992px){.lp-hero-grid{grid-template-columns: 1.05fr .95fr; gap: 28px}}

/* Hero benefit strip placement:
   - desktop: sits under CTA (inside the left column)
   - mobile: duplicated block is rendered under the mockup
*/
.lp-hero-under{width: 100%; margin-top: 14px;}
.lp-hero-under--mobile{display:none;}
@media (max-width: 991.98px){
  .lp-hero-under--desktop{display:none;}
  .lp-hero-under--mobile{display:block; grid-column: 1 / -1;}
}

/* HERO CTA: 2 równe kolumny + login pod spodem na pełną szerokość
   (wszystkie przyciski mają wspólną prawą krawędź jak na zrzucie) */
.lp-cta{display:grid; grid-template-columns: 1fr; gap: 10px; margin-top: 16px; max-width: 520px}
@media (min-width: 520px){.lp-cta{grid-template-columns: 1fr 1fr}}


/* Tablet/iPad: let hero copy + CTA use more width (avoid “tiny” buttons/lines on 768px screens) */
@media (min-width: 768px) and (max-width: 991.98px){
  /* Tablet: let copy + CTA use full available width (no narrow column feel) */
  .lp-cta{ max-width: none; }
  .lp-lead{ max-width: none; }
}
.lp-cta .lp-btn{width:100%; justify-content:center; text-align:center}
.lp-btn{border-radius: 14px !important; padding: 10px 14px !important; font-weight:700 !important}
.lp-btn.ghost{border-color: rgba(255,255,255,0.18) !important}
html[data-theme="light"] .lp-btn.ghost{border-color: rgba(0,0,0,0.16) !important}

/* Landing: login CTA jako 3. przycisk pod dwoma głównymi, na pełną szerokość */
.lp-btn-login{grid-column: 1 / -1}

/* Trust strip pod CTA - równe "badge" na jedną linię (desktop), bez rozjeżdżania */
.trust-strip{display:grid; grid-template-columns: 1fr; gap: 10px; align-items:stretch; width:100%; max-width:none}
@media (min-width: 520px){.trust-strip{grid-template-columns: repeat(3, minmax(0, 1fr))}}
.trust-strip .trust-item{display:flex; align-items:center; justify-content:flex-start; text-align:left; padding: 10px 12px}

.lp-btn.light{
  background: rgba(255,255,255,0.72);
  border: 1px solid rgba(0,0,0,0.14);
  color: #111;
  box-shadow: 0 10px 22px rgba(0,0,0,0.06);
}
.lp-btn.light:hover{transform: translateY(-1px); box-shadow: 0 14px 30px rgba(0,0,0,0.08);}
html[data-theme="dark"] .lp-btn.light{
  background: rgba(255,255,255,0.08);
  border-color: rgba(255,255,255,0.16);
  color: #fff;
  box-shadow: 0 10px 22px rgba(0,0,0,0.28);
}
.lp-btn-em{font-weight:700;}

.lp-store-cta{
  margin-top: 18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 16px;
  padding: 16px 18px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.1);
  background:
    radial-gradient(120% 140% at 0% 0%, rgba(227,75,24,0.18), transparent 55%),
    linear-gradient(180deg, rgba(16,18,22,0.96), rgba(10,12,16,0.92));
  box-shadow: 0 20px 44px rgba(0,0,0,0.28), inset 0 1px 0 rgba(255,255,255,0.04);
}
.lp-store-copy{
  display:grid;
  gap: 6px;
  min-width:0;
}
.lp-store-kicker{
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .16em;
  font-weight:700;
  color: rgba(255,173,102,0.92);
}
.lp-store-title{
  font-size: clamp(16px, 2.1vw, 20px);
  line-height: 1.1;
  font-weight:700;
  color: #fff;
}
.lp-store-sub{
  font-size: 13px;
  line-height: 1.45;
  color: rgba(255,255,255,0.72);
}
.lp-store-badges{
  /* Official App Store SVG is 119.664 × 40, so a 2.9916:1 box keeps its
     proportions exact. Google Play's official PNG has transparent padding;
     it is clipped inside the same box below without stretching the artwork. */
  --lp-store-badge-w: 164px;
  --lp-store-badge-ratio: 2.9916 / 1;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap: 12px;
  flex: 0 0 auto;
  flex-wrap: wrap;
}
.lp-store-badge-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex: 0 0 auto;
  width: var(--lp-store-badge-w);
  aspect-ratio: var(--lp-store-badge-ratio);
  height: auto;
  max-width: 100%;
  align-self: center;
  border-radius: 10px;
  overflow: hidden;
  line-height: 0;
  background: transparent;
  transition: transform .18s ease, filter .18s ease, box-shadow .18s ease;
  box-shadow: 0 16px 36px rgba(0,0,0,0.24);
}
.lp-store-badge-link:hover{
  transform: translateY(-1px);
  filter: saturate(1.02);
  box-shadow: 0 20px 42px rgba(0,0,0,0.3);
}
.lp-store-badge-link:focus-visible{
  outline: 2px solid rgba(255,140,58,0.9);
  outline-offset: 4px;
}
.lp-store-badge-img{
  display:block;
  width: 100%;
  height: 100%;
  max-width: none;
  border: 0;
}
.lp-store-badge-img--apple{
  object-fit: contain;
  object-position: center;
}
.lp-store-badge-img--google{
  /* Official Google PNG is narrower and has safety padding. `cover` removes the
     padding symmetrically so both store badges occupy an identical visual box. */
  object-fit: cover;
  object-position: center;
}
html[data-theme="light"] .lp-store-cta{
  border-color: rgba(17,24,39,0.1);
  background:
    radial-gradient(120% 140% at 0% 0%, rgba(227,75,24,0.1), transparent 55%),
    linear-gradient(180deg, rgba(255,255,255,0.98), rgba(248,249,252,0.94));
  box-shadow: 0 18px 38px rgba(15,23,42,0.08), inset 0 1px 0 rgba(255,255,255,0.9);
}
html[data-theme="light"] .lp-store-title{color:#111827;}
html[data-theme="light"] .lp-store-sub{color: rgba(17,24,39,0.68);}
@media (max-width: 640px){
  .lp-store-cta{
    padding: 14px;
    border-radius: 20px;
    align-items:flex-start;
    flex-direction:column;
  }
  .lp-store-badges{
    width: 100%;
    justify-content:center;
    gap: 10px;
  }
  .lp-store-badges{
    --lp-store-badge-w: min(44vw, 156px);
  }
  .lp-store-badge-link{
    border-radius: 11px;
  }
  .lp-store-badge-img,
  .lp-store-badge-img--apple,
  .lp-store-badge-img--google{
    width: 100%;
    height: 100%;
  }
}

.lp-store-cta--hero{
  margin-top: 20px;
  grid-column: 1 / -1;
  width: min(100%, 980px);
  justify-self: center;
}
.lp-store-cta--hero .lp-store-badges{
  justify-content:flex-end;
}
.lp-store-cta--hero .lp-store-badge-link{
  width: var(--lp-store-badge-w);
  max-width: 100%;
}

@media (max-width: 640px){
  .lp-store-cta--hero{
    margin-top: 18px;
    width: 100%;
  }
  .lp-store-cta--hero .lp-store-copy{ text-align:left; }
  .lp-store-cta--hero .lp-store-badges{
    width: 100%;
    justify-content:center;
  }
  .lp-store-cta--hero .lp-store-badge-link{
    margin: 0;
    justify-content:center;
    align-self:center;
  }
}

.lp-link{color: var(--muted); font-weight:700; font-size: 13px; text-decoration:none; padding: 8px 6px}
.lp-link:hover{color: var(--text)}

.lp-chips{display:flex; flex-wrap:wrap; gap: 8px; margin-top: 14px}
.lp-chip{display:inline-flex; align-items:center; gap:8px; padding: 8px 10px; border-radius: 999px;
  background: var(--lp-bg-0); border: 1px solid var(--lp-bd); color: var(--text-85); font-weight:700; font-size: 12px}

.lp-kpis{display:grid; grid-template-columns: 1fr; gap: 10px; margin-top: 14px}
@media (min-width: 680px){.lp-kpis{grid-template-columns: repeat(3, minmax(0,1fr))}}
.lp-kpi{border-radius: var(--lp-r); background: var(--lp-bg-1); border:1px solid var(--lp-bd); padding: 12px 12px}
.kpi-top{font-size: 12px; color: var(--muted); font-weight:700}
.kpi-main{font-size: 15px; font-weight:700; margin-top: 2px}
.kpi-sub{font-size: 12px; color: var(--muted); margin-top: 4px}

.lp-hero-media{display:grid; place-items:center}
.lp-phone-wrap{position:relative; width: min(420px, 100%); padding: 14px; border-radius: calc(var(--lp-r) + 6px);
  background: radial-gradient(1200px 500px at 20% 10%, rgba(255,140,0,0.18), transparent 60%),
              radial-gradient(900px 420px at 80% 20%, rgba(255,255,255,0.08), transparent 55%),
              var(--lp-bg-1);
  border: 1px solid var(--lp-bd);
  box-shadow: 0 22px 70px rgba(0,0,0,0.55);
}
html[data-theme="light"] .lp-phone-wrap{box-shadow: 0 18px 55px rgba(10,10,20,0.12)}
.lp-spotlight{position:absolute; inset:-30px; background: radial-gradient(520px 520px at 50% 20%, rgba(255,140,0,0.22), transparent 60%); filter: blur(6px); opacity: .9; pointer-events:none}

@media (min-width: 992px){
  .lp-phone-wrap{width: min(380px, 100%);}
}
.lp-phone{position:relative; border-radius: 28px; overflow:hidden; border:1px solid rgba(255,255,255,0.10); background: rgba(0,0,0,0.25)}
html[data-theme="light"] .lp-phone{border-color: rgba(0,0,0,0.12); background: rgba(255,255,255,0.72)}
.lp-phone-img{display:block; width:100%; height:auto}

.lp-float{position:absolute; z-index:3; width: min(280px, 78%); padding: 10px 11px; border-radius: 16px;
  background: rgba(0,0,0,0.55); border: 1px solid rgba(255,255,255,0.12);
  backdrop-filter: blur(10px); box-shadow: 0 12px 40px rgba(0,0,0,0.55)}
html[data-theme="light"] .lp-float{background: rgba(255,255,255,0.92); border-color: rgba(0,0,0,0.10); box-shadow: 0 14px 42px rgba(10,10,20,0.12)}
.lp-float-title{font-weight:700; font-size: 13px}
.lp-float-sub{margin-top: 4px; color: var(--muted); font-size: 12px; line-height:1.25}
.lp-float-a{left: 18px; bottom: -10px}
.lp-float-b{right: 18px; top: -10px}
@media (min-width: 992px){
  /* Na większych ekranach nie zasłaniamy zrzutów: pigułki wychodzą lekko poza mockup */
  .lp-float{width: min(250px, 74%)}
  .lp-float-a{left: -26px; bottom: 12px}
  .lp-float-b{right: -28px; top: 12px}
}
@media (max-width: 768px){
  /* Na telefonach nie zasłaniamy mockupów */
  .lp-float{display:none !important}
}

/* Pigułki nad mockupem (desktop) */
.lp-floats-top{display:none; align-items:center; justify-content:center; gap:10px; flex-wrap:wrap; margin: 0 0 12px 0;}
.lp-pill{display:flex; flex-direction:column; gap:2px; padding:10px 14px; border-radius:999px; background:rgba(255,255,255,.88); border:1px solid rgba(0,0,0,.06); box-shadow:0 14px 36px rgba(0,0,0,.18);}
.lp-pill-title{font-weight:700; font-size:13px; letter-spacing:.2px;}
.lp-pill-sub{font-size:12px; opacity:.78;}

html[data-theme="dark"] .lp-pill{background: rgba(24,24,26,.72); border-color: rgba(255,255,255,.12); box-shadow: 0 18px 44px rgba(0,0,0,.42);}
html[data-theme="dark"] .lp-pill-sub{opacity:.86;}

@media (min-width: 992px){
  .lp-floats-top{display:flex;}
}

.lp-section-head{display:flex; flex-direction:column; gap: 8px; align-items:flex-start; margin-bottom: 16px}
@media (min-width: 992px){.lp-section-head{margin-bottom: 22px}}

.lp-cards3{display:grid; grid-template-columns: 1fr; gap: 12px}
@media (min-width: 860px){.lp-cards3{grid-template-columns: repeat(3, minmax(0,1fr)); gap: 14px}}
.lp-card{border-radius: var(--lp-r); padding: 14px; background: var(--lp-bg-1); border:1px solid var(--lp-bd)}
.lp-card-ico{width: 42px; height: 42px; display:grid; place-items:center; border-radius: 14px;
  background: var(--lp-soft); border:1px solid var(--lp-soft-bd); font-size: 18px}
.lp-card-title{margin-top: 10px; font-weight:700; font-size: 15px}
.lp-card-text{margin-top: 6px; color: var(--muted); font-size: 13px; line-height:1.5}

.lp-grid8{display:grid; grid-template-columns: 1fr; gap: 10px}
@media (min-width: 740px){.lp-grid8{grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px}}
@media (min-width: 1100px){.lp-grid8{grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px}}
.lp-feature{border-radius: var(--lp-r); padding: 14px; background: rgba(0,0,0,0.14); border:1px solid var(--lp-bd)}
html[data-theme="light"] .lp-feature{background: rgba(255,255,255,0.70)}
.lp-feature-title{font-weight:700; font-size: 14px; line-height:1.2}
.lp-feature-text{margin-top: 8px; color: var(--muted); font-size: 13px; line-height:1.5}

.lp-center{display:flex; gap: 10px; justify-content:center; flex-wrap:wrap; margin-top: 18px}

.lp-demo{display:grid; gap: 14px; align-items:start}
@media (min-width: 992px){.lp-demo{grid-template-columns: .95fr 1.05fr; gap: 22px}}
.lp-demo-phone{position:relative}
@media (min-width: 992px){.lp-demo-phone{position:sticky; top: 88px}}
.lp-demo-frame{
  position: relative;
  /* mniejszy mockup (bardziej proporcjonalny do treści) */
  max-width: 340px;
  margin-inline: auto;
  border-radius: calc(var(--lp-r) + 6px);
  padding: 0;
  background: var(--lp-bg-1);
  border: 1px solid var(--lp-bd);
  overflow: hidden;
  /* Stabilny rozmiar niezależnie od motywu/ekranu (zapobiega "rozjeżdżaniu" w dół) */
  aspect-ratio: 9 / 19.5;
}

@media (min-width: 992px){
  .lp-demo-frame{max-width: 320px;}
}
/* iPhone mockup (subtelny bezel + notch) */
.lp-demo-frame::before{
  content:"";
  position:absolute;
  inset:-10px;
  border-radius: 36px;
  background: linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.03));
  border: 1px solid rgba(255,255,255,.10);
  box-shadow: 0 20px 70px rgba(0,0,0,.55);
  pointer-events:none;
  z-index: 1;
}
html[data-theme="light"] .lp-demo-frame::before{
  background: linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.02));
  border-color: rgba(0,0,0,.10);
  box-shadow: 0 22px 70px rgba(0,0,0,.18);
}
.lp-demo-frame::after{
  content:"";
  position:absolute;
  top:-6px;
  left:50%;
  transform: translateX(-50%);
  width: 46%;
  height: 18px;
  border-radius: 0 0 14px 14px;
  background: rgba(0,0,0,.62);
  border: 1px solid rgba(255,255,255,.08);
  pointer-events:none;
  z-index: 2;
}
html[data-theme="light"] .lp-demo-frame::after{
  background: rgba(0,0,0,.12);
  border-color: rgba(0,0,0,.10);
}
.lp-demo-img{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 0;
  border: 0;
  display: block;
  opacity: 0;
  transition: opacity .22s ease;
  z-index: 3;
}
.lp-demo-img.is-active{opacity:1}

.lp-steps{list-style:none; padding:0; margin:0; display:grid; gap: 10px}
.lp-step{display:flex; gap: 12px; padding: 12px; border-radius: var(--lp-r); border:1px solid var(--lp-bd); background: rgba(0,0,0,0.14)}
html[data-theme="light"] .lp-step{background: rgba(255,255,255,0.72)}
.lp-step-k{flex:0 0 auto; width: 34px; height: 34px; border-radius: 12px; display:grid; place-items:center;
  background: var(--lp-soft); border:1px solid var(--lp-soft-bd); font-weight:700}
.lp-step-title{font-weight:700; font-size: 14px}
.lp-step-text{margin-top: 4px; color: var(--muted); font-size: 13px; line-height:1.45}
.lp-step.is-active{border-color: var(--lp-soft-bd); box-shadow: 0 10px 30px rgba(0,0,0,0.25)}
html[data-theme="light"] .lp-step.is-active{box-shadow: 0 12px 30px rgba(10,10,20,0.10)}

.lp-gallery{display:grid; grid-template-columns: 1fr; gap: 12px}
@media (min-width: 760px){.lp-gallery{grid-template-columns: repeat(3, minmax(0,1fr))}}
.lp-thumb{border:0; text-align:left; padding: 0; background: transparent}
.lp-thumb img{width:100%; border-radius: calc(var(--lp-r) + 6px); border:1px solid var(--lp-bd); background: var(--lp-bg-1); aspect-ratio: 4 / 3; object-fit: cover}
.lp-thumb span{display:block; margin-top: 10px; font-weight:700; font-size: 13px; color: var(--text)}
.lp-thumb:hover img{transform: translate3d(0,-2px,0); transition: transform .18s ease}
.lp-thumb img{transition: transform .18s ease}

.lp-cta-box{display:flex; gap: 14px; align-items:center; justify-content:space-between; flex-wrap:wrap;
  border-radius: calc(var(--lp-r) + 8px); padding: 16px; background:
    radial-gradient(1200px 420px at 10% 20%, rgba(255,140,0,0.18), transparent 60%),
    var(--lp-bg-1);
  border:1px solid var(--lp-bd);
}
@media (min-width: 992px){.lp-cta-box{padding: 20px}}

/* CTA (Gotowy na 14 dni testu?) – przyciski na pełną szerokość na mobile */
.lp-cta-box .lp-cta{width:100%; max-width:none}

.lp-faq{display:grid; gap: 10px}
.lp-faq-item{border-radius: var(--lp-r); padding: 12px 14px; background: rgba(0,0,0,0.14); border:1px solid var(--lp-bd)}
html[data-theme="light"] .lp-faq-item{background: rgba(255,255,255,0.72)}
.lp-faq-item summary{cursor:pointer; font-weight:700}
.lp-faq-body{margin-top: 8px; color: var(--muted); font-size: 14px; line-height:1.55}
@media (min-width: 992px){.lp-faq-body{font-size: 15px}}

.lp-modal{position:fixed; inset:0; display:none; z-index: 9999}
.lp-modal.is-open{display:block}
.lp-modal-backdrop{position:absolute; inset:0; background: rgba(0,0,0,0.65)}
.lp-modal-card{position:relative; width: min(980px, calc(100% - 26px)); max-height: calc(100% - 26px);
  margin: 13px auto; border-radius: 22px; overflow:hidden; border:1px solid rgba(255,255,255,0.12);
  background: rgba(0,0,0,0.72); backdrop-filter: blur(10px); box-shadow: 0 22px 80px rgba(0,0,0,0.65)}
html[data-theme="light"] .lp-modal-card{background: rgba(255,255,255,0.96); border-color: rgba(0,0,0,0.10); box-shadow: 0 18px 55px rgba(10,10,20,0.16)}
.lp-modal-img{display:block; width:100%; height:auto; max-height: calc(100vh - 26px); object-fit: contain; background: transparent}
.lp-modal-x{position:absolute; top: 10px; right: 10px; width: 40px; height: 40px; border-radius: 14px;
  border:1px solid rgba(255,255,255,0.18); background: rgba(0,0,0,0.40); color: rgba(255,255,255,0.92); font-weight:700}
html[data-theme="light"] .lp-modal-x{background: rgba(255,255,255,0.72); border-color: rgba(0,0,0,0.12); color: rgba(0,0,0,0.75)}
.lp-modal-x:hover{transform: translate3d(0,-1px,0)}

/* Reveal */
.fx-reveal{opacity:0; transform: translate3d(0,10px,0); filter: blur(8px)}
.fx-reveal.is-in{opacity:1; transform: translate3d(0,0,0); filter: blur(0); transition: opacity .55s ease, transform .55s ease, filter .55s ease;
  transition-delay: var(--d, 0ms)}



/* =========================
   Landing premium polish
   ========================= */
:root{
  /* Brand orange (spójny z UI aplikacji) */
  /* Na landing ciut ciemniejszy, żeby pasował do UI po zalogowaniu */
  --cp-orange: #e34b18;
  --cp-orange-2: #ff6a1a;
  --cp-ink: rgba(0,0,0,0.92);
}

/* Landing: na mobile przesuń niżej pasek korzyści + "Działa na..." bez zmiany wysokości sekcji */
@media (max-width: 768px){
  .lp-hero .trust-strip,
  .lp-hero .lp-device-note{
    position: relative;
    top: 12px;
  }
}

.lp-container{max-width: 1160px}
.lp-hero{padding-top: 92px; padding-bottom: 56px}
@media (min-width: 980px){.lp-hero{padding-top: 110px; padding-bottom: 70px}}

.lp-section{padding: 64px 0}
@media (min-width: 980px){.lp-section{padding: 82px 0}}

.lp-h1{letter-spacing: -0.02em; line-height: 1.03}
.lp-lead{max-width: none}

/* Buttons (no bootstrap colors) */
.lp-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  height: 44px;
  padding: 0 16px;
  border-radius: 14px;
  font-weight:700;
  text-decoration:none !important;
  border: 1px solid transparent;
  transition: transform .15s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease, color .2s ease;
  width: auto;
  min-width: 180px;
}
@media (max-width: 520px){.lp-btn{width:100%; min-width: 0}}
.lp-btn.primary,
.lp-btn-primary{
  color: #fff;
  background: linear-gradient(135deg, var(--cp-orange), var(--cp-orange-2));
  box-shadow: 0 10px 28px rgba(227,75,24,0.20);
}
html[data-theme="light"] .lp-btn.primary,
html[data-theme="light"] .lp-btn-primary{color: #111}
.lp-btn.primary:hover,
.lp-btn-primary:hover{transform: translateY(-1px); box-shadow: 0 14px 34px rgba(227,75,24,0.26)}
.lp-btn.ghost,
.lp-btn-ghost{
  background: transparent;
  border-color: rgba(255,255,255,0.18);
  color: rgba(255,255,255,0.92);
}
html[data-theme="light"] .lp-btn.ghost,
html[data-theme="light"] .lp-btn-ghost{
  border-color: rgba(0,0,0,0.16);
  color: rgba(0,0,0,0.86);
}
.lp-btn.ghost:hover,
.lp-btn-ghost:hover{
  transform: translateY(-1px);
  border-color: rgba(255,106,0,0.55);
  box-shadow: 0 10px 22px rgba(0,0,0,0.10);
}

/* CTA row spacing */
.lp-cta{gap: 10px}
.lp-link{opacity: .9}
.lp-link:hover{opacity: 1}

/* Cards and grids: consistent rhythm */
.lp-cards3, .lp-grid8{gap: 14px}
@media (min-width: 980px){.lp-cards3, .lp-grid8{gap: 16px}}

.lp-card{
  border-radius: 16px;
  border: 1px solid var(--lp-bd);
  background: var(--lp-bg-1);
  box-shadow: 0 10px 26px rgba(0,0,0,0.08);
}
html[data-theme="light"] .lp-card{box-shadow: 0 14px 34px rgba(0,0,0,0.06)}

/* Landing: reakcja na hover jak na /pricing (tylko na urządzeniach z hover) */
@media (hover: hover) and (pointer: fine){
  .lp-card,
  .lp-feature,
  .lp-step,
  .lp-compare-col{ transition: transform .15s ease, box-shadow .2s ease, border-color .2s ease; }

  .lp-card:hover,
  .lp-feature:hover,
  .lp-step:hover,
  .lp-compare-col:hover{
    transform: translateY(-1px);
    box-shadow: 0 16px 38px rgba(0,0,0,0.14);
    border-color: rgba(227,75,24,0.30);
  }
  html[data-theme="light"] .lp-card:hover,
  html[data-theme="light"] .lp-feature:hover,
  html[data-theme="light"] .lp-step:hover,
  html[data-theme="light"] .lp-compare-col:hover{
    box-shadow: 0 16px 38px rgba(0,0,0,0.10);
    border-color: rgba(227,75,24,0.26);
  }
}

/* Section titles */
.lp-h2{letter-spacing: -0.015em}
.lp-sub{max-width: 70ch}

/* Gallery: improve captions contrast */
.lp-gallery small{opacity: .85}

/* Demo: keep clean on mobile */
@media (max-width: 820px){
  .lp-demo{gap: 18px}
  .lp-demo-phone{position: relative !important; top: auto !important}
}

/* Background: less sterile in light, deeper in dark */
html[data-theme="light"] .lp-hero{
  background: radial-gradient(900px 600px at 76% 22%, rgba(255,106,0,0.16), transparent 60%),
              radial-gradient(1000px 680px at 18% 18%, rgba(0,0,0,0.05), transparent 55%);
}
html:not([data-theme="light"]) .lp-hero{
  background: radial-gradient(900px 640px at 78% 18%, rgba(255,106,0,0.22), transparent 62%),
              radial-gradient(1000px 760px at 18% 18%, rgba(255,255,255,0.05), transparent 55%);
}

/* Fix any accidental bootstrap button visuals inside landing */
.lp-hero a.btn, .lp-section a.btn{all: unset}


/* Reduce excessive top spacing on public landing (navbar already adds height) */
.lp-hero{scroll-margin-top: 80px}
@media (max-width: 575px){
  .lp{ margin-top: -10px; }
}


/* Onboarding timeline (signup -> trial -> activation) */
.lp-steps--2col{display:grid; gap: 10px}
@media (min-width: 992px){.lp-steps--2col{grid-template-columns: 1fr 1fr}}
.lp-step .lp-step-title{font-weight:700; color: var(--text-85); margin: 0 0 4px}
.lp-step .lp-step-desc{margin: 0; color: var(--muted); font-size: 13px; line-height:1.5}



/* --- Landing: Comparison section --- */
.lp-section-compare{ background: transparent; }
.lp-section-compare::before{content:none !important;}

.lp-compare{
  display:grid;
  gap: 14px;
  margin-top: 18px;
}
@media (min-width: 992px){
  .lp-compare{ grid-template-columns: 1.15fr .9fr .9fr; gap: 16px; align-items: stretch; }
}

.lp-compare-col{
  border: 1px solid rgba(255,255,255,0.10);
  background: rgba(16,16,18,0.55);
  border-radius: 18px;
  padding: 16px;
  box-shadow: 0 18px 55px rgba(0,0,0,0.35);
}
html[data-theme="light"] .lp-compare-col{
  background: rgba(255,255,255,0.72);
  border-color: rgba(0,0,0,0.10);
  box-shadow: 0 18px 55px rgba(0,0,0,0.10);
}

.lp-compare-col--best{
  border-color: rgba(255,106,31,0.45);
  background: linear-gradient(180deg, rgba(255,106,31,0.12), rgba(16,16,18,0.55));
}
html[data-theme="light"] .lp-compare-col--best{
  background: linear-gradient(180deg, rgba(255,106,31,0.14), rgba(255,255,255,0.78));
  border-color: rgba(255,106,31,0.42);
}

.lp-compare-top{ margin-bottom: 10px; }
.lp-compare-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding: 6px 10px;
  border-radius: 999px;
  font-weight:700;
  font-size: 12px;
  letter-spacing: .01em;
  background: rgba(255,106,31,0.16);
  border: 1px solid rgba(255,106,31,0.35);
  color: rgba(255,255,255,0.92);
}
html[data-theme="light"] .lp-compare-badge{
  color: rgba(20,20,24,0.92);
}

.lp-compare-title{ font-weight:700; letter-spacing: -0.01em; font-size: 18px; margin-top: 10px; }
.lp-compare-note{ margin-top: 6px; color: var(--muted); font-weight:650; font-size: 13px; line-height: 1.35; }

.lp-compare-list{
  list-style:none;
  padding: 0;
  margin: 12px 0 0;
  display:grid;
  gap: 10px;
}
.lp-compare-list li{
  position:relative;
  padding-left: 26px;
  line-height: 1.35;
  color: var(--text);
  font-weight:650;
  font-size: 13px;
}
.lp-compare-list li::before{
  content: "✓";
  position:absolute;
  left: 0;
  top: 0;
  width: 18px;
  height: 18px;
  border-radius: 6px;
  display:flex;
  align-items:center;
  justify-content:center;
  background: rgba(255,106,31,0.18);
  border: 1px solid rgba(255,106,31,0.32);
  color: rgba(255,255,255,0.92);
  font-weight:700;
  font-size: 12px;
}
html[data-theme="light"] .lp-compare-list li::before{
  color: rgba(20,20,24,0.92);
}

.lp-compare-list.is-muted li{
  color: var(--text-soft);
}
.lp-compare-list.is-muted li::before{
  content: "•";
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.10);
  color: rgba(255,255,255,0.55);
}
html[data-theme="light"] .lp-compare-list.is-muted li::before{
  background: rgba(0,0,0,0.06);
  border-color: rgba(0,0,0,0.10);
  color: rgba(0,0,0,0.42);
}

/* Tighten top spacing on very small screens */
@media (max-width: 420px){
  .lp-hero{ padding-top: 4px; }
  .lp{ margin-top: -6px; }
}


/* === Landing: theme-swapped screenshots (light screens in dark theme) === */
.theme-show--dark{display:none;}
html[data-theme="dark"] .theme-show--light{display:none !important;}
html[data-theme="dark"] .theme-show--dark{display:block !important;}

/* Zmniejsz odstęp na górze landing (szczególnie mobile) */
.lp-section:first-of-type{padding-top:14px;}
@media (max-width: 576px){
  .lp-section:first-of-type{padding-top:10px; padding-bottom:22px;}
}

/* Wymuś brak "niebieskich" buttonów w landing */
.lp .btn-primary,
.lp a.btn-primary{
  background: var(--brand) !important;
  border-color: var(--brand) !important;
  color: #fff !important;
}
.lp .btn-primary:hover,
.lp a.btn-primary:hover{
  filter: brightness(0.96);
}

/* Bootstrap focus ring (FAQ/accordion) w kolorze brand */
.lp .accordion-button:focus{
  box-shadow: 0 0 0 .15rem rgba(255, 107, 0, .25) !important;
  border-color: rgba(255, 107, 0, .55) !important;
}

/* ===== Landing tweaks (fallbacki + spójność brandu) ===== */
.landing-page .btn-primary{
  background: linear-gradient(135deg, var(--orange2), var(--orange));
  border-color: transparent;
  color: #fff;
}
.landing-page .btn-primary:hover{filter: brightness(1.02); color:#fff;}
.landing-page .btn-outline-primary{color: var(--orange2); border-color: rgba(240,87,45,.45);}
.landing-page .btn-outline-primary:hover{background: rgba(240,87,45,.10); color: var(--orange2);}

/* Landing: testimonials (nowy blok) */
.lp-testimonials{display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap:14px; margin-top: 16px;}
@media (max-width: 991px){.lp-testimonials{grid-template-columns: 1fr;}}
.lp-testimonial{background: var(--lp-bg-1); border:1px solid var(--lp-bd); border-radius: 18px; padding: 14px; box-shadow: 0 10px 28px rgba(0,0,0,.25);}
html[data-theme="light"] .lp-testimonial{box-shadow: 0 10px 28px rgba(0,0,0,.10);}
.lp-testimonial .top{display:flex; align-items:center; justify-content:space-between; gap:12px;}
.lp-testimonial .who{display:flex; align-items:center; gap:10px;}
.lp-testimonial .av{width:38px; height:38px; border-radius: 12px; display:grid; place-items:center; font-weight:700; background: rgba(240,87,45,.18); border:1px solid rgba(240,87,45,.28);}
.lp-testimonial .nm{font-weight:700; line-height:1.1;}
.lp-testimonial .rl{color: var(--muted-2); font-size:.82rem;}
.lp-testimonial .stars{letter-spacing:.08em; font-size:.92rem; color: rgba(255,255,255,.85);} 
html[data-theme="light"] .lp-testimonial .stars{color: rgba(0,0,0,.75);} 
.lp-testimonial .q{margin-top:10px; color: var(--muted); font-size: .95rem;}
.lp-testimonial .tags{display:flex; flex-wrap:wrap; gap:8px; margin-top:10px;}
.lp-testimonial .tag{font-size:.78rem; padding:6px 10px; border-radius: 999px; border:1px solid rgba(255,255,255,.10); background: rgba(255,255,255,.05);} 
html[data-theme="light"] .lp-testimonial .tag{border-color: rgba(0,0,0,.08); background: rgba(0,0,0,.03);} 


.lp-testimonials-carousel{position:relative}
.lp-testimonials-track{
  display:flex;
  gap:14px;
  overflow-x:auto;
  padding:4px 2px 8px;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.lp-testimonials-track::-webkit-scrollbar{display:none}
.lp-testimonial{flex:0 0 calc((100% - 28px)/3); min-width:260px; scroll-snap-align:start}
@media (max-width: 992px){
  .lp-testimonial{flex-basis:calc((100% - 14px)/2)}
}
@media (max-width: 576px){
  .lp-testimonials-track{gap:12px}
  .lp-testimonial{flex-basis:88%}
}

/* === Landing: obramowania sekcji + device note + wyróżniony login === */
.landing-page section{ position: relative; }
.landing-page section + section{ margin-top: 18px; }

/* Panel tła dla sekcji */
.landing-page .lp-container{
  background: rgba(255,255,255,.78);
  border: 1px solid rgba(17,17,17,.08);
  border-radius: 22px;
  padding: clamp(18px, 2.2vw, 28px);
  box-shadow: 0 18px 60px rgba(17,17,17,.08);
}
.landing-page .lp-hero-shell .lp-container{
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
}
html[data-theme="dark"] .landing-page .lp-container{
  background: linear-gradient(180deg, rgba(255,255,255,.085), rgba(255,255,255,.045));
  border: 1px solid rgba(255,255,255,.16);
  box-shadow:
    0 22px 80px rgba(0,0,0,.55),
    0 0 0 1px rgba(255,255,255,.06) inset;
}

/* "Masz konto? Zaloguj się" – widoczne, ale estetyczne */
.lp-link.lp-link--hi{
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 14px;
  border-radius: 999px;
  border: 1px solid rgba(17,17,17,.14);
  background: rgba(255,255,255,.65);
  color: inherit;
  text-decoration: none;
  font-weight:600;
  box-shadow: 0 10px 30px rgba(17,17,17,.10);
}
.lp-link.lp-link--hi span{ font-weight:700; text-decoration: underline; text-underline-offset: 3px; }
html[data-theme="dark"] .lp-link.lp-link--hi{
  border-color: rgba(255,255,255,.16);
  background: rgba(255,255,255,.06);
  box-shadow: 0 12px 34px rgba(0,0,0,.35);
}

/* Informacja: działa na laptop / smartfon / tablet */
.lp-device-note{
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: rgba(17,17,17,.72);
  font-size: .98rem;
}
.lp-device-note-label{
  font-size: .82rem;
  letter-spacing: .02em;
  text-transform: uppercase;
  opacity: .85;
}
.lp-device-note-items{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  gap:8px;
}
.lp-device-note .dot{ opacity: .35; }
html[data-theme="dark"] .lp-device-note{ color: rgba(255,255,255,.74); }
.lp-device-ico{ filter: saturate(1.1); }


/* Premium navbar typography (Apple-like) */
.navbar .nav-link,
.navbar .navbar-brand,
.navbar .brand-title{
  font-family: var(--font-ui);
  letter-spacing: .01em;
}
.navbar .nav-link{font-weight:700;}

/* Navbar emoji icons */
/* Navbar premium SVG icons */
.nav-ico-wrap .nav-svg{ width:18px; height:18px; display:block; }
.theme-icon .ico-moon svg, .theme-icon .ico-sun svg{ width:18px; height:18px; display:block; }

.nav-emoji{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width: 24px;
  height: 24px;
  font-size: 18px;
  line-height: 1;
  transform: translateY(-.5px);
}
.theme-icon .ico-moon, .theme-icon .ico-sun{
  display:inline-flex;
  width: 24px;
  height: 24px;
  align-items:center;
  justify-content:center;
  font-size: 18px;
  line-height: 1;
}


/* Ensure navbar typography is consistent (brand title, dropdowns, badges) */
.navbar.nav-brand *, .navbar.nav-brand .badge{ font-family: var(--font-nav) !important; }

/* Mobile navbar dropdown (e.g. "Funkcje") – centered and easy to tap */
@media (max-width: 991.98px){
  /* Mobile/tablet: dropdowns inside the collapsed navbar should be FULL-WIDTH and centered */
  .navbar.nav-brand .navbar-collapse .dropdown-menu{
    position: static !important;
    float: none !important;
    width: 100% !important;
    max-width: none !important;
    margin: .35rem 0 .6rem !important;
    text-align: center;
    border-radius: 16px;
  }
  .navbar.nav-brand .navbar-collapse .dropdown-menu .dropdown-item{
    text-align: center;
  }
  /* Make the toggle itself look like the rest of the rows and keep it centered */
  .navbar.nav-brand .navbar-collapse .dropdown-toggle{
    width: 100%;
    text-align: center;
  }
}


/* --- FIX: LIVE bottom bar buttons 50/50 + readable labels on mobile --- */
.live-action-actions{
  display:flex;
  gap: 8px;
  align-items: stretch;
}
.live-action-actions > a,
.live-action-actions > form{
  flex: 1 1 0 !important;
  min-width: 0;
}
.live-action-actions > form{ display:flex; }
.live-action-actions > form > .btn{ flex: 1 1 auto; width:100%; }

.live-action-actions .btn{
  min-height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  padding: 10px 12px;
}

@media (max-width: 390px){
  .live-action-actions .btn{ font-size: 14px; padding: 10px 10px; }
}

/* --- FIX: Navbar dropdown inside collapse should not be clipped on touch/mobile --- */
@media (max-width: 991.98px){
  .navbar .navbar-collapse .dropdown-menu{
    position: static !important;
    float: none !important;
    transform: none !important;
    width: 100%;
    margin-top: .25rem;
  }
}


/* Highlight item when opened from notification deep-link */
.me-cal-item.is-focused{
  outline: 2px solid rgba(255,140,0,0.85);
  box-shadow: 0 0 0 6px rgba(255,140,0,0.10);
}

/* === FIX: Landing trust pills centering + spacing (desktop) === */
.lp-hero .trust-strip{justify-items: stretch;}
.lp-hero .trust-strip .trust-item{
  justify-content: center !important;
  text-align: center !important;
}
@media (min-width: 980px){
  .lp-hero .trust-strip{margin-top: 16px;}
}


/* Compact gender selector (K/M) */
.cp-gender-inline{display:flex;gap:.35rem;align-items:center;justify-content:flex-start}
.cp-gender-pill{position:relative;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;user-select:none}
.cp-gender-pill input{position:absolute;opacity:0;pointer-events:none}
.cp-gender-pill span{display:inline-flex;align-items:center;justify-content:center;min-width:2.2rem;height:2.2rem;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);font-weight:700;font-size:.9rem;line-height:1}
.cp-gender-pill input:checked + span{border-color:rgba(255,136,0,.9);background:rgba(255,136,0,.18)}

.cp-gender-compact{flex:0 0 auto;min-width:5.4rem}
.cp-gender-compact .form-label{white-space:nowrap}


/* =====================
   In-app (store wrapper) guard
   Hide pricing/checkout UI inside native wrappers.
   The html element gets class 'inapp' via templates/base.html.
   ===================== */
html.inapp .hide-inapp,
html.inapp .hide-inapp * {
  display: none !important;
}


/* iOS native-shell hardening: reduce WKWebView flashes on fixed overlays / drawers */
html[data-cp-platform="ios"].cp-standalone .cp-drawer,
html[data-cp-platform="ios"] body.inapp-shell .cp-drawer{
  transform: translate3d(103%, 0, 0);
  will-change: transform;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
html[data-cp-platform="ios"].cp-standalone .cp-drawer.is-open,
html[data-cp-platform="ios"] body.inapp-shell .cp-drawer.is-open{
  transform: translate3d(0, 0, 0);
}
html[data-cp-platform="ios"].cp-standalone .cp-drawer-backdrop,
html[data-cp-platform="ios"] body.inapp-shell .cp-drawer-backdrop{
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  background: rgba(0,0,0,0.42);
  will-change: opacity;
}
html[data-cp-platform="ios"].cp-standalone .cp-drawer__header,
html[data-cp-platform="ios"] body.inapp-shell .cp-drawer__header,
html[data-cp-platform="ios"].cp-standalone .cp-drawer__footer,
html[data-cp-platform="ios"] body.inapp-shell .cp-drawer__footer{
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
html[data-cp-platform="ios"].cp-standalone #cpPageTransitionOverlay,
html[data-cp-platform="ios"] body.inapp-shell #cpPageTransitionOverlay{
  will-change: opacity;
  transform: translateZ(0);
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

@media (max-width: 575.98px){
  #cpQuickStartModal .modal-dialog{
    margin: max(6px, env(safe-area-inset-top, 0px)) .55rem max(8px, env(safe-area-inset-bottom, 0px));
    align-items: flex-start;
    min-height: calc(100% - max(6px, env(safe-area-inset-top, 0px)) - max(8px, env(safe-area-inset-bottom, 0px)));
  }
  #cpQuickStartModal .modal-content{
    max-height: calc(100dvh - max(10px, env(safe-area-inset-top, 0px)) - max(10px, env(safe-area-inset-bottom, 0px)));
    min-height: auto;
    overflow: hidden;
  }
  #cpQuickStartModal .modal-body{
    overflow-y: auto;
    padding-top: .2rem;
    background: transparent;
  }
  #cpQuickStartModal .modal-header{
    position: relative;
    top: auto;
    z-index: 1;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border-bottom: 1px solid rgba(255,255,255,.06);
  }
  html[data-theme="light"] #cpQuickStartModal .modal-header{
    background: transparent;
  }
  #cpQuickStartModal .modal-footer{
    border-top: 1px solid rgba(255,255,255,.06);
    background: #12131a;
  }
  html[data-theme="light"] #cpQuickStartModal .modal-footer{
    border-top: 1px solid rgba(20,24,33,.08);
    background: #ffffff;
  }
}


/* v18: drawer navigation + trainer availability modal mobile polish */
@media (max-width: 767.98px){
  #trAvailModal .modal-content{
    min-height: 100dvh;
    border-radius: 0;
  }
  #trAvailModal .modal-header{
    position: sticky;
    top: 0;
    z-index: 3;
    background: inherit;
  }
  #trAvailModal .modal-body{
    padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px));
  }
  #trAvailTabs{
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 4px;
  }
  #trAvailTabs .nav-link{ white-space: nowrap; }
  .cp-av-modal-header .cp-av-header-actions{
    width: 100%;
    align-items: stretch;
    justify-content: stretch !important;
  }
  .cp-av-modal-header .cp-buffer-wrap{
    width: 100%;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
  }
  .cp-av-modal-header .cp-buffer-label,
  .cp-av-modal-header .cp-buffer-select,
  .cp-av-modal-header #trAvailTrainerSelect{
    min-width: 0 !important;
    width: 100%;
  }
  .cp-av-editor .offcanvas-body{
    padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px));
  }
  .cp-av-editor-actions{
    position: sticky;
    bottom: calc(-8px + env(safe-area-inset-bottom, 0px));
    z-index: 2;
    padding: 10px 0 calc(8px + env(safe-area-inset-bottom, 0px));
    background: linear-gradient(180deg, rgba(18,19,26,0), rgba(18,19,26,0.92) 22%, rgba(18,19,26,0.98));
    margin-top: 4px;
  }
  html[data-theme="light"] .cp-av-editor-actions{
    background: linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,0.92) 22%, rgba(255,255,255,0.98));
  }
  .cp-av-editor-actions .btn{
    min-height: 46px;
  }
}


/* v35: trainer calendar spacing and stable toolbar layout */
.trainer-calendar-page{
  --tr-cal-control-h: 46px;
}
.trainer-calendar-card{
  border-radius: 24px;
}
.trainer-calendar-page .card-body{
  padding: 1rem !important;
}
@media (min-width: 992px){
  .trainer-calendar-page .card-body{
    padding: 1.25rem !important;
  }
}
.trainer-calendar-page .text-muted.small{
  max-width: 72ch;
}
.tr-cal-toolbar{
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}
@media (min-width: 992px){
  .tr-cal-toolbar{
    grid-template-columns: minmax(320px, auto) minmax(0, 1fr);
    align-items: center;
  }
}
.tr-cal-toolbar-left,
.tr-cal-toolbar-right{
  min-width: 0;
}
.tr-cal-nav{
  display: grid !important;
  grid-template-columns: var(--tr-cal-control-h) minmax(170px, 1fr) var(--tr-cal-control-h) auto;
  gap: 10px;
  align-items: center;
  width: 100%;
  max-width: 520px;
}
.me-cal-btn{
  width: var(--tr-cal-control-h);
  min-width: var(--tr-cal-control-h);
  height: var(--tr-cal-control-h);
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  font-size: 1.35rem;
  line-height: 1;
}
#trCalToday.me-cal-btn{
  width: auto;
  min-width: 86px;
  padding: 0 16px;
  font-size: .98rem;
  font-weight:700;
}
.me-cal-month{
  min-width: 0;
  height: var(--tr-cal-control-h);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 18px;
  font-size: clamp(1.05rem, 1rem + .5vw, 1.25rem);
  text-align: center;
}
.tr-cal-toolbar-right{
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  justify-items: stretch;
  margin-left: 0;
}
@media (min-width: 768px){
  .tr-cal-toolbar-right{
    grid-template-columns: minmax(0, 1fr) minmax(320px, auto);
  }
  .tr-cal-toolbar-right > select,
  .tr-cal-toolbar-right > .form-select{
    max-width: 280px;
    justify-self: end;
  }
}
.tr-cal-actions{
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  width: 100%;
}
.tr-cal-actions .btn{
  min-height: var(--tr-cal-control-h);
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-weight:700;
  padding: 0 18px;
  white-space: nowrap;
}
@media (max-width: 767.98px){
  .trainer-calendar-page{
    --tr-cal-control-h: 44px;
  }
  .trainer-calendar-page .container,
  .trainer-calendar-page.container{
    padding-left: .75rem;
    padding-right: .75rem;
  }
  .tr-cal-toolbar{
    gap: 12px;
  }
  .tr-cal-nav{
    grid-template-columns: var(--tr-cal-control-h) minmax(0, 1fr) var(--tr-cal-control-h);
    max-width: none;
  }
  #trCalToday{
    grid-column: 1 / -1;
    width: 100%;
  }
  .tr-cal-toolbar-right{
    gap: 10px;
  }
  .tr-cal-toolbar-right > select,
  .tr-cal-toolbar-right > .form-select{
    width: 100%;
    max-width: none;
  }
  .tr-cal-actions{
    grid-template-columns: 1fr;
  }
  .tr-cal-actions .btn{
    width: 100%;
  }
  .trainer-calendar-page .me-cal-wrap{
    gap: 12px;
  }
  .trainer-calendar-page .me-cal-side,
  .trainer-calendar-page .me-cal,
  .trainer-calendar-page .me-cal-agenda-wrap{
    margin-top: 0 !important;
  }
}


/* v36: trainer calendar main card width aligned closer to other app pages */
.trainer-calendar-page{
  width: 100%;
  max-width: 100%;
}
.trainer-calendar-page.container,
.trainer-calendar-page .container{
  max-width: 100% !important;
}
.trainer-calendar-card{
  width: 100%;
  max-width: none;
}
@media (max-width: 991.98px){
  .trainer-calendar-page.container,
  .trainer-calendar-page .container{
    padding-left: .35rem !important;
    padding-right: .35rem !important;
  }
  .trainer-calendar-card{
    border-radius: 22px;
  }
  .trainer-calendar-page .card-body{
    padding: .9rem !important;
  }
}
@media (max-width: 575.98px){
  .trainer-calendar-page.container,
  .trainer-calendar-page .container{
    padding-left: .2rem !important;
    padding-right: .2rem !important;
  }
  .trainer-calendar-page .card-body{
    padding: .85rem !important;
  }
  .trainer-calendar-page .text-muted.small{
    max-width: none;
  }
}


/* === Trainer calendar v37: mobile toolbar + simpler availability editor === */
.trainer-calendar-page .tr-cal-toolbar{
  align-items: stretch;
}
.trainer-calendar-page .tr-cal-toolbar-left,
.trainer-calendar-page .tr-cal-toolbar-right{
  width: 100%;
}
.trainer-calendar-page .tr-cal-toolbar-right{
  justify-content: flex-start;
  margin-left: 0;
}
.trainer-calendar-page .tr-cal-actions{
  display:grid !important;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 10px;
  width: 100%;
}
.trainer-calendar-page .tr-cal-actions .btn{
  min-height: 46px;
  justify-content: center;
  align-items: center;
  display: inline-flex;
  white-space: nowrap;
}
.trainer-calendar-page .tr-cal-nav{
  display:grid;
  grid-template-columns: 54px minmax(0,1fr) 54px auto;
  gap: 10px;
  align-items: center;
  width: 100%;
}
.trainer-calendar-page .tr-cal-nav .me-cal-btn{
  width: 54px;
  height: 54px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.trainer-calendar-page .tr-cal-nav .me-cal-month{
  width: 100%;
  min-width: 0;
  text-align: center;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height: 54px;
}
.trainer-calendar-page #trCalToday{
  min-width: 92px;
  min-height: 54px;
}
@media (max-width: 576px){
  .trainer-calendar-page .tr-cal-toolbar-left{ order: 2; }
  .trainer-calendar-page .tr-cal-toolbar-right{ order: 1; }
  .trainer-calendar-page .tr-cal-toolbar-right select{ width:100%; }
  .trainer-calendar-page .tr-cal-actions{ grid-template-columns: 1fr; }
  .trainer-calendar-page .tr-cal-nav{ grid-template-columns: 50px minmax(0,1fr) 50px; }
  .trainer-calendar-page #trCalToday{ grid-column: 1 / -1; width: 100%; }
}

/* Availability modal: simpler single-day editor on mobile */
.cp-av-agenda .d-flex.align-items-start.justify-content-between{
  gap: 12px;
}
@media (max-width: 767.98px){
  .cp-av-agenda .d-flex.align-items-start.justify-content-between{
    flex-direction: column;
    align-items: stretch !important;
  }
  .cp-av-agenda .d-flex.align-items-center.gap-2{
    width: 100%;
    display: grid !important;
    grid-template-columns: 1fr auto;
    gap: 10px !important;
  }
  .cp-av-agenda .dropdown,
  .cp-av-agenda .dropdown .btn{
    width: 100%;
  }
  .cp-av-editor.offcanvas{
    height: min(68vh, 520px);
    border-top-left-radius: 18px;
    border-top-right-radius: 18px;
    padding-bottom: calc(env(safe-area-inset-bottom) + 8px);
  }
  .cp-av-editor .offcanvas-header{
    padding: 14px 16px 10px;
  }
  .cp-av-editor .offcanvas-body{
    padding: 12px 16px 16px;
  }
  .cp-av-editor .row.g-2{ row-gap: 10px; }
  .cp-av-editor-actions{
    position: sticky;
    bottom: 0;
    background: var(--surface);
    padding-top: 10px;
    margin-top: 4px !important;
    z-index: 2;
  }
  .cp-av-editor .text-muted.small.mt-1{
    margin-bottom: 0;
  }
}


/* ===== v39: me calendar and onboarding polish ===== */
.me-cal-nav-row{
  gap: 8px;
}
.me-cal-nav-row #meCalPrev,
.me-cal-nav-row #meCalNext{
  width: 46px;
  min-width: 46px;
  height: 46px;
  padding: 0;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.55rem;
  line-height: 1;
}
.me-cal-nav-row #meCalToday{
  width: auto;
  min-width: 82px;
  height: 46px;
  padding: 0 16px;
  border-radius: 999px;
  font-size: .98rem;
  line-height: 1;
}
.me-cal-nav-row .me-cal-month{
  min-height: 46px;
  padding: 0 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 auto;
  min-width: 0;
}
@media (max-width: 575.98px){
  .me-cal-nav-row{
    display: grid;
    grid-template-columns: 46px minmax(0,1fr) 46px auto;
    align-items: center;
    width: 100%;
  }
  .me-cal-nav-row #meCalToday{
    min-width: 74px;
    padding: 0 14px;
  }
}

.me-measure-form-details > summary{
  list-style: none;
}
.me-measure-form-details > summary::-webkit-details-marker{
  display: none;
}
.me-measure-toggle{
  display: flex;
  align-items: center;
  justify-content: center;
  width: max-content;
  max-width: 100%;
  min-height: 42px;
  padding: .58rem .95rem;
  border-radius: 999px;
  border: 1px solid rgba(255,122,26,.45);
  background: rgba(255,122,26,.12);
  color: var(--text);
  font-weight:700;
  letter-spacing: .01em;
  cursor: pointer;
  box-shadow: 0 10px 26px rgba(230,90,26,.12);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease;
  margin: .65rem auto 0;
}
.me-measure-toggle:hover{
  transform: translateY(-1px);
  border-color: rgba(255,122,26,.6);
  background: rgba(255,122,26,.16);
}
.me-measure-form-details[open] > .me-measure-toggle{
  margin-bottom: .45rem;
}
html[data-theme="light"] .me-measure-toggle{
  background: rgba(230,90,26,.08);
  border-color: rgba(230,90,26,.35);
}

.cp-modal-content .modal-header{
  padding-top: max(.45rem, calc(env(safe-area-inset-top, 0px) + .1rem));
  padding-left: .9rem;
  padding-right: .9rem;
  padding-bottom: .15rem;
}
.cp-modal-content .modal-body{
  padding: .3rem .9rem .55rem;
}
.cp-modal-content .modal-footer{
  padding: .05rem .9rem max(.45rem, calc(env(safe-area-inset-bottom, 0px) + .12rem));
}
.cp-step-card{
  padding: .72rem .8rem;
}
@media (max-width: 575.98px){
  .cp-quickstart-dialog.modal-dialog-centered{
    align-items: flex-start;
    min-height: calc(100% - .7rem);
  }
  .cp-quickstart-dialog{
    margin: .35rem auto;
  }
  .cp-modal-content{
    max-height: calc(100dvh - .7rem);
    border-radius: 20px;
  }
  .cp-modal-content .modal-body{
    padding: .2rem .82rem .4rem;
  }
  .cp-modal-content .modal-footer{
    padding: .05rem .82rem max(.38rem, calc(env(safe-area-inset-bottom, 0px) + .08rem));
  }
  .cp-step-card{
    padding: .65rem .72rem;
  }
  .cp-step-num{
    width: 34px;
    height: 34px;
  }
}

/* =========================
   Sport-tech premium refresh (trainer core screens)
   Fast, tactile and readable on the gym floor.
   ========================= */

.cp-ico{
  width: 1.1rem;
  height: 1.1rem;
  flex: 0 0 auto;
}
.cp-ico-xs{ width: .92rem; height: .92rem; }
.cp-ico-sm{ width: 1rem; height: 1rem; }
.cp-ico-lg{ width: 1.3rem; height: 1.3rem; }

.cp-premium-hero,
.cp-surface-header,
.cp-context-hero{
  position: relative;
  overflow: hidden;
}

.cp-premium-hero::after,
.cp-surface-header::after,
.cp-context-hero::after{
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(460px 160px at 100% 0%, rgba(242,106,46,.18), transparent 60%),
    radial-gradient(220px 140px at 0% 100%, rgba(255,255,255,.06), transparent 65%);
  opacity: .95;
}
html[data-theme="light"] .cp-premium-hero::after,
html[data-theme="light"] .cp-surface-header::after,
html[data-theme="light"] .cp-context-hero::after{
  background:
    radial-gradient(460px 160px at 100% 0%, rgba(242,106,46,.15), transparent 60%),
    radial-gradient(220px 140px at 0% 100%, rgba(11,11,13,.05), transparent 65%);
}
.cp-premium-hero > *,
.cp-surface-header > *,
.cp-context-hero > *{ position: relative; z-index: 1; }

.cp-chip-row{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
}
.cp-chip{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  min-height: 32px;
  padding:.42rem .72rem;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.09);
  background:rgba(255,255,255,.05);
  color:var(--text-soft);
  font-size:.84rem;
  line-height:1;
  backdrop-filter: blur(8px);
}
html[data-theme="light"] .cp-chip{
  border-color: rgba(11,11,13,.08);
  background: rgba(255,255,255,.72);
  color: rgba(11,11,13,.84);
}

.cp-kpi-stack{ gap:.7rem; }
.cp-kpi-visual{
  min-height: 152px;
  display:flex;
  align-items:center;
  justify-content:center;
}
.cp-hero-visual{
  width:100%;
  min-height:152px;
  max-height:180px;
  object-fit:cover;
  border-radius:18px;
  opacity:.95;
  border:1px solid rgba(255,255,255,.06);
}
html[data-theme="light"] .cp-hero-visual{
  border-color: rgba(11,11,13,.08);
}

.cp-action-grid{
  display:grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap:.85rem;
}
.cp-action-tile{
  display:flex;
  align-items:flex-start;
  gap:.85rem;
  padding:1rem;
  border-radius:22px;
  border:1px solid rgba(255,255,255,.08);
  background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.03));
  color:inherit;
  text-decoration:none;
  box-shadow: var(--shadow-soft);
  transition: transform .14s ease, border-color .14s ease, background .14s ease;
}
.cp-action-tile:hover,
.cp-action-tile:focus-visible{
  transform: translateY(-1px);
  border-color: rgba(242,106,46,.28);
  background: linear-gradient(180deg, rgba(242,106,46,.12), rgba(255,255,255,.04));
  color: inherit;
}
html[data-theme="light"] .cp-action-tile{
  background: linear-gradient(180deg, rgba(255,255,255,.96), rgba(246,247,251,.9));
  border-color: rgba(11,11,13,.08);
}
html[data-theme="light"] .cp-action-tile:hover,
html[data-theme="light"] .cp-action-tile:focus-visible{
  background: linear-gradient(180deg, rgba(255,255,255,1), rgba(242,106,46,.08));
}
.cp-action-icon{
  width:48px;
  height:48px;
  border-radius:16px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:#FFF4EE;
  background: linear-gradient(180deg, rgba(242,106,46,.28), rgba(242,106,46,.12));
  border:1px solid rgba(242,106,46,.22);
  box-shadow: 0 10px 22px rgba(242,106,46,.14);
}
.cp-action-icon .cp-ico{ width:1.2rem; height:1.2rem; }
html[data-theme="light"] .cp-action-icon{
  color: #C34515;
  background: linear-gradient(180deg, rgba(242,106,46,.17), rgba(242,106,46,.08));
}
.cp-action-body{ display:flex; flex-direction:column; gap:.2rem; min-width:0; }
.cp-action-title{ font-weight:700; letter-spacing:-.01em; }
.cp-action-sub{ color:var(--muted); font-size:.9rem; line-height:1.35; }

.cp-empty-card{
  display:flex;
  align-items:flex-start;
  gap:.85rem;
  padding:.95rem 0;
  color:inherit;
}
.cp-empty-icon{
  width:42px;
  height:42px;
  border-radius:14px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background: rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.08);
  color: var(--orange2);
  flex:0 0 auto;
}
html[data-theme="light"] .cp-empty-icon{
  background: rgba(11,11,13,.03);
  border-color: rgba(11,11,13,.08);
}

.cp-tabbar-premium .cp-tab{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
}
.cp-tabbar-premium .cp-tab .cp-ico{ opacity:.95; }

.cp-context-hero{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:1rem 1.15rem;
  border-radius:22px;
  border:1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.03));
  box-shadow: var(--shadow-soft);
}
html[data-theme="light"] .cp-context-hero{
  border-color: rgba(11,11,13,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.96), rgba(246,247,251,.88));
}
.cp-context-main{
  display:flex;
  align-items:flex-start;
  gap:.95rem;
  min-width:0;
  flex:1 1 auto;
}
.cp-context-icon{
  width:52px;
  height:52px;
  border-radius:18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:#FFF4EE;
  background: linear-gradient(180deg, rgba(242,106,46,.28), rgba(242,106,46,.12));
  border:1px solid rgba(242,106,46,.24);
  box-shadow: 0 12px 26px rgba(242,106,46,.14);
  flex: 0 0 auto;
}
.cp-context-icon .cp-ico{ width:1.3rem; height:1.3rem; }
html[data-theme="light"] .cp-context-icon{ color:#C34515; }
.cp-context-title-row{
  display:flex;
  align-items:center;
  gap:.55rem;
  min-width:0;
  flex-wrap:wrap;
}
.cp-context-title{
  font-size: clamp(1.1rem, 1.6vw, 1.35rem);
  font-weight:700;
  letter-spacing: -.02em;
}
.cp-context-actions{ flex:0 0 auto; }

.cp-empty-plan-ico-svg{
  width:56px;
  height:56px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.cp-empty-plan-ico-svg .cp-ico{
  width:1.45rem;
  height:1.45rem;
}

.cp-surface-header .btn,
.cp-context-hero .btn,
.cp-premium-hero .btn,
.cp-action-grid .btn{
  position:relative;
  z-index:2;
}

.card-brand .list-group .item-brand{
  border-radius:16px;
  margin-bottom:.5rem;
  border:1px solid rgba(255,255,255,.06);
  background: rgba(255,255,255,.03);
}
.card-brand .list-group .item-brand:last-child{ margin-bottom:0; }
html[data-theme="light"] .card-brand .list-group .item-brand{
  border-color: rgba(11,11,13,.06);
  background: rgba(11,11,13,.02);
}
.card-brand .list-group .item-brand:hover,
.card-brand .list-group .item-brand:focus-visible{
  border-color: rgba(242,106,46,.24);
  background: rgba(242,106,46,.08);
}

.cp-planitem-wrap .cp-planitem-head,
.cp-surface-header .stat-box,
.cp-premium-hero .kpi{
  backdrop-filter: blur(10px);
}

.cp-planitem-wrap .cp-planitem-hint,
.cp-surface-header .form-text,
.cp-context-hero .text-muted,
.cp-action-sub{
  color: var(--muted) !important;
}

@media (max-width: 991.98px){
  .cp-action-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px){
  .cp-action-grid{ grid-template-columns: 1fr; }
  .cp-context-hero{
    flex-direction:column;
    align-items:stretch;
  }
  .cp-context-actions{ width:100%; }
  .cp-context-actions .btn{ width:100%; justify-content:center; }
  .cp-action-tile{ padding:.9rem; }
  .cp-chip{ width:100%; justify-content:flex-start; }
  .cp-premium-hero .dash-hero-actions .btn,
  .cp-premium-hero .dash-hero-actions .dash-hero-secondary,
  .cp-premium-hero .dash-hero-actions .dash-hero-secondary .btn{
    width:100%;
  }
  .cp-hero-visual{ max-height: 140px; }
}


/* =========================
   Sport-tech premium v2 – /me + chat + inbox
   ========================= */
.cp-tabbar-premium .cp-tab,
.cp-tabbar .cp-tab{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
}
.cp-tabbar .cp-tab .cp-ico{ flex:0 0 auto; }

.cp-view-hero{
  position: relative;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 24px;
  padding: 1rem 1.1rem;
  background:
    radial-gradient(circle at top right, rgba(255,90,31,.18), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.02));
  box-shadow: var(--shadow-soft);
}
.cp-view-hero::after{
  content:"";
  position:absolute;
  inset:auto -12% -38% auto;
  width:220px;
  height:220px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.05);
  pointer-events:none;
}
.cp-view-hero-main{ display:flex; align-items:flex-start; gap:1rem; }
.cp-view-hero-icon{
  width:54px; height:54px; border-radius:18px;
  display:inline-flex; align-items:center; justify-content:center;
  color:#fff;
  background: linear-gradient(180deg, rgba(255,90,31,.95), rgba(233,78,27,.85));
  box-shadow: 0 12px 28px rgba(233,78,27,.28);
  flex:0 0 auto;
}
.cp-view-hero-icon .cp-ico{ width:25px; height:25px; }
.cp-view-hero-title{ font-size:clamp(1.15rem, 2vw, 1.45rem); font-weight:700; line-height:1.08; letter-spacing:-.01em; }
.cp-view-hero-sub{ color:var(--muted); font-size:.94rem; margin-top:.2rem; }
.cp-view-hero-meta{ display:flex; gap:.5rem; flex-wrap:wrap; margin-top:.65rem; }
.cp-view-hero-meta .badge,
.cp-pill-soft{
  padding:.5rem .8rem;
  border-radius:999px;
  border:1px solid var(--border);
  background: rgba(255,255,255,.05);
  color:var(--text-soft);
  font-weight:700;
}
.cp-view-hero-actions{ display:flex; gap:.65rem; flex-wrap:wrap; }
.cp-view-hero-actions .btn{ display:inline-flex; align-items:center; gap:.5rem; }

.me-quickactions{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap:.75rem;
}
.me-quickactions .btn{
  min-height:48px;
  justify-content:center;
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  border-radius:16px;
}
.me-quickactions .btn .cp-ico{ width:17px; height:17px; }

.me-section-title,
.cp-section-title-inline{
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  font-weight:700;
  letter-spacing:-.01em;
}
.me-section-title .cp-ico,
.cp-section-title-inline .cp-ico{ width:18px; height:18px; }

.cp-tab-head{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:.58rem;
  font-weight:700;
  letter-spacing:-.012em;
  line-height:1.14;
  padding-bottom:.52rem;
  margin-bottom:.7rem !important;
}
.cp-tab-head::after{
  content:"";
  position:absolute;
  left:0;
  bottom:0;
  width:58px;
  height:3px;
  border-radius:999px;
  background:var(--brand);
  opacity:.95;
}
.cp-tab-head .cp-ico{ width:18px; height:18px; }


.me-card-data .row.small > div,
.me-inner-panel .row.small > div{
  position:relative;
}
.me-data-chip{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  padding:.38rem .65rem;
  border-radius:999px;
  border:1px solid var(--border);
  background: rgba(255,255,255,.04);
  color:var(--text-soft);
  font-size:.86rem;
}

.chat-view-hero{ margin-bottom:.85rem; }
.chat-view-hero .cp-view-hero-main{ justify-content:space-between; flex-wrap:wrap; }
.chat-view-hero .cp-view-hero-left{ display:flex; gap:1rem; align-items:flex-start; min-width:0; }
.chat-avatar-chip{
  width:52px; height:52px; border-radius:16px;
  display:inline-flex; align-items:center; justify-content:center;
  font-weight:700; font-size:1rem; color:#fff;
  background: linear-gradient(180deg, rgba(255,90,31,.95), rgba(233,78,27,.85));
  box-shadow: 0 12px 28px rgba(233,78,27,.28);
  flex:0 0 auto;
}
.chat-avatar-mini{
  width:34px; height:34px; border-radius:12px;
  display:inline-flex; align-items:center; justify-content:center;
  font-weight:700; font-size:.82rem;
  color:#fff;
  background: linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,.08));
  border:1px solid rgba(255,255,255,.10);
  flex:0 0 auto;
}
html[data-theme='light'] .chat-avatar-mini{
  color: var(--text);
  background: linear-gradient(180deg, rgba(11,11,13,.10), rgba(11,11,13,.05));
  border-color: rgba(11,11,13,.12);
}
.chat-card{ border-radius:24px; }
.chat-messages{ background: linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,.03)); }
.chat-row{ align-items:flex-end; gap:.65rem; }
.chat-row.mine{ justify-content:flex-end; }
.chat-row.mine .chat-avatar-mini{ display:none; }
.chat-bubble-wrap{ display:flex; flex-direction:column; max-width:min(720px, 94%); }
.chat-row.mine .chat-bubble-wrap{ align-items:flex-end; }
.chat-bubble{ max-width:100%; }
.chat-row.theirs .chat-bubble{ border-top-left-radius: .45rem; }
.chat-row.mine .chat-bubble{ border-top-right-radius: .45rem; }
.chat-delete{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.8rem;
  height:1.8rem;
  border-radius:10px;
}
.chat-delete .cp-ico{ width:15px; height:15px; }
.chat-row:hover .chat-delete,
.chat-delete:focus-visible{ opacity:1; background: rgba(255,255,255,.06); }
.chat-input .btn,
.chat-composer-btn{ border-radius:14px; }
.chat-composer-btn{ min-width:46px; }
.chat-empty-state{
  display:flex; align-items:center; gap:.85rem;
  padding:1rem 1.05rem; border:1px dashed var(--border-strong);
  border-radius:18px; background: rgba(255,255,255,.03); color:var(--muted);
}
.chat-empty-state .cp-ico{ width:22px; height:22px; color:var(--brand); flex:0 0 auto; }
.chat-attach-chip{
  display:inline-flex; align-items:center; gap:.45rem;
  padding:.5rem .75rem; border-radius:999px;
  border:1px solid var(--border); background:rgba(255,255,255,.04);
}

.trainer-chat-card .card{ border-radius:24px; }
.trainer-chat-search{ display:flex; gap:.65rem; flex-wrap:wrap; }
.trainer-chat-search .input-brand{ min-width:220px; }
.trainer-chat-list{ display:flex; flex-direction:column; gap:.75rem; min-width:0; }
.trainer-chat-row{
  display:grid; grid-template-columns:minmax(0,1fr) auto; gap:1rem; align-items:center;
  padding:.95rem 1rem; border-radius:18px; border:1px solid var(--border);
  background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02));
  text-decoration:none; color:inherit; min-width:0;
}
.trainer-chat-row:hover{ border-color: rgba(255,90,31,.28); transform: translateY(-1px); }
.trainer-chat-main{ display:flex; gap:.85rem; align-items:flex-start; min-width:0; flex:1 1 auto; }
.trainer-chat-main > .min-w-0{ min-width:0; }
.trainer-chat-avatar{
  width:46px; height:46px; border-radius:15px; flex:0 0 auto;
  display:inline-flex; align-items:center; justify-content:center;
  background: linear-gradient(180deg, rgba(255,90,31,.95), rgba(233,78,27,.85));
  color:#fff; font-weight:700;
}
.trainer-chat-name{ font-weight:700; }
.trainer-chat-sub,
.trainer-chat-snippet{ color:var(--muted); font-size:.92rem; }
.trainer-chat-snippet{ margin-top:.28rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:58ch; overflow-wrap:anywhere; word-break:break-word; }
.trainer-chat-side{ display:flex; flex-direction:column; align-items:flex-end; gap:.45rem; flex:0 0 auto; min-width:max-content; }
.trainer-chat-side .btn{ white-space:nowrap; }
.trainer-chat-help{ line-height:1.55; }

html[data-theme='light'] .cp-view-hero,
html[data-theme='light'] .trainer-chat-row,
html[data-theme='light'] .chat-empty-state{ background: linear-gradient(180deg, rgba(11,11,13,.03), rgba(11,11,13,.015)); }

@media (max-width: 768px){
  .cp-view-hero-main{ flex-direction:column; }
  .cp-view-hero-actions{ width:100%; }
  .cp-view-hero-actions .btn{ flex:1 1 auto; justify-content:center; }
  .trainer-chat-row{ grid-template-columns:minmax(0,1fr); align-items:flex-start; }
  .trainer-chat-side{ width:auto; min-width:0; align-items:flex-start; }
  .trainer-chat-snippet{ max-width:none; white-space:normal; }
}


/* === Chat refresh v3 === */
.chat-compact-hero{ margin-bottom:.7rem; }
.chat-compact-main{ display:flex; align-items:center; justify-content:space-between; gap:.8rem; padding:.8rem 1rem; border:1px solid var(--border); border-radius:20px; background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02)); box-shadow:0 14px 36px rgba(0,0,0,.18); }
.chat-compact-left{ display:flex; align-items:center; gap:.8rem; min-width:0; }
.chat-compact-icon{ width:42px; height:42px; border-radius:14px; display:flex; align-items:center; justify-content:center; color:#fff; background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.82)); box-shadow:0 12px 28px rgba(233,78,27,.22); flex:0 0 auto; }
.chat-compact-icon .cp-ico{ width:20px; height:20px; }
.chat-compact-title{ font-weight:700; font-size:1.1rem; line-height:1.1; }
.chat-compact-sub{ color:var(--text-soft); font-size:.88rem; margin-top:.18rem; }
.chat-compact-back{ flex:0 0 auto; }
.chat-card{ border-radius:22px; min-height:0; height:calc(100dvh - var(--safe-top) - 220px); background:linear-gradient(180deg, rgba(14,15,22,.98), rgba(20,21,30,.98)); }
.chat-messages{ max-height:none; min-height:0; padding: .8rem .8rem calc(var(--cp-chat-extra-bottom) + .55rem); background:transparent; }
.chat-row{ gap:.45rem; margin-bottom:.52rem; }
.chat-avatar-mini{ width:28px; height:28px; border-radius:10px; font-size:.74rem; margin-bottom:.2rem; }
.chat-bubble-wrap{ max-width:calc(100% - 34px); }
.chat-bubble{ padding:.58rem .72rem; border-radius:1rem; background:rgba(255,255,255,.055); border:1px solid rgba(255,255,255,.08); box-shadow:0 10px 24px rgba(0,0,0,.16); }
.chat-row.mine .chat-bubble{ background:linear-gradient(180deg, rgba(255,120,24,.20), rgba(255,120,24,.16)); border-color:rgba(255,138,57,.28); }
.chat-meta{ margin-bottom:.22rem; gap:.5rem; font-size:.72rem; }
.chat-sender{ font-weight:700; color:rgba(255,255,255,.82); }
.chat-time{ color:rgba(255,255,255,.62); }
.chat-text{ font-size:1rem; line-height:1.45; }
.chat-delete{ width:1.55rem; height:1.55rem; border-radius:9px; }
.chat-row:hover .chat-delete,
.chat-delete:focus-visible{ opacity:1; background:rgba(255,255,255,.08); }
.chat-input{ padding:.56rem .75rem calc(.42rem + var(--cp-chat-extra-bottom)); background:linear-gradient(180deg, rgba(16,17,24,.92), rgba(16,17,24,.92)); backdrop-filter: blur(10px); }
.chat-input form{ display:grid !important; grid-template-columns: 44px minmax(0,1fr) auto; align-items:end; gap:.55rem !important; }
.chat-composer-btn, .chat-input .btn{ height:44px; border-radius:14px; }
.chat-composer-btn{ min-width:44px; }
.chat-textarea{ min-height:44px; border-radius:16px; padding:.7rem .85rem !important; background:rgba(255,255,255,.05) !important; }
.chat-attach-chip{ margin-top:.45rem; }
.trainer-chat-card .cp-view-hero{ margin-bottom:.7rem !important; }
.trainer-chat-card .cp-view-hero .cp-view-hero-main{ padding:.95rem 1rem; }
.cp-tab-emoji{ display:inline-flex; align-items:center; justify-content:center; min-width:1.35rem; font-size:1.02rem; line-height:1; filter:saturate(1.08); font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif; }
.cp-tabs-client-detail .cp-tab-emoji,
.cp-tabs-me .cp-tab-emoji{ width:1.35rem; }
.cp-tab .cp-tab-emoji + span{ display:inline-block; }

@media (max-width: 768px){ .chat-compact-main{ padding:.72rem .78rem; align-items:flex-start; } .chat-compact-title{ font-size:1rem; } .chat-compact-sub{ font-size:.82rem; } .chat-card{ height:calc(100dvh - var(--safe-top) - 188px); } .chat-messages{ padding:.7rem .68rem calc(var(--cp-chat-extra-bottom) + .5rem); } .chat-input{ padding:.54rem .68rem calc(.38rem + var(--cp-chat-extra-bottom)); } }
@media (max-width: 520px){ .chat-compact-main{ flex-wrap:wrap; } .chat-compact-back{ width:100%; justify-content:center; } .chat-card{ height:calc(100dvh - var(--safe-top) - 205px); } .chat-input form{ grid-template-columns: 42px minmax(0,1fr) 54px; } .chat-input #chatSendBtn span{ display:none; } .chat-bubble-wrap{ max-width:calc(100% - 30px); } }
html[data-theme='light'] .chat-card{ background:linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,250,252,.98)); }
html[data-theme='light'] .chat-bubble{ background:rgba(15,23,42,.04); border-color:rgba(15,23,42,.10); }
html[data-theme='light'] .chat-row.mine .chat-bubble{ background:linear-gradient(180deg, rgba(255,120,24,.14), rgba(255,120,24,.10)); border-color:rgba(255,120,24,.22); }
html[data-theme='light'] .chat-sender{ color:rgba(15,23,42,.76); }
html[data-theme='light'] .chat-time{ color:rgba(15,23,42,.48); }


/* =========================
   Premium page shells – plans / exercises / clients / reports
   ========================= */
.cp-page-hero{
  position: relative;
  padding: 1.15rem 1.2rem;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03));
  box-shadow: var(--shadow-soft);
}
html[data-theme="light"] .cp-page-hero{
  border-color: rgba(11,11,13,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(246,247,251,.9));
}
.cp-page-eyebrow{
  font-size: .78rem;
  font-weight:700;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--orange2);
  margin-bottom: .45rem;
}
.cp-page-title{
  margin: 0;
  font-size: clamp(1.65rem, 2.8vw, 2.3rem);
  font-weight:700;
  letter-spacing: -.03em;
}
.cp-page-sub{
  margin-top: .55rem;
  max-width: 60ch;
  color: var(--muted);
  font-size: 1rem;
  line-height: 1.55;
}
.cp-page-visual-card{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height: 100%;
}
.cp-page-stats{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .85rem;
}
.cp-page-stat{
  padding: .95rem 1rem;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.05);
  backdrop-filter: blur(10px);
}
html[data-theme="light"] .cp-page-stat{
  border-color: rgba(11,11,13,.08);
  background: rgba(255,255,255,.76);
}
.cp-page-stat-label{
  font-size: .8rem;
  color: var(--muted);
  margin-bottom: .3rem;
}
.cp-page-stat-value{
  font-size: clamp(1.25rem, 2vw, 1.8rem);
  font-weight:700;
  letter-spacing: -.03em;
  line-height: 1;
}
.cp-page-stat-sub{
  margin-top: .35rem;
  font-size: .84rem;
  color: var(--muted);
  line-height: 1.4;
}
.cp-page-card{
  position: relative;
  overflow: hidden;
}
.cp-page-card-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap: 1rem;
}
.cp-list-rich-item{
  padding: 1rem 1.05rem !important;
}
.cp-list-title{
  font-size: 1rem;
  letter-spacing: -.01em;
}
.cp-asset-side-card{
  position: relative;
  overflow: hidden;
}
.cp-side-asset-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap: 1rem;
}
.cp-side-asset-img{
  width: 120px;
  max-width: 38%;
  height: auto;
  opacity: .96;
  flex: 0 0 auto;
}
.cp-inline-checklist{
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
}
.cp-inline-check{
  display:flex;
  align-items:center;
  gap: .55rem;
  padding: .8rem .85rem;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  color: inherit;
  font-size: .92rem;
}
html[data-theme="light"] .cp-inline-check{
  border-color: rgba(11,11,13,.08);
  background: rgba(11,11,13,.03);
}
.cp-toolbar-search{
  flex-wrap: wrap;
}
.cp-toolbar-search .form-control{ min-width: min(260px, 100%); }

@media (max-width: 991.98px){
  .cp-page-stats{ grid-template-columns: 1fr; }
  .cp-page-hero{ padding: 1rem; }
  .cp-page-hero .cp-page-visual-card{ display:none !important; }
  .cp-page-card-head{ flex-direction: column; }
  .cp-toolbar-search{ width: 100%; }
  .cp-toolbar-search .form-control,
  .cp-toolbar-search .btn{ width: 100%; }
}

@media (max-width: 575.98px){
  .cp-inline-checklist{ grid-template-columns: 1fr; }
  .cp-list-rich-item{ padding: .92rem .9rem !important; }
  .cp-page-sub{ font-size: .95rem; }
}


/* v54 hotfix: exercises mobile layout + calendar full width */
.cp-page-stats.cp-page-stats-2{
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.cp-list-title{
  display:block;
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.trainer-calendar-page{
  padding-left: 0 !important;
  padding-right: 0 !important;
}
@media (max-width: 991.98px){
  .cp-page-stats.cp-page-stats-2{ grid-template-columns: 1fr 1fr; }
  .cp-page-card .cp-list-rich-item{
    flex-direction: column;
    align-items: stretch !important;
    gap: .7rem !important;
  }
  .cp-page-card .cp-list-rich-item > .flex-shrink-0{
    width: 100%;
  }
  .cp-page-card .cp-list-rich-item > .flex-shrink-0 .btn,
  .cp-page-card .cp-list-rich-item > .flex-shrink-0 form{
    width: 100%;
  }
}
@media (max-width: 575.98px){
  .cp-page-stats.cp-page-stats-2{ grid-template-columns: 1fr; }
  .trainer-calendar-page{ padding-top: .75rem !important; }
  .trainer-calendar-card{ width: 100%; max-width: 100%; }
}


/* restore layout_fix_v4: hero actions mobile + pdf topbar + chat composer theme */
.cp-page-hero-actions{
  display:flex;
  flex-wrap:wrap;
  gap:.7rem;
  align-items:stretch;
}
.cp-page-hero-actions .btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  min-height:48px;
  border-radius:16px;
}
@media (max-width: 767.98px){
  .cp-page-hero-actions{
    display:grid;
    grid-template-columns: 1fr;
    width:100%;
  }
  .cp-page-hero-actions .btn{
    width:100%;
  }
}

.pdf-viewer-topbar{
  align-items:center;
}
.pdf-viewer-headings{
  min-width:0;
  flex:1 1 auto;
}

.chat-input{
  padding-bottom: calc(.28rem + var(--cp-chat-extra-bottom));
}
.chat-attach-chip,
.chat-input #chatError{
  margin-bottom: 0;
}
html[data-theme='light'] .chat-input{
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(246,247,251,.98));
  border-top-color: rgba(15,23,42,.10);
}
html[data-theme='light'] .chat-textarea{
  background: rgba(15,23,42,.04) !important;
  color: var(--text) !important;
  border-color: rgba(15,23,42,.10) !important;
}
html[data-theme='light'] .chat-attach-chip{
  background: rgba(15,23,42,.04);
  border-color: rgba(15,23,42,.10);
  color: var(--text-soft);
}
html[data-theme='light'] .chat-input #chatAttachClear{
  color: var(--brand) !important;
}
@media (max-width: 768px){
  .chat-input{
    padding-bottom: calc(.24rem + var(--cp-chat-extra-bottom));
  }
}


/* Client portal preview in client_detail */
.cp-portal-hero{
  display:grid;
  grid-template-columns: minmax(0,1fr) minmax(122px, 152px);
  gap: 18px;
  align-items: center;
}
.cp-portal-hero-copy{
  min-width: 0;
}
.cp-portal-hero-preview{
  display:flex;
  justify-content:flex-end;
  align-items:center;
}
.cp-portal-mockup{
  --cp-mockup-tilt: 7deg;
  --cp-mockup-lift: -2px;
  position: relative;
  width: min(100%, 136px);
  margin-left: auto;
  transform: translateZ(0) rotate(var(--cp-mockup-tilt)) translateY(var(--cp-mockup-lift));
  transform-origin: 50% 58%;
  animation: cpPortalFloat 5.8s ease-in-out infinite;
  will-change: transform;
}
.cp-portal-mockup::after{
  content:"";
  position:absolute;
  left: 14%;
  right: 10%;
  bottom: -10px;
  height: 16px;
  border-radius: 999px;
  background: radial-gradient(ellipse at center, rgba(0,0,0,0.24), rgba(0,0,0,0) 72%);
  filter: blur(5px);
  opacity: .8;
  z-index: 0;
  pointer-events:none;
}
.cp-portal-mockup-badge{
  position:absolute;
  top: 6px;
  left: -16px;
  z-index: 3;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 10px;
  font-weight:700;
  letter-spacing: .02em;
  color: #fff;
  background: linear-gradient(135deg, rgba(255,110,44,.98), rgba(230,90,26,.92));
  box-shadow: 0 10px 22px rgba(230,90,26,.28);
  white-space: nowrap;
}
.cp-portal-preview-card{
  position:relative;
  width: 100%;
  padding: 7px;
  border-radius: 30px;
  background:
    linear-gradient(165deg, rgba(255,255,255,0.22), rgba(255,255,255,0.03) 48%, rgba(0,0,0,0.18)),
    linear-gradient(180deg, rgba(18,18,24,0.96), rgba(8,8,11,0.98));
  border: 1px solid rgba(255,255,255,0.14);
  box-shadow: 0 22px 44px rgba(0,0,0,0.40), 0 10px 18px rgba(230,90,26,0.12), 0 0 0 1px rgba(255,255,255,0.04) inset;
  backdrop-filter: blur(6px);
}
html[data-theme="light"] .cp-portal-preview-card{
  background:
    linear-gradient(165deg, rgba(255,255,255,0.92), rgba(255,255,255,0.45) 45%, rgba(0,0,0,0.05)),
    linear-gradient(180deg, #f7f8fb, #dfe4ee);
  border-color: rgba(0,0,0,0.12);
  box-shadow: 0 20px 38px rgba(10,10,20,0.16), 0 10px 18px rgba(230,90,26,0.10), 0 0 0 1px rgba(255,255,255,0.55) inset;
}
@keyframes cpPortalFloat{
  0%,100%{
    transform: translateZ(0) rotate(var(--cp-mockup-tilt)) translateY(var(--cp-mockup-lift));
  }
  50%{
    transform: translateZ(0) rotate(calc(var(--cp-mockup-tilt) - 1.2deg)) translateY(calc(var(--cp-mockup-lift) - 6px));
  }
}
@media (prefers-reduced-motion: reduce){
  .cp-portal-mockup{
    animation: none;
  }
}
.cp-portal-preview-card::before{
  content:"";
  position:absolute;
  inset:-16px -14px auto auto;
  width:84px;
  height:84px;
  border-radius:999px;
  background: radial-gradient(circle, rgba(230,90,26,0.30), rgba(230,90,26,0.0) 72%);
  pointer-events:none;
  filter: blur(1px);
}
.cp-portal-preview-card::after{
  content:"";
  position:absolute;
  inset: 10px 12px auto auto;
  width: 40%;
  height: 10px;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(255,255,255,0.36), rgba(255,255,255,0));
  pointer-events:none;
  opacity:.76;
}
.cp-portal-preview-device{
  position:relative;
  border-radius: 24px;
  overflow:hidden;
  aspect-ratio: 390 / 844;
  background: #fff;
  border: 1px solid rgba(255,255,255,0.08);
}
html[data-theme="light"] .cp-portal-preview-device{
  border-color: rgba(0,0,0,0.10);
}
.cp-portal-preview-notch{
  position:absolute;
  top: 8px;
  left:50%;
  transform: translateX(-50%);
  width: 34%;
  height: 12px;
  border-radius: 999px;
  background: rgba(15,15,18,0.92);
  box-shadow: 0 1px 0 rgba(255,255,255,0.08) inset;
  z-index: 2;
  pointer-events:none;
}
html[data-theme="light"] .cp-portal-preview-notch{
  background: rgba(32,34,40,0.92);
}
.cp-portal-preview-device img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position: top center;
}
@media (max-width: 767.98px){
  .cp-portal-hero{
    grid-template-columns: 1fr;
    gap: 14px;
  }
  .cp-portal-hero-preview{
    justify-content:center;
  }
  .cp-portal-mockup{
    --cp-mockup-tilt: 5deg;
    --cp-mockup-lift: 0px;
    width: min(31vw, 124px);
    min-width: 96px;
    margin-left:0;
  }
  .cp-portal-mockup-badge{
    left: 50%;
    top: -8px;
    transform: translateX(-50%) rotate(-5deg);
    font-size: 9px;
    padding: 4px 8px;
  }
}


/* Native Android/WebView: keep system select option popups readable */
select.form-select option,
select.input-brand option{
  color: #111827;
  background: #ffffff;
}
html[data-theme="dark"] select.form-select option,
html[data-theme="dark"] select.input-brand option{
  color: #F3F4F6;
  background: #111315;
}


/* Android custom select sheet: keeps option lists readable inside WebView/native shell */
.cp-select-sheet-backdrop{
  position: fixed;
  inset: 0;
  z-index: 1080;
  background: rgba(4, 7, 12, 0.52);
  opacity: 0;
  transition: opacity .18s ease;
}
.cp-select-sheet-backdrop.is-open{ opacity: 1; }
.cp-select-sheet{
  position: fixed;
  left: max(12px, calc(var(--safe-left, 0px) + 12px));
  right: max(12px, calc(var(--safe-right, 0px) + 12px));
  bottom: max(12px, calc(var(--safe-bottom, 0px) + 12px));
  z-index: 1081;
  border: 1px solid var(--border-strong);
  border-radius: 24px;
  background: var(--surface);
  color: var(--text);
  box-shadow: var(--shadow);
  transform: translateY(18px);
  opacity: 0;
  transition: transform .18s ease, opacity .18s ease;
  overflow: hidden;
}
.cp-select-sheet.is-open{ transform: translateY(0); opacity: 1; }
.cp-select-sheet__header{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding: 14px 16px 10px;
  border-bottom: 1px solid var(--border);
}
.cp-select-sheet__title{ font-weight:700; letter-spacing: -.01em; }
.cp-select-sheet__close{ flex: 0 0 auto; }
.cp-select-sheet__search{ padding: 10px 16px 0; }
.cp-select-sheet__body{ max-height: min(62vh, 520px); overflow:auto; padding: 10px 12px 14px; }
.cp-select-sheet__option,
.cp-select-sheet__empty,
.cp-select-sheet__group{
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px;
  border:1px solid var(--border); border-radius:16px; background: var(--input-bg);
  color: var(--text); padding: 13px 14px; margin: 0 0 8px;
}
.cp-select-sheet__option{ text-align:left; }
.cp-select-sheet__option:active{ transform: scale(.995); }
.cp-select-sheet__option.is-selected{
  border-color: rgba(230,90,26,0.44);
  box-shadow: 0 0 0 1px rgba(230,90,26,0.12) inset;
  background: linear-gradient(180deg, rgba(255,90,31,0.16), rgba(233,78,27,0.10));
}
.cp-select-sheet__option.is-disabled,
.cp-select-sheet__group,
.cp-select-sheet__empty{
  cursor: default;
  color: var(--muted);
}
.cp-select-sheet__option-label{ flex:1 1 auto; min-width:0; }
.cp-select-sheet__option-check{ flex:0 0 auto; color: var(--orange2); font-weight:700; }
body.cp-select-sheet-open{ overflow: hidden; }
@media (min-width: 768px){
  .cp-select-sheet{ left: 50%; right: auto; width: min(560px, calc(100% - 32px)); transform: translate(-50%, 18px); }
  .cp-select-sheet.is-open{ transform: translate(-50%, 0); }
}

.cp-focus-pulse{
  box-shadow: 0 0 0 2px rgba(230, 90, 26, 0.22), 0 0 0 8px rgba(230, 90, 26, 0.10) !important;
  transition: box-shadow .25s ease;
}

.cp-trial-alert{
  border: 1px solid rgba(13, 202, 240, 0.18);
}


.cp-system-dialog[hidden]{display:none!important}
.cp-system-dialog{position:fixed;inset:0;z-index:200000}
.cp-system-dialog__backdrop{position:absolute;inset:0;background:rgba(11,13,18,.52);backdrop-filter:blur(8px)}
.cp-system-dialog__panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(92vw,420px);background:#fff;color:#111827;border:1px solid rgba(17,24,39,.08);border-radius:24px;box-shadow:0 28px 80px rgba(0,0,0,.28);padding:22px}
.cp-system-dialog__title{font-weight:700;font-size:1.1rem;line-height:1.2;margin-bottom:10px;color:#111827}
.cp-system-dialog__message{font-size:.98rem;line-height:1.55;color:#374151;white-space:pre-line}
.cp-system-dialog__actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}
.cp-system-dialog__actions .btn{min-width:120px}
html[data-theme="dark"] .cp-system-dialog__panel{background:#161A20;color:#F9FAFB;border-color:rgba(255,255,255,.08);box-shadow:0 28px 80px rgba(0,0,0,.55)}
html[data-theme="dark"] .cp-system-dialog__title{color:#F9FAFB}
html[data-theme="dark"] .cp-system-dialog__message{color:#D1D5DB}
html.cp-system-dialog-open,html.cp-system-dialog-open body{overflow:hidden}
.flatpickr-calendar.cp-flatpickr-theme{background:#FFFFFF;border:1px solid rgba(17,24,39,.08);border-radius:22px;box-shadow:0 24px 60px rgba(0,0,0,.22);color:#111827}
.flatpickr-calendar.cp-flatpickr-theme.arrowTop:before,.flatpickr-calendar.cp-flatpickr-theme.arrowTop:after,.flatpickr-calendar.cp-flatpickr-theme.arrowBottom:before,.flatpickr-calendar.cp-flatpickr-theme.arrowBottom:after{display:none}
.flatpickr-calendar.cp-flatpickr-theme .flatpickr-months .flatpickr-month,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-weekdays,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-days,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-time{background:#FFFFFF}
.flatpickr-calendar.cp-flatpickr-theme .flatpickr-current-month .flatpickr-monthDropdown-months,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-current-month input.cur-year,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-weekday,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-day,.flatpickr-calendar.cp-flatpickr-theme .numInput,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-time input,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-am-pm{color:#111827;fill:#111827}
.flatpickr-calendar.cp-flatpickr-theme .flatpickr-day.selected,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-day.startRange,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-day.endRange,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-day.selected:hover{background:#E65A1A;border-color:#E65A1A;color:#fff}
.flatpickr-calendar.cp-flatpickr-theme .flatpickr-day.today{border-color:#E65A1A}
.flatpickr-calendar.cp-flatpickr-theme .flatpickr-day:hover,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-day:focus{background:rgba(230,90,26,.10);border-color:rgba(230,90,26,.22)}
.flatpickr-calendar.cp-flatpickr-theme .flatpickr-prev-month:hover svg,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-next-month:hover svg{fill:#E65A1A}
.flatpickr-calendar.cp-flatpickr-theme .flatpickr-time .flatpickr-am-pm:hover,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-time input:hover,.flatpickr-calendar.cp-flatpickr-theme .flatpickr-time input:focus{background:rgba(230,90,26,.08)}
html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme{background:#161A20;border-color:rgba(255,255,255,.08);box-shadow:0 24px 60px rgba(0,0,0,.48);color:#F9FAFB}
html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-months .flatpickr-month,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-weekdays,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-days,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-time{background:#161A20}
html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-current-month .flatpickr-monthDropdown-months,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-current-month input.cur-year,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-weekday,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-day,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .numInput,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-time input,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-am-pm{color:#F9FAFB;fill:#F9FAFB}
html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-day.prevMonthDay,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-day.nextMonthDay{color:#6B7280}
html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-day:hover,html[data-theme="dark"] .flatpickr-calendar.cp-flatpickr-theme .flatpickr-day:focus{background:rgba(230,90,26,.16);border-color:rgba(230,90,26,.30)}


.chat-video-wrap{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.chat-video{display:block;width:min(100%,320px);max-width:100%;border-radius:14px;background:#000;box-shadow:0 6px 22px rgba(0,0,0,.18)}
.chat-media-save{display:inline-flex;align-items:center;gap:6px;font-size:.88rem;font-weight:700;color:var(--brand,#ff7a00);text-decoration:none}
.chat-media-save:hover,.chat-media-save:focus{text-decoration:underline}


.cp-nav-avatar,.cp-avatar-settings__preview,.chat-avatar-mini,.trainer-chat-avatar,.cp-profile-avatar{border-radius:999px!important;overflow:hidden;display:inline-flex;align-items:center;justify-content:center}
.cp-nav-avatar{width:34px;height:34px;background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));color:#fff;font-weight:700;box-shadow:0 10px 24px rgba(233,78,27,.22);flex:0 0 auto;margin-left:.55rem;margin-right:0;letter-spacing:.04em}
.cp-nav-avatar img,.cp-avatar-settings__preview img,.chat-avatar-mini img,.trainer-chat-avatar img,.cp-profile-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.cp-avatar-settings{display:flex;gap:14px;align-items:center;padding:14px 16px;border:1px solid var(--border);border-radius:20px;background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.025));}
.cp-avatar-settings__preview{width:74px;height:74px;background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));box-shadow:0 14px 34px rgba(233,78,27,.22);color:#fff;font-weight:700;font-size:1.15rem;flex:0 0 auto}
.cp-profile-avatar-lg{width:52px;height:52px;font-size:1rem;font-weight:700;background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));color:#fff;box-shadow:0 16px 34px rgba(233,78,27,.22)}
.cp-profile-avatar-xl{width:72px;height:72px;font-size:1.2rem;font-weight:700;background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));color:#fff;box-shadow:0 18px 38px rgba(233,78,27,.22)}
.cp-avatar-callout{border:1px solid rgba(255,122,24,.28);background:linear-gradient(180deg, rgba(255,122,24,.10), rgba(255,122,24,.05));border-radius:22px;padding:14px 16px}
.cp-avatar-callout--inline{display:flex;align-items:center;justify-content:space-between;gap:12px}
.me-hero-logo-wrap.cp-profile-avatar{background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));color:#fff}
.chat-avatar-mini{width:30px;height:30px;background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));color:#fff;font-weight:700;font-size:.74rem;margin-bottom:.2rem}
.chat-avatar-mini__fallback{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}
.trainer-chat-avatar{width:44px;height:44px;background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));color:#fff;font-weight:700;box-shadow:0 12px 28px rgba(233,78,27,.18)}
.cp-context-icon.cp-profile-avatar{background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));color:#fff}

.cp-nav-avatar span,.cp-avatar-settings__preview span,.chat-avatar-mini__fallback,.trainer-chat-avatar,.cp-profile-avatar span,.cp-drawer-item__avatar{font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.cp-drawer-item__avatar{border-radius:999px;overflow:hidden;background:linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));color:#fff;font-weight:700}
.cp-drawer-item__avatar img{width:100%;height:100%;object-fit:cover;display:block}
.cp-profile-avatar-lg{width:60px;height:60px;font-size:1.08rem;box-shadow:0 18px 34px rgba(233,78,27,.22)}
.dash-hero-eyebrow .cp-profile-avatar-lg{margin-top:-2px;margin-bottom:-2px}
.chat-avatar-mini{border-radius:999px!important}
.trainer-chat-avatar{width:46px;height:46px;border-radius:999px!important}
html[data-theme='light'] .cp-drawer-item__avatar{box-shadow:0 10px 24px rgba(233,78,27,.14)}


/* Avatar polish: client /me hero + trainer hero + chat */
.me-hero-avatar-wrap{
  width: 92px;
  height: 92px;
  flex: 0 0 auto;
  box-shadow: 0 16px 34px rgba(233,78,27,.20);
  background: linear-gradient(180deg, rgba(255,96,31,.95), rgba(231,92,24,.84));
}
.me-hero-avatar-wrap.is-app-logo{
  background: radial-gradient(circle at 30% 30%, rgba(255,140,56,.98), rgba(205,87,28,.88));
}
.me-hero-avatar-img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.me-hero-avatar-logo{
  width: 70%;
  height: 70%;
  object-fit: contain;
  display: block;
  filter: drop-shadow(0 10px 18px rgba(0,0,0,.16));
}
@media (min-width: 768px){
  .me-hero-avatar-wrap{ width: 108px; height: 108px; }
}
.dash-hero-head .min-w-0{ min-width: 0; }
.dash-hero-avatar{ width: 84px; height: 84px; flex: 0 0 auto; }
@media (min-width: 992px){
  .dash-hero-avatar{ width: 92px; height: 92px; }
}
.chat-row.mine .chat-avatar-mini{ display:inline-flex !important; }

/* Avatar hard-fix: image fully covers fallback, never half initials + half photo. */
.cp-nav-avatar,.cp-avatar-settings__preview,.chat-avatar-mini,.trainer-chat-avatar,.cp-profile-avatar,.cp-drawer-item__avatar,.me-hero-avatar-wrap{
  position:relative!important; overflow:hidden!important; border-radius:999px!important;
}
.cp-nav-avatar img,.cp-avatar-settings__preview img,.chat-avatar-mini img,.trainer-chat-avatar img,.cp-profile-avatar img,.cp-drawer-item__avatar img,.me-hero-avatar-wrap img.me-hero-avatar-img{
  position:absolute!important; inset:0!important; width:100%!important; height:100%!important; object-fit:cover!important; display:block!important; z-index:2!important;
}
.cp-nav-avatar:has(img) > span,
.cp-avatar-settings__preview:has(img) > span,
.chat-avatar-mini:has(img) > span,
.trainer-chat-avatar:has(img) > span,
.cp-profile-avatar:has(img) > span,
.cp-drawer-item__avatar:has(img) > span,
.me-hero-avatar-wrap:has(.me-hero-avatar-img) > span{
  display:none!important;
}
.cp-avatar-settings__img{border-radius:999px!important;}


/* CoachPro v9: keep trainer welcome title in one line on phones.
   The previous mobile rule allowed word wrapping, so longer names made the hero too tall. */
@media (max-width: 576px){
  .dash-hero-title{
    font-size: clamp(16px, 4.8vw, 20px) !important;
    line-height: 1.05 !important;
    letter-spacing: -0.035em;
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
    max-width: 100%;
  }
  .dash-hero-head{
    align-items: center !important;
    gap: 12px !important;
  }
}
@media (max-width: 390px){
  .dash-hero-title{
    font-size: clamp(14px, 4.55vw, 17px) !important;
    letter-spacing: -0.04em;
  }
}

/* CoachPro mobile chat voice messages */
.chat-voice-btn{min-width:42px;font-weight:700;line-height:1;}
.chat-voice-btn.is-recording{border-color:rgba(239,68,68,.65)!important;background:rgba(239,68,68,.12)!important;color:#ef4444!important;box-shadow:0 0 0 4px rgba(239,68,68,.10);}
.chat-voice-info{gap:.35rem;align-items:center;}
.chat-audio-wrap{margin-top:.45rem;padding:.55rem .62rem;border-radius:16px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08);max-width:min(100%,360px);}
.chat-audio-label{font-size:.78rem;font-weight:700;letter-spacing:.01em;margin-bottom:.35rem;color:rgba(255,255,255,.82);}
.chat-audio{display:block;width:100%;max-width:320px;height:36px;}
html[data-theme="light"] .chat-audio-wrap{background:rgba(15,23,42,.045);border-color:rgba(15,23,42,.08);}
html[data-theme="light"] .chat-audio-label{color:#334155;}
@media (max-width:420px){.chat-audio{max-width:245px}.chat-voice-btn{min-width:40px;padding-left:.55rem;padding-right:.55rem}}


/* CoachPro fixes 2026-04-24: stable premium chat composer with voice button */
.chat-input form#chatSendForm{
  display:grid !important;
  grid-template-columns: 44px minmax(0, 1fr) 44px 52px !important;
  align-items:end !important;
  gap:.52rem !important;
}
.chat-input #chatAttachBtn{ grid-column:1; }
.chat-input #chatText{ grid-column:2; min-width:0; width:100%; }
.chat-input #chatVoiceBtn{ grid-column:3; }
.chat-input #chatSendBtn{ grid-column:4; min-width:52px; }
.chat-voice-btn{
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
  padding:0 !important; font-size:1.06rem !important; font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif !important;
  line-height:1 !important; min-width:44px !important; width:44px !important;
}
.chat-voice-btn.is-recording{
  border-color:rgba(239,68,68,.75)!important; background:rgba(239,68,68,.14)!important; color:#ef4444!important;
  box-shadow:0 0 0 4px rgba(239,68,68,.10), 0 12px 24px rgba(239,68,68,.15)!important;
}
.chat-textarea{ resize:none; overflow-y:auto; }
.chat-attach-chip{ max-width:100%; white-space:normal; overflow-wrap:anywhere; }
@media (max-width:520px){
  .chat-input form#chatSendForm{ grid-template-columns:42px minmax(0,1fr) 42px 50px !important; gap:.46rem !important; }
  .chat-input #chatSendBtn{ min-width:50px; padding-left:.72rem; padding-right:.72rem; }
  .chat-voice-btn{ min-width:42px !important; width:42px !important; }
}
@media (max-width:360px){
  .chat-input form#chatSendForm{ grid-template-columns:40px minmax(0,1fr) 40px 46px !important; gap:.38rem !important; }
  .chat-composer-btn, .chat-input .btn{ height:42px; }
}


/* === CoachPro menu_fix 2026-04-25 === */
.navbar.nav-brand .cp-mobile-account-item{width:100%;}
.navbar.nav-brand .cp-mobile-account-toggle{width:100%;display:flex!important;align-items:center!important;justify-content:center!important;gap:10px!important;min-height:54px;padding:10px 12px!important;border-radius:18px!important;border:1px solid rgba(255,255,255,.10)!important;background:linear-gradient(180deg,rgba(255,255,255,.065),rgba(255,255,255,.025))!important;box-shadow:0 10px 26px rgba(0,0,0,.14);color:rgba(255,255,255,.92)!important;text-align:center;}
html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-toggle{border-color:rgba(11,11,13,.10)!important;background:linear-gradient(180deg,rgba(11,11,13,.045),rgba(11,11,13,.018))!important;color:rgba(11,11,13,.90)!important;box-shadow:0 10px 24px rgba(11,11,13,.07);}
.navbar.nav-brand .cp-mobile-account-toggle::after{position:static!important;margin-left:2px!important;transform:translateY(1px);opacity:.74;}
.navbar.nav-brand .cp-mobile-account-toggle[aria-expanded="true"]::after{transform:translateY(1px) rotate(180deg);}
.navbar.nav-brand .cp-mobile-account-label{font-weight:700;font-size:.86rem;letter-spacing:.115em;text-transform:uppercase;line-height:1;}
.navbar.nav-brand .cp-nav-avatar--menu{width:38px!important;height:38px!important;margin:0!important;border:1px solid rgba(255,255,255,.24);box-shadow:0 12px 28px rgba(233,78,27,.24), inset 0 1px 0 rgba(255,255,255,.20);background:radial-gradient(circle at 30% 22%, rgba(255,174,92,.98), rgba(255,96,31,.94) 48%, rgba(183,55,18,.92) 100%)!important;}
.navbar.nav-brand .cp-nav-avatar--menu span{color:#fff!important;font-size:.82rem;font-weight:700;letter-spacing:.06em;}
@media (max-width:991.98px){.navbar.nav-brand .navbar-collapse.show .navbar-nav,.navbar.nav-brand .navbar-collapse.collapsing .navbar-nav{gap:.36rem!important}.navbar.nav-brand .cp-mobile-account-item .dropdown-menu,.navbar.nav-brand .cp-mobile-account-item .dropdown-menu[data-bs-popper]{width:100%;margin-top:8px!important;text-align:center;border-radius:18px}.navbar.nav-brand .cp-mobile-account-item .dropdown-item{justify-content:center;text-align:center;font-weight:700;padding:11px 14px}}
.initial-avatar{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:999px;overflow:hidden;font-weight:700;font-size:15px;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:radial-gradient(circle at 30% 22%, rgba(255,174,92,.98), rgba(255,96,31,.94) 48%, rgba(183,55,18,.92) 100%);border:1px solid rgba(255,255,255,.24);box-shadow:0 14px 30px rgba(233,78,27,.22), inset 0 1px 0 rgba(255,255,255,.20);}
.glass-dock{position:fixed;left:50%;bottom:calc(10px + var(--safe-bottom, env(safe-area-inset-bottom,0px)));transform:translateX(-50%);width:min(600px,calc(100% - 32px));min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:4px;padding:7px;border-radius:24px;border:1px solid rgba(255,255,255,.14);background:rgba(22,24,31,.66);backdrop-filter:blur(18px) saturate(170%);-webkit-backdrop-filter:blur(18px) saturate(170%);box-shadow:0 20px 56px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.10);z-index:1260;overflow:hidden;}
html[data-theme="light"] .glass-dock{background:rgba(255,255,255,.76);border-color:rgba(11,11,13,.10);box-shadow:0 20px 50px rgba(11,11,13,.12), inset 0 1px 0 rgba(255,255,255,.75);}
.glass-dock .nav-item{position:relative;z-index:2;flex:1 1 0;min-width:0;height:54px;border-radius:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:rgba(255,255,255,.82);font-size:11px;font-weight:700;line-height:1.05;text-align:center;cursor:pointer;user-select:none;transition:color .2s ease,transform .2s ease;}
html[data-theme="light"] .glass-dock .nav-item{color:rgba(11,11,13,.72)}.glass-dock .nav-item.is-active,.glass-dock .nav-item.active{color:#fff;transform:translateY(-1px)}html[data-theme="light"] .glass-dock .nav-item.is-active,html[data-theme="light"] .glass-dock .nav-item.active{color:#111827}
.glass-dock .indicator{position:absolute;top:7px;bottom:7px;left:7px;width:calc((100% - 14px) / var(--tabs-count,4));border-radius:18px;background:linear-gradient(180deg,rgba(255,111,31,.78),rgba(212,79,20,.55));box-shadow:0 12px 28px rgba(230,90,26,.26), inset 0 1px 0 rgba(255,255,255,.18);transition:transform .28s cubic-bezier(.2,.8,.2,1),width .22s ease;pointer-events:none;z-index:1;}
html[data-theme="light"] .glass-dock .indicator{background:linear-gradient(180deg,rgba(255,126,48,.55),rgba(255,112,31,.22));box-shadow:0 12px 24px rgba(230,90,26,.18), inset 0 1px 0 rgba(255,255,255,.70);}


/* =========================================================
   CoachPro Liquid Glass tab dock – /me + client_detail
   ========================================================= */
.cp-tabbar-glass{
  position:relative;
  isolation:isolate;
  background:transparent !important;
}
.cp-tabbar-glass .cp-tabbar-glass-indicator{
  position:absolute;
  left:0;
  top:0;
  z-index:1;
  pointer-events:none;
  border-radius:24px;
  opacity:0;
  background:
    linear-gradient(180deg, rgba(255,255,255,.34), rgba(255,255,255,.105) 48%, rgba(255,255,255,.075)),
    rgba(255,255,255,.055);
  border:1px solid rgba(255,255,255,.30);
  box-shadow:
    0 10px 28px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.38),
    inset 0 -1px 0 rgba(255,255,255,.08);
  -webkit-backdrop-filter:blur(26px) saturate(1.55) brightness(1.08);
  backdrop-filter:blur(26px) saturate(1.55) brightness(1.08);
  transition:
    transform .34s cubic-bezier(.2,.92,.2,1),
    width .34s cubic-bezier(.2,.92,.2,1),
    height .34s cubic-bezier(.2,.92,.2,1),
    opacity .18s ease;
  will-change:transform,width,height;
}
.cp-tabbar-glass > .cp-tab,
.cp-tabbar-glass > a.cp-tab,
.cp-tabbar-glass > button.cp-tab{ position:relative; z-index:2; }
.cp-tabbar-glass::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  border-radius:inherit;
  /* Jednolita tafla szkła — bez radialnych plam, które robiły dwa kolory po przewinięciu. */
  background:
    linear-gradient(180deg, rgba(255,255,255,.13), rgba(255,255,255,.045) 44%, rgba(255,255,255,.026)),
    rgba(16,18,26,.34);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12), inset 0 -1px 0 rgba(255,255,255,.045);
}
.cp-tabbar-glass::after{
  content:"";
  position:absolute;
  left:16px;
  right:16px;
  top:7px;
  height:1px;
  z-index:0;
  pointer-events:none;
  border-radius:999px;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.34), transparent);
  opacity:.62;
}

@media (max-width: 1180px){
  .cp-tabs-scope[data-cp-tabs="me"],
  .cp-tabs-scope[data-cp-tabs="client"]{
    padding-bottom:calc(128px + env(safe-area-inset-bottom, 0px));
  }
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar-hint,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar-hint{ display:none !important; }

  .cp-tabbar.cp-tabbar-glass{
    position:fixed !important;
    top:auto !important;
    left:50%;
    bottom:calc(12px + env(safe-area-inset-bottom, 0px));
    transform:translateX(-50%);
    z-index:1320;
    width:min(calc(100vw - 18px), 740px);
    max-width:740px;
    display:flex;
    flex-wrap:nowrap !important;
    align-items:center;
    gap:6px;
    padding:8px;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    border-radius:31px;
    border:1px solid rgba(255,255,255,.17);
    background:rgba(13,15,22,.28) !important;
    -webkit-backdrop-filter:blur(32px) saturate(1.75) brightness(1.06);
    backdrop-filter:blur(32px) saturate(1.75) brightness(1.06);
    box-shadow:
      0 20px 54px rgba(0,0,0,.34),
      0 2px 10px rgba(255,255,255,.035),
      inset 0 1px 0 rgba(255,255,255,.16),
      inset 0 -1px 0 rgba(255,255,255,.055);
    background-clip:padding-box;
  }
  .cp-tabbar.cp-tabbar-glass::-webkit-scrollbar{ display:none; width:0; height:0; }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass{
    background:rgba(248,250,255,.36) !important;
    border-color:rgba(15,23,42,.10);
    box-shadow:
      0 20px 48px rgba(15,23,42,.13),
      inset 0 1px 0 rgba(255,255,255,.72),
      inset 0 -1px 0 rgba(15,23,42,.035);
  }
  html[data-theme="light"] .cp-tabbar-glass::before{
    background:
      linear-gradient(180deg, rgba(255,255,255,.58), rgba(255,255,255,.25) 50%, rgba(255,255,255,.18)),
      rgba(255,255,255,.22);
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab{
    flex:0 0 auto;
    min-width:82px;
    max-width:104px;
    min-height:64px;
    border:0 !important;
    border-radius:24px;
    padding:.54rem .50rem .58rem;
    background:transparent !important;
    box-shadow:none !important;
    transform:none !important;
    color:rgba(255,255,255,.82);
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:.28rem;
    text-align:center;
    line-height:1.08;
  }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab{ color:rgba(17,24,39,.74); }
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{ color:#fff !important; text-shadow:0 1px 8px rgba(0,0,0,.20); }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{ color:rgba(17,24,39,.96) !important; text-shadow:none; }
  .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji{
    width:1.32rem;
    min-width:1.32rem;
    font-size:1.13rem;
    line-height:1;
    margin:0;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span{
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
    width:100%;
    white-space:normal;
    font-size:.66rem;
    font-weight:700;
    letter-spacing:-.01em;
  }
  .cp-tabbar.cp-tabbar-glass .ms-auto{ margin-left:0 !important; }
  html.cp-has-glass-dock .cp-help-fab,
  body.cp-has-glass-dock .cp-help-fab,
  html.cp-has-glass-dock .fab-scroll-top,
  body.cp-has-glass-dock .fab-scroll-top{
    bottom:calc(102px + env(safe-area-inset-bottom, 0px)) !important;
    z-index:1335 !important;
  }
}

@media (max-width: 420px){
  .cp-tabbar.cp-tabbar-glass .cp-tab{ min-width:76px; max-width:92px; min-height:62px; }
  .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span{ font-size:.62rem; }
}


/* =========================================================
   CoachPro Liquid Glass tab dock – v4 uniform glass fix
   Problem fixed: the old separate scroll-layer/indicator and ::before overlay
   could scroll with the tab content, which created two different shades after
   horizontal scrolling. The dock is now one uniform glass surface; the active
   tab has its own liquid-glass capsule, so the shade cannot split.
   ========================================================= */
@media (max-width: 1180px){
  .cp-tabbar.cp-tabbar-glass{
    background: rgba(24, 26, 34, .52) !important;
    background-image: none !important;
    border: 1px solid rgba(255,255,255,.16) !important;
    -webkit-backdrop-filter: blur(30px) saturate(1.85) brightness(1.08) !important;
    backdrop-filter: blur(30px) saturate(1.85) brightness(1.08) !important;
    box-shadow:
      0 20px 54px rgba(0,0,0,.34),
      inset 0 1px 0 rgba(255,255,255,.16),
      inset 0 -1px 0 rgba(255,255,255,.06) !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    isolation: isolate !important;
    background-clip: padding-box !important;
  }

  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass{
    background: rgba(248,250,255,.58) !important;
    background-image: none !important;
    border-color: rgba(15,23,42,.10) !important;
    box-shadow:
      0 20px 48px rgba(15,23,42,.13),
      inset 0 1px 0 rgba(255,255,255,.74),
      inset 0 -1px 0 rgba(15,23,42,.04) !important;
  }

  .cp-tabbar.cp-tabbar-glass::before,
  .cp-tabbar.cp-tabbar-glass::after,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass::before,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass::after{
    content: none !important;
    display: none !important;
    background: none !important;
    box-shadow: none !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator{
    display: none !important;
    opacity: 0 !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab{
    background: transparent !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
    color: rgba(255,255,255,.78) !important;
    transition:
      background .22s ease,
      border-color .22s ease,
      box-shadow .22s ease,
      color .18s ease,
      transform .18s ease !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    background: rgba(255,255,255,.13) !important;
    border-color: rgba(255,255,255,.24) !important;
    color: #fff !important;
    box-shadow:
      0 10px 26px rgba(0,0,0,.18),
      inset 0 1px 0 rgba(255,255,255,.30),
      inset 0 -1px 0 rgba(255,255,255,.06) !important;
    -webkit-backdrop-filter: blur(18px) saturate(1.25) brightness(1.10) !important;
    backdrop-filter: blur(18px) saturate(1.25) brightness(1.10) !important;
    transform: translateY(-1px) !important;
  }

  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    color: rgba(15,23,42,.70) !important;
  }

  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    background: rgba(255,255,255,.62) !important;
    border-color: rgba(255,255,255,.78) !important;
    color: rgba(15,23,42,.94) !important;
    box-shadow:
      0 10px 24px rgba(15,23,42,.10),
      inset 0 1px 0 rgba(255,255,255,.92),
      inset 0 -1px 0 rgba(15,23,42,.04) !important;
  }
}


/* =========================================================
   CoachPro Liquid Glass tab dock – v5 centered fit fix
   Fix: on tablet / wider mobile screens, when all tabs fit inside the dock,
   the tab group is centered instead of staying glued to the left with an empty
   gap on the right. When tabs do not fit, scrolling remains normal.
   ========================================================= */
@media (max-width: 1180px){
  .cp-tabbar.cp-tabbar-glass{
    justify-content:flex-start !important;
  }
  .cp-tabbar.cp-tabbar-glass.cp-tabbar--fits{
    justify-content:center !important;
    overflow-x:hidden !important;
  }
  .cp-tabbar.cp-tabbar-glass.cp-tabbar--fits .cp-tab{
    flex:0 0 auto !important;
  }
  .cp-tabbar.cp-tabbar-glass.cp-tabbar--fits .cp-tab:first-of-type{
    margin-left:0 !important;
  }
  .cp-tabbar.cp-tabbar-glass.cp-tabbar--fits .cp-tab:last-of-type{
    margin-right:0 !important;
  }
}


/* === CoachPro iOS polish 2026-04-25: visible voice icon + premium recorder state === */
.chat-voice-icon,
.chat-voice-stop{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:22px!important;height:22px!important;flex:0 0 auto!important;color:currentColor!important;}
.chat-voice-icon svg{display:block!important;width:22px!important;height:22px!important;overflow:visible!important;color:currentColor!important;}
.chat-voice-icon .mic-body{fill:currentColor!important;}
.chat-voice-icon .mic-stroke{fill:none!important;stroke:currentColor!important;stroke-width:1.9!important;stroke-linecap:round!important;stroke-linejoin:round!important;}
.chat-voice-btn{color:rgba(255,255,255,.92)!important;}
html[data-theme="light"] .chat-voice-btn{color:#0f172a!important;}
.chat-voice-stop{position:relative;border-radius:999px;background:rgba(239,68,68,.18);box-shadow:inset 0 0 0 1px rgba(239,68,68,.28);}
.chat-voice-stop::before{content:"";width:9px;height:9px;border-radius:3px;background:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.12);}
.chat-audio.is-unsupported{opacity:.58;filter:grayscale(.08);}
.chat-audio-fallback{display:block;margin-top:.42rem;font-size:.82rem;line-height:1.35;color:rgba(255,255,255,.76);}
html[data-theme="light"] .chat-audio-fallback{color:#475569;}


/* === CoachPro final menu identity polish === */
.navbar.nav-brand .cp-mobile-account-toggle{
  justify-content:center!important;
  gap:12px!important;
}
.navbar.nav-brand .cp-mobile-account-name{
  max-width:min(68vw, 310px);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  text-transform:none!important;
  letter-spacing:.02em!important;
  font-size:.98rem!important;
  font-weight:700!important;
}
.navbar.nav-brand .cp-mobile-account-toggle::after{
  margin-left:0!important;
  flex:0 0 auto;
}
.navbar.nav-brand .nav-user-name{
  max-width:220px;
  font-weight:700;
  letter-spacing:.01em;
}
.navbar.nav-brand .nav-user-toggle .cp-nav-avatar + .nav-user-name{
  margin-left:.35rem;
}
@media (max-width:991.98px){
  .navbar.nav-brand .cp-mobile-account-toggle .cp-nav-avatar--menu{
    flex:0 0 auto;
  }
}


/* === CoachPro Android PDF/forms fix 2026-04-26 === */
@media (max-width:1180px){
  .cp-tabbar.cp-tabbar-glass{
    width:max-content !important;
    max-width:calc(100vw - 18px) !important;
    min-width:0 !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab{
    flex:0 0 auto !important;
  }
  body.modal-open .cp-tabbar.cp-tabbar-glass,
  body.cp-form-overlay-open .cp-tabbar.cp-tabbar-glass,
  html.pdf-preview-open .cp-tabbar.cp-tabbar-glass{
    opacity:0 !important;
    visibility:hidden !important;
    pointer-events:none !important;
    transform:translateX(-50%) !important;
  }
}

/* === CoachPro Liquid Glass Dock v6 — iPhone-style moving glass capsule === */
@media (max-width:1180px){
  .cp-tabbar.cp-tabbar-glass{
    left:50% !important;
    bottom:calc(12px + env(safe-area-inset-bottom, 0px)) !important;
    width:max-content !important;
    max-width:calc(100vw - 18px) !important;
    min-height:70px !important;
    padding:7px !important;
    gap:0 !important;
    border-radius:999px !important;
    border:1px solid rgba(255,255,255,.18) !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,.055) 42%, rgba(255,255,255,.035)),
      rgba(18,19,22,.58) !important;
    -webkit-backdrop-filter:blur(34px) saturate(1.75) brightness(1.08) !important;
    backdrop-filter:blur(34px) saturate(1.75) brightness(1.08) !important;
    box-shadow:
      0 22px 60px rgba(0,0,0,.44),
      0 2px 14px rgba(255,255,255,.045),
      inset 0 1px 0 rgba(255,255,255,.20),
      inset 0 -1px 0 rgba(0,0,0,.22) !important;
    overflow-x:auto !important;
    overflow-y:hidden !important;
    transition:opacity .22s ease, transform .28s cubic-bezier(.2,.9,.2,1), bottom .22s ease !important;
  }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass{
    background:
      linear-gradient(180deg, rgba(255,255,255,.78), rgba(255,255,255,.44) 50%, rgba(255,255,255,.32)),
      rgba(241,245,249,.48) !important;
    border-color:rgba(15,23,42,.12) !important;
    box-shadow:
      0 22px 54px rgba(15,23,42,.16),
      inset 0 1px 0 rgba(255,255,255,.95),
      inset 0 -1px 0 rgba(15,23,42,.08) !important;
  }
  .cp-tabbar-glass::before{
    background:
      radial-gradient(circle at 20% 8%, rgba(255,255,255,.18), transparent 28%),
      radial-gradient(circle at 82% 100%, rgba(255,255,255,.08), transparent 34%),
      rgba(255,255,255,.025) !important;
    border-radius:999px !important;
  }
  .cp-tabbar-glass::after{
    left:22px !important;
    right:22px !important;
    top:6px !important;
    opacity:.34 !important;
  }
  .cp-tabbar-glass .cp-tabbar-glass-indicator{
    border-radius:999px !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,.27), rgba(255,255,255,.09) 52%, rgba(255,255,255,.055)),
      rgba(255,255,255,.052) !important;
    border:1px solid rgba(255,255,255,.26) !important;
    -webkit-backdrop-filter:blur(30px) saturate(1.85) brightness(1.14) !important;
    backdrop-filter:blur(30px) saturate(1.85) brightness(1.14) !important;
    box-shadow:
      0 0 0 1px rgba(255,255,255,.035),
      0 13px 34px rgba(0,0,0,.32),
      0 -1px 10px rgba(255,120,40,.10),
      0 1px 12px rgba(64,170,255,.10),
      inset 0 1px 0 rgba(255,255,255,.36),
      inset 0 -1px 0 rgba(255,255,255,.08) !important;
  }
  .cp-tabbar-glass .cp-tabbar-glass-indicator::before,
  .cp-tabbar-glass .cp-tabbar-glass-indicator::after{
    content:"";
    position:absolute;
    inset:-2px;
    border-radius:inherit;
    pointer-events:none;
    opacity:.55;
    filter:blur(.4px);
  }
  .cp-tabbar-glass .cp-tabbar-glass-indicator::before{
    border-top:1px solid rgba(54,169,255,.34);
    border-left:1px solid rgba(54,169,255,.18);
    transform:translateX(-1px);
  }
  .cp-tabbar-glass .cp-tabbar-glass-indicator::after{
    border-bottom:1px solid rgba(255,104,31,.38);
    border-right:1px solid rgba(255,104,31,.20);
    transform:translateX(1px);
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab{
    min-width:76px !important;
    height:54px !important;
    padding:7px 12px !important;
    border-radius:999px !important;
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    color:rgba(255,255,255,.78) !important;
    font-weight:700 !important;
    letter-spacing:-.01em !important;
    justify-content:center !important;
    transition:color .18s ease, transform .2s ease, text-shadow .2s ease !important;
  }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab{ color:rgba(15,23,42,.72) !important; }
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:#fff !important;
    background:transparent !important;
    border-color:transparent !important;
    transform:translateY(-1px) !important;
    text-shadow:0 1px 12px rgba(255,255,255,.18) !important;
  }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{ color:rgba(15,23,42,.96) !important; }
  .cp-tabbar.cp-tabbar-glass .cp-tab-emoji{
    filter:drop-shadow(0 2px 8px rgba(0,0,0,.18));
  }
  body.modal-open .cp-tabbar.cp-tabbar-glass,
  body.cp-form-overlay-open .cp-tabbar.cp-tabbar-glass,
  body.cp-native-picker-open .cp-tabbar.cp-tabbar-glass,
  html.pdf-preview-open .cp-tabbar.cp-tabbar-glass{
    opacity:0 !important;
    visibility:hidden !important;
    pointer-events:none !important;
    transform:translateX(-50%) !important;
  }
}

/* Extra breathing room so native/custom form pickers are never covered by the dock. */
@media (max-width:1180px){
  .cp-tabs-scope[data-cp-tabs="me"] [data-cp-panel],
  .cp-tabs-scope[data-cp-tabs="client"] [data-cp-panel]{
    scroll-padding-bottom:calc(160px + env(safe-area-inset-bottom, 0px));
  }
  .cp-tabs-scope[data-cp-tabs="me"] form,
  .cp-tabs-scope[data-cp-tabs="client"] form{
    padding-bottom:calc(18px + env(safe-area-inset-bottom, 0px));
  }
}


/* === CoachPro Liquid Glass Dock v7 — equal capsule widths + lighter translucency + scroll arrows === */
@media (max-width:1180px){
  .cp-tabbar.cp-tabbar-glass{
    --cp-glass-tab-width:96px;
    background:
      linear-gradient(180deg, rgba(255,255,255,.11), rgba(255,255,255,.035) 44%, rgba(255,255,255,.018)),
      rgba(14,17,24,.34) !important;
    border:1px solid rgba(255,255,255,.13) !important;
    -webkit-backdrop-filter:blur(34px) saturate(1.72) brightness(1.06) !important;
    backdrop-filter:blur(34px) saturate(1.72) brightness(1.06) !important;
    box-shadow:
      0 18px 42px rgba(0,0,0,.28),
      0 2px 12px rgba(255,255,255,.028),
      inset 0 1px 0 rgba(255,255,255,.16),
      inset 0 -1px 0 rgba(0,0,0,.18) !important;
    padding:6px 10px !important;
  }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass{
    background:
      linear-gradient(180deg, rgba(255,255,255,.70), rgba(255,255,255,.34) 52%, rgba(255,255,255,.24)),
      rgba(241,245,249,.34) !important;
    border-color:rgba(15,23,42,.10) !important;
    box-shadow:
      0 18px 38px rgba(15,23,42,.11),
      inset 0 1px 0 rgba(255,255,255,.92),
      inset 0 -1px 0 rgba(15,23,42,.05) !important;
  }
  .cp-tabbar-glass::before{
    background:
      radial-gradient(circle at 20% 6%, rgba(255,255,255,.12), transparent 30%),
      radial-gradient(circle at 82% 100%, rgba(255,255,255,.06), transparent 34%),
      rgba(255,255,255,.018) !important;
    border-radius:999px !important;
  }
  .cp-tabbar-glass::after{
    left:20px !important;
    right:20px !important;
    top:6px !important;
    opacity:.34 !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab{
    flex:0 0 var(--cp-glass-tab-width) !important;
    width:var(--cp-glass-tab-width) !important;
    min-width:var(--cp-glass-tab-width) !important;
    max-width:var(--cp-glass-tab-width) !important;
    height:56px !important;
    padding:6px 10px !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator{
    width:var(--cp-glass-tab-width) !important;
    min-width:var(--cp-glass-tab-width) !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,.24), rgba(255,255,255,.09) 54%, rgba(255,255,255,.05)),
      rgba(255,255,255,.048) !important;
    border:1px solid rgba(255,255,255,.24) !important;
    box-shadow:
      0 0 0 1px rgba(255,255,255,.03),
      0 12px 28px rgba(0,0,0,.28),
      0 -1px 8px rgba(255,120,40,.08),
      0 1px 10px rgba(64,170,255,.08),
      inset 0 1px 0 rgba(255,255,255,.30),
      inset 0 -1px 0 rgba(255,255,255,.07) !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span{
    width:100%;
    text-align:center;
  }
  .cp-tabbar-scroll-hint{
    position:fixed;
    z-index:1266;
    width:24px;
    height:24px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:999px;
    border:1px solid rgba(255,255,255,.14);
    background:
      linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,.04)),
      rgba(18,20,26,.34);
    -webkit-backdrop-filter:blur(16px) saturate(1.55);
    backdrop-filter:blur(16px) saturate(1.55);
    box-shadow:
      0 8px 18px rgba(0,0,0,.18),
      inset 0 1px 0 rgba(255,255,255,.16);
    color:rgba(255,255,255,.68);
    opacity:0;
    pointer-events:none;
    transform:translateY(-50%) scale(.88);
    transition:opacity .2s ease, transform .2s ease, box-shadow .2s ease, color .2s ease;
  }
  .cp-tabbar-scroll-hint::before{
    content:"";
    width:7px;
    height:7px;
    border-top:2px solid currentColor;
    border-right:2px solid currentColor;
    display:block;
    margin-left:1px;
  }
  .cp-tabbar-scroll-hint--left::before{ transform:rotate(-135deg); }
  .cp-tabbar-scroll-hint--right::before{ transform:rotate(45deg); }
  .cp-tabbar-scroll-hint.is-visible{
    opacity:.88;
    pointer-events:auto;
    transform:translateY(-50%) scale(1);
  }
  .cp-tabbar-scroll-hint.is-visible:not(.is-active){
    opacity:.34;
  }
  .cp-tabbar-scroll-hint.is-visible.is-active{
    color:#fff;
    box-shadow:
      0 10px 24px rgba(0,0,0,.24),
      0 0 0 1px rgba(255,255,255,.03),
      inset 0 1px 0 rgba(255,255,255,.20);
  }
  html[data-theme="light"] .cp-tabbar-scroll-hint{
    border-color:rgba(15,23,42,.10);
    background:
      linear-gradient(180deg, rgba(255,255,255,.74), rgba(255,255,255,.38)),
      rgba(241,245,249,.34);
    color:rgba(15,23,42,.68);
    box-shadow:
      0 8px 16px rgba(15,23,42,.10),
      inset 0 1px 0 rgba(255,255,255,.95);
  }
  body.modal-open .cp-tabbar-scroll-hint,
  body.cp-form-overlay-open .cp-tabbar-scroll-hint,
  body.cp-native-picker-open .cp-tabbar-scroll-hint,
  html.pdf-preview-open .cp-tabbar-scroll-hint{
    opacity:0 !important;
    pointer-events:none !important;
    transform:translateY(-50%) scale(.84) !important;
  }
}
@media (max-width:390px){
  .cp-tabbar.cp-tabbar-glass{ --cp-glass-tab-width:92px; }
}
@media (max-width:360px){
  .cp-tabbar.cp-tabbar-glass{ --cp-glass-tab-width:88px; }
}


/* === CoachPro Liquid Glass Dock v8 ULTRA — iPhone lens + active glow + smoother floating capsule === */
@media (max-width:1180px){
  .cp-tabbar.cp-tabbar-glass{
    --cp-glass-tab-width:96px;
    background:
      radial-gradient(circle at 18% 0%, rgba(255,255,255,.13), transparent 28%),
      radial-gradient(circle at 82% 110%, rgba(255,104,31,.08), transparent 38%),
      linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.032) 48%, rgba(255,255,255,.016)),
      rgba(12,14,20,.30) !important;
    border-color:rgba(255,255,255,.12) !important;
    -webkit-backdrop-filter:blur(38px) saturate(1.92) brightness(1.08) contrast(1.02) !important;
    backdrop-filter:blur(38px) saturate(1.92) brightness(1.08) contrast(1.02) !important;
    box-shadow:
      0 22px 54px rgba(0,0,0,.30),
      0 8px 26px rgba(255,92,24,.045),
      inset 0 1px 0 rgba(255,255,255,.17),
      inset 0 -1px 0 rgba(255,255,255,.045),
      inset 0 0 28px rgba(255,255,255,.025) !important;
  }

  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass{
    background:
      radial-gradient(circle at 18% 0%, rgba(255,255,255,.86), transparent 30%),
      radial-gradient(circle at 82% 110%, rgba(255,104,31,.08), transparent 38%),
      linear-gradient(180deg, rgba(255,255,255,.64), rgba(255,255,255,.31) 54%, rgba(255,255,255,.20)),
      rgba(241,245,249,.30) !important;
    border-color:rgba(15,23,42,.09) !important;
    box-shadow:
      0 22px 46px rgba(15,23,42,.12),
      0 8px 24px rgba(255,92,24,.045),
      inset 0 1px 0 rgba(255,255,255,.95),
      inset 0 -1px 0 rgba(15,23,42,.045),
      inset 0 0 24px rgba(255,255,255,.22) !important;
  }

  .cp-tabbar-glass .cp-tabbar-glass-indicator{
    overflow:visible !important;
    transition:
      transform .38s cubic-bezier(.20, .98, .22, 1),
      width .30s cubic-bezier(.20, .98, .22, 1),
      height .30s cubic-bezier(.20, .98, .22, 1),
      opacity .20s ease !important;
    background:
      radial-gradient(circle at 30% 10%, rgba(255,255,255,.38), transparent 34%),
      linear-gradient(180deg, rgba(255,255,255,.25), rgba(255,255,255,.085) 54%, rgba(255,255,255,.045)),
      rgba(255,255,255,.045) !important;
    border:1px solid rgba(255,255,255,.25) !important;
    -webkit-backdrop-filter:blur(42px) saturate(2.05) brightness(1.16) contrast(1.03) !important;
    backdrop-filter:blur(42px) saturate(2.05) brightness(1.16) contrast(1.03) !important;
    box-shadow:
      0 18px 38px rgba(0,0,0,.31),
      0 0 0 1px rgba(255,255,255,.035),
      0 0 20px rgba(255,102,30,.105),
      0 0 24px rgba(45,145,255,.08),
      inset 0 1px 0 rgba(255,255,255,.42),
      inset 0 -1px 0 rgba(255,255,255,.08),
      inset 10px 0 22px rgba(255,255,255,.045),
      inset -10px 0 22px rgba(255,255,255,.030) !important;
  }

  .cp-tabbar-glass .cp-tabbar-glass-indicator::before{
    content:"" !important;
    position:absolute !important;
    inset:-3px !important;
    border-radius:inherit !important;
    opacity:.68 !important;
    pointer-events:none !important;
    background:
      linear-gradient(115deg, rgba(63,184,255,.36), transparent 26%, transparent 72%, rgba(255,106,30,.34)),
      linear-gradient(180deg, rgba(255,255,255,.20), transparent 42%) !important;
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0) !important;
    -webkit-mask-composite:xor !important;
    mask-composite:exclude !important;
    padding:1px !important;
    filter:blur(.15px) !important;
  }

  .cp-tabbar-glass .cp-tabbar-glass-indicator::after{
    content:"" !important;
    position:absolute !important;
    left:18% !important;
    right:18% !important;
    top:8px !important;
    height:1px !important;
    border:0 !important;
    border-radius:999px !important;
    opacity:.72 !important;
    transform:none !important;
    background:linear-gradient(90deg, transparent, rgba(255,255,255,.66), transparent) !important;
    box-shadow:0 0 10px rgba(255,255,255,.22) !important;
    pointer-events:none !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab{
    transition:
      color .18s ease,
      transform .24s cubic-bezier(.2,.9,.2,1),
      text-shadow .22s ease,
      filter .22s ease !important;
    will-change:transform !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    transform:translateY(-2px) scale(1.015) !important;
    text-shadow:
      0 1px 14px rgba(255,255,255,.22),
      0 0 12px rgba(255,104,31,.08) !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji{
    filter:
      drop-shadow(0 2px 8px rgba(0,0,0,.25))
      drop-shadow(0 0 10px rgba(255,111,31,.10)) !important;
  }

  .cp-tabbar-scroll-hint{
    background:
      radial-gradient(circle at 30% 0%, rgba(255,255,255,.23), transparent 38%),
      linear-gradient(180deg, rgba(255,255,255,.13), rgba(255,255,255,.035)),
      rgba(16,18,24,.28) !important;
    -webkit-backdrop-filter:blur(22px) saturate(1.75) brightness(1.09) !important;
    backdrop-filter:blur(22px) saturate(1.75) brightness(1.09) !important;
  }

  .cp-tabbar-scroll-hint.is-visible.is-active{
    animation:cpDockHintPulse 1.55s ease-in-out infinite;
  }
}

@keyframes cpDockHintPulse{
  0%,100%{ opacity:.72; transform:translateY(-50%) scale(1); }
  50%{ opacity:.96; transform:translateY(-50%) scale(1.055); }
}

@media (prefers-reduced-motion:reduce){
  .cp-tabbar-glass .cp-tabbar-glass-indicator,
  .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabbar-scroll-hint{
    transition:none !important;
    animation:none !important;
  }
}

/* --- Personal records (PR) cards: clearer, more actionable progress view --- */
.cp-records-card{
  margin-top: 1rem;
}
.cp-records-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  flex-wrap:wrap;
}
.cp-records-summary{
  display:flex;
  gap:.75rem;
  flex-wrap:wrap;
}
.cp-records-summary-item{
  min-width: 126px;
  padding:.75rem .9rem;
  border-radius:18px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.03);
}
.cp-records-summary-label{
  font-size:.76rem;
  color: var(--muted);
  margin-bottom:.2rem;
}
.cp-records-summary-value{
  font-size:1.2rem;
  font-weight:700;
  line-height:1.1;
}
.cp-records-summary-value-sm{
  font-size:.96rem;
}
.cp-records-toolbar{
  display:flex;
  gap:.55rem;
  flex-wrap:wrap;
  margin-top:1rem;
  margin-bottom:.85rem;
}
.cp-records-filter{
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  color: var(--text);
  border-radius:999px;
  padding:.48rem .9rem;
  font-size:.92rem;
  font-weight:700;
  line-height:1;
}
.cp-records-filter.is-active{
  background: linear-gradient(180deg, rgba(255,115,0,.38), rgba(255,115,0,.12));
  border-color: rgba(255,115,0,.45);
  box-shadow: 0 10px 22px rgba(0,0,0,.20);
}
.cp-records-note{
  margin-bottom:1rem;
  padding:.8rem 1rem;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.03);
  color: var(--text);
}
.cp-records-grid{
  display:grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap:1rem;
}
.cp-record-card{
  height:100%;
  padding:1rem;
  border-radius:20px;
  border:1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.025));
  box-shadow: var(--shadow-soft);
}
.cp-record-card-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:.9rem;
  margin-bottom:.9rem;
}
.cp-record-title{
  font-size:1.08rem;
  font-weight:700;
  line-height:1.2;
}
.cp-record-subtitle{
  margin-top:.2rem;
  font-size:.82rem;
  color: var(--muted);
}
.cp-record-badge{
  flex:0 0 auto;
  padding:.32rem .68rem;
  border-radius:999px;
  font-size:.78rem;
  font-weight:700;
  border:1px solid rgba(255,115,0,.24);
  background: rgba(255,115,0,.10);
  color: var(--orange2);
}
.cp-record-label{
  font-size:.8rem;
  text-transform:uppercase;
  letter-spacing:.04em;
  color: var(--muted);
  margin-bottom:.28rem;
}
.cp-record-highlight{
  font-size:1.4rem;
  font-weight:700;
  line-height:1.15;
  margin-bottom:.95rem;
}
.cp-record-meta-list{
  display:grid;
  gap:.52rem;
}
.cp-record-meta-row{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:.8rem;
  padding-top:.45rem;
  border-top:1px solid rgba(255,255,255,.06);
}
.cp-record-meta-label{
  font-size:.86rem;
  color: var(--muted);
}
.cp-record-meta-value{
  font-size:.92rem;
  font-weight:700;
  text-align:right;
}
.cp-record-gain{
  color: var(--orange2);
}
.cp-records-empty{
  padding:1rem;
  border-radius:16px;
  border:1px dashed rgba(255,255,255,.14);
  color: var(--muted);
  text-align:center;
}
html[data-theme="light"] .cp-records-summary-item,
html[data-theme="light"] .cp-records-note,
html[data-theme="light"] .cp-record-card{
  border-color: rgba(11,11,13,.08);
  background: rgba(11,11,13,.03);
}
html[data-theme="light"] .cp-records-filter{
  border-color: rgba(11,11,13,.12);
  background: rgba(11,11,13,.04);
  color: rgba(11,11,13,.92);
}
html[data-theme="light"] .cp-records-filter.is-active{
  background: linear-gradient(180deg, rgba(255,106,31,0.22), rgba(255,106,31,0.08));
  border-color: rgba(255,106,31,0.45);
}
html[data-theme="light"] .cp-record-meta-row{
  border-top-color: rgba(11,11,13,.06);
}
html[data-theme="light"] .cp-records-empty{
  border-color: rgba(11,11,13,.14);
}
@media (max-width: 991.98px){
  .cp-records-grid{
    grid-template-columns: 1fr;
  }
}
@media (max-width: 767.98px){
  .cp-records-summary{
    width:100%;
  }
  .cp-records-summary-item{
    flex:1 1 0;
    min-width: 0;
  }
  .cp-record-highlight{
    font-size:1.22rem;
  }
}


/* --- FIX: desktop tabs should be compact; mobile keeps the liquid/glass dock --- */
/* The glass dock is good on phones/tablets. On desktop it must render as a compact tabbar. */
@media (min-width: 992px) and (hover: hover) and (pointer: fine){
  .cp-tabbar.cp-tabbar-glass{
    display:flex !important;
    flex-wrap:wrap !important;
    overflow:visible !important;
    gap:.55rem !important;
    padding:.65rem !important;
    min-height:unset !important;
    height:auto !important;
    border-radius:18px !important;
    background:rgba(255,255,255,.03) !important;
    border:1px solid rgba(255,255,255,.07) !important;
    box-shadow:0 10px 24px rgba(0,0,0,.22) !important;
    -webkit-backdrop-filter:blur(10px) !important;
    backdrop-filter:blur(10px) !important;
  }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass{
    background:rgba(11,11,13,.03) !important;
    border-color:rgba(11,11,13,.08) !important;
    box-shadow:0 8px 18px rgba(11,11,13,.06) !important;
  }
  .cp-tabbar.cp-tabbar-glass::before,
  .cp-tabbar.cp-tabbar-glass::after,
  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator{
    display:none !important;
    opacity:0 !important;
    pointer-events:none !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabbar.cp-tabbar-glass > a.cp-tab,
  .cp-tabbar.cp-tabbar-glass > button.cp-tab{
    min-width:0 !important;
    max-width:none !important;
    width:auto !important;
    min-height:0 !important;
    height:auto !important;
    flex:0 0 auto !important;
    display:inline-flex !important;
    flex-direction:row !important;
    align-items:center !important;
    justify-content:center !important;
    gap:.45rem !important;
    padding:.48rem .85rem !important;
    border-radius:999px !important;
    border:1px solid rgba(255,255,255,.08) !important;
    background:rgba(0,0,0,.18) !important;
    color:rgba(255,255,255,.88) !important;
    box-shadow:none !important;
    text-shadow:none !important;
    transform:none !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  .cp-tabbar.cp-tabbar-glass > a.cp-tab.is-active,
  .cp-tabbar.cp-tabbar-glass > button.cp-tab.is-active{
    background:linear-gradient(180deg, rgba(255,115,0,.38), rgba(255,115,0,.12)) !important;
    border-color:rgba(255,115,0,.45) !important;
    box-shadow:0 10px 22px rgba(0,0,0,.25) !important;
    color:#fff !important;
  }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    background:rgba(11,11,13,.05) !important;
    border-color:rgba(11,11,13,.10) !important;
    color:rgba(11,11,13,.86) !important;
  }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    background:linear-gradient(180deg, rgba(255,106,31,.22), rgba(255,106,31,.08)) !important;
    border-color:rgba(255,106,31,.45) !important;
    box-shadow:0 10px 22px rgba(11,11,13,.12) !important;
    color:rgba(11,11,13,.92) !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji{
    width:auto !important;
    min-width:1.25rem !important;
    height:auto !important;
    margin:0 !important;
    font-size:1rem !important;
    filter:none !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span{
    display:inline-block !important;
    font-size:.95rem !important;
    line-height:1.2 !important;
    white-space:normal !important;
  }
}

@media (max-width: 991.98px), (hover: none), (pointer: coarse){
  .cp-tabbar.cp-tabbar-glass{
    flex-wrap:nowrap;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
}

/* PR range/type controls */
.cp-records-controls{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
  flex-wrap:wrap;
  margin-top:1rem;
  margin-bottom:.85rem;
}
.cp-records-control-group{
  display:flex;
  align-items:center;
  gap:.5rem;
  flex-wrap:wrap;
}
@media (max-width: 767.98px){
  .cp-records-controls{ display:grid; grid-template-columns:1fr; }
  .cp-records-control-group{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); width:100%; }
  .cp-records-filter{ width:100%; justify-content:center; }
}

/* PR filters v2: separate type/range/sort groups */
.cp-records-control-label{
  flex: 0 0 100%;
  font-size: .74rem;
  line-height: 1;
  color: var(--muted);
  font-weight:700;
  letter-spacing: .04em;
  text-transform: uppercase;
  margin: 0 0 .08rem .12rem;
}
.cp-records-controls{
  align-items:flex-start;
}
.cp-records-control-group{
  padding:.55rem;
  border-radius:18px;
  border:1px solid rgba(255,255,255,.07);
  background: rgba(255,255,255,.025);
}
html[data-theme="light"] .cp-records-control-group{
  border-color: rgba(11,11,13,.08);
  background: rgba(11,11,13,.025);
}
@media (max-width: 767.98px){
  .cp-records-control-label{
    grid-column: 1 / -1;
  }
}


/* Premium fallback avatars */
.cp-avatar--fallback{
  position: relative !important;
  overflow: hidden !important;
  color: #fff !important;
  background:
    radial-gradient(circle at 28% 22%, rgba(255,255,255,.34), rgba(255,255,255,0) 34%),
    radial-gradient(circle at 82% 78%, rgba(255,178,94,.20), rgba(255,178,94,0) 26%),
    linear-gradient(145deg, rgba(255,151,81,.98) 0%, rgba(255,110,35,.96) 42%, rgba(207,78,24,.98) 100%) !important;
  border: 1px solid rgba(255,255,255,.16) !important;
  box-shadow:
    0 16px 34px rgba(234,95,29,.24),
    inset 0 1px 0 rgba(255,255,255,.24),
    inset 0 -14px 24px rgba(0,0,0,.10) !important;
}
.cp-avatar--fallback::before{
  content: '';
  position: absolute;
  inset: 2px;
  border-radius: inherit;
  border: 1px solid rgba(255,255,255,.12);
  pointer-events: none;
  z-index: 1;
}
.cp-avatar--fallback::after{
  content: '';
  position: absolute;
  right: 9%;
  bottom: 9%;
  width: 24%;
  height: 24%;
  min-width: 8px;
  min-height: 8px;
  border-radius: 999px;
  background: rgba(255,255,255,.18);
  border: 1px solid rgba(255,255,255,.28);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.20);
  z-index: 1;
}
.cp-avatar--fallback > span,
.cp-avatar--fallback > .chat-avatar-mini__fallback,
.cp-avatar--fallback > .cp-drawer-item__avatar-fallback,
.cp-avatar--fallback > .me-hero-avatar-fallback{
  position: relative;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  text-shadow: 0 1px 2px rgba(0,0,0,.14);
}
.cp-avatar--fallback > span,
.cp-avatar--fallback > .me-hero-avatar-fallback{
  font-weight:700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.cp-nav-avatar.cp-avatar--fallback{
  box-shadow: 0 12px 26px rgba(234,95,29,.18), inset 0 1px 0 rgba(255,255,255,.22), inset 0 -10px 18px rgba(0,0,0,.10) !important;
}
.cp-nav-avatar.cp-avatar--fallback > span{ font-size: .78rem; }
.cp-context-icon.cp-avatar--fallback,
.cp-profile-avatar.cp-avatar--fallback{
  box-shadow: 0 18px 40px rgba(234,95,29,.24), inset 0 1px 0 rgba(255,255,255,.24), inset 0 -16px 26px rgba(0,0,0,.10) !important;
}
.me-hero-avatar-wrap{
  isolation: isolate;
}
.me-hero-avatar-fallback{
  font-size: 1.5rem;
}
.cp-profile-avatar-xl.cp-avatar--fallback > span{
  font-size: 1.22rem;
}
.trainer-chat-avatar.cp-avatar--fallback{
  box-shadow: 0 14px 30px rgba(234,95,29,.18), inset 0 1px 0 rgba(255,255,255,.22), inset 0 -12px 20px rgba(0,0,0,.10) !important;
}
.trainer-chat-avatar.cp-avatar--fallback > span{
  font-size: .95rem;
}
.chat-avatar-mini.cp-avatar--fallback{
  box-shadow: 0 10px 18px rgba(234,95,29,.16), inset 0 1px 0 rgba(255,255,255,.20), inset 0 -8px 14px rgba(0,0,0,.08) !important;
}
.chat-avatar-mini.cp-avatar--fallback > .chat-avatar-mini__fallback{
  font-size: .72rem;
  letter-spacing: .07em;
}
.cp-drawer-item__avatar.cp-avatar--fallback{
  box-shadow: 0 10px 20px rgba(234,95,29,.14), inset 0 1px 0 rgba(255,255,255,.20), inset 0 -8px 12px rgba(0,0,0,.08) !important;
}
.cp-drawer-item__avatar.cp-avatar--fallback > .cp-drawer-item__avatar-fallback{
  font-size: 11px;
  letter-spacing: .08em;
}
html[data-theme='light'] .cp-avatar--fallback{
  border-color: rgba(255,255,255,.28) !important;
  box-shadow:
    0 14px 28px rgba(234,95,29,.16),
    inset 0 1px 0 rgba(255,255,255,.34),
    inset 0 -12px 20px rgba(143,60,16,.08) !important;
}
html[data-theme='dark'] .cp-avatar--fallback{
  border-color: rgba(255,255,255,.14) !important;
}

/* === CoachPro HOTFIX 2026-04-27: tab dock fill like LIVE bottom action panel ===
   Ujednolica tło dolnego paska zakładek z panelem treningu "Dodaj ćw." / "Zakończ + PDF". */
@media (max-width:1180px){
  .cp-tabbar.cp-tabbar-glass{
    background:rgba(0,0,0,.48) !important;
    border:1px solid rgba(255,255,255,.14) !important;
    -webkit-backdrop-filter:blur(12px) !important;
    backdrop-filter:blur(12px) !important;
    box-shadow:0 18px 44px rgba(0,0,0,.35) !important;
  }
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass{
    background:rgba(0,0,0,.48) !important;
    border-color:rgba(255,255,255,.14) !important;
    box-shadow:0 18px 44px rgba(0,0,0,.35) !important;
  }
  .cp-tabbar-glass::before,
  html[data-theme="light"] .cp-tabbar-glass::before{
    background:transparent !important;
    box-shadow:none !important;
  }
  .cp-tabbar-glass::after{
    opacity:.34 !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    color:rgba(255,255,255,.78) !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:#fff !important;
    text-shadow:0 1px 10px rgba(0,0,0,.22) !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator{
    background:linear-gradient(180deg, rgba(255,255,255,.22), rgba(255,255,255,.08)), rgba(255,255,255,.08) !important;
    border:1px solid rgba(255,255,255,.155) !important;
    -webkit-backdrop-filter:blur(12px) !important;
    backdrop-filter:blur(12px) !important;
    box-shadow:
      0 12px 28px rgba(0,0,0,.24),
      inset 0 1px 0 rgba(255,255,255,.24) !important;
  }
}

/* === CoachPro HOTFIX 2026-04-27 v2: tab dock exactly like LIVE bottom action panel + active dark orange label ===
   Cel: usunac dodatkowy "liquid glass" odcien z paska zakladek i zblizyc go 1:1 do .live-action-bar.
   Aktywna/wyswietlana karta dostaje energetyczny ciemny pomarancz zamiast bieli/czarnego. */
:root{
  --cp-active-tab-orange-dark:#e65a1a;
  --cp-active-tab-orange-deep:#c84612;
}
@media (max-width:1180px){
  .cp-tabbar.cp-tabbar-glass{
    background:rgba(0,0,0,.48) !important;
    border:1px solid rgba(255,255,255,.14) !important;
    -webkit-backdrop-filter:blur(12px) !important;
    backdrop-filter:blur(12px) !important;
    box-shadow:0 18px 44px rgba(0,0,0,.35) !important;
    filter:none !important;
  }

  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass{
    /* Ten sam look co LIVE panel, bez jasnego mlecznego gradientu, ktory zmienial odcien. */
    background:rgba(0,0,0,.48) !important;
    border-color:rgba(255,255,255,.14) !important;
    box-shadow:0 18px 44px rgba(0,0,0,.35) !important;
    -webkit-backdrop-filter:blur(12px) !important;
    backdrop-filter:blur(12px) !important;
  }

  /* Wylaczenie dodatkowych poswiat/gradientow, ktore robily inny odcien niz panel treningu. */
  .cp-tabbar.cp-tabbar-glass::before,
  .cp-tabbar.cp-tabbar-glass::after,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass::before,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass::after{
    content:"" !important;
    background:transparent !important;
    box-shadow:none !important;
    opacity:0 !important;
    filter:none !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator{
    background:rgba(255,255,255,.08) !important;
    border:1px solid rgba(255,255,255,.155) !important;
    -webkit-backdrop-filter:blur(12px) !important;
    backdrop-filter:blur(12px) !important;
    box-shadow:0 12px 28px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.18) !important;
    filter:none !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator::before,
  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator::after{
    opacity:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    filter:none !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    color:rgba(255,255,255,.78) !important;
    text-shadow:none !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:var(--cp-active-tab-orange-dark) !important;
    text-shadow:0 1px 10px rgba(0,0,0,.24), 0 0 10px rgba(230,90,26,.16) !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji),
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji){
    color:var(--cp-active-tab-orange-dark) !important;
    font-weight:700 !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-ico,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active svg,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-ico,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active svg{
    color:var(--cp-active-tab-orange-dark) !important;
    stroke:var(--cp-active-tab-orange-dark) !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji{
    filter:drop-shadow(0 0 8px rgba(230,90,26,.22)) !important;
  }
}

@media (min-width:992px) and (hover:hover) and (pointer:fine){
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:var(--cp-active-tab-orange-deep) !important;
  }
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji),
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji){
    color:var(--cp-active-tab-orange-deep) !important;
  }
}


/* === CoachPro hotfix 2026-04-27: login keyboard pan + measurements table consistency === */
@media (max-width: 768px){
  body:has(#cpLoginForm){
    min-height:100dvh;
    padding-bottom:calc(96px + env(safe-area-inset-bottom, 0px));
  }
  html.cp-login-field-focus body:has(#cpLoginForm){
    scroll-padding-top:calc(var(--safe-top, env(safe-area-inset-top, 0px)) + 92px);
    scroll-padding-bottom:calc(190px + env(safe-area-inset-bottom, 0px));
  }
  #cpLoginForm input[name="email"],
  #cpLoginForm input[name="password"]{
    scroll-margin-top:calc(var(--safe-top, env(safe-area-inset-top, 0px)) + 96px);
    scroll-margin-bottom:calc(210px + env(safe-area-inset-bottom, 0px));
  }
}

/* The Obwody column used to look different because it was small/muted and wrapped
   like a note. Keep the content readable, but make the cell match the rest of the table. */
.measures-table th:nth-child(7),
.measures-table td:nth-child(7){
  width:260px !important;
}
.measures-table .obwody-cell{
  color:inherit !important;
  font-size:inherit !important;
  font-weight:inherit !important;
  line-height:inherit !important;
  white-space:nowrap !important;
  vertical-align:middle !important;
}
.measures-table .obwody-cell .cell-clamp{
  display:block !important;
  white-space:nowrap !important;
  -webkit-line-clamp:unset !important;
  -webkit-box-orient:initial !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  line-height:inherit !important;
  color:inherit !important;
}
@media (max-width: 992px){
  .measures-table th:nth-child(7),
  .measures-table td:nth-child(7){ width:240px !important; }
}

/* === CoachPro hotfix v2 2026-04-27: calmer login focus + full body circumference text === */
@media (max-width: 768px){
  body:has(#cpLoginForm){
    min-height:100dvh;
    padding-bottom:calc(112px + env(safe-area-inset-bottom, 0px));
  }
  html.cp-login-field-focus body:has(#cpLoginForm){
    scroll-padding-top:calc(var(--safe-top, env(safe-area-inset-top, 0px)) + 88px);
    scroll-padding-bottom:calc(140px + env(safe-area-inset-bottom, 0px));
  }
  #cpLoginForm input[name="email"],
  #cpLoginForm input[name="password"]{
    scroll-margin-top:calc(var(--safe-top, env(safe-area-inset-top, 0px)) + 88px);
    scroll-margin-bottom:calc(150px + env(safe-area-inset-bottom, 0px));
  }
}

.measures-table th:nth-child(7),
.measures-table td:nth-child(7){
  width:420px !important;
  min-width:420px !important;
  max-width:420px !important;
  vertical-align:middle !important;
}
.measures-table .obwody-cell{
  display:table-cell !important;
  color:inherit !important;
  font-size:inherit !important;
  font-weight:inherit !important;
  line-height:1.35 !important;
  white-space:normal !important;
  max-width:420px !important;
  overflow:visible !important;
  text-overflow:clip !important;
  vertical-align:middle !important;
}
.measures-table .obwody-cell .cell-clamp{
  display:block !important;
  white-space:normal !important;
  -webkit-line-clamp:unset !important;
  line-clamp:unset !important;
  -webkit-box-orient:initial !important;
  overflow:visible !important;
  text-overflow:clip !important;
  line-height:1.35 !important;
  color:inherit !important;
}
@media (max-width: 992px){
  .measures-table th:nth-child(7),
  .measures-table td:nth-child(7){
    width:340px !important;
    min-width:340px !important;
    max-width:340px !important;
  }
  .measures-table .obwody-cell{
    max-width:340px !important;
  }
}


/* === CoachPro live set drag & mobile table polish 2026-04-29 v2 === */
.live-set-index-cell{white-space:nowrap;vertical-align:middle!important;}
.live-set-index-wrap{display:inline-flex;align-items:center;justify-content:flex-start;gap:.45rem;min-height:32px;}
.live-set-drag-handle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:26px;height:26px;border-radius:999px;cursor:grab;touch-action:none;user-select:none;color:rgba(255,255,255,.72);background:rgba(255,255,255,.065);border:1px solid rgba(255,255,255,.10);font-weight:700;line-height:1;letter-spacing:-.18em;padding-right:.16rem;}
.live-set-drag-handle:active{cursor:grabbing;}
tbody.is-sortable-sets .live-set-row{transition:background .16s ease,opacity .16s ease;}
tbody.is-saving-order .live-set-row{opacity:.82;}
.live-set-sortable-chosen{background:rgba(255,111,31,.12)!important;}
.live-set-sortable-drag,.live-set-sortable-fallback{opacity:.98!important;background:rgba(25,25,31,.96)!important;box-shadow:none!important;border-radius:12px;}
.live-set-sortable-ghost{opacity:.08!important;background:rgba(255,111,31,.08)!important;box-shadow:none!important;}
html[data-theme="light"] .live-set-drag-handle{color:rgba(15,23,42,.70);background:rgba(15,23,42,.045);border-color:rgba(15,23,42,.08);}
html[data-theme="light"] .live-set-sortable-chosen{background:rgba(255,111,31,.12)!important;}
html[data-theme="light"] .live-set-sortable-drag,html[data-theme="light"] .live-set-sortable-fallback{background:rgba(255,255,255,.96)!important;}
@media (max-width:767.98px){
.table-mobile-sets{table-layout:fixed;width:100%;min-width:0!important;font-size:.86rem;}
.table-mobile-sets th,.table-mobile-sets td{padding:.58rem .34rem!important;vertical-align:middle!important;white-space:nowrap;}
.table-mobile-sets .col-set{width:3.55rem}.table-mobile-sets .col-mode{width:2.75rem}.table-mobile-sets .col-reps{width:4.65rem}.table-mobile-sets .col-kg{width:3.55rem}.table-mobile-sets .col-rir{width:2.55rem}.table-mobile-sets .col-vol{width:4.25rem}.table-mobile-sets .col-act{width:3.15rem}
.table-mobile-sets .live-set-index-wrap{gap:.18rem;min-height:34px;}.table-mobile-sets .live-set-drag-handle{width:20px;height:20px;font-size:.72rem;margin-left:-.10rem;background:rgba(255,255,255,.045);}
.table-mobile-sets .btn-xs.btn-outline-danger,.table-mobile-sets .btn-outline-danger{width:34px;height:34px;min-width:34px;padding:0!important;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;font-weight:700;line-height:1;}
.table-mobile-sets td.text-end,.table-mobile-sets th.col-act{text-align:center!important;}.table-mobile-sets td:nth-child(6){overflow:hidden;text-overflow:ellipsis;}.set-log-card .table-responsive{overflow-x:hidden!important;}
}
@media (max-width:390px){.table-mobile-sets{font-size:.80rem}.table-mobile-sets th,.table-mobile-sets td{padding:.52rem .24rem!important}.table-mobile-sets .col-set{width:3.25rem}.table-mobile-sets .col-mode{width:2.45rem}.table-mobile-sets .col-reps{width:4.35rem}.table-mobile-sets .col-kg{width:3.2rem}.table-mobile-sets .col-rir{width:2.35rem}.table-mobile-sets .col-vol{width:3.85rem}.table-mobile-sets .col-act{width:2.9rem}.table-mobile-sets .btn-xs.btn-outline-danger,.table-mobile-sets .btn-outline-danger{width:31px;height:31px;min-width:31px}}

/* === CoachPro live sets mobile final layout fix 2026-04-29 v3 ===
   Cel: X zawsze widoczny, brak nachodzenia POWT./CZAS na KG, równa wysokość kolumn. */
@media (max-width: 767.98px){
  .set-log-card .table-responsive{
    overflow-x: hidden !important;
    width: 100%;
  }
  .table-mobile-sets{
    table-layout: fixed !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    font-size: .84rem;
    border-collapse: separate;
    border-spacing: 0;
  }
  .table-mobile-sets th,
  .table-mobile-sets td{
    box-sizing: border-box;
    padding: .58rem .24rem !important;
    vertical-align: middle !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .table-mobile-sets thead th{
    font-size: .68rem !important;
    letter-spacing: .01em !important;
    line-height: 1.05 !important;
  }

  /* Na telefonie tryb nie potrzebuje osobnej kolumny: wartość i jednostka są w POWT./CZAS.
     Dzięki temu tabela mieści X bez poziomego przewijania. */
  .table-mobile-sets .col-mode,
  .table-mobile-sets th:nth-child(2),
  .table-mobile-sets td:nth-child(2){
    display: none !important;
  }

  .table-mobile-sets .col-set{width: 3.25rem !important;}
  .table-mobile-sets .col-reps{width: 5.65rem !important;}
  .table-mobile-sets .col-kg{width: 3.20rem !important;}
  .table-mobile-sets .col-rir{width: 2.55rem !important;}
  .table-mobile-sets .col-vol{width: 4.05rem !important;}
  .table-mobile-sets .col-act{width: 2.85rem !important;}

  .table-mobile-sets .live-set-index-cell{
    padding-left: .42rem !important;
    padding-right: .10rem !important;
    overflow: visible !important;
  }
  .table-mobile-sets .live-set-index-wrap{
    display: inline-flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: .24rem !important;
    min-height: 34px !important;
    line-height: 1 !important;
  }
  .table-mobile-sets .live-set-drag-handle{
    width: 22px !important;
    height: 22px !important;
    min-width: 22px !important;
    margin-left: 0 !important;
    font-size: .72rem !important;
  }
  .table-mobile-sets .js-set-no{
    min-width: .9rem;
    text-align: left;
  }
  .table-mobile-sets td.text-end,
  .table-mobile-sets th.col-act{
    text-align: center !important;
    overflow: visible !important;
    padding-left: .10rem !important;
    padding-right: .28rem !important;
  }
  .table-mobile-sets td.text-end form{
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0;
  }
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{
    width: 30px !important;
    height: 30px !important;
    min-width: 30px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 999px !important;
    line-height: 1 !important;
  }
}

@media (max-width: 390px){
  .table-mobile-sets{font-size: .80rem !important;}
  .table-mobile-sets th,
  .table-mobile-sets td{padding: .54rem .18rem !important;}
  .table-mobile-sets thead th{font-size: .64rem !important;}
  .table-mobile-sets .col-set{width: 3.05rem !important;}
  .table-mobile-sets .col-reps{width: 5.25rem !important;}
  .table-mobile-sets .col-kg{width: 2.85rem !important;}
  .table-mobile-sets .col-rir{width: 2.35rem !important;}
  .table-mobile-sets .col-vol{width: 3.65rem !important;}
  .table-mobile-sets .col-act{width: 2.60rem !important;}
  .table-mobile-sets .live-set-drag-handle{width: 20px !important;height: 20px !important;min-width: 20px !important;}
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{width: 28px !important;height: 28px !important;min-width: 28px !important;}
}


/* === CoachPro live sets mobile/right-actions polish 2026-04-29 v4 === */
.session-live-ex-head{gap:.75rem;}
.session-live-ex-head > .min-w-0{min-width:0;}
.live-move-col--right{margin-right:0;align-items:stretch;}
.cp-ex-actions .live-move-btn{width:40px;height:40px;border-radius:12px;}
@media (min-width: 577px){
  .cp-ex-actions .live-move-btn{width:116px;height:34px;border-radius:12px;font-size:1rem;}
}
@media (max-width: 576px){
  .session-live-ex-head{align-items:flex-start!important;}
  .cp-ex-actions{flex:0 0 auto;align-items:flex-end;}
  .cp-ex-actions .live-move-col{gap:.35rem;}
  .cp-ex-actions .live-move-btn{width:38px;height:32px;min-width:38px;padding:0;}
}
@media (max-width: 767.98px){
  .set-log-card .table-responsive{padding-right:4px;}
  .table-mobile-sets .col-act{width:3.25rem !important;}
  .table-mobile-sets td.text-end,
  .table-mobile-sets th.col-act{padding-right:.42rem !important;}
  .table-mobile-sets td.text-end form{justify-content:flex-end !important;}
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{width:29px !important;height:29px !important;min-width:29px !important;transform:translateX(-1px);}
}
@media (max-width: 390px){
  .table-mobile-sets .col-act{width:2.95rem !important;}
  .table-mobile-sets td.text-end,
  .table-mobile-sets th.col-act{padding-right:.40rem !important;}
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{width:27px !important;height:27px !important;min-width:27px !important;transform:translateX(-1px);}
}


/* === CoachPro right exercise actions final polish 2026-04-29 v5 ===
   Mobile: equal icon-only buttons. Desktop/tablet: equal buttons with readable labels. */
.cp-ex-actions{
  display:flex !important;
  flex-direction:column !important;
  align-items:stretch !important;
  gap:.42rem !important;
  flex:0 0 auto;
}
.cp-ex-actions form{margin:0 !important;}
.cp-ex-actions .live-move-col,
.cp-ex-actions .live-move-col--right{
  display:flex !important;
  flex-direction:column !important;
  gap:.42rem !important;
  margin:0 !important;
  width:100% !important;
  align-items:stretch !important;
}
.cp-ex-actions .cp-action-btn,
.cp-ex-actions .live-move-btn{
  width:100% !important;
  height:36px !important;
  min-width:118px !important;
  padding:0 .72rem !important;
  border-radius:13px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:.42rem !important;
  white-space:nowrap !important;
  font-weight:700 !important;
  line-height:1 !important;
  font-size:.88rem !important;
}
.cp-ex-actions .cp-action-ico{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.1rem;
  min-width:1.1rem;
  line-height:1;
}
.cp-ex-actions .cp-action-label{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1;
}
.cp-ex-actions .cp-action-btn.disabled,
.cp-ex-actions .cp-action-btn:disabled{
  opacity:.42;
}

@media (min-width: 768px){
  .session-live-ex-head{gap:1rem !important;}
  .cp-ex-actions{
    min-width:118px;
    max-width:136px;
  }
}

@media (max-width: 767.98px){
  .session-live-ex-head{
    gap:.62rem !important;
    align-items:flex-start !important;
  }
  .cp-ex-actions{
    min-width:42px !important;
    width:42px !important;
    max-width:42px !important;
    gap:.36rem !important;
  }
  .cp-ex-actions .live-move-col,
  .cp-ex-actions .live-move-col--right{
    gap:.36rem !important;
  }
  .cp-ex-actions .cp-action-btn,
  .cp-ex-actions .live-move-btn{
    width:42px !important;
    min-width:42px !important;
    height:42px !important;
    padding:0 !important;
    border-radius:14px !important;
    font-size:1.02rem !important;
    gap:0 !important;
  }
  .cp-ex-actions .cp-action-label{
    display:none !important;
  }
  .cp-ex-actions .cp-action-ico{
    width:auto;
    min-width:0;
    font-size:1.02rem;
  }
  .cp-ex-actions .live-move-btn .cp-action-ico{
    font-size:.92rem;
  }

  /* Leave stable space for the right action rail so long exercise names do not collide. */
  .session-live-ex-head > .min-w-0{
    min-width:0 !important;
    padding-right:.10rem;
  }
  .session-live-ex-head .fw-semibold span:first-child{
    overflow-wrap:anywhere;
    word-break:normal;
  }
}

@media (max-width: 390px){
  .cp-ex-actions{
    min-width:40px !important;
    width:40px !important;
    max-width:40px !important;
  }
  .cp-ex-actions .cp-action-btn,
  .cp-ex-actions .live-move-btn{
    width:40px !important;
    min-width:40px !important;
    height:40px !important;
    border-radius:13px !important;
  }
}


/* === CoachPro live delete polish 2026-04-29 v6 === */
/* Keep series delete button fully inside the mobile table/card. */
@media (max-width: 767.98px){
  .set-log-card{
    overflow:hidden;
  }
  .set-log-card .table-responsive{
    overflow:hidden !important;
    padding-right:10px !important;
  }
  .table-mobile-sets .col-act{
    width:3.55rem !important;
  }
  .table-mobile-sets td.text-end,
  .table-mobile-sets th.col-act{
    padding-left:.04rem !important;
    padding-right:.72rem !important;
    overflow:visible !important;
  }
  .table-mobile-sets td.text-end form{
    justify-content:flex-end !important;
    transform:translateX(-9px);
  }
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{
    width:28px !important;
    height:28px !important;
    min-width:28px !important;
    transform:none !important;
  }
}
@media (max-width:390px){
  .set-log-card .table-responsive{padding-right:12px !important;}
  .table-mobile-sets .col-act{width:3.35rem !important;}
  .table-mobile-sets td.text-end,
  .table-mobile-sets th.col-act{padding-right:.78rem !important;}
  .table-mobile-sets td.text-end form{transform:translateX(-10px);}
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{
    width:26px !important;
    height:26px !important;
    min-width:26px !important;
  }
}

/* Premium confirmation modal for deleting sets/exercises. */
.cp-live-delete-modal .modal-dialog{
  padding:0 1rem;
}
.cp-live-delete-content{
  border-radius:26px;
  border:1px solid rgba(255,255,255,.12);
  background:
    radial-gradient(circle at 18% 0%, rgba(255,78,31,.18), transparent 34%),
    linear-gradient(180deg, rgba(31,28,32,.98), rgba(12,12,16,.98));
  color:var(--text);
  box-shadow:0 24px 80px rgba(0,0,0,.55);
  overflow:hidden;
}
.cp-live-delete-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:1.05rem 1.15rem .25rem;
}
.cp-live-delete-icon{
  width:46px;
  height:46px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:16px;
  border:1px solid rgba(255,70,95,.35);
  background:rgba(255,70,95,.12);
  box-shadow:0 12px 28px rgba(255,70,95,.10);
  font-size:1.35rem;
}
.cp-live-delete-close{
  filter:invert(1) grayscale(1);
  opacity:.72;
}
.cp-live-delete-body{
  padding:.35rem 1.15rem 1rem;
}
.cp-live-delete-title{
  font-weight:700;
  letter-spacing:-.03em;
  font-size:1.28rem;
  margin:0 0 .38rem;
}
.cp-live-delete-text{
  color:var(--muted);
  line-height:1.35;
  font-size:.95rem;
}
.cp-live-delete-name{
  margin-top:.7rem;
  padding:.72rem .82rem;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.045);
  font-weight:700;
  line-height:1.25;
}
.cp-live-delete-footer{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.65rem;
  padding:0 1.15rem 1.15rem;
}
.cp-live-delete-footer .btn{
  min-height:44px;
  border-radius:16px;
  font-weight:700;
}
.cp-live-delete-submit{
  background:linear-gradient(180deg, #ff4664, #d82647) !important;
  border-color:rgba(255,70,95,.88) !important;
  box-shadow:0 14px 28px rgba(255,70,95,.18);
}
@media (max-width:420px){
  .cp-live-delete-content{border-radius:24px;}
  .cp-live-delete-footer{grid-template-columns:1fr;gap:.5rem;}
  .cp-live-delete-footer .cp-live-delete-submit{order:1;}
  .cp-live-delete-footer .cp-live-delete-cancel{order:2;}
}
html[data-theme="light"] .cp-live-delete-content{
  background:
    radial-gradient(circle at 18% 0%, rgba(255,78,31,.14), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,248,250,.98));
  border-color:rgba(15,23,42,.10);
  box-shadow:0 24px 70px rgba(15,23,42,.18);
}
html[data-theme="light"] .cp-live-delete-close{
  filter:none;
}
html[data-theme="light"] .cp-live-delete-name{
  background:rgba(15,23,42,.035);
  border-color:rgba(15,23,42,.08);
}


/* === CoachPro delete modal exercise name detail 2026-04-29 v7 === */
.cp-live-delete-name{
  white-space:pre-line;
}
.cp-live-delete-name::first-line{
  color:var(--text);
}


/* === CoachPro /me inline Chat + Settings tabs, professional integration 2026-04-29 === */
.me-card-chat,
.me-card-settings{
  scroll-margin-top: calc(var(--cp-nav-height, 76px) + 18px);
}
.me-card-chat[data-cp-panel],
.me-card-settings[data-cp-panel]{
  overflow: visible;
}
.me-inline-tab{
  width:100%;
}
.me-inline-chat .chat-compact-hero{
  margin-top:0;
}
.me-inline-chat .chat-compact-main{
  border-radius:22px;
}
.me-card-chat .chat-card{
  margin-bottom:0;
}
.me-card-chat .chat-compact-hero + .chat-card{
  margin-top:.85rem;
}
.me-inline-chat .chat-compact-back,
.me-inline-settings .cp-inline-tab-switch{
  white-space:nowrap;
}
.me-inline-settings > .row{
  margin-left:0;
  margin-right:0;
}
.me-inline-settings .card.card-brand{
  margin-bottom:0;
}
.me-inline-settings .cp-avatar-settings{
  align-items:center;
}
@media (min-width: 992px){
  .me-card-settings .card.card-brand{
    padding:1.35rem;
  }
}
@media (max-width: 767.98px){
  .me-card-chat,
  .me-card-settings{
    padding-left:.85rem;
    padding-right:.85rem;
  }
  .me-inline-chat .chat-compact-main{
    align-items:flex-start;
    gap:.75rem;
  }
  .me-inline-settings .card.card-brand{
    padding:1rem;
  }
  .me-inline-settings .btn.w-100{
    min-height:42px;
  }
}


/* === CoachPro /me tabs polish: chat gap, settings spacing, LIVE buttons 2026-04-29 === */

/* 1) Inline chat: remove the excessive empty area under the message composer. */
.me-card-chat{
  padding-bottom:1rem;
}
.me-inline-chat .chat-card{
  --cp-chat-extra-bottom: 0px !important;
  --cp-chat-composer-h: 62px !important;
}
.me-inline-chat .chat-messages{
  min-height: 180px;
  max-height: min(56dvh, 560px);
  padding-bottom:.85rem !important;
  scroll-padding-bottom: 84px !important;
}
.me-inline-chat .chat-input{
  position: relative !important;
  bottom: auto !important;
  padding: .56rem .75rem .62rem !important;
  margin:0 !important;
}
.me-inline-chat .chat-input form{
  margin:0 !important;
}
@media (max-width:767.98px){
  .me-inline-chat .chat-messages{
    min-height: 170px;
    max-height: min(50dvh, 430px);
  }
  .me-inline-chat .chat-input{
    padding-bottom:.55rem !important;
  }
}

/* 2) Inline settings: avatar upload actions should be visually grouped, not separated by a huge gap. */
.me-inline-settings .cp-avatar-settings{
  margin-bottom:.85rem !important;
}
.me-inline-settings .cp-avatar-settings + form{
  margin-bottom:.55rem !important;
}
.me-inline-settings .cp-avatar-settings + form .btn{
  margin-top:.35rem;
}
.me-inline-settings .cp-avatar-settings + form + form{
  margin-top:.55rem !important;
  margin-bottom:1.25rem !important;
}
.me-inline-settings .cp-avatar-settings + form + form .btn{
  min-height:42px;
}

/* 3) /me LIVE card actions: equal, readable buttons. */
.me-live-actions{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:.65rem;
  flex-wrap:wrap;
}
.me-live-actions form{
  margin:0 !important;
}
.me-live-action-btn{
  min-width:128px;
  height:44px !important;
  min-height:44px !important;
  padding:.65rem 1.05rem !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  border-radius:16px !important;
  line-height:1 !important;
  font-weight:700 !important;
}
@media (max-width:575.98px){
  .me-live-actions{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:.6rem;
    width:100%;
    margin-top:.65rem;
  }
  .me-live-actions form{
    width:100%;
  }
  .me-live-action-btn{
    width:100% !important;
    min-width:0 !important;
    height:46px !important;
    min-height:46px !important;
    padding:.68rem .75rem !important;
  }
}


/* === CoachPro /me visual correction v2: no stretched chat, tight avatar actions, aligned LIVE buttons === */

/* CHAT: the embedded tab must wrap its content, not stretch a dark messages area to the bottom of the card. */
.me-card-chat{
  padding-bottom: .9rem !important;
}
.me-card-chat .me-inline-chat .chat-card{
  display: block !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: hidden !important;
  --cp-chat-extra-bottom: 0px !important;
  --cp-chat-composer-h: 58px !important;
}
.me-card-chat .me-inline-chat .chat-messages{
  display: block !important;
  flex: none !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: min(44dvh, 420px) !important;
  overflow-y: auto !important;
  padding: .9rem .9rem .72rem !important;
  scroll-padding-bottom: 72px !important;
}
.me-card-chat .me-inline-chat .chat-input{
  position: relative !important;
  bottom: auto !important;
  padding: .58rem .72rem .68rem !important;
  margin: 0 !important;
  border-top: 1px solid var(--border) !important;
}
.me-card-chat .me-inline-chat .chat-input form{
  margin:0 !important;
}
@media (max-width: 767.98px){
  .me-card-chat .me-inline-chat .chat-messages{
    max-height: min(42dvh, 380px) !important;
  }
}

/* SETTINGS: keep upload and remove avatar controls together. */
.me-inline-settings .me-avatar-actions{
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: .62rem !important;
  margin: .72rem 0 1.15rem !important;
}
.me-inline-settings .me-avatar-upload-form,
.me-inline-settings .me-avatar-reset-form{
  margin: 0 !important;
  padding: 0 !important;
}
.me-inline-settings .me-avatar-file{
  margin: 0 0 .55rem !important;
}
.me-inline-settings .me-avatar-actions .btn{
  margin: 0 !important;
  min-height: 43px !important;
}
.me-inline-settings .me-avatar-reset-form .btn{
  opacity: .82;
}

/* LIVE card: on phones, place actions in one stable row and force equal vertical alignment. */
@media (max-width: 767.98px){
  .me-card-live > .d-flex:first-child{
    display: block !important;
  }
  .me-card-live .me-live-actions{
    display: grid !important;
    grid-template-columns: minmax(0,1fr) minmax(0,1fr) !important;
    align-items: stretch !important;
    gap: .62rem !important;
    width: 100% !important;
    margin: 1rem 0 0 !important;
  }
  .me-card-live .me-live-actions > a,
  .me-card-live .me-live-actions > form{
    display: flex !important;
    width: 100% !important;
    min-width: 0 !important;
    align-self: stretch !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
    position: static !important;
  }
  .me-card-live .me-live-action-btn{
    width: 100% !important;
    min-width: 0 !important;
    height: 48px !important;
    min-height: 48px !important;
    max-height: 48px !important;
    margin: 0 !important;
    padding: 0 .75rem !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    align-self: stretch !important;
    line-height: 1 !important;
    border-radius: 16px !important;
  }
}

/* =========================================================
   CoachPro chat composer real fix 2026-05-04
   Larger readable input + no wasted bottom space in trainer/client chat.
   Applies to: client_chat.html, me_chat.html and /me embedded chat tab.
   ========================================================= */
.chat-card{
  --cp-chat-composer-h: 74px !important;
}
.chat-input{
  flex: 0 0 auto !important;
  position: relative !important;
  bottom: auto !important;
  margin: 0 !important;
  padding: .52rem .62rem .54rem !important;
  border-top: 1px solid rgba(255,255,255,.075) !important;
  background:
    radial-gradient(circle at 92% 50%, rgba(255,90,31,.15), transparent 34%),
    linear-gradient(180deg, rgba(16,17,24,.96), rgba(12,13,18,.98)) !important;
}
.chat-input form#chatSendForm,
.chat-input form.d-flex{
  display: grid !important;
  grid-template-columns: 48px minmax(0, 1fr) 48px 58px !important;
  align-items: end !important;
  gap: .5rem !important;
  width: 100% !important;
  margin: 0 !important;
}
.chat-input .chat-composer-btn,
.chat-input #chatSendBtn{
  width: 48px !important;
  height: 48px !important;
  min-width: 48px !important;
  min-height: 48px !important;
  max-height: 48px !important;
  padding: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 48px !important;
  border-radius: 15px !important;
  align-self: end !important;
  line-height: 1 !important;
}
.chat-input #chatSendBtn{
  width: 58px !important;
  min-width: 58px !important;
  flex-basis: 58px !important;
  border-radius: 16px !important;
  background: linear-gradient(180deg, #ff7a1f 0%, #ff4f1f 100%) !important;
  border: 1px solid rgba(255,132,55,.78) !important;
  color: #fff !important;
  box-shadow: 0 12px 26px rgba(255,89,31,.24), 0 0 0 1px rgba(255,255,255,.08) inset !important;
}
.chat-input .chat-composer-btn{
  color:#fff !important;
  background: linear-gradient(180deg, rgba(24,25,34,.88), rgba(12,13,18,.95)) !important;
  border: 1px solid rgba(255,90,31,.52) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.075), 0 8px 20px rgba(0,0,0,.18) !important;
}
.chat-input .cp-ico,
.chat-input .chat-voice-icon svg{
  width: 21px !important;
  height: 21px !important;
}
.chat-input #chatSendBtn .cp-ico{
  width: 23px !important;
  height: 23px !important;
}
.chat-input .chat-textarea,
.chat-input textarea#chatText{
  width: 100% !important;
  min-width: 0 !important;
  min-height: 48px !important;
  height: 48px;
  max-height: 116px !important;
  padding: .72rem .92rem !important;
  resize: none !important;
  overflow-y: auto !important;
  border-radius: 16px !important;
  border: 1px solid rgba(255,255,255,.13) !important;
  background: linear-gradient(180deg, rgba(31,32,42,.88), rgba(19,20,27,.94)) !important;
  color: rgba(255,255,255,.94) !important;
  font-size: 1rem !important;
  line-height: 1.25 !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.055), 0 8px 20px rgba(0,0,0,.12) !important;
}
.chat-input .chat-textarea::placeholder,
.chat-input textarea#chatText::placeholder{
  color: rgba(255,255,255,.48) !important;
}
.chat-input .chat-textarea:focus,
.chat-input textarea#chatText:focus{
  border-color: rgba(255,111,31,.55) !important;
  box-shadow: 0 0 0 3px rgba(255,90,31,.10), inset 0 1px 0 rgba(255,255,255,.06) !important;
}
.chat-input .chat-attach-chip{
  margin-top: .44rem !important;
  margin-bottom: 0 !important;
}
.chat-messages{
  scroll-padding-bottom: calc(var(--cp-chat-composer-h) + 10px) !important;
}
.me-card-chat .me-inline-chat .chat-card,
.me-inline-chat .chat-card{
  --cp-chat-extra-bottom: 0px !important;
  --cp-chat-composer-h: 70px !important;
}
.me-card-chat .me-inline-chat .chat-input,
.me-inline-chat .chat-input{
  padding: .5rem .58rem .52rem !important;
  margin: 0 !important;
  border-top: 1px solid rgba(255,255,255,.075) !important;
}
.me-card-chat .me-inline-chat .chat-messages,
.me-inline-chat .chat-messages{
  padding-bottom: .62rem !important;
  scroll-padding-bottom: 76px !important;
}
@media (max-width: 575.98px){
  .chat-input{
    padding: .48rem .5rem .5rem !important;
  }
  .chat-input form#chatSendForm,
  .chat-input form.d-flex{
    grid-template-columns: 44px minmax(0, 1fr) 44px 54px !important;
    gap: .42rem !important;
  }
  .chat-input .chat-composer-btn,
  .chat-input #chatSendBtn{
    width: 44px !important;
    height: 44px !important;
    min-width: 44px !important;
    min-height: 44px !important;
    max-height: 44px !important;
    flex-basis: 44px !important;
    border-radius: 14px !important;
  }
  .chat-input #chatSendBtn{
    width: 54px !important;
    min-width: 54px !important;
    flex-basis: 54px !important;
    border-radius: 15px !important;
  }
  .chat-input .chat-textarea,
  .chat-input textarea#chatText{
    min-height: 44px !important;
    height: 44px;
    max-height: 104px !important;
    padding: .63rem .72rem !important;
    font-size: .95rem !important;
    line-height: 1.24 !important;
    border-radius: 15px !important;
  }
  .chat-input .cp-ico,
  .chat-input .chat-voice-icon svg{
    width: 19px !important;
    height: 19px !important;
  }
  .chat-input #chatSendBtn .cp-ico{
    width: 21px !important;
    height: 21px !important;
  }
}
@media (max-width: 390px){
  .chat-input form#chatSendForm,
  .chat-input form.d-flex{
    grid-template-columns: 42px minmax(0, 1fr) 42px 50px !important;
    gap: .36rem !important;
  }
  .chat-input .chat-composer-btn,
  .chat-input #chatSendBtn{
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    min-height: 42px !important;
    max-height: 42px !important;
    flex-basis: 42px !important;
  }
  .chat-input #chatSendBtn{
    width: 50px !important;
    min-width: 50px !important;
    flex-basis: 50px !important;
  }
  .chat-input .chat-textarea,
  .chat-input textarea#chatText{
    min-height: 42px !important;
    height: 42px;
    padding-left: .66rem !important;
    padding-right: .66rem !important;
    font-size: .92rem !important;
  }
}

/* =========================================================
   CoachPro chat composer theme sync 2026-05-04
   Make the message field + secondary action buttons follow the navbar theme.
   ========================================================= */
:root{
  --cp-chat-composer-bg:
    radial-gradient(circle at 92% 50%, rgba(255,90,31,.15), transparent 34%),
    linear-gradient(180deg, rgba(16,17,24,.96), rgba(12,13,18,.98));
  --cp-chat-composer-border: rgba(255,255,255,.075);
  --cp-chat-field-bg: linear-gradient(180deg, rgba(31,32,42,.88), rgba(19,20,27,.94));
  --cp-chat-field-border: rgba(255,255,255,.13);
  --cp-chat-field-text: rgba(255,255,255,.94);
  --cp-chat-field-placeholder: rgba(255,255,255,.48);
  --cp-chat-field-focus-shadow: 0 0 0 3px rgba(255,90,31,.10), inset 0 1px 0 rgba(255,255,255,.06);
  --cp-chat-secondary-bg: linear-gradient(180deg, rgba(24,25,34,.88), rgba(12,13,18,.95));
  --cp-chat-secondary-text: #fff;
  --cp-chat-secondary-border: rgba(255,90,31,.52);
  --cp-chat-secondary-shadow: inset 0 1px 0 rgba(255,255,255,.075), 0 8px 20px rgba(0,0,0,.18);
}
html[data-theme="light"]{
  --cp-chat-composer-bg:
    radial-gradient(circle at 92% 50%, rgba(255,90,31,.11), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,.97), rgba(246,247,251,.98));
  --cp-chat-composer-border: rgba(11,11,13,.10);
  --cp-chat-field-bg: linear-gradient(180deg, rgba(255,255,255,.98), rgba(241,243,248,.98));
  --cp-chat-field-border: rgba(11,11,13,.14);
  --cp-chat-field-text: rgba(11,11,13,.92);
  --cp-chat-field-placeholder: rgba(11,11,13,.46);
  --cp-chat-field-focus-shadow: 0 0 0 3px rgba(233,78,27,.13), inset 0 1px 0 rgba(255,255,255,.72);
  --cp-chat-secondary-bg: linear-gradient(180deg, rgba(255,255,255,.98), rgba(241,243,248,.98));
  --cp-chat-secondary-text: rgba(11,11,13,.86);
  --cp-chat-secondary-border: rgba(233,78,27,.42);
  --cp-chat-secondary-shadow: inset 0 1px 0 rgba(255,255,255,.8), 0 8px 18px rgba(11,11,13,.08);
}
.chat-input{
  background: var(--cp-chat-composer-bg) !important;
  border-top-color: var(--cp-chat-composer-border) !important;
}
.me-card-chat .me-inline-chat .chat-input,
.me-inline-chat .chat-input{
  background: var(--cp-chat-composer-bg) !important;
  border-top-color: var(--cp-chat-composer-border) !important;
}
.chat-input .chat-composer-btn{
  color: var(--cp-chat-secondary-text) !important;
  background: var(--cp-chat-secondary-bg) !important;
  border-color: var(--cp-chat-secondary-border) !important;
  box-shadow: var(--cp-chat-secondary-shadow) !important;
}
.chat-input .chat-textarea,
.chat-input textarea#chatText{
  background: var(--cp-chat-field-bg) !important;
  border-color: var(--cp-chat-field-border) !important;
  color: var(--cp-chat-field-text) !important;
}
.chat-input .chat-textarea::placeholder,
.chat-input textarea#chatText::placeholder{
  color: var(--cp-chat-field-placeholder) !important;
}
.chat-input .chat-textarea:focus,
.chat-input textarea#chatText:focus{
  border-color: rgba(255,111,31,.58) !important;
  box-shadow: var(--cp-chat-field-focus-shadow) !important;
}
html[data-theme="light"] .chat-input .chat-composer-btn:hover,
html[data-theme="light"] .chat-input .chat-composer-btn:focus-visible{
  background: linear-gradient(180deg, rgba(255,255,255,1), rgba(255,244,238,.98)) !important;
  border-color: rgba(233,78,27,.62) !important;
}


/* LIVE compact exercise history */
.live-ex-history{margin-top:.55rem;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:linear-gradient(135deg,rgba(255,106,0,.07),rgba(255,255,255,.025));overflow:hidden}
.live-ex-history-toggle{width:100%;border:0;background:transparent;color:inherit;display:flex;align-items:center;gap:.55rem;padding:.62rem .75rem;text-align:left;font-weight:700}
.live-ex-history-toggle:hover{background:rgba(255,255,255,.035)}
.live-ex-history-toggle[aria-expanded="true"]{background:rgba(255,106,0,.08)}
.live-ex-history-ico{width:28px;height:28px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,106,0,.14);box-shadow:inset 0 0 0 1px rgba(255,106,0,.22)}
.live-ex-history-sub{margin-left:auto;font-size:.78rem;font-weight:700;color:var(--muted,#a8a8b3);white-space:nowrap}
.live-ex-history-body{padding:.65rem .75rem .75rem;border-top:1px solid rgba(255,255,255,.07)}
.live-ex-history-kpis{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.55rem}
.live-ex-history-kpis span{font-size:.75rem;font-weight:700;border-radius:999px;padding:.25rem .5rem;background:rgba(255,255,255,.06);color:var(--muted,#b8b8c4)}
.live-ex-history-row{display:grid;grid-template-columns:86px 1fr;gap:.55rem;align-items:start;padding:.48rem 0;border-top:1px solid rgba(255,255,255,.055)}
.live-ex-history-row:first-of-type{border-top:0}
.live-ex-history-date{font-size:.78rem;font-weight:700;color:#ff8a2a;white-space:nowrap}
.live-ex-history-main{display:flex;gap:.35rem;flex-wrap:wrap;min-width:0}
.live-ex-history-set{font-size:.78rem;border-radius:10px;padding:.18rem .42rem;background:rgba(255,255,255,.045);color:rgba(255,255,255,.88)}
@media (max-width:575.98px){.live-ex-history-toggle{padding:.55rem .62rem}.live-ex-history-sub{font-size:.7rem}.live-ex-history-row{grid-template-columns:1fr;gap:.22rem}.live-ex-history-date{font-size:.76rem}.live-ex-history-set{font-size:.74rem}}
html[data-theme="light"] .live-ex-history,.theme-light .live-ex-history{border-color:rgba(20,20,28,.08);background:linear-gradient(135deg,rgba(255,106,0,.08),rgba(20,20,28,.02))}
html[data-theme="light"] .live-ex-history-set,.theme-light .live-ex-history-set{background:rgba(20,20,28,.055);color:rgba(20,20,28,.86)}


/* CoachPro check-in final polish: separate trainer question rows + compact live history placement. */
.checkin-question-list{display:grid;gap:.55rem}
.checkin-question-row{display:grid;grid-template-columns:2.2rem 1fr auto;gap:.5rem;align-items:start;padding:.55rem;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(255,255,255,.025)}
.checkin-question-row textarea{resize:vertical;min-height:3.5rem}
.checkin-question-no{font-weight:700;color:var(--brand-orange,#ff5a1f);text-align:center}
.checkin-question-row .btn{min-width:2.25rem;border-radius:12px}
.live-ex-history--top{margin:.65rem 0 .55rem}
.session-live-ex-head .live-ex-history{max-width:100%}
@media(max-width:768px){.checkin-question-row{grid-template-columns:1.8rem 1fr auto}.live-ex-history--top{margin:.55rem 0 .45rem}}


/* CoachPro fix: compact live history title stays as one clean line. */
.live-ex-history-toggle{justify-content:flex-start;white-space:nowrap;}
.live-ex-history-toggle .live-ex-history-sub{display:none!important;}
.live-ex-history-kpis{display:none!important;}
@media (max-width:575.98px){.live-ex-history-toggle{font-size:.92rem}.live-ex-history-ico{width:26px;height:26px}}

/* Check-in premium controls */
.checkin-toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.checkin-toggle-card{display:flex;align-items:center;gap:.75rem;padding:.85rem .95rem;border:1px solid rgba(255,255,255,.10);border-radius:18px;background:linear-gradient(135deg,rgba(255,255,255,.055),rgba(255,255,255,.025));box-shadow:inset 0 1px 0 rgba(255,255,255,.06);cursor:pointer;transition:.18s ease}
.checkin-toggle-card:hover,.checkin-check-pill:hover{border-color:rgba(255,107,31,.45);background:rgba(255,107,31,.08)}
.checkin-toggle-card input,.checkin-check-pill input{width:1.15rem;height:1.15rem;accent-color:var(--brand-orange,#ff5a1f);flex:0 0 auto}
.checkin-toggle-icon{display:inline-grid;place-items:center;width:2.35rem;height:2.35rem;border-radius:14px;background:rgba(255,107,31,.13);box-shadow:inset 0 0 0 1px rgba(255,107,31,.22);font-size:1.15rem;flex:0 0 auto}
.checkin-toggle-main{display:grid;gap:.1rem;min-width:0}.checkin-toggle-main b{color:var(--text-main,#fff);font-weight:700}.checkin-toggle-main small{color:var(--text-muted,#a7a7b0);line-height:1.25}
.checkin-measure-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}
.checkin-check-pill{display:flex;align-items:center;gap:.55rem;padding:.65rem .75rem;border:1px solid rgba(255,255,255,.09);border-radius:15px;background:rgba(255,255,255,.035);cursor:pointer;font-size:.92rem;color:var(--text-main,#fff);transition:.18s ease}.checkin-check-pill:has(input:checked){border-color:rgba(255,107,31,.55);background:rgba(255,107,31,.13);box-shadow:0 0 0 1px rgba(255,107,31,.10)}
.checkin-section-label{font-weight:700;color:var(--text-main,#fff);margin:.25rem 0 .15rem;display:flex;align-items:center;gap:.4rem}.checkin-upload-card{display:grid;grid-template-columns:auto 1fr;gap:.75rem;align-items:center;padding:.85rem;border:1px dashed rgba(255,107,31,.45);border-radius:18px;background:rgba(255,107,31,.07)}.checkin-upload-card input{grid-column:1/-1;margin-top:.35rem}

.checkin-toggle-card:has(input:checked){border-color:rgba(255,107,31,.55);background:rgba(255,107,31,.10);box-shadow:0 0 0 1px rgba(255,107,31,.10), inset 0 1px 0 rgba(255,255,255,.06)}
html[data-theme="light"] .checkin-question-row{border-color:rgba(11,11,13,.10);background:rgba(11,11,13,.02)}
html[data-theme="light"] .checkin-toggle-card{border-color:rgba(11,11,13,.10);background:linear-gradient(135deg,rgba(11,11,13,.03),rgba(11,11,13,.015));box-shadow:inset 0 1px 0 rgba(255,255,255,.85)}
html[data-theme="light"] .checkin-toggle-card:hover,html[data-theme="light"] .checkin-check-pill:hover{border-color:rgba(255,107,31,.42);background:rgba(255,107,31,.08)}
html[data-theme="light"] .checkin-toggle-card:has(input:checked){background:rgba(255,107,31,.11);box-shadow:0 0 0 1px rgba(255,107,31,.10), inset 0 1px 0 rgba(255,255,255,.92)}
html[data-theme="light"] .checkin-toggle-main b,html[data-theme="light"] .checkin-check-pill,html[data-theme="light"] .checkin-section-label{color:var(--text,#0B0B0D)}
html[data-theme="light"] .checkin-toggle-main small{color:var(--muted,rgba(11,11,13,.66))}
html[data-theme="light"] .checkin-check-pill{border-color:rgba(11,11,13,.10);background:rgba(11,11,13,.03)}
.checkin-history-list{display:grid;gap:1rem}
.checkin-history-card{padding:1rem 1rem 1.05rem;border:1px solid rgba(255,255,255,.08);border-radius:22px;background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.02));box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}
.checkin-history-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;flex-wrap:wrap}
.checkin-history-date{font-weight:700;font-size:1.05rem;color:#fff}
.checkin-history-sub{font-size:.84rem;color:var(--muted,#a7a7b0);margin-top:.18rem}
.checkin-history-meta{display:flex;gap:.45rem;flex-wrap:wrap;align-items:center}
.checkin-history-section{margin-top:.9rem}
.checkin-history-section-title{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--brand-orange,#ff5a1f);margin-bottom:.45rem}
.checkin-answer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
.checkin-answer-item{padding:.8rem .9rem;border:1px solid rgba(255,255,255,.08);border-radius:18px;background:rgba(255,255,255,.03)}
.checkin-answer-question{font-weight:700;color:#fff;line-height:1.35;margin-bottom:.32rem}
.checkin-answer-text{color:var(--text-soft,#ececf3);line-height:1.55;white-space:pre-wrap;word-break:break-word}
.checkin-photo-grid{display:flex;gap:.65rem;flex-wrap:wrap}
.checkin-photo-link{display:block;width:84px;height:84px;border-radius:16px;overflow:hidden;border:1px solid rgba(255,255,255,.10);box-shadow:0 10px 22px rgba(0,0,0,.18)}
.checkin-photo-link img{width:100%;height:100%;object-fit:cover;display:block}
.checkin-note-box{padding:.8rem .9rem;border-radius:16px;background:rgba(255,107,31,.08);border:1px solid rgba(255,107,31,.18);color:var(--text-soft,#ececf3);line-height:1.55;white-space:pre-wrap}
html[data-theme="light"] .checkin-history-card{border-color:rgba(11,11,13,.10);background:linear-gradient(180deg,rgba(11,11,13,.02),rgba(11,11,13,.01));box-shadow:inset 0 1px 0 rgba(255,255,255,.92)}
html[data-theme="light"] .checkin-history-date,html[data-theme="light"] .checkin-answer-question{color:var(--text,#0B0B0D)}
html[data-theme="light"] .checkin-history-sub,html[data-theme="light"] .checkin-answer-text,html[data-theme="light"] .checkin-note-box{color:var(--text-soft,rgba(11,11,13,.92))}
html[data-theme="light"] .checkin-answer-item{border-color:rgba(11,11,13,.09);background:rgba(11,11,13,.025)}
html[data-theme="light"] .checkin-photo-link{border-color:rgba(11,11,13,.10);box-shadow:0 10px 22px rgba(11,11,13,.10)}
html[data-theme="light"] .checkin-note-box{background:rgba(255,107,31,.09);border-color:rgba(255,107,31,.18)}
@media(max-width:768px){.checkin-answer-grid{grid-template-columns:1fr}.checkin-history-card{padding:.9rem}.checkin-photo-link{width:72px;height:72px}}
.live-exercise-card--moved{outline:2px solid rgba(255,107,31,.65);box-shadow:0 0 0 6px rgba(255,107,31,.10),0 18px 50px rgba(0,0,0,.35)}
@media(max-width:768px){.checkin-toggle-grid,.checkin-measure-grid{grid-template-columns:1fr}.checkin-toggle-card{padding:.75rem}.checkin-check-pill{padding:.6rem .7rem}}


/* CoachPro patch: trainer daily-goals log on mobile — premium readable layout. */
@media (max-width: 576px){
  .cp-goals-log-row{
    display:grid;
    grid-template-columns:1fr;
    gap:.68rem;
    align-items:flex-start;
  }
  .cp-goals-log-left{
    justify-content:space-between;
    width:100%;
  }
  .cp-goals-log-badges{
    display:grid;
    grid-template-columns:1fr;
    gap:.5rem;
    justify-items:stretch;
    width:100%;
  }
  .cp-goals-badge-row.is-metrics{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
  .cp-goals-badge-row.is-goals{
    grid-template-columns:repeat(4, minmax(0, 1fr));
  }
  .cp-goals-badge{
    width:100%;
    min-width:0;
    min-height:2.15rem;
  }
  .cp-goals-badge.is-metric{
    min-height:2.15rem;
  }
}

/* CoachPro patch: readable body-circumference column in light theme. */
html[data-theme="light"] .measures-table .obwody-cell,
html[data-theme="light"] .measures-table .obwody-cell.text-muted,
html[data-theme="light"] .measures-table .obwody-cell .cell-clamp{
  color:var(--text,#0B0B0D) !important;
  opacity:1 !important;
}
html[data-theme="light"] .measures-table tbody td{
  color:var(--text,#0B0B0D);
}


/* CoachPro legal/mobile fix 2026-05-06:
   Legal pages must never shorten paragraphs or metadata with ellipsis on phones. */
body.legal-shell .card-brand,
body.legal-shell .inner-card{
  overflow: visible !important;
}
body.legal-shell .card-brand h1,
body.legal-shell .card-brand h2,
body.legal-shell .card-brand h3,
body.legal-shell .card-brand h4,
body.legal-shell .card-brand h5,
body.legal-shell .card-brand p,
body.legal-shell .card-brand li,
body.legal-shell .card-brand .small,
body.legal-shell .card-brand .text-muted,
body.legal-shell .inner-card .small,
body.legal-shell .inner-card .small.text-muted{
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  max-width: none !important;
  min-width: 0 !important;
  overflow-wrap: anywhere;
  word-break: normal;
}
body.legal-shell .card-brand .d-flex,
body.legal-shell .inner-card .d-flex{
  min-width: 0 !important;
}
body.legal-shell .card-brand code,
body.legal-shell .inner-card code{
  white-space: normal !important;
  overflow-wrap: anywhere;
}
@media (max-width: 576px){
  body.legal-shell .card-brand{ padding: 1rem !important; }
  body.legal-shell .inner-card{ padding: .9rem !important; }
  body.legal-shell .card-brand ul{ padding-left: 1.1rem; }
}

/* CoachPro iOS picker/tabbar fix 2026-05-06:
   On iPhone the tab dock stays visible. Select/date sheets render above it instead of forcing the dock to hide. */
.cp-select-sheet-backdrop{ z-index: 2140 !important; }
.cp-select-sheet{ z-index: 2141 !important; }
html.cp-platform-ios .cp-select-sheet,
html[data-cp-platform="ios"] .cp-select-sheet{
  z-index: 2141 !important;
  bottom: max(22px, calc(var(--safe-bottom, 0px) + 22px)) !important;
  max-height: min(72dvh, 620px);
}
html.cp-platform-ios body.cp-native-picker-open .cp-tabbar.cp-tabbar-glass,
html[data-cp-platform="ios"] body.cp-native-picker-open .cp-tabbar.cp-tabbar-glass{
  opacity: 1 !important;
  pointer-events: auto !important;
  transform: translateX(-50%) !important;
}
html.cp-platform-ios body.cp-native-picker-open .cp-tabbar-scroll-hint,
html[data-cp-platform="ios"] body.cp-native-picker-open .cp-tabbar-scroll-hint{
  opacity: 1 !important;
  pointer-events: auto !important;
}


/* CoachPro check-in photo preview + keyboard-aware mobile dock 2026-05-06 */
.cp-checkin-photo-modal{
  position:fixed;
  inset:0;
  z-index:2146;
  display:none;
  align-items:center;
  justify-content:center;
  padding:calc(16px + env(safe-area-inset-top,0px)) 14px calc(18px + env(safe-area-inset-bottom,0px));
  background:rgba(4,6,12,.82);
  -webkit-backdrop-filter:blur(18px) saturate(1.2);
  backdrop-filter:blur(18px) saturate(1.2);
}
.cp-checkin-photo-modal.is-open{display:flex;}
.cp-checkin-photo-sheet{
  width:min(760px,100%);
  max-height:calc(100dvh - 34px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  overflow:hidden;
  border-radius:26px;
  border:1px solid rgba(255,255,255,.14);
  background:linear-gradient(180deg,rgba(20,22,30,.97),rgba(10,11,15,.98));
  box-shadow:0 30px 90px rgba(0,0,0,.52), inset 0 1px 0 rgba(255,255,255,.08);
}
.cp-checkin-photo-head,.cp-checkin-photo-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem .95rem;border-bottom:1px solid rgba(255,255,255,.08)}
.cp-checkin-photo-title{font-weight:700;letter-spacing:-.02em;color:#fff;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cp-checkin-photo-close{width:40px;height:40px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06);color:#fff;font-weight:700;line-height:1;}
.cp-checkin-photo-stage{min-height:0;display:grid;place-items:center;padding:.75rem;background:radial-gradient(circle at 50% 0%,rgba(255,107,31,.14),transparent 38%),rgba(0,0,0,.18);overflow:auto;}
.cp-checkin-photo-stage img{max-width:100%;max-height:calc(100dvh - 190px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));object-fit:contain;border-radius:18px;box-shadow:0 18px 54px rgba(0,0,0,.38);}
.cp-checkin-photo-actions{border-top:1px solid rgba(255,255,255,.08);border-bottom:0;justify-content:flex-end;flex-wrap:wrap;background:rgba(255,255,255,.025)}
.cp-checkin-photo-actions .btn{border-radius:999px;}
body.cp-checkin-photo-open{overflow:hidden;}
body.cp-keyboard-open .cp-tabbar.cp-tabbar-glass,
body.cp-checkin-photo-open .cp-tabbar.cp-tabbar-glass{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
  transform:translateX(-50%) !important;
}
body.cp-keyboard-open .cp-tabbar-scroll-hint,
body.cp-checkin-photo-open .cp-tabbar-scroll-hint{
  opacity:0 !important;
  pointer-events:none !important;
}
html[data-theme="light"] .cp-checkin-photo-sheet{background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,250,252,.98));border-color:rgba(15,23,42,.12);box-shadow:0 30px 80px rgba(15,23,42,.22), inset 0 1px 0 rgba(255,255,255,.95)}
html[data-theme="light"] .cp-checkin-photo-title{color:rgba(15,23,42,.96)}
html[data-theme="light"] .cp-checkin-photo-close{background:rgba(15,23,42,.05);border-color:rgba(15,23,42,.12);color:rgba(15,23,42,.92)}
html[data-theme="light"] .cp-checkin-photo-stage{background:radial-gradient(circle at 50% 0%,rgba(255,107,31,.11),transparent 38%),rgba(15,23,42,.035)}
@media(max-width:576px){.cp-checkin-photo-sheet{border-radius:22px}.cp-checkin-photo-actions{justify-content:stretch}.cp-checkin-photo-actions .btn{width:100%}.cp-checkin-photo-stage img{max-height:calc(100dvh - 230px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));}}


/* CoachPro fix: legal documents must never truncate text on mobile.
   Applies directly to legal templates, not only to body.legal-shell. */
.legal-doc-page,
.legal-doc-page .card-brand,
.legal-doc-page .inner-card{
  max-width:100% !important;
}
.legal-doc-page h1,
.legal-doc-page h2,
.legal-doc-page h3,
.legal-doc-page h4,
.legal-doc-page h5,
.legal-doc-page h6,
.legal-doc-page p,
.legal-doc-page li,
.legal-doc-page div,
.legal-doc-page span,
.legal-doc-page small,
.legal-doc-page strong,
.legal-doc-page a,
.legal-doc-page .small,
.legal-doc-page .text-muted,
.legal-doc-page .fw-semibold{
  overflow:visible !important;
  text-overflow:clip !important;
  -webkit-line-clamp:unset !important;
  line-clamp:unset !important;
  white-space:normal !important;
  max-width:100% !important;
  min-width:0 !important;
  overflow-wrap:anywhere !important;
  word-break:normal !important;
}
.legal-doc-page .d-flex{
  min-width:0 !important;
}
.legal-doc-page ul,
.legal-doc-page ol{
  overflow:visible !important;
}
@media(max-width:768px){
  .legal-doc-page .d-flex{
    align-items:flex-start !important;
  }
  .legal-doc-page .text-muted.small,
  .legal-doc-page .small.text-muted,
  .legal-doc-page .inner-card .small{
    font-size:.88rem !important;
    line-height:1.45 !important;
  }
}

/* CoachPro fix: photo preview must never leave an invisible overlay blocking the app. */
.cp-checkin-photo-modal{
  touch-action:manipulation;
  pointer-events:auto;
}
.cp-checkin-photo-modal:not(.is-open){
  display:none !important;
  pointer-events:none !important;
}
.cp-checkin-photo-close,
.cp-checkin-photo-actions .btn,
.cp-checkin-photo-actions a{
  position:relative;
  z-index:2;
  touch-action:manipulation;
}
.cp-checkin-photo-stage{
  -webkit-overflow-scrolling:touch;
}


/* CoachPro 2026-05-07: hard hide the mobile tab dock above iOS/Android text keyboard. */
body.cp-editing-text .cp-tabbar.cp-tabbar-glass,
html.cp-keyboard-open body .cp-tabbar.cp-tabbar-glass,
body.cp-keyboard-open .cp-tabbar.cp-tabbar-glass{
  opacity:0 !important;
  pointer-events:none !important;
  visibility:hidden !important;
  transform:translateX(-50%) !important;
}
body.cp-editing-text .cp-tabbar-scroll-hint,
html.cp-keyboard-open body .cp-tabbar-scroll-hint,
body.cp-keyboard-open .cp-tabbar-scroll-hint{
  opacity:0 !important;
  pointer-events:none !important;
  visibility:hidden !important;
}

/* CoachPro 2026-05-07: safer check-in photo preview on iPhone/WebView. */
.cp-checkin-photo-modal{
  z-index:2147483000 !important;
  pointer-events:auto !important;
  touch-action:manipulation;
}
.cp-checkin-photo-modal:not(.is-open){
  display:none !important;
  pointer-events:none !important;
}
.cp-checkin-photo-sheet{
  position:relative;
  width:min(760px,calc(100vw - 28px)) !important;
}
.cp-checkin-photo-head{
  padding-right:4.25rem !important;
}
.cp-checkin-photo-title{
  white-space:normal !important;
  overflow-wrap:anywhere !important;
  line-height:1.2 !important;
  max-height:2.7em;
}
.cp-checkin-photo-floating-close{
  position:fixed;
  top:calc(12px + env(safe-area-inset-top,0px));
  right:calc(12px + env(safe-area-inset-right,0px));
  z-index:2147483001;
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.18);
  background:rgba(10,12,18,.94);
  color:#fff;
  font-size:1.7rem;
  font-weight:700;
  line-height:1;
  box-shadow:0 12px 34px rgba(0,0,0,.42);
  -webkit-tap-highlight-color:transparent;
}
.cp-checkin-photo-floating-close:active{
  transform:scale(.96);
}
.cp-checkin-photo-actions button{
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
html[data-theme="light"] .cp-checkin-photo-floating-close{
  background:rgba(255,255,255,.96);
  color:rgba(15,23,42,.96);
  border-color:rgba(15,23,42,.14);
}
@media(max-width:576px){
  .cp-checkin-photo-modal{
    align-items:center !important;
    padding:calc(72px + env(safe-area-inset-top,0px)) 12px calc(14px + env(safe-area-inset-bottom,0px)) !important;
  }
  .cp-checkin-photo-sheet{
    max-height:calc(100dvh - 92px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)) !important;
  }
  .cp-checkin-photo-head{
    padding:.85rem 1rem !important;
    padding-right:1rem !important;
  }
  .cp-checkin-photo-title{
    font-size:1rem !important;
  }
}


/* CoachPro 2026-05-07: hide all floating helper/scroll buttons when keyboard is open. */
body.cp-editing-text .cp-help-fab,
body.cp-editing-text .fab-scroll-top,
body.cp-keyboard-open .cp-help-fab,
body.cp-keyboard-open .fab-scroll-top,
html.cp-keyboard-open body .cp-help-fab,
html.cp-keyboard-open body .fab-scroll-top{
  opacity:0 !important;
  pointer-events:none !important;
  visibility:hidden !important;
  transform:translateY(28px) scale(.92) !important;
}


/* CoachPro 2026-05-07: photo preview must suppress the global page loader overlay. */
body.cp-checkin-photo-open .cp-native-top-loader,
body.cp-checkin-photo-open .cp-top-loader,
body.cp-checkin-photo-open .top-loader,
body.cp-checkin-photo-open .page-loader,
body.cp-checkin-photo-open .cp-route-loader{
  opacity:0 !important;
  pointer-events:none !important;
  visibility:hidden !important;
}
body.cp-checkin-photo-open{
  cursor:default;
}


/* CoachPro 2026-05-07: check-in photos now open a lightweight preview page, not a blocking modal. */
.checkin-photo-link{
  cursor:pointer;
  -webkit-tap-highlight-color: rgba(255,107,31,.18);
}


/* CoachPro: first-login native push prompt. Non-blocking; user action triggers OS permission. */
.cp-native-push-first-prompt{
  position:fixed;
  inset:auto 12px calc(16px + env(safe-area-inset-bottom,0px));
  z-index:2147482000;
  display:grid;
  place-items:center;
  pointer-events:none;
}
.cp-native-push-first-prompt__card{
  width:min(460px,100%);
  position:relative;
  padding:1rem;
  border-radius:24px;
  border:1px solid rgba(255,255,255,.14);
  background:linear-gradient(180deg,rgba(17,19,27,.98),rgba(8,9,14,.98));
  box-shadow:0 24px 80px rgba(0,0,0,.48), inset 0 1px 0 rgba(255,255,255,.06);
  color:#fff;
  pointer-events:auto;
}
.cp-native-push-first-prompt__x{
  position:absolute;
  top:.65rem;
  right:.65rem;
  width:34px;
  height:34px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.06);
  color:#fff;
  font-weight:700;
  line-height:1;
}
.cp-native-push-first-prompt__icon{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:15px;
  background:rgba(255,107,31,.14);
  margin-bottom:.65rem;
  font-size:1.25rem;
}
.cp-native-push-first-prompt__title{
  font-size:1.05rem;
  font-weight:700;
  margin-bottom:.25rem;
}
.cp-native-push-first-prompt__text{
  color:rgba(255,255,255,.72);
  font-size:.92rem;
  line-height:1.38;
  padding-right:1.7rem;
}
.cp-native-push-first-prompt__actions{
  display:flex;
  gap:.55rem;
  flex-wrap:wrap;
  margin-top:.85rem;
}
.cp-native-push-first-prompt__actions .btn{
  border-radius:999px;
}
html[data-theme="light"] .cp-native-push-first-prompt__card{
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,250,252,.98));
  border-color:rgba(15,23,42,.12);
  box-shadow:0 22px 70px rgba(15,23,42,.18), inset 0 1px 0 rgba(255,255,255,.92);
  color:rgba(15,23,42,.96);
}
html[data-theme="light"] .cp-native-push-first-prompt__text{
  color:rgba(15,23,42,.68);
}
html[data-theme="light"] .cp-native-push-first-prompt__x{
  background:rgba(15,23,42,.05);
  border-color:rgba(15,23,42,.14);
  color:rgba(15,23,42,.88);
}
@media(max-width:576px){
  .cp-native-push-first-prompt{
    inset:auto 10px calc(12px + env(safe-area-inset-bottom,0px));
  }
  .cp-native-push-first-prompt__card{
    border-radius:22px;
  }
  body.cp-keyboard-open .cp-native-push-first-prompt,
  body.cp-editing-text .cp-native-push-first-prompt{
    display:none !important;
  }
}

/* ============================================================
   NATIVE-FEEL: Page transition overlay
   Eliminates the white-flash between full-page navigations in
   Capacitor WebView. JS in base.html controls .cp-nav-active.
   ============================================================ */
#cp-nav-overlay{
  display:none;
  position:fixed;
  inset:0;
  z-index:99999;
  pointer-events:none;
  background:var(--bg, #0B0B0D);
  opacity:0;
  transition:opacity 0.12s ease;
}
#cp-nav-overlay.cp-nav-active{
  display:block;
  opacity:1;
  pointer-events:all;
}

/* ============================================================
   NATIVE-FEEL: Generic drawer skeleton (chat + notif + lists)
   Extends the existing .notif-skeleton pattern.
   ============================================================ */
.cp-skeleton-list{ display:flex; flex-direction:column; gap:10px; padding:4px 0; }
.cp-skeleton-row{
  border-radius:10px;
  overflow:hidden;
  position:relative;
  background:rgba(255,255,255,0.05);
}
html[data-theme="light"] .cp-skeleton-row{
  background:rgba(11,11,13,0.06);
}
.cp-skeleton-row::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,0.07) 50%,rgba(255,255,255,0) 100%);
  transform:translateX(-100%);
  animation:cp_shimmer 1.2s infinite;
}
html[data-theme="light"] .cp-skeleton-row::after{
  background:linear-gradient(90deg,rgba(11,11,13,0) 0%,rgba(11,11,13,0.07) 50%,rgba(11,11,13,0) 100%);
}
.cp-skeleton-row--sm{ height:44px; }
.cp-skeleton-row--md{ height:64px; }
.cp-skeleton-row--lg{ height:84px; }

/* ============================================================
   NATIVE-FEEL: Fade-in for dynamically loaded list items
   Add .cp-list-animate to a container and items get staggered entry.
   ============================================================ */
@keyframes cp_fade_slide_in{
  from{ opacity:0; transform:translateY(8px); }
  to{ opacity:1; transform:translateY(0); }
}
.cp-list-animate > *{
  animation:cp_fade_slide_in 0.18s ease both;
}
.cp-list-animate > *:nth-child(1){ animation-delay:0ms; }
.cp-list-animate > *:nth-child(2){ animation-delay:30ms; }
.cp-list-animate > *:nth-child(3){ animation-delay:55ms; }
.cp-list-animate > *:nth-child(4){ animation-delay:75ms; }
.cp-list-animate > *:nth-child(5){ animation-delay:90ms; }
.cp-list-animate > *:nth-child(n+6){ animation-delay:100ms; }

/* ============================================================
   NATIVE-FEEL: Tap highlight suppression (native apps have none)
   Only on elements that already have their own visual feedback.
   Does NOT affect selection states, :focus-visible, or custom active classes.
   ============================================================ */
.btn, .nav-link, .cp-drawer-item, [data-cp-tab]{
  -webkit-tap-highlight-color:transparent;
}

/* ============================================================
   BUTTON LOADING STATE
   .is-busy is added automatically by the form submit guard.
   .is-loading can be added manually for async operations.
   Hides the label and shows a centered spinner; preserves size.
   ============================================================ */
@keyframes cp_spin{ to{ transform:rotate(360deg); } }

.btn.is-busy,
.btn.is-loading{
  position:relative;
  pointer-events:none;
  opacity:0.75;
}
.btn.is-busy > *,
.btn.is-loading > *{
  visibility:hidden;
}
.btn.is-busy::after,
.btn.is-loading::after{
  content:'';
  position:absolute;
  top:50%;left:50%;
  width:1em;height:1em;
  margin:-0.5em 0 0 -0.5em;
  border:2px solid rgba(255,255,255,0.7);
  border-top-color:transparent;
  border-radius:50%;
  animation:cp_spin 0.6s linear infinite;
}
/* Dark text buttons (outline, secondary) need a dark spinner */
.btn-outline-brand.is-busy::after,
.btn-outline-secondary.is-busy::after,
.btn-outline-danger.is-busy::after,
.btn-outline-success.is-busy::after,
html[data-theme="light"] .btn.is-busy::after,
html[data-theme="light"] .btn.is-loading::after{
  border-color:rgba(0,0,0,0.45);
  border-top-color:transparent;
}

/* === v60: stable mobile calendars across /me, client detail and trainer calendar ===
   One consistent toolbar + 6-week grid prevents controls from jumping between months
   and keeps short month names like "maj" visible on phones. */
.me-cal,
.me-cal-wrap,
.me-cal-grid{
  max-width: 100%;
  min-width: 0;
}
.me-cal-grid{
  grid-template-rows: repeat(6, minmax(52px, auto));
}
.me-cal-month{
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}

@media (max-width: 767.98px){
  .me-cal-header{
    align-items: stretch;
    gap: 10px;
  }
  .me-cal-header > .min-w-0{
    flex: 0 0 100%;
    width: 100%;
  }

  .me-cal-nav,
  .me-cal-nav-stack,
  .tr-cal-nav,
  .trainer-calendar-page .tr-cal-nav{
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
  }

  /* Plain nav used in client_detail + trainer calendar */
  .me-cal-nav:not(.me-cal-nav-stack),
  .trainer-calendar-page .tr-cal-nav{
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr) 44px;
    gap: 8px !important;
    align-items: center;
  }

  /* Inner row used in /me below the booking button */
  .me-cal-nav-row{
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr) 44px;
    gap: 8px !important;
    align-items: center;
    width: 100%;
  }

  .me-cal-nav:not(.me-cal-nav-stack) .me-cal-btn,
  .trainer-calendar-page .tr-cal-nav .me-cal-btn,
  .me-cal-nav-row .me-cal-btn{
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    min-height: 44px !important;
    padding: 0 !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
  }

  .me-cal-nav:not(.me-cal-nav-stack) .me-cal-month,
  .trainer-calendar-page .tr-cal-nav .me-cal-month,
  .me-cal-nav-row .me-cal-month{
    width: 100% !important;
    min-width: 0 !important;
    min-height: 44px !important;
    padding: 0 10px !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-size: .95rem;
    white-space: nowrap;
  }

  .me-cal-nav:not(.me-cal-nav-stack) #trCalToday,
  .trainer-calendar-page #trCalToday,
  .me-cal-nav-row #meCalToday{
    grid-column: 1 / -1;
    width: 100% !important;
    min-width: 0 !important;
    height: 42px !important;
    min-height: 42px !important;
    padding: 0 12px !important;
  }

  .me-cal-weekdays{
    padding: 8px 6px !important;
    font-size: 10px !important;
    letter-spacing: .18px;
  }
  .me-cal-grid{
    gap: 3px !important;
    padding: 6px !important;
    grid-template-rows: repeat(6, minmax(44px, 1fr));
  }
  .me-cal-cell,
  .me-cal-cell.is-empty{
    min-height: 44px !important;
    padding: 6px 5px !important;
    border-radius: 12px !important;
  }
  .me-cal-daynum{
    font-size: 12px !important;
  }
  .me-cal-badge{
    font-size: 10px !important;
    padding: 1px 6px !important;
  }
  .me-cal-side{
    padding: 10px !important;
  }
  .me-cal-wrap{
    gap: 10px !important;
  }
}

@media (max-width: 380px){
  .me-cal-nav:not(.me-cal-nav-stack),
  .trainer-calendar-page .tr-cal-nav,
  .me-cal-nav-row{
    grid-template-columns: 40px minmax(0, 1fr) 40px;
    gap: 6px !important;
  }
  .me-cal-nav:not(.me-cal-nav-stack) .me-cal-btn,
  .trainer-calendar-page .tr-cal-nav .me-cal-btn,
  .me-cal-nav-row .me-cal-btn{
    width: 40px !important;
    min-width: 40px !important;
    height: 40px !important;
    min-height: 40px !important;
  }
  .me-cal-nav:not(.me-cal-nav-stack) .me-cal-month,
  .trainer-calendar-page .tr-cal-nav .me-cal-month,
  .me-cal-nav-row .me-cal-month{
    min-height: 40px !important;
    font-size: .9rem;
    padding: 0 8px !important;
  }
  .me-cal-grid{
    grid-template-rows: repeat(6, minmax(40px, 1fr));
  }
  .me-cal-cell,
  .me-cal-cell.is-empty{
    min-height: 40px !important;
    padding: 5px 4px !important;
  }
}


/* CoachPro 2026-05-09 final: keep LIVE set sheet stable while keyboard opens.
   Only the action bar is lifted; the whole sheet no longer jumps upward. */
.set-sheet{
  bottom: calc(env(safe-area-inset-bottom, 0px) + 10px) !important;
  max-height: calc(var(--cp-sheet-vh, 100svh) - env(safe-area-inset-bottom, 0px) - 20px) !important;
}
.set-sheet-actions{
  transform: translateY(calc(-1 * var(--cp-setsheet-action-lift, 0px))) !important;
}
.set-sheet-scroll{
  padding-bottom: calc(8px + var(--cp-setsheet-action-lift, 0px)) !important;
  scroll-padding-bottom: calc(18px + var(--cp-setsheet-action-lift, 0px)) !important;
}

/* /me and client_detail: allow scrolling past the fixed bottom tab bar so page footers remain visible. */
@media (max-width:1180px){
  .cp-tabs-scope[data-cp-tabs="me"],
  .cp-tabs-scope[data-cp-tabs="client"]{
    padding-bottom: calc(150px + env(safe-area-inset-bottom, 0px)) !important;
    scroll-margin-bottom: calc(150px + env(safe-area-inset-bottom, 0px)) !important;
  }
  .cp-tabs-scope[data-cp-tabs="me"]::after,
  .cp-tabs-scope[data-cp-tabs="client"]::after{
    content:"";
    display:block;
    height:calc(44px + env(safe-area-inset-bottom, 0px));
  }
}

/* CoachPro 2026-05-09 redo: LIVE add-set sheet without jumps or blank space.
   The whole sheet is anchored just above the keyboard; buttons stay in the normal
   document flow, so there is no transformed action bar leaving an empty hole. */
.set-sheet{
  bottom: calc(env(safe-area-inset-bottom, 0px) + 10px + var(--cp-setsheet-kb, 0px)) !important;
  height: auto !important;
  max-height: calc(var(--cp-setsheet-visible-h, 100svh) - 18px) !important;
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
}
.set-sheet-form{
  flex: 0 1 auto !important;
  min-height: 0 !important;
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
}
.set-sheet-scroll{
  flex: 0 1 auto !important;
  min-height: 0 !important;
  max-height: calc(var(--cp-setsheet-visible-h, 100svh) - 218px) !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch !important;
  padding-bottom: 8px !important;
  scroll-padding-bottom: 18px !important;
}
.set-sheet-actions{
  position: relative !important;
  flex: 0 0 auto !important;
  transform: none !important;
  margin-top: 8px !important;
  padding-top: 10px !important;
  padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)) !important;
  background: rgba(10,10,12,.96) !important;
}
body.cp-setsheet-keyboard-open .set-sheet{
  transition: opacity .12s ease !important;
}
body.cp-setsheet-keyboard-open .set-sheet-actions{
  transform: none !important;
}

/* Android: picker/select overlays should not hide the CoachPro tab dock. */
html[data-cp-platform="android"] body.cp-native-picker-open .cp-tabbar.cp-tabbar-glass,
html.cp-platform-android body.cp-native-picker-open .cp-tabbar.cp-tabbar-glass{
  opacity: 1 !important;
  pointer-events: auto !important;
  transform: translateX(-50%) !important;
}
html[data-cp-platform="android"] body.cp-native-picker-open .cp-tabbar-scroll-hint,
html.cp-platform-android body.cp-native-picker-open .cp-tabbar-scroll-hint{
  opacity: 1 !important;
  pointer-events: auto !important;
}

/* === CoachPro 2026-05-09 professional final: stable LIVE set sheet + footer safe area ===
   Main rule: keyboard must not push the whole add-set panel twice. WebViews already
   resize/shift the visual viewport, so the sheet stays anchored to the visible bottom,
   while only the fields area becomes scrollable. */
.set-sheet{
  bottom: calc(env(safe-area-inset-bottom, 0px) + 10px) !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: min(86svh, calc(var(--cp-sheet-vh, 100svh) - 20px)) !important;
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
}
.set-sheet-form{
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
  flex: 0 1 auto !important;
  overflow: hidden !important;
}
.set-sheet-scroll{
  min-height: 0 !important;
  flex: 0 1 auto !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  padding-bottom: 8px !important;
  scroll-padding-top: 18px !important;
  scroll-padding-bottom: 24px !important;
  max-height: min(430px, calc(var(--cp-sheet-vh, 100svh) - 210px)) !important;
}
.set-sheet-actions{
  position: relative !important;
  flex: 0 0 auto !important;
  transform: none !important;
  margin-top: 8px !important;
  padding-top: 10px !important;
  padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)) !important;
  background: rgba(10,10,12,.96) !important;
  z-index: 3 !important;
}
body.cp-setsheet-keyboard-open .set-sheet{
  /* Smaller clamp with keyboard open: the panel stays lower and readable instead of
     jumping to the status bar. */
  bottom: calc(env(safe-area-inset-bottom, 0px) + 8px) !important;
  max-height: min(540px, calc(var(--cp-setsheet-visible-h, 100svh) - 74px)) !important;
}
body.cp-setsheet-keyboard-open .set-sheet-scroll{
  max-height: min(330px, calc(var(--cp-setsheet-visible-h, 100svh) - 250px)) !important;
}
@media (max-height: 720px){
  body.cp-setsheet-keyboard-open .set-sheet{
    max-height: min(500px, calc(var(--cp-setsheet-visible-h, 100svh) - 58px)) !important;
  }
  body.cp-setsheet-keyboard-open .set-sheet-scroll{
    max-height: min(300px, calc(var(--cp-setsheet-visible-h, 100svh) - 230px)) !important;
  }
}
@media (max-height: 620px){
  body.cp-setsheet-keyboard-open .set-sheet-header,
  body.cp-setsheet-keyboard-open .set-sheet-handle{
    display:none !important;
  }
  body.cp-setsheet-keyboard-open .set-sheet{
    max-height: calc(var(--cp-setsheet-visible-h, 100svh) - 34px) !important;
  }
  body.cp-setsheet-keyboard-open .set-sheet-scroll{
    max-height: calc(var(--cp-setsheet-visible-h, 100svh) - 170px) !important;
  }
}

/* Light theme: override the !important dark backgrounds defined for the LIVE add-set
   sheet above. Without this, the actions strip with "Dodaj serię" / "+2 serie" stays
   dark on light theme, even though the buttons themselves recolor correctly. */
:root[data-theme="light"] .set-sheet{
  background: rgba(255,255,255,.96) !important;
  border: 1px solid rgba(0,0,0,.10) !important;
  box-shadow: 0 22px 70px rgba(0,0,0,.18) !important;
  color: var(--text, #0f172a);
}
:root[data-theme="light"] .set-sheet-actions{
  background: rgba(255,255,255,.96) !important;
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}
:root[data-theme="light"] .set-sheet-handle{
  background: rgba(0,0,0,.12) !important;
}
:root[data-theme="light"] .set-sheet-saving-note{
  color: var(--text, #0f172a);
}

/* Slide-from-bottom polish for ALL bottom sheets/offcanvases.
   Bootstrap's .offcanvas-bottom already animates, but its default ease feels abrupt;
   use the same iOS-style cubic-bezier as .set-sheet so the motion is consistent. */
.offcanvas.offcanvas-bottom{
  transition: transform .32s cubic-bezier(.32,.72,.24,1) !important;
  will-change: transform;
}

/* Give /me and client_detail enough real scroll tail for the floating glass tab dock.
   Padding on the scope alone was not enough on WebView; add a real pseudo-spacer and
   safe padding to the page container. */
@media (max-width:1180px){
  .cp-tabs-scope[data-cp-tabs="me"],
  .cp-tabs-scope[data-cp-tabs="client"]{
    padding-bottom: calc(220px + env(safe-area-inset-bottom, 0px)) !important;
    margin-bottom: 0 !important;
  }
  .cp-tabs-scope[data-cp-tabs="me"]::after,
  .cp-tabs-scope[data-cp-tabs="client"]::after{
    content:"" !important;
    display:block !important;
    height:calc(115px + env(safe-area-inset-bottom, 0px)) !important;
    flex:0 0 auto !important;
  }
  body:has(.cp-tabs-scope[data-cp-tabs="me"]),
  body:has(.cp-tabs-scope[data-cp-tabs="client"]){
    padding-bottom: calc(118px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* CoachPro 2026-05-09: global footer safe zone for floating ? / ↑ buttons + glass tab dock.
   The fixed help/scroll buttons sit above the bottom navigation, so the footer needs
   its own real bottom padding on every authenticated mobile tab page, not only /me. */
@media (max-width:1180px){
  html.cp-has-glass-dock .footer-brand,
  body.cp-has-glass-dock .footer-brand,
  body:has(.cp-tabbar.cp-tabbar-glass) .footer-brand{
    padding-bottom: calc(188px + env(safe-area-inset-bottom, 0px)) !important;
  }
  html.cp-has-glass-dock .cp-help-fab,
  body.cp-has-glass-dock .cp-help-fab,
  html.cp-has-glass-dock .fab-scroll-top,
  body.cp-has-glass-dock .fab-scroll-top,
  body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    bottom: calc(122px + env(safe-area-inset-bottom, 0px)) !important;
  }
  .cp-tabs-scope[data-cp-tabs="me"],
  .cp-tabs-scope[data-cp-tabs="client"]{
    padding-bottom: calc(245px + env(safe-area-inset-bottom, 0px)) !important;
  }
}


/* === CoachPro 2026-05-09: final footer spacing correction ===
   Earlier fixes added a large page/scope spacer on /me and client_detail. That made
   the footer appear far too high with an empty area below it. Keep the footer itself
   responsible for the safe bottom zone, and remove extra page spacers. */
@media (max-width:1180px){
  .cp-tabs-scope[data-cp-tabs="me"],
  .cp-tabs-scope[data-cp-tabs="client"]{
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
  }
  .cp-tabs-scope[data-cp-tabs="me"]::after,
  .cp-tabs-scope[data-cp-tabs="client"]::after{
    content:"" !important;
    display:block !important;
    height:0 !important;
  }
  body:has(.cp-tabs-scope[data-cp-tabs="me"]),
  body:has(.cp-tabs-scope[data-cp-tabs="client"]){
    padding-bottom: calc(var(--safe-bottom, env(safe-area-inset-bottom, 0px)) + 14px) !important;
  }

  /* Reserve one clean zone below footer content for the floating ? / ↑ buttons and
     the glass tab dock. This prevents overlap on all authenticated mobile pages
     without creating the huge blank footer gap visible on /me/client_detail. */
  html.cp-has-glass-dock .footer-brand,
  body.cp-has-glass-dock .footer-brand,
  body:has(.cp-tabbar.cp-tabbar-glass) .footer-brand{
    padding-bottom: calc(210px + env(safe-area-inset-bottom, 0px)) !important;
  }
  html.cp-has-glass-dock .cp-help-fab,
  body.cp-has-glass-dock .cp-help-fab,
  html.cp-has-glass-dock .fab-scroll-top,
  body.cp-has-glass-dock .fab-scroll-top,
  body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    bottom: calc(118px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* === CoachPro 2026-05-09: footer/FAB spacing real fix ===
   The footer should sit just above the floating ? / ↑ buttons and the glass dock,
   not hundreds of pixels above them. Keep one compact safe zone, and prevent the
   footer links from running underneath the two circular FABs on narrow screens. */
@media (max-width:1180px){
  html.cp-has-glass-dock .footer-brand,
  body.cp-has-glass-dock .footer-brand,
  body:has(.cp-tabbar.cp-tabbar-glass) .footer-brand{
    padding-top: 10px !important;
    padding-bottom: calc(164px + env(safe-area-inset-bottom, 0px)) !important;
    margin-bottom: 0 !important;
  }

  html.cp-has-glass-dock .footer-brand .container,
  body.cp-has-glass-dock .footer-brand .container,
  body:has(.cp-tabbar.cp-tabbar-glass) .footer-brand .container{
    row-gap: .38rem !important;
    align-items: flex-start !important;
  }

  html.cp-has-glass-dock .footer-links-scroll,
  body.cp-has-glass-dock .footer-links-scroll,
  body:has(.cp-tabbar.cp-tabbar-glass) .footer-links-scroll{
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: auto !important;
    padding-left: 62px !important;
    padding-right: 62px !important;
    box-sizing: border-box !important;
    scroll-padding-left: 62px !important;
    scroll-padding-right: 62px !important;
  }

  html.cp-has-glass-dock .footer-links,
  body.cp-has-glass-dock .footer-links,
  body:has(.cp-tabbar.cp-tabbar-glass) .footer-links{
    width: max-content !important;
    max-width: none !important;
    flex-wrap: nowrap !important;
  }

  html.cp-has-glass-dock .cp-help-fab,
  body.cp-has-glass-dock .cp-help-fab,
  body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  html.cp-has-glass-dock .fab-scroll-top,
  body.cp-has-glass-dock .fab-scroll-top,
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    bottom: calc(104px + env(safe-area-inset-bottom, 0px)) !important;
    width: 44px !important;
    height: 44px !important;
    z-index: 1335 !important;
  }

  .cp-tabs-scope[data-cp-tabs="me"],
  .cp-tabs-scope[data-cp-tabs="client"]{
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
  }
  .cp-tabs-scope[data-cp-tabs="me"]::after,
  .cp-tabs-scope[data-cp-tabs="client"]::after{
    height: 0 !important;
  }
}

/* === CoachPro 2026-05-09: /me + client_detail footer lower + clean FABs ===
   Fixes mobile footer position after earlier safe-area experiments:
   - keep footer close to the bottom dock/FABs instead of floating too high,
   - remove artificial side padding on footer links,
   - make the scroll-up FAB visually match the help FAB. */
@media (max-width:1180px){
  html.cp-has-glass-dock .footer-brand,
  body.cp-has-glass-dock .footer-brand,
  body:has(.cp-tabbar.cp-tabbar-glass) .footer-brand{
    padding-top: 10px !important;
    padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px)) !important;
    margin-bottom: 0 !important;
  }

  /* /me and client_detail must not add their own extra tail under the footer. */
  body:has(.cp-tabs-scope[data-cp-tabs="me"]) .footer-brand,
  body:has(.cp-tabs-scope[data-cp-tabs="client"]) .footer-brand{
    padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px)) !important;
  }
  .cp-tabs-scope[data-cp-tabs="me"],
  .cp-tabs-scope[data-cp-tabs="client"]{
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
  }
  .cp-tabs-scope[data-cp-tabs="me"]::after,
  .cp-tabs-scope[data-cp-tabs="client"]::after{
    content:"" !important;
    display:block !important;
    height:0 !important;
  }

  /* Remove the ugly left/right footer link gutters added to avoid the FABs. */
  html.cp-has-glass-dock .footer-links-scroll,
  body.cp-has-glass-dock .footer-links-scroll,
  body:has(.cp-tabbar.cp-tabbar-glass) .footer-links-scroll{
    width:100% !important;
    max-width:100% !important;
    padding-left:0 !important;
    padding-right:0 !important;
    scroll-padding-left:0 !important;
    scroll-padding-right:0 !important;
    overflow-x:auto !important;
  }
  html.cp-has-glass-dock .footer-links,
  body.cp-has-glass-dock .footer-links,
  body:has(.cp-tabbar.cp-tabbar-glass) .footer-links{
    width:max-content !important;
    max-width:none !important;
    flex-wrap:nowrap !important;
  }

  /* Place helper buttons in one stable row above the glass tab dock. */
  html.cp-has-glass-dock .cp-help-fab,
  body.cp-has-glass-dock .cp-help-fab,
  body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  html.cp-has-glass-dock .fab-scroll-top,
  body.cp-has-glass-dock .fab-scroll-top,
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    bottom: calc(104px + env(safe-area-inset-bottom, 0px)) !important;
    width:44px !important;
    height:44px !important;
    z-index:1335 !important;
  }

  /* Scroll-up button should look like the ? help button. */
  html.cp-has-glass-dock .fab-scroll-top,
  body.cp-has-glass-dock .fab-scroll-top,
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    border:1px solid rgba(255,255,255,.16) !important;
    background:rgba(20,20,25,.86) !important;
    color:var(--text) !important;
    box-shadow:0 12px 40px rgba(0,0,0,.55) !important;
    backdrop-filter:blur(10px) !important;
    -webkit-backdrop-filter:blur(10px) !important;
  }
  html[data-theme="light"].cp-has-glass-dock .fab-scroll-top,
  html[data-theme="light"] body.cp-has-glass-dock .fab-scroll-top,
  html[data-theme="light"] body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    background:rgba(255,255,255,.92) !important;
    border:1px solid rgba(20,20,25,.14) !important;
    color:rgba(10,10,12,.92) !important;
    box-shadow:0 12px 30px rgba(0,0,0,.18) !important;
  }
}

/* === Unify floating help/up buttons on mobile glass-dock pages (/me, /client_detail).
   Use clearly visible transparency (.65 alpha) so the glass effect is perceptible. */
@media (max-width:1180px){
  html.cp-has-glass-dock .cp-help-fab,
  body.cp-has-glass-dock .cp-help-fab,
  body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  html.cp-has-glass-dock .fab-scroll-top,
  body.cp-has-glass-dock .fab-scroll-top,
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    background: rgba(20,20,25,.65) !important;
    border: 1px solid rgba(255,255,255,.22) !important;
    color: var(--text) !important;
    box-shadow: 0 12px 40px rgba(0,0,0,.55) !important;
    backdrop-filter: blur(16px) !important;
    -webkit-backdrop-filter: blur(16px) !important;
  }

  html.cp-has-glass-dock .fab-scroll-top:not(.show),
  body.cp-has-glass-dock .fab-scroll-top:not(.show),
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top:not(.show){
    opacity: 0 !important;
    pointer-events: none !important;
  }

  html.cp-has-glass-dock .fab-scroll-top.show,
  body.cp-has-glass-dock .fab-scroll-top.show,
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top.show{
    opacity: 1 !important;
    pointer-events: auto !important;
  }

  html[data-theme="light"].cp-has-glass-dock .cp-help-fab,
  html[data-theme="light"] body.cp-has-glass-dock .cp-help-fab,
  html[data-theme="light"] body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  html[data-theme="light"].cp-has-glass-dock .fab-scroll-top,
  html[data-theme="light"] body.cp-has-glass-dock .fab-scroll-top,
  html[data-theme="light"] body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    background: rgba(255,255,255,.75) !important;
    border: 1px solid rgba(20,20,25,.14) !important;
    color: rgba(10,10,12,.92) !important;
    box-shadow: 0 12px 30px rgba(0,0,0,.18) !important;
    backdrop-filter: blur(16px) !important;
    -webkit-backdrop-filter: blur(16px) !important;
  }
}

/* CoachPro v63: exercises filters + compact premium forms (no footer changes) */
.cp-exercise-segment{
  --seg-bg: rgba(255,255,255,.035);
  --seg-border: rgba(255,255,255,.10);
  display:inline-flex;
  align-items:center;
  gap: 4px;
  padding: 5px;
  border: 1px solid var(--seg-border);
  border-radius: 18px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.018)),
    var(--seg-bg);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 12px 34px rgba(0,0,0,.20);
}
.cp-exercise-segment-btn{
  appearance:none;
  border:0;
  min-height: 42px;
  padding: .55rem .8rem .55rem .95rem;
  border-radius: 14px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.58rem;
  color: var(--muted);
  background: transparent;
  font-weight:700;
  letter-spacing: .01em;
  line-height: 1;
  cursor:pointer;
  transition: background-color .16s ease, color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.cp-exercise-segment-btn strong{
  min-width: 2.1em;
  padding: .32rem .48rem;
  border-radius: 999px;
  text-align:center;
  font-size: .82rem;
  color: var(--text);
  background: rgba(255,255,255,.075);
  border: 1px solid rgba(255,255,255,.08);
  font-variant-numeric: tabular-nums;
}
.cp-exercise-segment-btn.active{
  color:#fff;
  background:
    linear-gradient(135deg, rgba(255,101,31,.98), rgba(230,57,26,.94));
  box-shadow: 0 12px 26px rgba(230,78,26,.28), inset 0 1px 0 rgba(255,255,255,.18);
}
.cp-exercise-segment-btn.active strong{
  color:#fff;
  background: rgba(0,0,0,.18);
  border-color: rgba(255,255,255,.16);
}
@media (hover:hover) and (pointer:fine){
  .cp-exercise-segment-btn:not(.active):hover{
    color: var(--text);
    background: rgba(255,255,255,.055);
  }
}
@media (max-width: 575.98px){
  .cp-exercise-segment{ display:flex; width:100%; }
  .cp-exercise-segment-btn{ flex:1 1 0; }
}
html[data-theme="light"] .cp-exercise-segment{
  --seg-bg: rgba(11,11,13,.035);
  --seg-border: rgba(11,11,13,.10);
}
html[data-theme="light"] .cp-exercise-segment-btn strong{
  background: rgba(11,11,13,.055);
  border-color: rgba(11,11,13,.08);
}

.cp-premium-form .form-label,
.card-brand .cp-premium-form .form-label{
  margin-bottom:.36rem;
  font-size:.82rem;
  font-weight:700;
  letter-spacing:.015em;
  color: var(--muted) !important;
}
.cp-premium-form .form-control,
.cp-premium-form .form-select,
.cp-premium-form textarea,
.cp-exercise-create-form .input-brand{
  min-height: 46px;
  border-radius: 16px !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.018)),
    var(--input-bg) !important;
  border-color: rgba(255,255,255,.115) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.045);
}
.cp-premium-form .form-control:focus,
.cp-premium-form .form-select:focus,
.cp-premium-form textarea:focus{
  border-color: rgba(255,106,31,.75) !important;
  box-shadow: 0 0 0 .18rem rgba(255,106,31,.15), inset 0 1px 0 rgba(255,255,255,.05) !important;
}
.cp-premium-form .form-text{
  margin-top:.35rem;
  color: var(--muted) !important;
  opacity:.9;
}
.cp-exercise-create-form{ row-gap:.65rem !important; }
.cp-dist-toggle-card{
  border:1px solid rgba(255,255,255,.10);
  border-radius: 18px;
  padding: .78rem .85rem;
  background: linear-gradient(145deg, rgba(255,255,255,.055), rgba(255,255,255,.02));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.045);
}
.cp-dist-toggle-card .fw-semibold{ font-size:.96rem; }
.cp-dist-toggle-card .small{ line-height:1.28; }
.cp-dist-toggle-card .form-check-input{
  width: 2.55em;
  height: 1.35em;
  border-color: rgba(255,255,255,.20);
  background-color: rgba(255,255,255,.13);
  cursor:pointer;
}
.cp-dist-toggle-card .form-check-input:checked{
  background-color: var(--orange2);
  border-color: rgba(255,106,31,.80);
  box-shadow: 0 0 0 .18rem rgba(255,106,31,.12);
}
#distBox .inner-card{
  padding: .85rem !important;
  border-radius: 18px;
  background:
    radial-gradient(circle at top right, rgba(255,106,31,.10), transparent 38%),
    rgba(255,255,255,.026) !important;
}
#distBox .inner-card > .d-flex:first-child{
  margin-bottom:.45rem !important;
}
.dist-grid{
  gap: 6px !important;
  max-height: 280px;
  overflow:auto;
  padding-right: 2px;
}
.dist-row{
  grid-template-columns: minmax(86px, 118px) minmax(0, 1fr) 44px !important;
  gap: 8px !important;
  min-height: 38px;
  padding: .36rem .48rem;
  border: 1px solid rgba(255,255,255,.075);
  border-radius: 13px;
  background: rgba(255,255,255,.028);
}
.dist-row .dist-name{
  font-size: .82rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dist-row .dist-val{
  font-size:.78rem;
  font-weight:700;
  color: var(--text) !important;
  font-variant-numeric: tabular-nums;
}
.dist-row.is-primary{
  border-color: rgba(255,106,31,.30);
  background: linear-gradient(90deg, rgba(255,106,31,.12), rgba(255,255,255,.025));
}
.dist-row.is-primary .dist-name{ color: var(--orange2); }
.dist-row .form-range{ height: 1rem; padding:0; }
.dist-row input[type="range"]::-webkit-slider-runnable-track,
.dist-row .form-range::-webkit-slider-runnable-track{ height: 4px; }
.dist-row input[type="range"]::-webkit-slider-thumb,
.dist-row .form-range::-webkit-slider-thumb{
  width: 15px;
  height: 15px;
  margin-top: -5.5px;
  box-shadow: 0 0 0 3px rgba(255,106,31,.16);
}
.cp-exercise-add-feedback{
  display:none;
  border-radius: 14px;
  padding:.65rem .8rem;
  font-weight:700;
  font-size:.9rem;
  border:1px solid transparent;
}
.cp-exercise-add-feedback.is-ok{
  display:block;
  color:#d8ffe5;
  background: rgba(24,179,91,.13);
  border-color: rgba(24,179,91,.26);
}
.cp-exercise-add-feedback.is-error{
  display:block;
  color:#ffe1e1;
  background: rgba(255,59,72,.13);
  border-color: rgba(255,59,72,.30);
}
.cp-exercise-submit{ position:relative; overflow:hidden; }
.cp-submit-spinner{
  display:none;
  width: 1rem;
  height: 1rem;
  margin-left:.55rem;
  border-radius:50%;
  border:2px solid rgba(255,255,255,.45);
  border-top-color:#fff;
  animation: cpSpin .75s linear infinite;
}
.cp-exercise-create-form.is-submitting .cp-submit-spinner{ display:inline-block; vertical-align:-.18em; }
@keyframes cpSpin{ to{ transform: rotate(360deg); } }
.cp-exercise-added-row.cp-just-added{
  animation: cpAddedPulse 1.55s ease both;
}
@keyframes cpAddedPulse{
  0%{ box-shadow: 0 0 0 0 rgba(255,106,31,.35); border-color: rgba(255,106,31,.70) !important; }
  100%{ box-shadow: 0 0 0 18px rgba(255,106,31,0); }
}
.cp-live-added-pill{
  display:inline-flex;
  align-items:center;
  border-radius: 999px;
  padding:.34rem .55rem;
  color: var(--orange2);
  background: rgba(255,106,31,.12);
  border:1px solid rgba(255,106,31,.26);
  font-size:.78rem;
  font-weight:700;
  white-space:nowrap;
}
@media (max-width: 575.98px){
  .dist-grid{ max-height: 230px; }
  .dist-row{ grid-template-columns: 88px minmax(0,1fr) 40px !important; }
  .dist-row .dist-name{ font-size:.78rem; }
  #distBox .inner-card{ padding:.72rem !important; }
}
html[data-theme="light"] .cp-premium-form .form-control,
html[data-theme="light"] .cp-premium-form .form-select,
html[data-theme="light"] .cp-premium-form textarea,
html[data-theme="light"] .cp-exercise-create-form .input-brand{
  background: linear-gradient(180deg, rgba(255,255,255,.86), rgba(255,255,255,.70)) !important;
  border-color: rgba(11,11,13,.10) !important;
}
html[data-theme="light"] .cp-dist-toggle-card,
html[data-theme="light"] .dist-row{
  border-color: rgba(11,11,13,.08);
  background: rgba(11,11,13,.026);
}

/* CoachPro v63+: premium custom-exercise blocks reused in /exercises, day_detail and session_live */
.cp-custom-exercise-card{
  position:relative;
  overflow:hidden;
}
.cp-custom-exercise-card::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:1px;
  background:linear-gradient(90deg, transparent, rgba(255,106,31,.45), transparent);
  pointer-events:none;
}
.cp-custom-exercise-head{
  margin-bottom:.65rem;
  padding-bottom:.55rem;
  border-bottom:1px solid rgba(255,255,255,.07);
}
.cp-custom-exercise-head h5{
  font-weight:700;
  letter-spacing:.005em;
}
.cp-dist-box .inner-card,
#sessionDistBox .inner-card,
#distBox .inner-card{
  padding:.82rem !important;
  border-radius:18px !important;
  background:
    radial-gradient(circle at top right, rgba(255,106,31,.10), transparent 38%),
    rgba(255,255,255,.026) !important;
}
.cp-dist-box .dist-grid,
#sessionDistBox .dist-grid,
#distBox .dist-grid{
  max-height:260px;
  overflow:auto;
  padding-right:2px;
}
.cp-dist-footer{
  padding-top:.3rem;
  border-top:1px solid rgba(255,255,255,.07);
}
.cp-dist-footer .btn{
  border-radius:999px;
  padding:.25rem .65rem;
  font-weight:700;
}
@media (max-width:575.98px){
  .cp-custom-exercise-head{ margin-bottom:.5rem; }
  .cp-dist-box .dist-grid,
  #sessionDistBox .dist-grid,
  #distBox .dist-grid{ max-height:220px; }
}

/* CoachPro v63.1: exercise filters + premium add-exercise blocks (no footer changes) */
.cp-exercise-list-head{
  align-items:flex-start;
  padding-bottom:.35rem;
}
.cp-exercise-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
  margin-top:1rem;
  padding:.6rem;
  border:1px solid rgba(255,255,255,.075);
  border-radius:22px;
  background:
    radial-gradient(circle at 15% 0%, rgba(255,106,31,.10), transparent 42%),
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.018));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.055), 0 16px 38px rgba(0,0,0,.18);
}
.cp-exercise-toolbar .cp-toolbar-search{
  flex:1 1 320px;
  max-width:470px;
  margin-left:auto;
}
.cp-exercise-toolbar .cp-toolbar-search .input-brand{
  min-height:40px;
  border-radius:999px !important;
  padding-left:1rem;
}
.cp-exercise-toolbar .cp-toolbar-search .btn{
  min-height:40px;
  border-radius:999px;
  padding-inline:1rem;
}
.cp-exercise-segment{
  --seg-bg: rgba(255,255,255,.032);
  --seg-border: rgba(255,255,255,.10);
  display:inline-flex;
  align-items:center;
  gap: 5px;
  padding: 5px;
  border: 1px solid var(--seg-border);
  border-radius: 999px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.018)),
    var(--seg-bg);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
  flex:0 0 auto;
}
.cp-exercise-segment-btn{
  appearance:none;
  border:0;
  min-height: 40px;
  padding: .5rem .82rem .5rem 1rem;
  border-radius: 999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.56rem;
  color: var(--muted);
  background: transparent;
  font-weight:700;
  letter-spacing: .01em;
  line-height: 1;
  cursor:pointer;
  white-space:nowrap;
  touch-action: manipulation;
  user-select:none;
  transition: background-color .16s ease, color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.cp-exercise-segment-btn strong{
  min-width: 2.1em;
  padding: .3rem .48rem;
  border-radius: 999px;
  text-align:center;
  font-size: .78rem;
  color: var(--text);
  background: rgba(255,255,255,.075);
  border: 1px solid rgba(255,255,255,.08);
  font-variant-numeric: tabular-nums;
}
.cp-exercise-segment-btn.active{
  color:#fff;
  background: linear-gradient(135deg, rgba(255,105,31,.98), rgba(231,62,26,.95));
  box-shadow: 0 10px 24px rgba(230,78,26,.26), inset 0 1px 0 rgba(255,255,255,.18);
}
.cp-exercise-segment-btn.active strong{
  color:#fff;
  background: rgba(0,0,0,.20);
  border-color: rgba(255,255,255,.16);
}
@media (hover:hover) and (pointer:fine){
  .cp-exercise-segment-btn:not(.active):hover{
    color:var(--text);
    background:rgba(255,255,255,.055);
  }
}
@media (max-width: 991.98px){
  .cp-exercise-toolbar{ align-items:stretch; flex-direction:column; }
  .cp-exercise-toolbar .cp-toolbar-search{ width:100%; max-width:none; margin-left:0; }
  .cp-exercise-segment{ display:flex; width:100%; }
  .cp-exercise-segment-btn{ flex:1 1 0; }
}
@media (max-width: 575.98px){
  .cp-exercise-toolbar{ padding:.5rem; border-radius:20px; }
  .cp-exercise-toolbar .cp-toolbar-search{ flex-wrap:wrap; }
  .cp-exercise-toolbar .cp-toolbar-search .input-brand{ flex:1 1 100%; }
  .cp-exercise-toolbar .cp-toolbar-search .btn{ width:100%; }
  .cp-exercise-segment-btn{ padding-inline:.65rem; font-size:.92rem; }
}
html[data-theme="light"] .cp-exercise-toolbar,
html[data-theme="light"] .cp-exercise-segment{
  border-color: rgba(12,12,16,.10);
  background: linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.70));
}
html[data-theme="light"] .cp-exercise-segment-btn strong{
  background: rgba(12,12,16,.055);
  border-color: rgba(12,12,16,.08);
}

.cp-premium-form-card,
.cp-add-exercise-card,
.cp-custom-exercise-card{
  position:relative;
  overflow:hidden;
  border-radius:26px !important;
  background:
    radial-gradient(circle at 0% 0%, rgba(255,106,31,.105), transparent 36%),
    radial-gradient(circle at 100% 18%, rgba(255,106,31,.055), transparent 32%),
    linear-gradient(145deg, rgba(255,255,255,.052), rgba(255,255,255,.018)) !important;
  border-color: rgba(255,255,255,.095) !important;
  box-shadow: 0 18px 46px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.055);
}
.cp-premium-form-card::before,
.cp-add-exercise-card::before,
.cp-custom-exercise-card::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:1px;
  background:linear-gradient(90deg, transparent, rgba(255,106,31,.48), transparent);
  pointer-events:none;
}
.cp-premium-form-card h5,
.cp-add-exercise-card h5,
.cp-custom-exercise-card h5{
  font-weight:700;
  letter-spacing:.006em;
}
.cp-planitem-wrap .cp-planitem-head,
.cp-custom-exercise-head,
.cp-add-exercise-card > h5{
  padding-bottom:.62rem;
  margin-bottom:.75rem !important;
  border-bottom:1px solid rgba(255,255,255,.075);
}
.cp-add-exercise-card > h5{
  display:flex;
  align-items:center;
  gap:.55rem;
}
.cp-add-exercise-card > h5::before{
  content:"+";
  display:inline-grid;
  place-items:center;
  width:1.75rem;
  height:1.75rem;
  border-radius:999px;
  color:#fff;
  background:linear-gradient(135deg, rgba(255,106,31,.96), rgba(229,60,24,.95));
  box-shadow:0 10px 24px rgba(239,83,31,.25);
  font-weight:700;
}
.cp-premium-form .form-label,
.cp-add-exercise-card .form-label,
.cp-planitem-wrap .form-label,
.cp-custom-exercise-card .form-label{
  margin-bottom:.32rem;
  font-size:.8rem;
  font-weight:700;
  letter-spacing:.012em;
  color:var(--muted) !important;
}
.cp-premium-form .form-control,
.cp-premium-form .form-select,
.cp-premium-form textarea,
.cp-add-exercise-card .form-control,
.cp-add-exercise-card .form-select,
.cp-add-exercise-card textarea,
.cp-planitem-wrap .form-control,
.cp-planitem-wrap .form-select,
.cp-planitem-wrap textarea,
.cp-custom-exercise-card .form-control,
.cp-custom-exercise-card .form-select,
.cp-custom-exercise-card textarea{
  min-height:44px;
  border-radius:15px !important;
  background: linear-gradient(180deg, rgba(255,255,255,.048), rgba(255,255,255,.018)), var(--input-bg) !important;
  border-color: rgba(255,255,255,.115) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.045);
}
.cp-premium-form .form-control:focus,
.cp-premium-form .form-select:focus,
.cp-premium-form textarea:focus,
.cp-add-exercise-card .form-control:focus,
.cp-add-exercise-card .form-select:focus,
.cp-add-exercise-card textarea:focus,
.cp-planitem-wrap .form-control:focus,
.cp-planitem-wrap .form-select:focus,
.cp-planitem-wrap textarea:focus,
.cp-custom-exercise-card .form-control:focus,
.cp-custom-exercise-card .form-select:focus,
.cp-custom-exercise-card textarea:focus{
  border-color:rgba(255,106,31,.72) !important;
  box-shadow:0 0 0 .18rem rgba(255,106,31,.15), inset 0 1px 0 rgba(255,255,255,.05) !important;
}
.cp-inline-section{
  border:1px solid rgba(255,255,255,.075);
  border-radius:18px;
  padding:.65rem;
  background:rgba(255,255,255,.025);
}
.cp-inline-kicker{
  margin-bottom:.42rem;
  font-size:.76rem;
  font-weight:700;
  letter-spacing:.06em;
  color:var(--orange2);
  text-transform:uppercase;
}
.cp-dist-toggle-card{
  border:1px solid rgba(255,255,255,.10);
  border-radius:18px;
  padding:.72rem .8rem;
  background:linear-gradient(145deg, rgba(255,255,255,.052), rgba(255,255,255,.018));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045);
}
.cp-dist-toggle-card .fw-semibold{ font-size:.94rem; }
.cp-dist-toggle-card .small{ line-height:1.22; }
.cp-dist-box .inner-card,
#sessionDistBox .inner-card,
#distBox .inner-card{
  padding:.72rem !important;
  border-radius:18px !important;
  background: radial-gradient(circle at top right, rgba(255,106,31,.10), transparent 34%), rgba(255,255,255,.024) !important;
}
.cp-dist-box .dist-grid,
#sessionDistBox .dist-grid,
#distBox .dist-grid{
  display:grid;
  gap:5px !important;
  max-height:210px !important;
  overflow:auto;
  padding-right:2px;
}
.dist-row{
  grid-template-columns:minmax(78px,108px) minmax(0,1fr) 40px !important;
  gap:7px !important;
  min-height:34px !important;
  padding:.28rem .42rem !important;
  border:1px solid rgba(255,255,255,.072);
  border-radius:12px;
  background:rgba(255,255,255,.026);
}
.dist-row .dist-name{ font-size:.78rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dist-row .dist-val{ font-size:.75rem; font-weight:700; color:var(--text) !important; font-variant-numeric:tabular-nums; }
.dist-row.is-primary{ border-color:rgba(255,106,31,.30); background:linear-gradient(90deg, rgba(255,106,31,.12), rgba(255,255,255,.022)); }
.dist-row.is-primary .dist-name{ color:var(--orange2); }
.dist-row .form-range{ height:.9rem; padding:0; }
.dist-row input[type="range"]::-webkit-slider-runnable-track,
.dist-row .form-range::-webkit-slider-runnable-track{ height:4px; }
.dist-row input[type="range"]::-webkit-slider-thumb,
.dist-row .form-range::-webkit-slider-thumb{ width:14px; height:14px; margin-top:-5px; box-shadow:0 0 0 3px rgba(255,106,31,.14); }
.cp-dist-footer{ padding-top:.25rem; border-top:1px solid rgba(255,255,255,.065); }
.cp-dist-footer .btn{ border-radius:999px; padding:.24rem .62rem; font-weight:700; }
@media (max-width:575.98px){
  .cp-premium-form-card,
  .cp-add-exercise-card,
  .cp-custom-exercise-card{ border-radius:22px !important; }
  .cp-inline-section{ padding:.55rem; border-radius:16px; }
  .cp-dist-box .dist-grid,
  #sessionDistBox .dist-grid,
  #distBox .dist-grid{ max-height:190px !important; }
  .dist-row{ grid-template-columns:82px minmax(0,1fr) 38px !important; }
}
html[data-theme="light"] .cp-premium-form-card,
html[data-theme="light"] .cp-add-exercise-card,
html[data-theme="light"] .cp-custom-exercise-card,
html[data-theme="light"] .cp-inline-section,
html[data-theme="light"] .cp-dist-toggle-card,
html[data-theme="light"] .dist-row{
  border-color:rgba(12,12,16,.09) !important;
  background:linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.72)) !important;
}

/* CoachPro v63.2: compact responsive exercise search toolbar */
.card-brand#cpExerciseList .cp-exercise-toolbar{
  display:grid !important;
  grid-template-columns:minmax(270px, auto) minmax(320px, 1fr);
  align-items:center !important;
  gap:.72rem !important;
  padding:.62rem !important;
  border-radius:24px !important;
  background:
    radial-gradient(circle at 8% 0%, rgba(255,106,31,.12), transparent 36%),
    linear-gradient(180deg, rgba(255,255,255,.052), rgba(255,255,255,.018)) !important;
}
.card-brand#cpExerciseList .cp-exercise-segment{
  width:max-content;
  max-width:100%;
  min-width:0;
}
.card-brand#cpExerciseList .cp-toolbar-search{
  display:grid !important;
  grid-template-columns:minmax(170px, 1fr) auto;
  align-items:center !important;
  gap:.55rem !important;
  width:100%;
  max-width:none !important;
  margin-left:0 !important;
  flex-wrap:nowrap !important;
}
.card-brand#cpExerciseList .cp-toolbar-search .input-brand,
.card-brand#cpExerciseList .cp-toolbar-search .form-control{
  width:100% !important;
  min-width:0 !important;
  height:46px !important;
  min-height:46px !important;
  max-height:46px !important;
  padding:.72rem 1rem !important;
  border-radius:16px !important;
  font-size:.96rem !important;
  line-height:1.2 !important;
  background:rgba(255,255,255,.045) !important;
}
.card-brand#cpExerciseList .cp-toolbar-search .btn{
  width:auto !important;
  min-width:104px;
  height:46px !important;
  min-height:46px !important;
  max-height:46px !important;
  padding:0 1.05rem !important;
  border-radius:16px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  line-height:1 !important;
  box-shadow:0 12px 28px rgba(230,90,26,.24) !important;
}
@media (min-width: 992px){
  .card-brand#cpExerciseList .cp-exercise-segment-btn{
    min-width:128px;
  }
}
@media (max-width: 991.98px){
  .card-brand#cpExerciseList .cp-exercise-toolbar{
    grid-template-columns:1fr;
    gap:.62rem !important;
    padding:.58rem !important;
  }
  .card-brand#cpExerciseList .cp-exercise-segment{
    display:grid !important;
    grid-template-columns:1fr 1fr;
    width:100%;
  }
  .card-brand#cpExerciseList .cp-exercise-segment-btn{
    width:100%;
    min-width:0;
  }
}
@media (max-width: 575.98px){
  .card-brand#cpExerciseList .cp-exercise-toolbar{
    border-radius:20px !important;
    padding:.52rem !important;
  }
  .card-brand#cpExerciseList .cp-exercise-segment{
    gap:4px;
    padding:4px;
  }
  .card-brand#cpExerciseList .cp-exercise-segment-btn{
    min-height:42px !important;
    padding:.48rem .56rem !important;
    gap:.42rem !important;
    font-size:.92rem !important;
  }
  .card-brand#cpExerciseList .cp-exercise-segment-btn strong{
    min-width:2rem;
    padding:.25rem .42rem;
    font-size:.76rem;
  }
  .card-brand#cpExerciseList .cp-toolbar-search{
    grid-template-columns:minmax(0, 1fr) 92px !important;
    gap:.48rem !important;
  }
  .card-brand#cpExerciseList .cp-toolbar-search .input-brand,
  .card-brand#cpExerciseList .cp-toolbar-search .form-control{
    height:44px !important;
    min-height:44px !important;
    max-height:44px !important;
    padding:.65rem .88rem !important;
    border-radius:14px !important;
    font-size:.92rem !important;
  }
  .card-brand#cpExerciseList .cp-toolbar-search .btn{
    min-width:0 !important;
    width:92px !important;
    height:44px !important;
    min-height:44px !important;
    max-height:44px !important;
    padding:0 .65rem !important;
    border-radius:14px !important;
    font-size:.92rem !important;
  }
}
@media (max-width: 360px){
  .card-brand#cpExerciseList .cp-toolbar-search{
    grid-template-columns:1fr !important;
  }
  .card-brand#cpExerciseList .cp-toolbar-search .btn{
    width:100% !important;
  }
}
html[data-theme="light"] .card-brand#cpExerciseList .cp-exercise-toolbar{
  background:linear-gradient(180deg, rgba(255,255,255,.94), rgba(255,255,255,.76)) !important;
}
html[data-theme="light"] .card-brand#cpExerciseList .cp-toolbar-search .input-brand,
html[data-theme="light"] .card-brand#cpExerciseList .cp-toolbar-search .form-control{
  background:rgba(255,255,255,.82) !important;
}

/* CoachPro v66.1: restore premium border for desktop session volume card
   while keeping progress card sticky underneath lower sidebar sections. */
@media (min-width: 1200px){
  .cp-session-volume-card{
    position: relative;
    z-index: 2;
    border: 1px solid rgba(255,255,255,.105) !important;
    border-radius: 22px !important;
    background:
      radial-gradient(circle at 0% 0%, rgba(255,106,31,.095), transparent 34%),
      linear-gradient(145deg, rgba(255,255,255,.046), rgba(255,255,255,.018)) !important;
    box-shadow: 0 16px 38px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.05);
    overflow: hidden;
  }
  .cp-session-volume-card::before{
    content:"";
    position:absolute;
    inset:0 0 auto 0;
    height:1px;
    background:linear-gradient(90deg, transparent, rgba(255,106,31,.42), transparent);
    pointer-events:none;
  }
  .cp-session-volume-card h5{
    font-weight:700;
    letter-spacing: .006em;
  }
}

/* Trainer dashboard client cards: compact age + weight chips. */
.cp-client-mini-stats{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap: .35rem;
  flex: 0 0 auto;
}
.cp-client-mini-stats span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height: 24px;
  padding: .16rem .48rem;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.045);
  color: var(--muted);
  font-size: .78rem;
  font-weight:700;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
html[data-theme="light"] .cp-session-volume-card{
  border-color: rgba(12,12,16,.10) !important;
  background: linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.72)) !important;
  box-shadow: 0 16px 38px rgba(12,12,16,.08), inset 0 1px 0 rgba(255,255,255,.65);
}
html[data-theme="light"] .cp-client-mini-stats span{
  border-color: rgba(12,12,16,.09);
  background: rgba(12,12,16,.04);
}
@media (max-width: 575.98px){
  .cp-client-mini-stats{ justify-content:flex-start; }
}

/* Trainer dashboard: readable client names + premium age/weight chips. */
.cp-client-card-link.item-brand{
  padding: .86rem 1rem;
}
.cp-client-card-row{
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .85rem;
}
.cp-client-card-main{
  min-width: 0;
}
.cp-client-card-name{
  color: var(--text);
  line-height: 1.22;
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
  overflow-wrap: anywhere;
}
.cp-client-card-goal{
  margin-top: .18rem;
  line-height: 1.28;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.cp-client-mini-stats{
  display:flex;
  flex-wrap: nowrap;
  justify-content:flex-end;
  align-items:center;
  gap: .45rem;
  flex: 0 0 auto;
}
.cp-client-mini-stats .cp-client-stat-chip,
.cp-client-stat-chip{
  display:inline-flex;
  flex-direction: column;
  align-items:flex-start;
  justify-content:center;
  gap: .02rem;
  min-height: 36px;
  min-width: 72px;
  padding: .32rem .58rem .34rem;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.11);
  background:
    linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.035));
  color: var(--text);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.055), 0 8px 20px rgba(0,0,0,.13);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.cp-client-stat-chip small{
  font-size: .62rem;
  line-height: 1;
  font-weight:700;
  letter-spacing: .045em;
  text-transform: uppercase;
  color: var(--muted);
}
.cp-client-stat-chip strong{
  font-size: .82rem;
  line-height: 1.05;
  font-weight:700;
  letter-spacing: .01em;
}
.cp-client-weight-chip{
  border-color: rgba(255,106,31,.22) !important;
  background:
    radial-gradient(circle at 20% 0%, rgba(255,106,31,.16), transparent 62%),
    linear-gradient(180deg, rgba(255,106,31,.095), rgba(255,255,255,.032)) !important;
}
.cp-client-stat-chip.is-empty{ opacity:.72; }
html[data-theme="light"] .cp-client-stat-chip{
  border-color: rgba(12,12,16,.09);
  background: linear-gradient(180deg, rgba(255,255,255,.86), rgba(12,12,16,.035));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7), 0 8px 20px rgba(12,12,16,.06);
}
html[data-theme="light"] .cp-client-weight-chip{
  border-color: rgba(255,106,31,.24) !important;
  background: linear-gradient(180deg, rgba(255,106,31,.12), rgba(255,255,255,.72)) !important;
}
@media (max-width: 575.98px){
  .cp-client-card-link.item-brand{ padding: .95rem 1rem; }
  .cp-client-card-row{
    grid-template-columns: 1fr;
    align-items: stretch;
    gap: .68rem;
  }
  .cp-client-card-name{
    font-size: 1.01rem;
    padding-right: 0;
  }
  .cp-client-card-goal{
    -webkit-line-clamp: 3;
  }
  .cp-client-mini-stats{
    justify-content:flex-start;
    width:100%;
    gap:.5rem;
  }
  .cp-client-stat-chip{
    min-width: 0;
    flex: 1 1 0;
    max-width: 136px;
    padding: .36rem .62rem;
  }
  .cp-client-stat-chip strong{ font-size:.86rem; }
}

/* CoachPro v67.3: restore simple client weight chip on trainer dashboard. */
.cp-client-card-row{
  grid-template-columns: minmax(0, 1fr) auto;
  align-items:center;
}
.cp-client-card-name{
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: unset !important;
  overflow-wrap: anywhere;
}
.cp-client-mini-stats{
  display:flex !important;
  justify-content:flex-end !important;
  align-items:center !important;
  flex:0 0 auto !important;
  gap:.35rem !important;
}
.cp-client-weight-only{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:26px;
  padding:.18rem .58rem;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.13);
  background:rgba(255,255,255,.055);
  color:var(--text-85);
  font-size:.78rem;
  font-weight:700;
  line-height:1;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
html[data-theme="light"] .cp-client-weight-only{
  border-color:rgba(12,12,16,.10);
  background:rgba(12,12,16,.045);
  color:var(--text);
}
@media (max-width:575.98px){
  .cp-client-card-row{
    grid-template-columns:minmax(0, 1fr) auto !important;
    gap:.7rem !important;
  }
  .cp-client-card-name{ font-size:1.01rem; }
  .cp-client-mini-stats{ align-self:start; padding-top:.05rem; }
  .cp-client-weight-only{ min-height:28px; padding:.2rem .58rem; font-size:.78rem; }
}

/* CoachPro v67.3: desktop LIVE sticky progress must stay behind lower right-column cards while scrolling. */
@media (min-width:1200px){
  .session-progress-card,
  #liveProgressDesktop{
    position:sticky !important;
    top:92px !important;
    z-index:1 !important;
  }
  .cp-session-volume-card,
  #add-exercise-card,
  .cp-add-exercise-card,
  .cp-custom-exercise-card,
  .cp-premium-form-card{
    position:relative !important;
    z-index:6 !important;
  }
  #add-exercise-card,
  .cp-add-exercise-card,
  .cp-custom-exercise-card,
  .cp-premium-form-card,
  .cp-session-volume-card{
    background:
      radial-gradient(circle at 0% 0%, rgba(255,106,31,.105), transparent 36%),
      linear-gradient(145deg, rgba(32,29,32,.98), rgba(22,22,26,.98)) !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
  }
}
html[data-theme="light"] #add-exercise-card,
html[data-theme="light"] .cp-add-exercise-card,
html[data-theme="light"] .cp-custom-exercise-card,
html[data-theme="light"] .cp-premium-form-card,
html[data-theme="light"] .cp-session-volume-card{
  background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(246,246,248,.96)) !important;
}

/* CoachPro v67.4: one compact client info pill (age + weight) without cutting names. */
.cp-client-card-row{
  grid-template-columns:minmax(0, 1fr) auto !important;
  align-items:center !important;
  gap:.75rem !important;
}
.cp-client-card-main{
  min-width:0 !important;
}
.cp-client-card-name{
  white-space:normal !important;
  overflow:visible !important;
  text-overflow:unset !important;
  overflow-wrap:break-word !important;
  word-break:normal !important;
}
.cp-client-mini-stats{
  display:flex !important;
  align-items:center !important;
  justify-content:flex-end !important;
  flex:0 0 auto !important;
  max-width:44% !important;
}
.cp-client-info-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.36rem;
  min-height:30px;
  max-width:100%;
  padding:.24rem .62rem;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.12);
  background:
    radial-gradient(circle at 18% 0%, rgba(255,106,31,.13), transparent 58%),
    linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.035));
  color:rgba(255,255,255,.88);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.055), 0 8px 18px rgba(0,0,0,.13);
  white-space:nowrap;
  font-size:.78rem;
  font-weight:700;
  line-height:1;
  font-variant-numeric:tabular-nums;
}
.cp-client-info-dot{
  opacity:.48;
  font-weight:700;
  transform:translateY(-.02em);
}
.cp-client-info-weight{
  color:rgba(255,255,255,.95);
}
html[data-theme="light"] .cp-client-info-pill{
  border-color:rgba(12,12,16,.10);
  background:
    radial-gradient(circle at 18% 0%, rgba(255,106,31,.10), transparent 58%),
    linear-gradient(180deg, rgba(255,255,255,.88), rgba(12,12,16,.035));
  color:rgba(20,20,24,.82);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75), 0 8px 18px rgba(12,12,16,.055);
}
html[data-theme="light"] .cp-client-info-weight{ color:rgba(20,20,24,.90); }
@media (max-width:575.98px){
  .cp-client-card-row{
    grid-template-columns:1fr !important;
    align-items:stretch !important;
    gap:.42rem !important;
  }
  .cp-client-mini-stats{
    max-width:none !important;
    justify-content:flex-start !important;
    padding-top:.05rem !important;
  }
  .cp-client-info-pill{
    min-height:28px;
    padding:.22rem .58rem;
    font-size:.76rem;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 6px 14px rgba(0,0,0,.10);
  }
}
@media (min-width:576px) and (max-width:991.98px){
  .cp-client-mini-stats{ max-width:38% !important; }
}

/* === CoachPro 2026-05-10: final theme-aware floating ? / ↑ buttons ===
   Goal:
   - light theme: light button with orange border,
   - dark theme: darker button matching the bottom tab dock,
   - no backdrop blur,
   - preserve readability and consistent premium look across the app. */
.cp-help-fab,
.fab-scroll-top{
  background: linear-gradient(180deg, rgba(24,26,35,.94), rgba(15,17,24,.96)) !important;
  border: 1px solid rgba(255,255,255,.10) !important;
  color: var(--text) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.04),
    0 12px 32px rgba(0,0,0,.44) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

.cp-help-fab:hover,
.fab-scroll-top:hover{
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.05),
    0 16px 34px rgba(0,0,0,.48) !important;
}

:root[data-theme="light"] .cp-help-fab,
html[data-theme="light"] .cp-help-fab,
:root[data-theme="light"] .fab-scroll-top,
html[data-theme="light"] .fab-scroll-top{
  background: linear-gradient(180deg, rgba(255,255,255,.96), rgba(245,247,251,.95)) !important;
  border: 1px solid rgba(255,106,36,.55) !important;
  color: rgba(12,14,18,.96) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.92),
    0 12px 28px rgba(0,0,0,.14),
    0 0 0 1px rgba(255,106,36,.10) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

@media (max-width:1180px){
  html.cp-has-glass-dock .cp-help-fab,
  body.cp-has-glass-dock .cp-help-fab,
  body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  html.cp-has-glass-dock .fab-scroll-top,
  body.cp-has-glass-dock .fab-scroll-top,
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    background: linear-gradient(180deg, rgba(24,26,35,.96), rgba(14,16,24,.98)) !important;
    border: 1px solid rgba(255,255,255,.09) !important;
    color: var(--text) !important;
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.04),
      0 12px 32px rgba(0,0,0,.46) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  html[data-theme="light"].cp-has-glass-dock .cp-help-fab,
  html[data-theme="light"] body.cp-has-glass-dock .cp-help-fab,
  html[data-theme="light"] body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  html[data-theme="light"].cp-has-glass-dock .fab-scroll-top,
  html[data-theme="light"] body.cp-has-glass-dock .fab-scroll-top,
  html[data-theme="light"] body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    background: linear-gradient(180deg, rgba(255,255,255,.97), rgba(246,247,250,.96)) !important;
    border: 1px solid rgba(255,106,36,.58) !important;
    color: rgba(12,14,18,.96) !important;
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.94),
      0 12px 28px rgba(0,0,0,.14),
      0 0 0 1px rgba(255,106,36,.08) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
}

/* === CoachPro 2026-05-10: more transparent floating ? / ↑ buttons ===
   Keep theme-aware styling, but make content underneath more visible. */
.cp-help-fab,
.fab-scroll-top{
  background: linear-gradient(180deg, rgba(24,26,35,.72), rgba(14,16,24,.74)) !important;
  border: 1px solid rgba(255,255,255,.11) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.035),
    0 10px 26px rgba(0,0,0,.34) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

html[data-theme="light"] .cp-help-fab,
html[data-theme="light"] .fab-scroll-top,
:root[data-theme="light"] .cp-help-fab,
:root[data-theme="light"] .fab-scroll-top{
  background: linear-gradient(180deg, rgba(255,255,255,.64), rgba(246,247,250,.62)) !important;
  border: 1px solid rgba(255,106,36,.62) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.62),
    0 10px 24px rgba(0,0,0,.10),
    0 0 0 1px rgba(255,106,36,.08) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

@media (max-width:1180px){
  html.cp-has-glass-dock .cp-help-fab,
  body.cp-has-glass-dock .cp-help-fab,
  body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  html.cp-has-glass-dock .fab-scroll-top,
  body.cp-has-glass-dock .fab-scroll-top,
  body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    background: linear-gradient(180deg, rgba(24,26,35,.72), rgba(14,16,24,.74)) !important;
    border: 1px solid rgba(255,255,255,.11) !important;
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.035),
      0 10px 26px rgba(0,0,0,.34) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  html[data-theme="light"].cp-has-glass-dock .cp-help-fab,
  html[data-theme="light"] body.cp-has-glass-dock .cp-help-fab,
  html[data-theme="light"] body:has(.cp-tabbar.cp-tabbar-glass) .cp-help-fab,
  html[data-theme="light"].cp-has-glass-dock .fab-scroll-top,
  html[data-theme="light"] body.cp-has-glass-dock .fab-scroll-top,
  html[data-theme="light"] body:has(.cp-tabbar.cp-tabbar-glass) .fab-scroll-top{
    background: linear-gradient(180deg, rgba(255,255,255,.64), rgba(246,247,250,.62)) !important;
    border: 1px solid rgba(255,106,36,.62) !important;
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.62),
      0 10px 24px rgba(0,0,0,.10),
      0 0 0 1px rgba(255,106,36,.08) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
}

/* === CoachPro 2026-05-10: avoid help FAB overlap on dashboard guide CTA ===
   On mobile the fixed ? helper button sits over the lower-left edge of the
   trainer dashboard instruction card. Move only this CTA slightly inward,
   without changing global FAB placement. */
@media (max-width: 575.98px){
  .cp-index-guide-cta-wrap{
    padding-left: 34px !important;
  }
  .cp-index-guide-cta{
    max-width: 100% !important;
  }
}


/* === CoachPro 2026-05-10: timer desktop left + mobile footer socials first + dist UX polish === */
@media (min-width: 992px) and (pointer: fine){
  body:not(.has-action-bar) .rest-timer-pill,
  body.has-action-bar .rest-timer-pill{
    left: 16px !important;
    right: auto !important;
  }
}

@media (max-width: 767.98px){
  .footer-links .footer-social-btn{
    order: -20 !important;
  }
  .footer-links .footer-divider{
    order: -10 !important;
  }
}

.cp-dist-toggle-card.is-disabled{
  opacity: .68;
}
.cp-dist-toggle-card.is-disabled .form-check-label,
.cp-dist-toggle-card.is-disabled .fw-semibold{
  opacity: .86;
}
.cp-dist-toggle-card.is-disabled .form-check-input{
  cursor: not-allowed;
}
.dist-row.is-primary{
  order: -100 !important;
}

/* === CoachPro 2026-05-10: bigger muscle distribution sliders + LIVE sticky progress above cards ===
   - larger range touch targets for easier mobile control,
   - LIVE progress remains sticky and scrolls above Volume/Add exercise sections. */
.cp-dist-box .dist-grid,
#sessionDistBox .dist-grid,
#distBox .dist-grid{
  gap: 9px !important;
}
.dist-row{
  min-height: 46px !important;
  padding: .44rem .54rem !important;
  grid-template-columns: minmax(86px,118px) minmax(0,1fr) 44px !important;
  gap: 9px !important;
}
.dist-row .form-range,
.dist-row input[type="range"]{
  height: 1.65rem !important;
  min-height: 26px !important;
  padding: 0 !important;
  touch-action: pan-y !important;
}
.dist-row input[type="range"]::-webkit-slider-runnable-track,
.dist-row .form-range::-webkit-slider-runnable-track{
  height: 6px !important;
  border-radius: 999px !important;
}
.dist-row input[type="range"]::-webkit-slider-thumb,
.dist-row .form-range::-webkit-slider-thumb{
  width: 22px !important;
  height: 22px !important;
  margin-top: -8px !important;
  border-radius: 999px !important;
  box-shadow: 0 0 0 5px rgba(255,106,31,.16), 0 6px 14px rgba(0,0,0,.26) !important;
}
.dist-row input[type="range"]::-moz-range-track,
.dist-row .form-range::-moz-range-track{
  height: 6px !important;
  border-radius: 999px !important;
}
.dist-row input[type="range"]::-moz-range-thumb,
.dist-row .form-range::-moz-range-thumb{
  width: 22px !important;
  height: 22px !important;
  border-radius: 999px !important;
  box-shadow: 0 0 0 5px rgba(255,106,31,.16), 0 6px 14px rgba(0,0,0,.22) !important;
}
.dist-row .dist-name{ font-size: .82rem !important; }
.dist-row .dist-val{ font-size: .78rem !important; }

@media (max-width: 575.98px){
  .cp-dist-box .dist-grid,
  #sessionDistBox .dist-grid,
  #distBox .dist-grid{
    max-height: 245px !important;
    gap: 10px !important;
  }
  .dist-row{
    min-height: 50px !important;
    grid-template-columns: minmax(82px,112px) minmax(0,1fr) 44px !important;
  }
}

@media (min-width: 1200px){
  .session-progress-card,
  #liveProgressDesktop{
    position: sticky !important;
    top: 92px !important;
    z-index: 30 !important;
    isolation: isolate;
  }
  .session-progress-inline{
    position: sticky !important;
    top: 92px !important;
    z-index: 30 !important;
  }
  .cp-session-volume-card,
  #add-exercise-card,
  .cp-add-exercise-card,
  .cp-custom-exercise-card,
  .cp-premium-form-card{
    position: relative !important;
    z-index: 5 !important;
  }
}

/* === CoachPro 2026-05-10: premium plus icons for add actions ===
   Reuses the rounded orange + look from the LIVE add-exercise card across
   main add buttons/headings without changing button behavior. */
.cp-premium-plus,
.cp-premium-plus-text{
  display:inline-grid !important;
  place-items:center !important;
  flex:0 0 auto !important;
  width:1.7rem !important;
  height:1.7rem !important;
  min-width:1.7rem !important;
  border-radius:999px !important;
  color:#fff !important;
  background:
    radial-gradient(circle at 30% 20%, rgba(255,255,255,.34), transparent 34%),
    linear-gradient(135deg, rgba(255,126,45,.98), rgba(229,60,24,.96)) !important;
  border:1px solid rgba(255,255,255,.16) !important;
  box-shadow:
    0 10px 24px rgba(239,83,31,.26),
    inset 0 1px 0 rgba(255,255,255,.26) !important;
  line-height:1 !important;
}
.cp-premium-plus{
  padding:.34rem !important;
  box-sizing:border-box !important;
  stroke-width:2.35 !important;
}
.cp-premium-plus-text{
  font-weight:700 !important;
  font-size:1.04rem !important;
  letter-spacing:0 !important;
}
.btn .cp-premium-plus,
.btn .cp-premium-plus-text{
  width:1.48rem !important;
  height:1.48rem !important;
  min-width:1.48rem !important;
  font-size:.96rem !important;
}
.btn-sm .cp-premium-plus,
.btn-sm .cp-premium-plus-text{
  width:1.34rem !important;
  height:1.34rem !important;
  min-width:1.34rem !important;
  font-size:.86rem !important;
}
.btn:has(.cp-premium-plus),
.btn:has(.cp-premium-plus-text),
.cp-add-title-premium{
  display:inline-flex !important;
  align-items:center !important;
  gap:.5rem !important;
}
.cp-add-title-premium{
  font-weight:700;
}
.cp-add-exercise-card > h5.cp-add-title-premium::before,
.cp-add-title-premium::before{
  content:none !important;
  display:none !important;
}
html[data-theme="light"] .cp-premium-plus,
html[data-theme="light"] .cp-premium-plus-text{
  border-color:rgba(255,106,31,.22) !important;
  box-shadow:
    0 9px 20px rgba(239,83,31,.18),
    inset 0 1px 0 rgba(255,255,255,.48) !important;
}
.btn:has(.cp-premium-plus),
.btn:has(.cp-premium-plus-text){
  justify-content:center !important;
}


/* CoachPro 2026-05-10: scope premium + only to section headers.
   Buttons/actions such as "Dodaj serię" must keep their normal compact plus. */
.btn .cp-premium-plus,
.btn .cp-premium-plus-text,
button .cp-premium-plus,
button .cp-premium-plus-text,
a.btn .cp-premium-plus,
a.btn .cp-premium-plus-text{
  display:inline !important;
  width:auto !important;
  height:auto !important;
  min-width:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:none !important;
  box-shadow:none !important;
  color:inherit !important;
  font:inherit !important;
  line-height:inherit !important;
}
.btn:has(.cp-premium-plus),
.btn:has(.cp-premium-plus-text){
  justify-content:initial !important;
}
h1 .cp-premium-plus,
h2 .cp-premium-plus,
h3 .cp-premium-plus,
h4 .cp-premium-plus,
h5 .cp-premium-plus,
h6 .cp-premium-plus,
h1 .cp-premium-plus-text,
h2 .cp-premium-plus-text,
h3 .cp-premium-plus-text,
h4 .cp-premium-plus-text,
h5 .cp-premium-plus-text,
h6 .cp-premium-plus-text,
.cp-add-title-premium .cp-premium-plus,
.cp-add-title-premium .cp-premium-plus-text{
  display:inline-grid !important;
  place-items:center !important;
  flex:0 0 auto !important;
  width:1.7rem !important;
  height:1.7rem !important;
  min-width:1.7rem !important;
  border-radius:999px !important;
  color:#fff !important;
  background:
    radial-gradient(circle at 30% 20%, rgba(255,255,255,.34), transparent 34%),
    linear-gradient(135deg, rgba(255,126,45,.98), rgba(229,60,24,.96)) !important;
  border:1px solid rgba(255,255,255,.16) !important;
  box-shadow:
    0 10px 24px rgba(239,83,31,.26),
    inset 0 1px 0 rgba(255,255,255,.26) !important;
  line-height:1 !important;
}

/* === CoachPro desktop client tabs polish 2026-05-12 ===
   Only the desktop/laptop client_detail tabbar is adjusted here.
   The mobile bottom glass dock (<=1180px) is intentionally untouched. */
@media (min-width:1180.02px) and (hover:hover) and (pointer:fine){
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail{
    justify-content:center !important;
  }

  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab.is-active,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab.is-active .cp-tab-emoji + span,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab.is-active .cp-tab-label,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab.is-active span:not(.cp-tab-emoji){
    color:rgba(255,255,255,.88) !important;
  }

  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab.is-active,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab.is-active .cp-tab-emoji + span,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab.is-active .cp-tab-label,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabs-client-detail .cp-tab.is-active span:not(.cp-tab-emoji){
    color:rgba(11,11,13,.86) !important;
  }
}

/* === CoachPro native iPad fix 2026-05-12 ===
   In the native Capacitor app the client tabs must always use the bottom dock,
   even on wide iPad/iPad Pro layouts. This is scoped only to native/in-app
   contexts, so the normal laptop/desktop tabbar stays unchanged. */
html.inapp .cp-tabs-scope[data-cp-tabs="client"],
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"],
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"],
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"],
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"]{
  padding-bottom:calc(128px + var(--safe-bottom, env(safe-area-inset-bottom, 0px))) !important;
}

html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar-hint,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar-hint,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar-hint,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar-hint,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar-hint{
  display:none !important;
}

html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass{
  --cp-glass-tab-width:96px;
  position:fixed !important;
  top:auto !important;
  left:50% !important;
  right:auto !important;
  bottom:calc(12px + var(--safe-bottom, env(safe-area-inset-bottom, 0px))) !important;
  transform:translateX(-50%) !important;
  z-index:1320 !important;
  display:flex !important;
  flex-wrap:nowrap !important;
  align-items:center !important;
  justify-content:flex-start !important;
  gap:0 !important;
  width:max-content !important;
  max-width:calc(100vw - 18px) !important;
  min-width:0 !important;
  min-height:70px !important;
  height:auto !important;
  padding:6px 10px !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  -webkit-overflow-scrolling:touch !important;
  scrollbar-width:none !important;
  border-radius:999px !important;
  border:1px solid rgba(255,255,255,.14) !important;
  background:rgba(0,0,0,.48) !important;
  -webkit-backdrop-filter:blur(12px) !important;
  backdrop-filter:blur(12px) !important;
  box-shadow:0 18px 44px rgba(0,0,0,.35) !important;
  background-clip:padding-box !important;
}

html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::-webkit-scrollbar,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::-webkit-scrollbar,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::-webkit-scrollbar,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::-webkit-scrollbar,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::-webkit-scrollbar{
  display:none !important;
  width:0 !important;
  height:0 !important;
}

html[data-theme="light"].inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html[data-theme="light"].cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html[data-theme="light"].cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html[data-theme="light"][data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html[data-theme="light"][data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass{
  background:rgba(0,0,0,.48) !important;
  border-color:rgba(255,255,255,.14) !important;
  box-shadow:0 18px 44px rgba(0,0,0,.35) !important;
}

html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::before,
html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::after,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::before,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::after,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::before,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::after,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::before,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::after,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::before,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass::after{
  content:"" !important;
  background:transparent !important;
  box-shadow:none !important;
  opacity:0 !important;
  filter:none !important;
}

html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab{
  flex:0 0 var(--cp-glass-tab-width) !important;
  width:var(--cp-glass-tab-width) !important;
  min-width:var(--cp-glass-tab-width) !important;
  max-width:var(--cp-glass-tab-width) !important;
  height:62px !important;
  min-height:62px !important;
  display:inline-flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:1px !important;
  padding:6px 10px !important;
  border-radius:999px !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:rgba(255,255,255,.78) !important;
  text-shadow:none !important;
  font-weight:700 !important;
  letter-spacing:-.01em !important;
  white-space:normal !important;
}

html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji{
  width:1.32rem !important;
  min-width:1.32rem !important;
  height:auto !important;
  margin:0 !important;
  font-size:1.08rem !important;
  line-height:1 !important;
  filter:drop-shadow(0 2px 8px rgba(0,0,0,.18)) !important;
}

html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span{
  display:-webkit-box !important;
  -webkit-line-clamp:2 !important;
  -webkit-box-orient:vertical !important;
  overflow:hidden !important;
  width:100% !important;
  white-space:normal !important;
  text-align:center !important;
  font-size:.66rem !important;
  line-height:1.13 !important;
  font-weight:700 !important;
  letter-spacing:-.01em !important;
}

html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .ms-auto,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .ms-auto,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .ms-auto,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .ms-auto,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .ms-auto{
  margin-left:0 !important;
}

html.inapp body.modal-open .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html.inapp body.cp-form-overlay-open .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html.inapp body.cp-native-picker-open .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html.cp-native-app body.modal-open .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html.cp-native-app body.cp-form-overlay-open .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
html.cp-native-app body.cp-native-picker-open .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
  transform:translateX(-50%) !important;
}


/* CoachPro fix 2026-05-12: footer legal links must remain horizontally scrollable on tablets.
   Previous >=768px rule disabled overflow, so long footer rows could be clipped on iPad/tablet widths. */
@media (min-width: 768px) and (max-width: 1199.98px){
  .footer-links-scroll{
    overflow-x: auto !important;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x;
  }
  .footer-links{
    width: max-content !important;
    min-width: max-content;
    padding-bottom: 2px !important;
  }
}

/* CoachPro fix 2026-05-12: dashboard statistics must keep 3+ digit values on one line. */
.card.card-brand .inner-card .fs-2.fw-bold,
.inner-card .fs-2.fw-bold{
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.035em;
  line-height: 1.05;
}
.card.card-brand .inner-card{
  min-width: 0;
}
@media (max-width: 575.98px){
  .card.card-brand .inner-card .fs-2.fw-bold,
  .inner-card .fs-2.fw-bold{
    font-size: clamp(1.55rem, 8.4vw, 2rem) !important;
  }
}
@media (max-width: 380px){
  .card.card-brand .inner-card .fs-2.fw-bold,
  .inner-card .fs-2.fw-bold{
    font-size: clamp(1.38rem, 7.8vw, 1.75rem) !important;
  }
}


/* CoachPro fix 2026-05-13:
   On real desktop/laptop the client/me tabbar must stay visible while typing in forms.
   The keyboard-hide rule is only needed for mobile/native keyboard layouts. */
@media (min-width:1181px){
  body.cp-keyboard-open .cp-tabbar.cp-tabbar-glass,
  body.cp-editing-text .cp-tabbar.cp-tabbar-glass,
  html.cp-keyboard-open body .cp-tabbar.cp-tabbar-glass{
    opacity:1 !important;
    pointer-events:auto !important;
    visibility:visible !important;
    transform:none !important;
  }
  body.cp-keyboard-open .cp-tabbar-scroll-hint,
  body.cp-editing-text .cp-tabbar-scroll-hint,
  html.cp-keyboard-open body .cp-tabbar-scroll-hint{
    opacity:1 !important;
    pointer-events:auto !important;
    visibility:visible !important;
  }
}
.live-hint.cp-live-hint-refreshed{
  animation:cpLiveHintRefresh .95s ease both;
}
@keyframes cpLiveHintRefresh{
  0%{ transform:translateY(0); box-shadow:0 0 0 rgba(255,122,26,0); }
  35%{ transform:translateY(-1px); box-shadow:0 0 0 4px rgba(255,122,26,.10); }
  100%{ transform:translateY(0); box-shadow:0 0 0 rgba(255,122,26,0); }
}


/* CoachPro fix 2026-05-13:
   Na komputerze/laptopie focus w formularzu nie oznacza otwartej klawiatury ekranowej.
   Zakładki klienta oraz pływające przyciski pomocy/scroll pozostają widoczne podczas pisania.
   Mobile/iOS/Android dalej korzystają z ukrywania elementów nad klawiaturą. */
@media (min-width: 992px) and (hover: hover) and (pointer: fine){
  body.cp-keyboard-open .cp-tabbar.cp-tabbar-glass,
  body.cp-editing-text .cp-tabbar.cp-tabbar-glass,
  html.cp-keyboard-open body .cp-tabbar.cp-tabbar-glass,
  body.cp-keyboard-open .cp-tabbar.cp-tabbar-sticky,
  body.cp-editing-text .cp-tabbar.cp-tabbar-sticky,
  html.cp-keyboard-open body .cp-tabbar.cp-tabbar-sticky{
    opacity: 1 !important;
    pointer-events: auto !important;
    visibility: visible !important;
    transform: none !important;
  }
  body.cp-keyboard-open .cp-tabbar-scroll-hint,
  body.cp-editing-text .cp-tabbar-scroll-hint,
  html.cp-keyboard-open body .cp-tabbar-scroll-hint{
    opacity: 1 !important;
    pointer-events: auto !important;
    visibility: visible !important;
  }
  body.cp-keyboard-open .cp-help-fab,
  body.cp-editing-text .cp-help-fab,
  html.cp-keyboard-open body .cp-help-fab{
    opacity: 1 !important;
    pointer-events: auto !important;
    visibility: visible !important;
    transform: none !important;
  }
  body.cp-keyboard-open .fab-scroll-top.show,
  body.cp-editing-text .fab-scroll-top.show,
  html.cp-keyboard-open body .fab-scroll-top.show{
    opacity: 1 !important;
    pointer-events: auto !important;
    visibility: visible !important;
    transform: translateY(0) !important;
  }
}

/* === CoachPro subtle native iOS glass tabbar polish 2026-05-13 ===
   This override intentionally lives after the native iPad/mobile dock block because
   that block flattens the active capsule. It keeps the existing cp-tabbar-glass
   structure and restores the glass edge/shine directly on the active tab. */
@media (max-width:1180px){
  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    position:relative !important;
    isolation:isolate !important;
    overflow:hidden !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:#ff7a24 !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,.16) 0%, rgba(255,255,255,.070) 46%, rgba(255,255,255,.025) 100%),
      radial-gradient(circle at 50% -18%, rgba(255,255,255,.26), transparent 56%),
      radial-gradient(circle at 50% 118%, rgba(255,122,36,.10), transparent 62%),
      rgba(9,10,13,.18) !important;
    border:1px solid rgba(255,255,255,.155) !important;
    box-shadow:
      0 8px 18px rgba(0,0,0,.16),
      0 0 0 1px rgba(255,255,255,.028),
      0 0 8px rgba(255,122,36,.035),
      inset 0 1px 0 rgba(255,255,255,.26),
      inset 0 0 0 1px rgba(255,255,255,.035),
      inset 0 -1px 0 rgba(0,0,0,.08) !important;
    -webkit-backdrop-filter:blur(26px) saturate(1.45) brightness(1.04) !important;
    backdrop-filter:blur(26px) saturate(1.45) brightness(1.04) !important;
    text-shadow:0 1px 6px rgba(255,122,36,.08) !important;
    transition:background .12s ease, border-color .12s ease, box-shadow .12s ease, color 0s linear !important;
    transform:none !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before{
    content:"" !important;
    position:absolute !important;
    left:12px !important;
    right:12px !important;
    top:7px !important;
    height:30% !important;
    border-radius:999px !important;
    background:linear-gradient(180deg, rgba(255,255,255,.20), rgba(255,255,255,.070) 48%, rgba(255,255,255,0)) !important;
    opacity:.48 !important;
    pointer-events:none !important;
    z-index:-1 !important;
    filter:blur(.15px) !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after{
    content:"" !important;
    position:absolute !important;
    inset:1px !important;
    border-radius:999px !important;
    background:
      linear-gradient(115deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.105) 42%, rgba(255,255,255,0) 62%),
      linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,0) 58%) !important;
    opacity:.34 !important;
    pointer-events:none !important;
    z-index:-1 !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji{
    filter:drop-shadow(0 1px 4px rgba(0,0,0,.14)) drop-shadow(0 0 3px rgba(255,122,36,.06)) !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji),
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji),
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji),
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji),
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji),
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji){
    color:#ff7a24 !important;
    font-weight:700 !important;
    text-shadow:0 0 5px rgba(255,122,36,.10), 0 1px 2px rgba(0,0,0,.22) !important;
    transition:color 0s linear, text-shadow .10s ease !important;
  }

  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:#f35f16 !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,.68) 0%, rgba(255,255,255,.38) 48%, rgba(255,255,255,.20) 100%),
      radial-gradient(circle at 50% -18%, rgba(255,255,255,.72), transparent 58%),
      radial-gradient(circle at 50% 120%, rgba(255,106,31,.075), transparent 62%),
      rgba(255,255,255,.18) !important;
    border-color:rgba(255,255,255,.42) !important;
    box-shadow:
      0 8px 18px rgba(15,23,42,.07),
      0 0 0 1px rgba(15,23,42,.018),
      0 0 8px rgba(255,106,31,.045),
      inset 0 1px 0 rgba(255,255,255,.56),
      inset 0 -1px 0 rgba(15,23,42,.025) !important;
    text-shadow:0 1px 6px rgba(255,106,31,.06) !important;
  }

  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji),
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span:not(.cp-tab-emoji){
    color:#e95710 !important;
    text-shadow:0 1px 6px rgba(255,106,31,.06) !important;
  }
}


/* === CoachPro native tabbar final micro-polish: transparent active glass + unclipped labels === */
@media (max-width:1180px){
  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    height:62px !important;
    min-height:62px !important;
    padding-top:6px !important;
    padding-bottom:6px !important;
    gap:1px !important;
    transition:background .12s ease, border-color .12s ease, box-shadow .12s ease, color 0s linear !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji{
    font-size:1.06rem !important;
    line-height:1 !important;
    flex:0 0 auto !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-label{
    line-height:1.12 !important;
    max-height:2.35em !important;
    transition:color 0s linear, text-shadow .10s ease !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    background:
      linear-gradient(180deg, rgba(255,255,255,.13) 0%, rgba(255,255,255,.052) 48%, rgba(255,255,255,.018) 100%),
      radial-gradient(circle at 50% -18%, rgba(255,255,255,.22), transparent 58%),
      rgba(9,10,13,.145) !important;
    border-color:rgba(255,255,255,.145) !important;
    box-shadow:
      0 7px 16px rgba(0,0,0,.14),
      inset 0 1px 0 rgba(255,255,255,.23),
      inset 0 0 0 1px rgba(255,255,255,.03) !important;
    -webkit-backdrop-filter:blur(28px) saturate(1.38) brightness(1.035) !important;
    backdrop-filter:blur(28px) saturate(1.38) brightness(1.035) !important;
  }
}

/* === CoachPro 2026-05-13 final: stable subtle native iOS tabbar + no stepper blink ===
   This is intentionally placed at the very end of app.css to override earlier
   HOTFIX/native iPad/glass blocks without changing the HTML structure. */
@media (max-width:1180px){
  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
    --cp-glass-tab-width:96px !important;
    min-height:72px !important;
    padding:7px 10px !important;
    align-items:center !important;
    gap:0 !important;
    background:rgba(5,6,9,.42) !important;
    border:1px solid rgba(255,255,255,.115) !important;
    box-shadow:
      0 16px 42px rgba(0,0,0,.34),
      inset 0 1px 0 rgba(255,255,255,.07) !important;
    -webkit-backdrop-filter:blur(24px) saturate(1.28) !important;
    backdrop-filter:blur(24px) saturate(1.28) !important;
    overflow-x:auto !important;
    overflow-y:hidden !important;
  }

  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
    background:rgba(18,20,25,.38) !important;
    border-color:rgba(255,255,255,.22) !important;
    box-shadow:
      0 16px 42px rgba(15,23,42,.20),
      inset 0 1px 0 rgba(255,255,255,.14) !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator{
    display:none !important;
    opacity:0 !important;
    transition:none !important;
    transform:none !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    flex:0 0 var(--cp-glass-tab-width) !important;
    width:var(--cp-glass-tab-width) !important;
    min-width:var(--cp-glass-tab-width) !important;
    max-width:var(--cp-glass-tab-width) !important;
    height:64px !important;
    min-height:64px !important;
    padding:8px 8px 7px !important;
    display:inline-flex !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:flex-start !important;
    gap:0 !important;
    border-radius:999px !important;
    border:1px solid transparent !important;
    background:transparent !important;
    box-shadow:none !important;
    color:rgba(255,255,255,.78) !important;
    text-shadow:none !important;
    overflow:hidden !important;
    transform:none !important;
    transition:none !important;
    will-change:auto !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji{
    display:block !important;
    width:auto !important;
    min-width:0 !important;
    min-height:22px !important;
    margin:0 0 5px !important;
    font-size:1.02rem !important;
    line-height:1 !important;
    filter:drop-shadow(0 1px 4px rgba(0,0,0,.16)) !important;
    transform:none !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-label{
    display:-webkit-box !important;
    -webkit-line-clamp:2 !important;
    -webkit-box-orient:vertical !important;
    width:100% !important;
    margin:0 !important;
    padding:0 1px !important;
    overflow:hidden !important;
    white-space:normal !important;
    text-align:center !important;
    font-size:.65rem !important;
    line-height:1.08 !important;
    font-weight:700 !important;
    letter-spacing:-.012em !important;
    color:inherit !important;
    transform:none !important;
    transition:none !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:#ff7a24 !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,.115) 0%, rgba(255,255,255,.044) 47%, rgba(255,255,255,.014) 100%),
      radial-gradient(circle at 50% -18%, rgba(255,255,255,.18), transparent 58%),
      rgba(255,255,255,.030) !important;
    border-color:rgba(255,255,255,.14) !important;
    box-shadow:
      0 6px 14px rgba(0,0,0,.13),
      inset 0 1px 0 rgba(255,255,255,.20),
      inset 0 0 0 1px rgba(255,255,255,.024) !important;
    -webkit-backdrop-filter:blur(22px) saturate(1.22) brightness(1.03) !important;
    backdrop-filter:blur(22px) saturate(1.22) brightness(1.03) !important;
    text-shadow:none !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before{
    content:"" !important;
    position:absolute !important;
    left:14px !important;
    right:14px !important;
    top:6px !important;
    height:24% !important;
    border-radius:999px !important;
    background:linear-gradient(180deg, rgba(255,255,255,.18), rgba(255,255,255,.05) 68%, rgba(255,255,255,0)) !important;
    opacity:.42 !important;
    pointer-events:none !important;
    z-index:0 !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after{
    content:"" !important;
    position:absolute !important;
    inset:1px !important;
    border-radius:999px !important;
    background:linear-gradient(112deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.080) 43%, rgba(255,255,255,0) 64%) !important;
    opacity:.24 !important;
    pointer-events:none !important;
    z-index:0 !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label{
    position:relative !important;
    z-index:2 !important;
    color:#ff7a24 !important;
    text-shadow:0 1px 2px rgba(0,0,0,.18) !important;
  }

  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:#e95710 !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,.34), rgba(255,255,255,.12) 54%, rgba(255,255,255,.055)),
      rgba(255,255,255,.030) !important;
    border-color:rgba(255,255,255,.26) !important;
    box-shadow:
      0 6px 14px rgba(15,23,42,.10),
      inset 0 1px 0 rgba(255,255,255,.36) !important;
  }

  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span,
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label{
    color:#e95710 !important;
    text-shadow:none !important;
  }
}

.set-sheet .btn-stepper,
.set-sheet .btn-stepper-plus,
.set-sheet .btn-stepper-minus,
.desktop-set-form .btn-stepper-lg,
.desktop-set-form .btn-stepper-plus,
.desktop-set-form .btn-stepper-minus{
  transition:none !important;
  animation:none !important;
  transform:none !important;
  filter:none !important;
}
.set-sheet .btn-stepper.cp-pressed,
.set-sheet .btn-stepper.cp-holding,
.set-sheet .btn-stepper:active,
.set-sheet .btn-stepper:focus,
.set-sheet .btn-stepper:focus-visible,
.desktop-set-form .btn-stepper-lg.cp-pressed,
.desktop-set-form .btn-stepper-lg.cp-holding,
.desktop-set-form .btn-stepper-lg:active,
.desktop-set-form .btn-stepper-lg:focus,
.desktop-set-form .btn-stepper-lg:focus-visible{
  transform:none !important;
  filter:none !important;
  outline:none !important;
}


/* === CoachPro hotfix 2026-05-13: tabbar działa stabilnie + brak skoku aktywnej karty ===
   Nie włączamy ruchomego indicatora w natywnym dolnym pasku, bo na iOS potrafił zostać pod pierwszą kartą.
   Aktywna karta dalej jest normalnym przyciskiem, więc przełączanie zakładek działa jak wcześniej. */
@media (max-width:1180px){
  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator{
    display:none !important;
    opacity:0 !important;
    transform:none !important;
    transition:none !important;
    pointer-events:none !important;
  }

  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    transform:none !important;
    animation:none !important;
    will-change:auto !important;
  }
}

/* === CoachPro hotfix 2026-05-13: stałe kolory obramowania + / - w widoku treningu === */
.set-sheet .btn-stepper,
.desktop-set-form .btn-stepper-lg{
  outline:none !important;
  transition:none !important;
  animation:none !important;
  transform:none !important;
  filter:none !important;
}
.set-sheet .btn-stepper-plus,
.desktop-set-form .btn-stepper-plus{
  border-color:rgba(255,123,0,.55) !important;
  background:linear-gradient(180deg, rgba(255,123,0,.26), rgba(255,123,0,.14)) !important;
}
.set-sheet .btn-stepper-minus,
.desktop-set-form .btn-stepper-minus{
  border-color:rgba(255,255,255,.14) !important;
  background:rgba(0,0,0,.18) !important;
}
.set-sheet .btn-stepper:hover,
.set-sheet .btn-stepper:active,
.set-sheet .btn-stepper:focus,
.set-sheet .btn-stepper:focus-visible,
.set-sheet .btn-stepper.cp-pressed,
.set-sheet .btn-stepper.cp-holding,
.desktop-set-form .btn-stepper-lg:hover,
.desktop-set-form .btn-stepper-lg:active,
.desktop-set-form .btn-stepper-lg:focus,
.desktop-set-form .btn-stepper-lg:focus-visible,
.desktop-set-form .btn-stepper-lg.cp-pressed,
.desktop-set-form .btn-stepper-lg.cp-holding{
  transform:none !important;
  filter:none !important;
  outline:none !important;
}
.set-sheet .btn-stepper-plus:hover,
.set-sheet .btn-stepper-plus:active,
.set-sheet .btn-stepper-plus:focus,
.set-sheet .btn-stepper-plus:focus-visible,
.set-sheet .btn-stepper-plus.cp-pressed,
.set-sheet .btn-stepper-plus.cp-holding,
.desktop-set-form .btn-stepper-plus:hover,
.desktop-set-form .btn-stepper-plus:active,
.desktop-set-form .btn-stepper-plus:focus,
.desktop-set-form .btn-stepper-plus:focus-visible,
.desktop-set-form .btn-stepper-plus.cp-pressed,
.desktop-set-form .btn-stepper-plus.cp-holding{
  border-color:rgba(255,123,0,.55) !important;
  background:linear-gradient(180deg, rgba(255,123,0,.26), rgba(255,123,0,.14)) !important;
}
.set-sheet .btn-stepper-minus:hover,
.set-sheet .btn-stepper-minus:active,
.set-sheet .btn-stepper-minus:focus,
.set-sheet .btn-stepper-minus:focus-visible,
.set-sheet .btn-stepper-minus.cp-pressed,
.set-sheet .btn-stepper-minus.cp-holding,
.desktop-set-form .btn-stepper-minus:hover,
.desktop-set-form .btn-stepper-minus:active,
.desktop-set-form .btn-stepper-minus:focus,
.desktop-set-form .btn-stepper-minus:focus-visible,
.desktop-set-form .btn-stepper-minus.cp-pressed,
.desktop-set-form .btn-stepper-minus.cp-holding{
  border-color:rgba(255,255,255,.14) !important;
  background:rgba(0,0,0,.18) !important;
}
html[data-theme="light"] .set-sheet .btn-stepper-minus,
html[data-theme="light"] .set-sheet .btn-stepper-minus:hover,
html[data-theme="light"] .set-sheet .btn-stepper-minus:active,
html[data-theme="light"] .set-sheet .btn-stepper-minus:focus,
html[data-theme="light"] .set-sheet .btn-stepper-minus:focus-visible,
html[data-theme="light"] .desktop-set-form .btn-stepper-minus,
html[data-theme="light"] .desktop-set-form .btn-stepper-minus:hover,
html[data-theme="light"] .desktop-set-form .btn-stepper-minus:active,
html[data-theme="light"] .desktop-set-form .btn-stepper-minus:focus,
html[data-theme="light"] .desktop-set-form .btn-stepper-minus:focus-visible{
  border-color:rgba(15,23,42,.16) !important;
  background:rgba(15,23,42,.055) !important;
}


/* =========================================================
   CoachPro 2026-05-13: stable glass dock active state
   Fix: long labels, e.g. "Kalendarz treningów", must not resize/repaint
   the active capsule while switching tabs in iOS/Android WebView.
   ========================================================= */
@media (max-width: 1180px){
  .cp-tabbar.cp-tabbar-glass .cp-tab{
    width:var(--cp-glass-tab-width, 96px) !important;
    min-width:var(--cp-glass-tab-width, 96px) !important;
    max-width:var(--cp-glass-tab-width, 96px) !important;
    height:66px !important;
    min-height:66px !important;
    max-height:66px !important;
    padding:.50rem .42rem .54rem !important;
    gap:.22rem !important;
    transform:none !important;
    contain:layout paint;
    -webkit-tap-highlight-color:transparent;
    transition:color .16s ease, background-color .16s ease, border-color .16s ease, box-shadow .16s ease !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    transform:none !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji{
    flex:0 0 22px !important;
    width:22px !important;
    min-width:22px !important;
    height:22px !important;
    line-height:22px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    margin:0 !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji + span{
    width:100% !important;
    min-height:2.18em !important;
    max-height:2.18em !important;
    line-height:1.09 !important;
    display:-webkit-box !important;
    -webkit-line-clamp:2 !important;
    -webkit-box-orient:vertical !important;
    overflow:hidden !important;
    white-space:normal !important;
    text-wrap:balance;
    overflow-wrap:normal;
    word-break:normal;
    hyphens:none;
  }
}

@media (max-width: 420px){
  .cp-tabbar.cp-tabbar-glass .cp-tab{
    height:64px !important;
    min-height:64px !important;
    max-height:64px !important;
  }
}

/* Client detail – keep training delete actions visible on narrow phones. */
#client-history-card .training-open{
  min-width: 0;
}
#client-history-card .training-mid,
#client-history-card .training-tonnage{
  min-width: 0;
}
#client-history-card .training-tonnage{
  overflow: hidden;
  text-overflow: ellipsis;
}
#client-history-card .training-pill{
  flex: 0 0 auto;
  white-space: nowrap;
}
@media (max-width: 576px){
  #client-history-card .training-row{
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: stretch;
    gap: 8px;
  }
  #client-history-card .training-open{
    width: 100%;
    min-width: 0;
    gap: 8px;
    padding: 10px 9px;
  }
  #client-history-card .training-left{
    min-width: 42px;
    font-size: .86rem;
  }
  #client-history-card .training-pill{
    font-size: .66rem;
    line-height: 1;
    padding: 4px 6px;
  }
  #client-history-card .training-actions{
    align-items: stretch;
  }
  #client-history-card .training-actions form{
    display: flex;
  }
  #client-history-card .training-actions .btn{
    min-width: 52px;
    padding-left: 9px;
    padding-right: 9px;
    border-radius: 13px;
    font-weight:700;
  }
}
@media (max-width: 390px){
  #client-history-card .training-open{
    flex-wrap: wrap;
  }
  #client-history-card .training-mid{
    flex: 1 1 calc(100% - 52px);
  }
  #client-history-card .training-pill{
    margin-left: 50px;
  }
}

/* Exercises – compact technique video link shown when a plan video is connected. */
.cp-exercise-title-line{
  min-width: 0;
}
.cp-video-link-btn{
  display: inline-flex;
  align-items: center;
  gap: 5px;
  flex: 0 0 auto;
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid rgba(255,122,0,.34);
  background: rgba(255,122,0,.12);
  color: var(--brand);
  font-size: .76rem;
  line-height: 1.1;
  font-weight:700;
  text-decoration: none;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08);
}
.cp-video-link-btn:hover,
.cp-video-link-btn:focus-visible{
  color: var(--brand);
  border-color: rgba(255,122,0,.55);
  background: rgba(255,122,0,.18);
  text-decoration: none;
}
html[data-theme="light"] .cp-video-link-btn{
  background: rgba(255,122,0,.10);
  border-color: rgba(255,122,0,.26);
}
@media (max-width: 576px){
  .cp-video-link-btn{
    padding: 4px 8px;
    font-size: .72rem;
  }
}

/* =========================================================
   CoachPro 2026-05-15: client_detail mobile training history polish
   Fix: visible details + equal delete buttons in "Kalendarz treningów".
   ========================================================= */
@media (max-width: 576px){
  #client-history-card .trainings-list-client{
    gap: 12px;
    padding-right: 0;
    overflow-x: hidden;
  }

  #client-history-card .training-row{
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) 66px !important;
    align-items: center !important;
    gap: 10px !important;
    width: 100%;
    min-width: 0;
  }

  #client-history-card .training-open{
    display: grid !important;
    grid-template-columns: 46px minmax(0, 1fr) !important;
    grid-template-areas:
      "number main"
      "number status" !important;
    align-items: center !important;
    column-gap: 10px !important;
    row-gap: 5px !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 74px;
    padding: 12px 13px !important;
    border-radius: 20px;
    overflow: hidden;
  }

  #client-history-card .training-left{
    grid-area: number !important;
    min-width: 0 !important;
    width: 46px;
    font-size: .92rem !important;
    line-height: 1.05;
    text-align: left;
    align-self: center;
  }

  #client-history-card .training-mid{
    grid-area: main !important;
    width: 100%;
    min-width: 0 !important;
    gap: 3px;
  }

  #client-history-card .training-tonnage{
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
    hyphens: none;
    font-size: .98rem;
    line-height: 1.14;
  }

  #client-history-card .training-meta{
    display: block;
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: .78rem;
    line-height: 1.2;
  }

  #client-history-card .training-pill{
    grid-area: status !important;
    justify-self: start !important;
    align-self: start !important;
    margin: 0 !important;
    max-width: 100%;
    height: 24px;
    padding: 0 9px !important;
    font-size: .66rem !important;
    line-height: 1 !important;
    letter-spacing: .04em;
  }

  #client-history-card .training-actions{
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    align-self: center !important;
    width: 66px;
    min-width: 66px;
  }

  #client-history-card .training-actions form{
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100%;
    height: auto !important;
    margin: 0;
  }

  #client-history-card .training-actions .btn{
    width: 64px !important;
    min-width: 64px !important;
    height: 44px !important;
    min-height: 44px !important;
    max-height: 44px !important;
    padding: 0 !important;
    border-radius: 999px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: .88rem !important;
    line-height: 1 !important;
    font-weight:700 !important;
    white-space: nowrap !important;
  }
}

@media (max-width: 390px){
  #client-history-card .training-row{
    grid-template-columns: minmax(0, 1fr) 60px !important;
    gap: 8px !important;
  }
  #client-history-card .training-open{
    grid-template-columns: 42px minmax(0, 1fr) !important;
    flex-wrap: nowrap !important;
    padding: 11px 11px !important;
  }
  #client-history-card .training-left{
    width: 42px;
    font-size: .86rem !important;
  }
  #client-history-card .training-actions{
    width: 60px;
    min-width: 60px;
  }
  #client-history-card .training-actions .btn{
    width: 58px !important;
    min-width: 58px !important;
    height: 42px !important;
    min-height: 42px !important;
    max-height: 42px !important;
    font-size: .82rem !important;
  }
}

/* === CoachPro 2026-05-15 v2: Android footer FAB fix without footer side gutters ===
   Keep iOS and desktop untouched. On Android, when the user scrolls to the footer,
   JS adds .cp-android-fab-footer-lift and only the ? / ↑ buttons move higher.
   Footer links keep their natural width/scroll behavior. */
@media (max-width: 1180px){
  html[data-cp-platform="android"] .footer-links-scroll,
  html[data-cp-platform="android"] body .footer-links-scroll,
  html.cp-platform-android .footer-links-scroll,
  html.cp-platform-android body .footer-links-scroll{
    padding-left: 0 !important;
    padding-right: 0 !important;
    scroll-padding-left: 0 !important;
    scroll-padding-right: 0 !important;
  }

}

/* =========================================================
   CoachPro 2026-05-15: final stable mobile/client tabbar
   - no moving active overlay / no resize blink on long tab labels
   - active state is a fixed-size background on the tab itself
   ========================================================= */
@media (max-width:1180px){
  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  .cp-tabbar.cp-tabbar-glass > .cp-tabbar-glass-indicator{
    display:none !important;
    opacity:0 !important;
    width:0 !important;
    height:0 !important;
    transform:none !important;
    transition:none !important;
    pointer-events:none !important;
  }

  html.inapp .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-app .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-shell .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="ios"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="android"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    box-sizing:border-box !important;
    flex:0 0 var(--cp-glass-tab-width,96px) !important;
    width:var(--cp-glass-tab-width,96px) !important;
    min-width:var(--cp-glass-tab-width,96px) !important;
    max-width:var(--cp-glass-tab-width,96px) !important;
    height:64px !important;
    min-height:64px !important;
    max-height:64px !important;
    padding:8px 8px 7px !important;
    margin:0 !important;
    border-radius:999px !important;
    border:1px solid transparent !important;
    transform:none !important;
    animation:none !important;
    filter:none !important;
    will-change:auto !important;
    transition:color .12s ease, background-color .12s ease, border-color .12s ease !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
    contain:layout paint !important;
  }

  html.inapp .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-app .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-shell .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="ios"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="android"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    flex-basis:var(--cp-glass-tab-width,96px) !important;
    width:var(--cp-glass-tab-width,96px) !important;
    min-width:var(--cp-glass-tab-width,96px) !important;
    max-width:var(--cp-glass-tab-width,96px) !important;
    height:64px !important;
    min-height:64px !important;
    max-height:64px !important;
    padding:8px 8px 7px !important;
    color:#ff7a24 !important;
    background:rgba(255,255,255,.075) !important;
    border-color:rgba(255,255,255,.145) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.16), 0 5px 14px rgba(0,0,0,.11) !important;
    transform:none !important;
    animation:none !important;
    filter:none !important;
    text-shadow:none !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
  }

  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:#e95710 !important;
    background:rgba(255,255,255,.22) !important;
    border-color:rgba(255,255,255,.28) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.36), 0 5px 14px rgba(15,23,42,.08) !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab::before,
  .cp-tabbar.cp-tabbar-glass .cp-tab::after,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after{
    content:none !important;
    display:none !important;
    opacity:0 !important;
    animation:none !important;
    transition:none !important;
  }
}

/* =========================================================
   CoachPro 2026-05-15 v2: stable liquid-glass active tab
   - keeps the no-blink fixed dimensions from the previous fix
   - restores premium glass depth on the active capsule without a moving overlay
   ========================================================= */
@media (max-width:1180px){
  html.inapp .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-app .cp-tabbar.cp-tabbar-glass .cp-tab,
  html.cp-native-shell .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="ios"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  html[data-cp-platform="android"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    position:relative !important;
    overflow:hidden !important;
    isolation:isolate !important;
    transition:color .14s ease, border-color .14s ease, background-color .14s ease, box-shadow .14s ease !important;
  }

  html.inapp .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-app .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html.cp-native-shell .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="ios"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  html[data-cp-platform="android"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:#ff7a24 !important;
    background:
      linear-gradient(145deg, rgba(255,255,255,.16), rgba(255,255,255,.065) 46%, rgba(255,122,36,.10)),
      rgba(255,255,255,.055) !important;
    border-color:rgba(255,255,255,.26) !important;
    box-shadow:
      0 16px 34px rgba(0,0,0,.28),
      0 0 0 1px rgba(255,122,36,.11),
      inset 0 1px 0 rgba(255,255,255,.38),
      inset 0 -18px 26px rgba(0,0,0,.16),
      inset 0 0 18px rgba(255,122,36,.075) !important;
    -webkit-backdrop-filter:blur(18px) saturate(1.35) !important;
    backdrop-filter:blur(18px) saturate(1.35) !important;
  }

  /* active tab pseudo overlays removed: they created a visible rectangular shine on top of the capsule */

  /* active tab top-line shine removed: glass is rendered by the tab background itself */

  html[data-theme="light"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
    color:#df4f0d !important;
    background:
      linear-gradient(145deg, rgba(255,255,255,.62), rgba(255,255,255,.28) 48%, rgba(255,115,31,.12)),
      rgba(255,255,255,.24) !important;
    border-color:rgba(255,255,255,.54) !important;
    box-shadow:
      0 14px 30px rgba(15,23,42,.16),
      0 0 0 1px rgba(255,115,31,.10),
      inset 0 1px 0 rgba(255,255,255,.72),
      inset 0 -16px 24px rgba(148,70,24,.08),
      inset 0 0 18px rgba(255,115,31,.06) !important;
  }

  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-ico,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active svg,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active span{
    position:relative !important;
    z-index:2 !important;
  }
}


/* === CoachPro 2026-05-15 v3: Android footer links without artificial gutters === */
/* Final override: footer links keep natural alignment/scrolling; only FABs lift above footer. */
@media (max-width: 1180px){
  html[data-cp-platform="android"].cp-has-glass-dock .footer-links-scroll,
  html[data-cp-platform="android"] body.cp-has-glass-dock .footer-links-scroll,
  html[data-cp-platform="android"] body:has(.cp-tabbar.cp-tabbar-glass) .footer-links-scroll,
  html.cp-platform-android.cp-has-glass-dock .footer-links-scroll,
  html.cp-platform-android body.cp-has-glass-dock .footer-links-scroll,
  html.cp-platform-android body:has(.cp-tabbar.cp-tabbar-glass) .footer-links-scroll,
  html[data-cp-platform="android"] .footer-links-scroll,
  html[data-cp-platform="android"] body .footer-links-scroll,
  html.cp-platform-android .footer-links-scroll,
  html.cp-platform-android body .footer-links-scroll{
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    scroll-padding-left: 0 !important;
    scroll-padding-right: 0 !important;
  }
  html[data-cp-platform="android"].cp-has-glass-dock .footer-brand,
  html[data-cp-platform="android"] body.cp-has-glass-dock .footer-brand,
  html[data-cp-platform="android"] body:has(.cp-tabbar.cp-tabbar-glass) .footer-brand,
  html.cp-platform-android.cp-has-glass-dock .footer-brand,
  html.cp-platform-android body.cp-has-glass-dock .footer-brand,
  html.cp-platform-android body:has(.cp-tabbar.cp-tabbar-glass) .footer-brand{
    padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* Tabs: leave enough top room so the first card/header of the selected tab is visible under the sticky nav. */
.cp-tabs-scope [data-cp-panel]{
  scroll-margin-top: calc(var(--nav-h, 64px) + var(--safe-top, 0px) + 26px);
}


/* === CoachPro 2026-05-15 v4: clean stable liquid-glass tab + Android bottom FAB lift ===
   - remove the top rectangular shine from active tabs; glass remains on the capsule itself
   - Android only: when the footer/end of page is reached, ? and ↑ lift clearly above footer links */
@media (max-width:1180px){
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html.inapp .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html.cp-native-app .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html.cp-native-shell .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html[data-cp-platform="ios"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  html[data-cp-platform="android"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after{
    content:none !important;
    display:none !important;
    opacity:0 !important;
    background:none !important;
    box-shadow:none !important;
  }

  html[data-cp-platform="android"] .footer-links-scroll,
  html[data-cp-platform="android"] body .footer-links-scroll,
  html.cp-platform-android .footer-links-scroll,
  html.cp-platform-android body .footer-links-scroll{
    padding-left:0 !important;
    padding-right:0 !important;
    margin-left:0 !important;
    margin-right:0 !important;
    scroll-padding-left:0 !important;
    scroll-padding-right:0 !important;
  }

  html[data-cp-platform="android"].cp-android-fab-footer-lift .cp-help-fab,
  html[data-cp-platform="android"].cp-android-fab-footer-lift .fab-scroll-top,
  html.cp-platform-android.cp-android-fab-footer-lift .cp-help-fab,
  html.cp-platform-android.cp-android-fab-footer-lift .fab-scroll-top{
    bottom:var(--cp-android-fab-bottom, calc(104px + env(safe-area-inset-bottom, 0px))) !important;
  }
}


/* === CoachPro 2026-05-15 v5: clean active tab capsule, no extra top rectangle === */
@media (max-width:1180px){
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::before,
  .cp-tabbar.cp-tabbar-glass .cp-tab.is-active::after,
  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator,
  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator::before,
  .cp-tabbar.cp-tabbar-glass .cp-tabbar-glass-indicator::after{
    content:none !important;
    display:none !important;
    opacity:0 !important;
    width:0 !important;
    height:0 !important;
    background:none !important;
    border:0 !important;
    box-shadow:none !important;
    transform:none !important;
    pointer-events:none !important;
  }
}

/* CoachPro exercises: row video links + inline muscle distribution editor */
.cp-exercise-clickable{
  cursor:pointer;
  transition:border-color .18s ease, background-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.cp-exercise-clickable:hover,
.cp-exercise-clickable.is-open{
  border-color: rgba(255,106,31,.26) !important;
  background:
    radial-gradient(circle at 0% 0%, rgba(255,106,31,.075), transparent 34%),
    rgba(255,255,255,.035) !important;
}
.cp-exercise-clickable.is-open{
  box-shadow: inset 3px 0 0 rgba(255,106,31,.72), 0 12px 32px rgba(0,0,0,.16);
}
.cp-exercise-editor-panel{
  margin:.45rem 0 .75rem 0 !important;
  padding:0 !important;
  border-radius:24px !important;
  overflow:hidden;
  background:
    radial-gradient(circle at top left, rgba(255,106,31,.10), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,.050), rgba(255,255,255,.020)) !important;
  border:1px solid rgba(255,255,255,.095) !important;
  box-shadow: 0 18px 44px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.06);
}
.cp-exercise-editor-form{ padding:1rem; }
.cp-exercise-editor-loading,
.cp-exercise-editor-error{
  padding:1rem;
  display:flex;
  align-items:center;
  gap:.65rem;
  color:var(--muted);
  font-weight:700;
}
.cp-exercise-editor-error{ color:#ffd4d4; }
.cp-mini-spinner{
  width:1rem;
  height:1rem;
  border-radius:50%;
  border:2px solid rgba(255,255,255,.20);
  border-top-color:var(--brand);
  animation:cpSpin .75s linear infinite;
}
.cp-exercise-editor-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  padding-bottom:.8rem;
  border-bottom:1px solid rgba(255,255,255,.075);
}
.cp-exercise-editor-eyebrow{
  color:var(--brand);
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-weight:700;
}
.cp-exercise-editor-title{
  margin-top:.2rem;
  font-size:1.05rem;
  line-height:1.15;
  font-weight:700;
  color:var(--text);
}
.cp-exercise-editor-sub{
  margin-top:.28rem;
  color:var(--muted);
  font-size:.86rem;
  line-height:1.35;
}
.cp-exercise-editor-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:.45rem;
  flex-wrap:wrap;
}
.cp-video-link-btn-lg{
  padding:.45rem .72rem;
  font-size:.82rem;
}
.cp-exercise-editor-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:.75rem;
  align-items:end;
  margin-top:.85rem;
}
.cp-exercise-editor-total{
  min-width:130px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-end;
  padding:.62rem .78rem;
  border-radius:16px;
  background:rgba(255,255,255,.045);
  border:1px solid rgba(255,255,255,.08);
}
.cp-exercise-editor-total span{
  color:var(--muted);
  font-size:.74rem;
  font-weight:700;
}
.cp-exercise-editor-total strong{
  color:var(--text);
  font-size:1.05rem;
  font-weight:700;
}
.cp-exercise-editor-total strong.is-warn{ color:var(--brand); }
.cp-exercise-editor-dist{
  margin-top:.8rem;
  display:grid;
  gap:.45rem;
  max-height:315px;
  overflow:auto;
  padding-right:2px;
}
.cp-exercise-dist-row{
  display:grid;
  grid-template-columns:132px minmax(0,1fr) 48px;
  align-items:center;
  gap:.7rem;
  padding:.52rem .62rem;
  border-radius:16px;
  background:rgba(255,255,255,.030);
  border:1px solid rgba(255,255,255,.065);
}
.cp-exercise-dist-row.is-primary{
  border-color:rgba(255,106,31,.28);
  background:rgba(255,106,31,.075);
}
.cp-exercise-dist-name{
  color:var(--text);
  font-weight:700;
  font-size:.84rem;
}
.cp-exercise-dist-percent{
  text-align:right;
  color:var(--muted);
  font-weight:700;
  font-variant-numeric:tabular-nums;
}
.cp-exercise-editor-foot{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
  margin-top:.85rem;
  padding-top:.72rem;
  border-top:1px solid rgba(255,255,255,.075);
}
.cp-readonly-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  padding:.38rem .68rem;
  font-weight:700;
  color:var(--muted);
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.045);
  white-space:nowrap;
}
html[data-theme="light"] .cp-exercise-clickable:hover,
html[data-theme="light"] .cp-exercise-clickable.is-open{
  background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(255,247,242,.88)) !important;
  border-color:rgba(255,106,31,.22) !important;
}
html[data-theme="light"] .cp-exercise-editor-panel{
  background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(248,250,252,.90)) !important;
  border-color:rgba(15,23,42,.095) !important;
  box-shadow:0 18px 42px rgba(15,23,42,.09), inset 0 1px 0 rgba(255,255,255,.78);
}
html[data-theme="light"] .cp-exercise-editor-head,
html[data-theme="light"] .cp-exercise-editor-foot{
  border-color:rgba(15,23,42,.08);
}
html[data-theme="light"] .cp-exercise-dist-row,
html[data-theme="light"] .cp-exercise-editor-total,
html[data-theme="light"] .cp-readonly-pill{
  background:rgba(15,23,42,.025);
  border-color:rgba(15,23,42,.075);
}
html[data-theme="light"] .cp-exercise-dist-row.is-primary{
  background:rgba(255,106,31,.075);
  border-color:rgba(255,106,31,.25);
}
html[data-theme="light"] .cp-mini-spinner{ border-color:rgba(15,23,42,.13); border-top-color:var(--brand); }
@media (max-width:575.98px){
  .cp-exercise-editor-form{ padding:.82rem; }
  .cp-exercise-editor-head,
  .cp-exercise-editor-foot{ flex-direction:column; align-items:stretch; }
  .cp-exercise-editor-actions{ justify-content:flex-start; }
  .cp-exercise-editor-grid{ grid-template-columns:1fr; }
  .cp-exercise-editor-total{ align-items:flex-start; min-width:0; }
  .cp-exercise-dist-row{ grid-template-columns:105px minmax(0,1fr) 42px; gap:.5rem; padding:.5rem; }
  .cp-exercise-dist-name{ font-size:.78rem; }
}

/* CoachPro exercises editor v10: stable panel outside the scroll list */
.cp-exercise-editor-host{
  margin:.9rem 0 .25rem;
  scroll-margin-top: calc(var(--topbar-h, 72px) + 14px);
}
.cp-exercise-editor-host[hidden]{ display:none !important; }
.cp-exercise-editor-host.is-visible{ display:block; }
.cp-exercise-row-actions{ pointer-events:auto; }
.cp-exercise-muscles-btn{
  border-radius:12px !important;
  font-weight:700 !important;
  min-height:36px;
  white-space:nowrap;
}
.cp-exercise-editor-host .cp-exercise-editor-panel{
  margin:0 !important;
  width:100%;
}
@media (max-width:575.98px){
  .cp-exercise-row-actions{ flex-direction:column; align-items:flex-end !important; gap:.4rem !important; }
  .cp-exercise-muscles-btn,
  .cp-exercise-delete-btn{ min-width:74px; }
}


/* === CoachPro nav avatar/menu polish + no-flicker avatars 2026-05-18 === */
.navbar.nav-brand .nav-user-toggle{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:.56rem!important;
  min-height:44px!important;
  padding:.25rem .42rem!important;
  line-height:1!important;
  white-space:nowrap!important;
}
.navbar.nav-brand .nav-user-toggle .cp-nav-avatar{
  margin:0!important;
  width:38px!important;
  height:38px!important;
  flex:0 0 38px!important;
  align-self:center!important;
}
.navbar.nav-brand .nav-user-toggle .nav-user-name{
  display:inline-flex!important;
  align-items:center!important;
  min-height:38px!important;
  line-height:1!important;
  margin:0!important;
  padding:0!important;
  transform:translateY(0)!important;
}
.navbar.nav-brand .nav-user-toggle.dropdown-toggle::after{
  align-self:center!important;
  margin-left:.1rem!important;
  transform:translateY(1px)!important;
  opacity:.78;
  flex:0 0 auto!important;
}
.navbar.nav-brand .nav-user-toggle[aria-expanded="true"].dropdown-toggle::after{
  transform:translateY(1px) rotate(180deg)!important;
}
.cp-nav-avatar.cp-avatar--image > span,
.cp-nav-avatar.cp-avatar--image::before,
.cp-nav-avatar.cp-avatar--image::after{
  display:none!important;
}
.cp-nav-avatar.cp-avatar--image{
  background:rgba(255,255,255,.055)!important;
}
.cp-nav-avatar.cp-avatar--image img{
  opacity:1!important;
  visibility:visible!important;
  transition:none!important;
  transform:none!important;
}
@media (prefers-reduced-motion: no-preference){
  .cp-nav-avatar img{transition:none!important;}
}


/* === v40: premium calendar modals (trainer + availability) === */
.cp-calendar-create-dialog{
  max-width: 760px;
}
.cp-calendar-modal{
  position: relative;
}
.cp-sheet-header{
  position: sticky;
  top: 0;
  z-index: 3;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  background: linear-gradient(180deg, rgba(18,19,26,.96), rgba(18,19,26,.90));
  border-bottom: 1px solid rgba(255,255,255,.08);
}
html[data-theme="light"] .cp-sheet-header{
  background: linear-gradient(180deg, rgba(255,255,255,.96), rgba(248,249,252,.94));
  border-bottom-color: rgba(17,24,39,.08);
}
.cp-sheet-handle{
  width: 52px;
  height: 5px;
  border-radius: 999px;
  background: rgba(255,255,255,.18);
  margin: 2px auto 12px;
}
html[data-theme="light"] .cp-sheet-handle{
  background: rgba(17,24,39,.14);
}
.cp-modal-kicker{
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: .28rem .62rem;
  border-radius: 999px;
  background: rgba(255,122,26,.12);
  border: 1px solid rgba(255,122,26,.26);
  color: var(--brand);
  font-size: .75rem;
  font-weight:700;
  letter-spacing: .04em;
  text-transform: uppercase;
  margin-bottom: .55rem;
}
.cp-sheet-intro{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 14px;
  padding: 14px 16px;
  border-radius: 20px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(135deg, rgba(255,122,26,.12), rgba(255,255,255,.04));
}
html[data-theme="light"] .cp-sheet-intro{
  border-color: rgba(17,24,39,.08);
  background: linear-gradient(135deg, rgba(255,122,26,.10), rgba(255,255,255,.9));
}
.cp-sheet-intro__title{
  font-weight:700;
  line-height: 1.1;
}
.cp-sheet-intro__text{
  color: var(--muted);
  font-size: .94rem;
  margin-top: 4px;
}
.cp-form-stack{
  display:flex;
  flex-direction:column;
  gap: 0;
}
.cp-field-card{
  padding: 14px 16px;
  border-radius: 20px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.03);
  box-shadow: 0 10px 28px rgba(0,0,0,.10);
}
.cp-field-card + .cp-field-card{
  margin-top: 12px;
}
html[data-theme="light"] .cp-field-card{
  background: rgba(255,255,255,.88);
  box-shadow: 0 10px 24px rgba(15,23,42,.06);
}
.cp-field-card .form-label{
  font-size: .86rem;
  color: var(--muted);
  font-weight:700;
  margin-bottom: 8px;
}
.cp-field-card .form-control,
.cp-field-card .form-select{
  min-height: 52px;
}
.cp-field-card textarea.form-control{
  min-height: 108px;
}
.cp-duration-presets{
  display:flex;
  flex-wrap:wrap;
  gap: 8px;
}
.cp-duration-chip{
  min-height: 36px;
  border-radius: 999px;
  font-weight:700;
  padding-inline: 12px;
}
.cp-duration-chip.is-active,
.cp-duration-chip.btn-brand-soft{
  color: #fff;
  border-color: rgba(255,122,26,.4);
  background: linear-gradient(180deg, rgba(255,122,26,.92), rgba(230,90,26,.96));
}
.cp-inline-info{
  padding: 13px 14px;
  border-radius: 18px;
  border: 1px solid rgba(56,189,248,.28);
  background: rgba(56,189,248,.12);
  font-size: .93rem;
  color: var(--text);
}
html[data-theme="light"] .cp-inline-info{
  background: rgba(14,165,233,.09);
  border-color: rgba(14,165,233,.20);
}
.cp-modal-actions-sticky{
  position: sticky;
  bottom: 0;
  z-index: 3;
  border-top: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(18,19,26,.86), rgba(18,19,26,.97));
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  gap: 10px;
}
html[data-theme="light"] .cp-modal-actions-sticky{
  border-top-color: rgba(17,24,39,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.88), rgba(248,249,252,.97));
}
.cp-modal-actions-sticky .btn{
  min-height: 48px;
  border-radius: 16px;
  font-weight:700;
}
.cp-av-settings-grid{
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.cp-av-setting-card .form-select{
  min-width: 0;
}
.cp-segmented-tabs{
  gap: 10px;
  flex-wrap: nowrap;
  overflow-x: auto;
  padding-bottom: 2px;
}
.cp-segmented-tabs .nav-link{
  min-height: 44px;
  border-radius: 999px;
  padding: .72rem 1rem;
  font-weight:700;
  white-space: nowrap;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.03);
  color: var(--muted);
}
.cp-segmented-tabs .nav-link.active{
  background: linear-gradient(180deg, rgba(37,99,235,.95), rgba(29,78,216,.92));
  color: #fff;
  border-color: rgba(37,99,235,.35);
  box-shadow: 0 12px 24px rgba(37,99,235,.18);
}
html[data-theme="light"] .cp-segmented-tabs .nav-link{
  background: rgba(255,255,255,.84);
  border-color: rgba(17,24,39,.08);
}
.cp-av-mini{
  border-radius: 22px;
  padding: 14px;
}
.cp-mini-day{
  min-height: 44px;
}
.cp-av-agenda #trAvailList{
  display:flex;
  flex-direction:column;
  gap: 10px;
}
.cp-av-editor .offcanvas-header{
  padding: 16px 18px 12px;
}
.cp-av-editor .offcanvas-body{
  padding: 14px 18px 18px;
}
.cp-av-editor .btn-group > .btn{
  min-height: 44px;
}
.cp-av-editor-actions .btn{
  min-height: 48px;
  border-radius: 16px;
}
@media (max-width: 991.98px){
  .cp-av-settings-grid{
    grid-template-columns: 1fr;
  }
  .cp-sheet-intro{
    flex-direction: column;
    align-items: flex-start;
  }
}
@media (max-width: 767.98px){
  .cp-sheet-modal .modal-dialog{
    margin: 0;
  }
  .cp-sheet-modal .cp-modal-content{
    min-height: 100dvh;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
  }
  .cp-modal-actions-sticky{
    display:grid;
    grid-template-columns: 1fr 1fr;
    padding-bottom: max(.55rem, calc(env(safe-area-inset-bottom, 0px) + .2rem));
  }
  .cp-modal-actions-sticky .btn:first-child{
    order: 1;
  }
  .cp-modal-actions-sticky .btn:last-child{
    order: 2;
  }
  .cp-field-card,
  .cp-sheet-intro{
    border-radius: 18px;
  }
}
@media (max-width: 575.98px){
  .cp-modal-content .modal-header{
    padding-left: .88rem;
    padding-right: .88rem;
  }
  .cp-modal-content .modal-body{
    padding: .35rem .88rem .65rem;
  }
  .cp-modal-content .modal-footer{
    padding-left: .88rem;
    padding-right: .88rem;
  }
  .cp-modal-actions-sticky{
    grid-template-columns: 1fr;
  }
  .cp-modal-actions-sticky .btn{
    width: 100%;
  }
  .cp-segmented-tabs .nav-link{
    min-height: 42px;
    padding: .7rem .92rem;
  }
}
.me-cal-request{
  border-style: solid;
  box-shadow: 0 12px 26px rgba(255,122,26,.08);
}
html[data-theme="light"] .me-cal-request{
  box-shadow: 0 10px 24px rgba(15,23,42,.05);
}

/* === v41: calendar rebuild polish - desktop-safe, simple language, professional layout === */
#trAvailModal .modal-dialog{
  width: min(1120px, calc(100vw - 40px));
  max-width: 1120px;
  margin-left: auto;
  margin-right: auto;
}
#trCalCreateModal .modal-dialog{
  width: min(760px, calc(100vw - 40px));
  max-width: 760px;
}
#trAvailModal .cp-calendar-modal,
#trCalCreateModal .cp-calendar-modal{
  max-height: min(88dvh, 860px);
  display: flex;
  flex-direction: column;
  border-radius: 28px;
}
#trAvailModal .modal-body,
#trCalCreateModal .modal-body{
  overflow: auto;
  flex: 1 1 auto;
}
#trAvailModal .modal-footer,
#trCalCreateModal .modal-footer{
  flex: 0 0 auto;
}
#trAvailModal .cp-sheet-header,
#trCalCreateModal .cp-sheet-header{
  padding: 18px 20px 14px;
}
#trAvailModal .modal-title,
#trCalCreateModal .modal-title{
  font-size: clamp(1.2rem, 1rem + .8vw, 1.55rem);
  letter-spacing: -.02em;
}
#trAvailModal .cp-sheet-intro,
#trCalCreateModal .cp-sheet-intro{
  padding: 12px 14px;
  border-radius: 18px;
}
#trAvailModal .cp-modal-badge,
#trCalCreateModal .cp-modal-badge{
  background: rgba(255,122,26,.10);
  border-color: rgba(255,122,26,.22);
}
#trAvailModal .cp-av-settings-grid{
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
}
#trAvailModal .cp-field-card{
  border-radius: 18px;
}
#trAvailModal .cp-field-card .form-label,
#trCalCreateModal .cp-field-card .form-label{
  margin-bottom: 7px;
}
#trAvailModal .cp-segmented-tabs{
  position: sticky;
  top: 0;
  z-index: 2;
  background: linear-gradient(180deg, var(--surface) 0%, rgba(18,19,26,.94) 100%);
  padding: 6px 0 10px;
  margin-left: -2px;
  margin-right: -2px;
}
html[data-theme="light"] #trAvailModal .cp-segmented-tabs{
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,249,252,.94));
}
#trAvailModal .cp-segmented-tabs .nav-item{
  flex: 1 1 0;
  min-width: 0;
}
#trAvailModal .cp-segmented-tabs .nav-link{
  width: 100%;
  justify-content: center;
  text-align: center;
}
#trAvailModal .cp-av-layout{
  grid-template-columns: 330px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
#trAvailModal .cp-av-mini{
  position: sticky;
  top: 66px;
  box-shadow: none;
  background: rgba(255,255,255,.025);
}
html[data-theme="light"] #trAvailModal .cp-av-mini{
  background: rgba(255,255,255,.82);
}
#trAvailModal .cp-mini-cal-grid{
  gap: 5px;
}
#trAvailModal .cp-mini-day{
  border-radius: 13px;
  min-height: 42px;
}
#trAvailModal .cp-mini-day.is-selected{
  background: rgba(255,122,26,.16);
  border-color: rgba(255,122,26,.50);
  box-shadow: 0 0 0 3px rgba(255,122,26,.10);
}
#trAvailModal .cp-av-agenda{
  min-width: 0;
}
#trAvailModal .cp-av-agenda > .d-flex:first-child{
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: rgba(255,255,255,.025);
}
html[data-theme="light"] #trAvailModal .cp-av-agenda > .d-flex:first-child{
  background: rgba(255,255,255,.82);
}
#trAvailOpenEditorBtn{
  min-width: 116px;
  border-radius: 999px;
  font-weight:700;
}
#trAvailModal .dropdown .btn{
  border-radius: 999px;
  min-width: 92px;
}
#trAvailList .list-group-item,
.cp-agenda-list .list-group-item,
.me-cal-side-list .me-cal-item{
  border-radius: 18px;
}
#trAvailModal .accordion-brand .accordion-item{
  border-radius: 18px;
  overflow: hidden;
}
#trAvailModal .tab-pane .alert,
#trCalCreateModal .alert{
  border-radius: 16px;
}
#trAvailModal .row.g-2,
#trCalCreateModal .row.g-3{
  align-items: stretch;
}
#trAvailModal .modal-footer,
#trCalCreateModal .modal-footer{
  padding: 12px 20px max(12px, calc(env(safe-area-inset-bottom, 0px) + 8px));
}
#trAvailModal .modal-footer .btn,
#trCalCreateModal .modal-footer .btn{
  min-width: 128px;
}
#trAvailModal .btn-outline-danger,
#trCalCreateModal .btn-outline-danger,
.me-cal-item .btn-outline-danger{
  border-color: rgba(239,68,68,.34);
  color: #fca5a5;
  background: rgba(239,68,68,.06);
}
html[data-theme="light"] #trAvailModal .btn-outline-danger,
html[data-theme="light"] #trCalCreateModal .btn-outline-danger,
html[data-theme="light"] .me-cal-item .btn-outline-danger{
  color: #b91c1c;
  background: rgba(239,68,68,.06);
}
.me-cal-action-row{
  gap: 7px;
}
.me-cal-action-row .btn{
  border-radius: 999px;
  font-weight:700;
}
.trainer-calendar-page .me-cal,
.trainer-calendar-page .me-cal-side,
.trainer-calendar-page .me-cal-agenda-wrap,
.me-card-history .me-cal,
.me-card-history .me-cal-side{
  border-radius: 22px;
}
.trainer-calendar-page .me-cal-cell,
.me-card-history .me-cal-cell{
  transition: transform .12s ease, background .12s ease, border-color .12s ease, box-shadow .12s ease;
}
.trainer-calendar-page .me-cal-cell:active,
.me-card-history .me-cal-cell:active{
  transform: scale(.985);
}
.trainer-calendar-page .me-cal-cell.is-selected,
.me-card-history .me-cal-cell.is-selected{
  box-shadow: 0 0 0 3px rgba(255,122,26,.12);
}
.me-cal-request{
  border-radius: 22px;
  padding: 14px;
}
.me-cal-slots .btn,
.me-cal-slots button{
  border-radius: 999px;
  min-height: 38px;
  font-weight:700;
}
@media (max-width: 991.98px){
  #trAvailModal .modal-dialog,
  #trCalCreateModal .modal-dialog{
    width: 100%;
    max-width: none;
    margin: 0;
  }
  #trAvailModal .cp-calendar-modal,
  #trCalCreateModal .cp-calendar-modal{
    max-height: 100dvh;
    min-height: 100dvh;
    border-radius: 0;
  }
  #trAvailModal .cp-av-settings-grid,
  #trAvailModal .cp-av-layout{
    grid-template-columns: 1fr;
  }
  #trAvailModal .cp-av-mini{
    position: relative;
    top: auto;
  }
  #trAvailModal .cp-segmented-tabs .nav-item{
    flex: 0 0 auto;
  }
  #trAvailModal .cp-segmented-tabs .nav-link{
    width: auto;
  }
}
@media (max-width: 575.98px){
  #trAvailModal .cp-sheet-intro,
  #trCalCreateModal .cp-sheet-intro{
    display: none;
  }
  #trAvailModal .cp-av-settings-grid{
    gap: 10px;
  }
  #trAvailModal .cp-field-card,
  #trCalCreateModal .cp-field-card{
    padding: 12px;
  }
  #trAvailModal .cp-av-agenda > .d-flex:first-child{
    padding: 12px;
  }
  #trAvailModal .modal-footer .btn,
  #trCalCreateModal .modal-footer .btn{
    width: 100%;
    min-width: 0;
  }
}


/* === v41: calendar bottom sheets + cleaner event actions === */
#trAvailModal .cp-availability-dialog{
  max-width: min(920px, calc(100vw - 48px));
}
#trAvailModal .cp-calendar-modal{
  max-height: min(820px, calc(100dvh - 64px));
}
#trAvailModal .modal-body,
#trCalCreateModal .modal-body{
  overflow-x: hidden;
}
#trAvailModal .cp-av-layout{
  grid-template-columns: minmax(260px, 300px) minmax(0, 1fr);
  gap: 14px;
}
#trAvailModal .cp-av-mini{
  max-width: 300px;
}
#trAvailModal .cp-mini-cal-grid{
  gap: 4px;
}
#trAvailModal .cp-mini-day{
  min-height: 38px;
  border-radius: 12px;
}
#trAvailModal .cp-mini-day .num{
  font-size: 12px;
}
#trAvailModal .cp-av-settings-grid{
  grid-template-columns: minmax(0, 1fr) minmax(260px, 340px);
}
#trAvailModal .cp-segmented-tabs{
  max-width: 100%;
  scrollbar-width: none;
}
#trAvailModal .cp-segmented-tabs::-webkit-scrollbar{
  display:none;
}
.me-cal-action-row .btn-outline-danger{
  border-color: rgba(239,68,68,.50);
  color: #f87171;
  background: rgba(239,68,68,.08);
}
.me-cal-action-row .btn-outline-danger:hover,
.me-cal-action-row .btn-outline-danger:focus{
  border-color: rgba(239,68,68,.75);
  color: #fff;
  background: rgba(239,68,68,.72);
}
html[data-theme="light"] .me-cal-action-row .btn-outline-danger{
  color: #dc2626;
  border-color: rgba(220,38,38,.35);
  background: rgba(220,38,38,.06);
}
@media (min-width: 992px){
  #trCalCreateModal .cp-calendar-create-dialog{
    max-width: 720px;
  }
  #trAvailModal .modal-dialog-centered{
    min-height: calc(100% - 2.4rem);
  }
  #trAvailModal .cp-calendar-modal{
    border-radius: 24px;
  }
  #trAvailModal .modal-body{
    max-height: calc(100dvh - 210px);
    overflow-y: auto;
  }
}
@media (max-width: 991.98px){
  .cp-bottom-sheet.modal{
    padding: 0 !important;
  }
  .cp-bottom-sheet .modal-dialog{
    position: fixed;
    left: 10px;
    right: 10px;
    bottom: 0;
    width: auto;
    max-width: none;
    margin: 0 auto;
    min-height: 0;
    display: flex;
    align-items: flex-end;
    transform: translate(0, 100%);
  }
  .cp-bottom-sheet.show .modal-dialog{
    transform: none;
  }
  .cp-bottom-sheet .cp-modal-content{
    width: 100%;
    min-height: 0 !important;
    max-height: calc(100dvh - max(84px, env(safe-area-inset-top, 0px) + 64px));
    border-radius: 28px 28px 0 0 !important;
    border-left: 1px solid rgba(255,255,255,.10);
    border-right: 1px solid rgba(255,255,255,.10);
    overflow: hidden;
  }
  html[data-theme="light"] .cp-bottom-sheet .cp-modal-content{
    border-left-color: rgba(17,24,39,.10);
    border-right-color: rgba(17,24,39,.10);
  }
  .cp-bottom-sheet .modal-body{
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 14px;
  }
  .cp-bottom-sheet .cp-sheet-header{
    cursor: grab;
  }
  .cp-sheet-handle{
    width: 56px;
    height: 5px;
    margin-top: 0;
    margin-bottom: 12px;
  }
  #trAvailModal .cp-av-settings-grid{
    grid-template-columns: 1fr;
    gap: 10px;
  }
  #trAvailModal .cp-av-layout{
    grid-template-columns: 1fr;
  }
  #trAvailModal .cp-av-mini{
    max-width: none;
  }
  #trAvailModal .cp-segmented-tabs{
    flex-wrap: nowrap;
    overflow-x: auto;
    margin-left: -2px;
    margin-right: -2px;
    padding: 0 2px 4px;
  }
  #trAvailModal .cp-segmented-tabs .nav-item{
    flex: 0 0 auto;
  }
  #trAvailModal .cp-segmented-tabs .nav-link{
    min-width: max-content;
  }
  .cp-modal-actions-sticky{
    border-radius: 0;
  }
}
@media (max-width: 575.98px){
  .cp-bottom-sheet .modal-dialog{
    left: 0;
    right: 0;
  }
  .cp-bottom-sheet .cp-modal-content{
    max-height: calc(100dvh - max(76px, env(safe-area-inset-top, 0px) + 56px));
  }
  #trAvailModal .cp-sheet-intro{
    display: none;
  }
  #trAvailModal .cp-field-card,
  #trCalCreateModal .cp-field-card{
    padding: 12px 14px;
  }
  #trAvailModal .cp-av-mini{
    padding: 10px;
  }
  #trAvailModal .cp-mini-day{
    min-height: 36px;
  }
}


/* === v42: corrected mobile bottom sheets and centered availability tabs === */
@media (min-width: 992px){
  #trAvailModal .modal-dialog.cp-availability-dialog{
    width: min(900px, calc(100vw - 64px)) !important;
    max-width: 900px !important;
    margin: 1.75rem auto !important;
  }
  #trCalCreateModal .modal-dialog.cp-calendar-create-dialog{
    width: min(720px, calc(100vw - 64px)) !important;
    max-width: 720px !important;
    margin: 1.75rem auto !important;
  }
  #trAvailModal .cp-calendar-modal,
  #trCalCreateModal .cp-calendar-modal{
    min-height: 0 !important;
    max-height: min(82dvh, 820px) !important;
    border-radius: 28px !important;
  }
  #trAvailModal .cp-av-layout{
    grid-template-columns: 292px minmax(0, 1fr) !important;
  }
  #trAvailModal .cp-av-mini{
    max-width: 292px !important;
  }
}

@media (max-width: 991.98px){
  .cp-bottom-sheet.modal{
    display: none;
    padding: 0 12px max(0px, env(safe-area-inset-bottom, 0px)) !important;
    align-items: flex-end !important;
    justify-content: center !important;
  }
  .cp-bottom-sheet.modal.show{
    display: flex !important;
  }
  .cp-bottom-sheet .modal-dialog,
  #trAvailModal .modal-dialog,
  #trCalCreateModal .modal-dialog{
    position: relative !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    width: min(100%, 760px) !important;
    max-width: calc(100vw - 24px) !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    margin: 0 auto !important;
    display: flex !important;
    align-items: flex-end !important;
    transform: translateY(110%);
    transition: transform .24s cubic-bezier(.2,.85,.25,1);
  }
  .cp-bottom-sheet.show .modal-dialog,
  #trAvailModal.show .modal-dialog,
  #trCalCreateModal.show .modal-dialog{
    transform: translateY(0) !important;
  }
  .cp-bottom-sheet .cp-modal-content,
  #trAvailModal .cp-calendar-modal,
  #trCalCreateModal .cp-calendar-modal{
    width: 100% !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: calc(100dvh - max(92px, env(safe-area-inset-top, 0px) + 74px)) !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
    border-radius: 30px 30px 0 0 !important;
    border-left: 1px solid rgba(255,255,255,.10) !important;
    border-right: 1px solid rgba(255,255,255,.10) !important;
    border-bottom: 0 !important;
  }
  .cp-bottom-sheet .cp-sheet-header,
  #trAvailModal .cp-sheet-header,
  #trCalCreateModal .cp-sheet-header{
    flex: 0 0 auto !important;
    padding: 14px 18px 12px !important;
  }
  .cp-bottom-sheet .modal-body,
  #trAvailModal .modal-body,
  #trCalCreateModal .modal-body{
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;
    padding: 12px 16px 14px !important;
  }
  .cp-bottom-sheet .modal-footer,
  #trAvailModal .modal-footer,
  #trCalCreateModal .modal-footer{
    flex: 0 0 auto !important;
    position: relative !important;
    bottom: auto !important;
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 10px !important;
    padding: 12px 16px max(16px, calc(env(safe-area-inset-bottom, 0px) + 12px)) !important;
  }
  .cp-bottom-sheet .modal-footer .btn,
  #trAvailModal .modal-footer .btn,
  #trCalCreateModal .modal-footer .btn{
    width: 100% !important;
    min-height: 52px !important;
    border-radius: 18px !important;
  }
  #trAvailModal .cp-sheet-intro,
  #trCalCreateModal .cp-sheet-intro,
  #trAvailModal .cp-inline-info,
  #trCalCreateModal .cp-inline-info{
    display: none !important;
  }
  #trAvailModal .cp-av-settings-grid,
  #trAvailModal .cp-av-layout{
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }
  #trAvailModal .cp-av-mini{
    max-width: none !important;
    position: relative !important;
    top: auto !important;
  }
  #trAvailModal .cp-segmented-tabs{
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    overscroll-behavior-x: contain;
    scroll-snap-type: x proximity;
    scroll-padding-inline: 40%;
    scrollbar-width: none;
    gap: 10px !important;
    margin: 2px -16px 12px !important;
    padding: 6px 16px 10px !important;
    position: sticky;
    top: -12px;
    z-index: 4;
  }
  #trAvailModal .cp-segmented-tabs::-webkit-scrollbar{ display:none; }
  #trAvailModal .cp-segmented-tabs .nav-item{
    flex: 0 0 auto !important;
    scroll-snap-align: center;
  }
  #trAvailModal .cp-segmented-tabs .nav-link{
    width: auto !important;
    min-width: max-content !important;
    padding-inline: 22px !important;
  }
  #trCalCreateModal .cp-field-card,
  #trAvailModal .cp-field-card{
    padding: 12px 14px !important;
  }
  #trCalCreateModal .cp-field-card textarea.form-control{
    min-height: 92px !important;
  }
}

@media (max-width: 575.98px){
  .cp-bottom-sheet.modal{
    padding-left: 10px !important;
    padding-right: 10px !important;
  }
  .cp-bottom-sheet .modal-dialog,
  #trAvailModal .modal-dialog,
  #trCalCreateModal .modal-dialog{
    max-width: calc(100vw - 20px) !important;
  }
  .cp-bottom-sheet .cp-modal-content,
  #trAvailModal .cp-calendar-modal,
  #trCalCreateModal .cp-calendar-modal{
    max-height: calc(100dvh - max(86px, env(safe-area-inset-top, 0px) + 64px)) !important;
  }
  #trAvailModal .modal-title,
  #trCalCreateModal .modal-title{
    font-size: 1.28rem !important;
  }
  #trAvailModal .cp-sheet-header .small,
  #trCalCreateModal .cp-sheet-header .small{
    font-size: .88rem !important;
    line-height: 1.35 !important;
  }
  #trCalCreateModal .row.g-3{
    row-gap: 12px !important;
  }
}


/* === v43: reliable swipe-to-close for mobile calendar sheets === */
@media (max-width: 991.98px){
  .cp-bottom-sheet .cp-sheet-handle,
  .cp-bottom-sheet .cp-sheet-header{
    touch-action: none !important;
    -webkit-user-select: none;
    user-select: none;
  }
  .cp-bottom-sheet .modal-dialog{
    will-change: transform;
  }
  .cp-bottom-sheet .modal-body{
    overscroll-behavior-y: contain;
  }
}


/* === v6: native swipe-down closing for custom bottom sheets === */
.set-sheet.cp-sheet-dragging,
.timer-sheet.cp-sheet-dragging{
  transition: none !important;
  will-change: transform;
}
.set-sheet-handle,
.set-sheet-header,
.timer-sheet-handle,
.timer-sheet-header{
  touch-action: pan-y;
}


/* === v9: overlay/navbar stability — replace movement with fixed positioning ===
   Root cause: different overlays used different body flags (`modal-open`, `cp-drawer-open`,
   `set-sheet-open`, `timer-sheet-open`, `cp-form-overlay-open`). Older rules moved the glass
   dock down with translateY and sticky navbar lost its sticky position when body scrolling was
   locked. During every overlay we now keep the top navbar fixed to the safe-area and hide the
   bottom dock in-place (opacity only), so no black gap or "sliding navbar" appears. */
body.modal-open .nav-brand,
body.cp-drawer-open .nav-brand,
body.set-sheet-open .nav-brand,
body.timer-sheet-open .nav-brand,
body.cp-form-overlay-open .nav-brand,
body.cp-native-picker-open .nav-brand,
body.no-scroll .nav-brand{
  position: fixed !important;
  top: var(--safe-top, env(safe-area-inset-top, 0px)) !important;
  left: var(--safe-left, env(safe-area-inset-left, 0px)) !important;
  right: var(--safe-right, env(safe-area-inset-right, 0px)) !important;
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
  transform: none !important;
  translate: none !important;
  z-index: 1045 !important; /* below drawers/modals/backdrops, above page */
  will-change: auto !important;
}

@media (max-width:1180px){
  body.modal-open .cp-tabbar.cp-tabbar-glass,
  body.cp-drawer-open .cp-tabbar.cp-tabbar-glass,
  body.set-sheet-open .cp-tabbar.cp-tabbar-glass,
  body.timer-sheet-open .cp-tabbar.cp-tabbar-glass,
  body.no-scroll .cp-tabbar.cp-tabbar-glass,
  body.cp-form-overlay-open .cp-tabbar.cp-tabbar-glass,
  body.cp-native-picker-open .cp-tabbar.cp-tabbar-glass,
  html.pdf-preview-open .cp-tabbar.cp-tabbar-glass{
    opacity:0 !important;
    visibility:hidden !important;
    pointer-events:none !important;
    transform:translateX(-50%) !important;
    bottom:calc(12px + env(safe-area-inset-bottom, 0px)) !important;
  }
  body.modal-open .cp-tabbar-scroll-hint,
  body.cp-drawer-open .cp-tabbar-scroll-hint,
  body.set-sheet-open .cp-tabbar-scroll-hint,
  body.timer-sheet-open .cp-tabbar-scroll-hint,
  body.no-scroll .cp-tabbar-scroll-hint,
  body.cp-form-overlay-open .cp-tabbar-scroll-hint,
  body.cp-native-picker-open .cp-tabbar-scroll-hint{
    opacity:0 !important;
    visibility:hidden !important;
    pointer-events:none !important;
    transform:none !important;
  }
}

/* Keep fixed page action bars from sliding down under sheets. They fade out in place. */
body.set-sheet-open .live-action-bar,
body.timer-sheet-open .live-action-bar,
body.set-sheet-open .rest-timer-pill,
body.timer-sheet-open .rest-timer-pill{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
  transform:none !important;
}

/* Closing animation helpers for custom sheets. JS sets .cp-sheet-closing before hiding. */
.set-sheet.cp-sheet-closing,
.timer-sheet.cp-sheet-closing{
  opacity:0 !important;
  transform:translate3d(0, 115%, 0) !important;
  transition:transform .28s cubic-bezier(.32,.72,.24,1), opacity .20s ease !important;
}
.set-sheet-backdrop.cp-sheet-closing,
.timer-sheet-backdrop.cp-sheet-closing{
  opacity:0 !important;
  transition:opacity .20s ease !important;
}

/* v9b: drawer must cover the full viewport, not start below the navbar/status layout. */
.cp-drawer{
  top:0 !important;
  bottom:0 !important;
  height:auto !important;
  max-height:none !important;
  transform:translate3d(103%,0,0) !important;
}
.cp-drawer.is-open{
  transform:translate3d(0,0,0) !important;
}
.cp-drawer__header{
  padding-top:max(14px, calc(env(safe-area-inset-top, 0px) + 14px)) !important;
}
.cp-drawer__footer{
  padding-bottom:max(14px, calc(env(safe-area-inset-bottom, 0px) + 14px)) !important;
}


/* === v11: safe swipe-dismiss only — no body fixed scroll lock, no navbar transform changes === */
.set-sheet-handle,
.set-sheet-header,
.timer-sheet-handle,
.timer-sheet-header{
  touch-action: none !important;
  -webkit-user-select: none !important;
  user-select: none !important;
}
.set-sheet.cp-sheet-dragging,
.timer-sheet.cp-sheet-dragging{
  transition: none !important;
  will-change: transform, opacity;
}
.set-sheet.cp-sheet-closing,
.timer-sheet.cp-sheet-closing{
  pointer-events: none !important;
  will-change: transform, opacity;
}
body.cp-setsheet-keyboard-open .set-sheet.cp-sheet-closing{
  transition: transform .26s cubic-bezier(.22,.8,.22,1), opacity .18s ease !important;
}

/* === v14: stable navbar flow during overlays ===
   Keep the top navbar fixed while overlays are open (sticky breaks when body overflow is locked),
   but reserve its original space so the page underneath does not jump upward. */
:root{ --cp-overlay-nav-gap: var(--nav-h, 64px); }

body.modal-open .nav-brand,
body.cp-drawer-open .nav-brand,
body.set-sheet-open .nav-brand,
body.timer-sheet-open .nav-brand,
body.cp-form-overlay-open .nav-brand,
body.cp-native-picker-open .nav-brand,
body.no-scroll .nav-brand{
  position: fixed !important;
  top: var(--safe-top, env(safe-area-inset-top, 0px)) !important;
  left: var(--safe-left, env(safe-area-inset-left, 0px)) !important;
  right: var(--safe-right, env(safe-area-inset-right, 0px)) !important;
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
  transform: none !important;
  translate: none !important;
  z-index: 1052 !important;
  pointer-events: none !important;
  will-change: auto !important;
}

body.modal-open > main,
body.cp-drawer-open > main,
body.set-sheet-open > main,
body.timer-sheet-open > main,
body.cp-form-overlay-open > main,
body.cp-native-picker-open > main,
body.no-scroll > main{
  margin-top: var(--cp-overlay-nav-gap) !important;
}

body.modal-open > .container.py-3.flex-grow-1,
body.cp-drawer-open > .container.py-3.flex-grow-1,
body.set-sheet-open > .container.py-3.flex-grow-1,
body.timer-sheet-open > .container.py-3.flex-grow-1,
body.cp-form-overlay-open > .container.py-3.flex-grow-1,
body.cp-native-picker-open > .container.py-3.flex-grow-1,
body.no-scroll > .container.py-3.flex-grow-1{
  margin-top: var(--cp-overlay-nav-gap) !important;
}

/* Avoid Bootstrap scrollbar compensation moving the app shell sideways. */
body.modal-open{ padding-right: 0 !important; }
html{ scrollbar-gutter: stable; }

@media (max-width:1180px){
  body.modal-open .cp-tabbar.cp-tabbar-glass,
  body.cp-drawer-open .cp-tabbar.cp-tabbar-glass,
  body.set-sheet-open .cp-tabbar.cp-tabbar-glass,
  body.timer-sheet-open .cp-tabbar.cp-tabbar-glass,
  body.no-scroll .cp-tabbar.cp-tabbar-glass,
  body.cp-form-overlay-open .cp-tabbar.cp-tabbar-glass,
  body.cp-native-picker-open .cp-tabbar.cp-tabbar-glass,
  html.pdf-preview-open .cp-tabbar.cp-tabbar-glass{
    opacity:0 !important;
    visibility:hidden !important;
    pointer-events:none !important;
    transform:translateX(-50%) !important;
    bottom:calc(12px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* === CoachPro LIVE hints + mobile delete button final polish 2026-05-19 === */
@media (max-width: 767.98px){
  .set-log-card{
    overflow: visible !important;
  }
  .set-log-card .table-responsive{
    box-sizing: border-box !important;
    overflow: visible !important;
    padding-right: 14px !important;
  }
  .table-mobile-sets{
    max-width: 100% !important;
  }
  .table-mobile-sets .col-act{
    width: 3.75rem !important;
  }
  .table-mobile-sets td.text-end,
  .table-mobile-sets th.col-act{
    overflow: visible !important;
    padding-left: .08rem !important;
    padding-right: .72rem !important;
  }
  .table-mobile-sets td.text-end form{
    display:flex !important;
    justify-content:flex-end !important;
    align-items:center !important;
    margin:0 !important;
    transform:none !important;
  }
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{
    width:30px !important;
    height:30px !important;
    min-width:30px !important;
    transform:none !important;
    line-height:1 !important;
  }
}
@media (max-width: 390px){
  .set-log-card .table-responsive{
    padding-right: 16px !important;
  }
  .table-mobile-sets .col-act{
    width:3.55rem !important;
  }
  .table-mobile-sets td.text-end,
  .table-mobile-sets th.col-act{
    padding-right:.82rem !important;
  }
  .table-mobile-sets td.text-end form{
    transform:none !important;
  }
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{
    width:28px !important;
    height:28px !important;
    min-width:28px !important;
  }
}


/* === CoachPro live mobile table fit + superset reorder support 2026-05-19 v20 === */
@media (max-width: 767.98px){
  .set-log-card{
    max-width: 100%;
    overflow: hidden !important;
  }
  .set-log-card .table-responsive{
    width: 100% !important;
    max-width: 100% !important;
    overflow: hidden !important;
    padding-right: 0 !important;
  }
  .table-mobile-sets{
    table-layout: fixed !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    font-size: .82rem !important;
  }
  .table-mobile-sets th,
  .table-mobile-sets td{
    padding-left: .18rem !important;
    padding-right: .18rem !important;
  }
  /* Obj. is less important in the narrow live table; hiding it keeps the delete X fully visible. */
  .table-mobile-sets .col-vol,
  .table-mobile-sets th:nth-child(6),
  .table-mobile-sets td:nth-child(6){
    display: none !important;
  }
  .table-mobile-sets .col-set{ width: 3.15rem !important; }
  .table-mobile-sets .col-reps{ width: 5.15rem !important; }
  .table-mobile-sets .col-kg{ width: 3.15rem !important; }
  .table-mobile-sets .col-rir{ width: 2.30rem !important; }
  .table-mobile-sets .col-act{ width: 2.85rem !important; }
  .table-mobile-sets td.text-end,
  .table-mobile-sets th.col-act{
    padding-left: .04rem !important;
    padding-right: .34rem !important;
    text-align: right !important;
    overflow: visible !important;
  }
  .table-mobile-sets td.text-end form{
    display: flex !important;
    justify-content: flex-end !important;
    align-items: center !important;
    margin: 0 !important;
    transform: none !important;
  }
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    transform: none !important;
  }
}
@media (max-width: 390px){
  .table-mobile-sets{ font-size: .78rem !important; }
  .table-mobile-sets th,
  .table-mobile-sets td{
    padding-left: .14rem !important;
    padding-right: .14rem !important;
  }
  .table-mobile-sets .col-set{ width: 2.95rem !important; }
  .table-mobile-sets .col-reps{ width: 4.80rem !important; }
  .table-mobile-sets .col-kg{ width: 2.85rem !important; }
  .table-mobile-sets .col-rir{ width: 2.15rem !important; }
  .table-mobile-sets .col-act{ width: 2.70rem !important; }
  .table-mobile-sets td.text-end,
  .table-mobile-sets th.col-act{ padding-right: .28rem !important; }
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{
    width: 26px !important;
    height: 26px !important;
    min-width: 26px !important;
  }
}

/* === CoachPro LIVE mobile series table final grid 2026-05-19 v21 ===
   Replaces the narrow table with a 5-column mobile grid: Seria / Powt.-czas / Kg / RIR / X. */
@media (max-width: 767.98px){
  .set-log-card{
    overflow: hidden !important;
  }
  .set-log-card .table-responsive{
    width: 100% !important;
    max-width: 100% !important;
    overflow: hidden !important;
    padding: 0 !important;
  }
  .table-mobile-sets{
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    table-layout: auto !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    margin: 0 !important;
  }
  .table-mobile-sets thead,
  .table-mobile-sets tbody{
    display: block !important;
    width: 100% !important;
  }
  .table-mobile-sets thead tr,
  .table-mobile-sets tbody tr.live-set-row{
    display: grid !important;
    grid-template-columns: 3.55rem minmax(4.75rem, 1fr) 3.35rem 2.45rem 2.65rem !important;
    align-items: center !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  .table-mobile-sets th,
  .table-mobile-sets td{
    display: flex !important;
    align-items: center !important;
    min-width: 0 !important;
    width: auto !important;
    max-width: 100% !important;
    padding: .58rem .24rem !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }
  .table-mobile-sets thead th{
    min-height: 40px !important;
    font-size: .68rem !important;
    line-height: 1.05 !important;
    letter-spacing: .04em !important;
  }
  .table-mobile-sets tbody td{
    min-height: 48px !important;
    font-size: .92rem !important;
  }
  .table-mobile-sets .col-set,
  .table-mobile-sets .live-set-index-cell{
    padding-left: .45rem !important;
    justify-content: flex-start !important;
    overflow: visible !important;
  }
  .table-mobile-sets .col-reps,
  .table-mobile-sets td:nth-child(2){
    justify-content: flex-start !important;
    font-weight:700 !important;
  }
  .table-mobile-sets .col-kg,
  .table-mobile-sets td:nth-child(3),
  .table-mobile-sets .col-rir,
  .table-mobile-sets td:nth-child(4){
    justify-content: center !important;
  }
  .table-mobile-sets .col-act,
  .table-mobile-sets td.text-end{
    justify-content: flex-end !important;
    text-align: right !important;
    padding-left: .08rem !important;
    padding-right: .45rem !important;
    overflow: visible !important;
  }
  .table-mobile-sets td.text-end form{
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    width: 100% !important;
    margin: 0 !important;
    transform: none !important;
  }
  .table-mobile-sets .live-set-index-wrap{
    display: inline-flex !important;
    align-items: center !important;
    gap: .22rem !important;
    min-width: 0 !important;
  }
  .table-mobile-sets .live-set-drag-handle{
    flex: 0 0 22px !important;
    width: 22px !important;
    height: 22px !important;
    min-width: 22px !important;
    margin: 0 !important;
    font-size: .72rem !important;
  }
  .table-mobile-sets .js-set-no{
    min-width: .95rem !important;
  }
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{
    flex: 0 0 28px !important;
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 999px !important;
    line-height: 1 !important;
    transform: none !important;
  }
  .table-mobile-sets tbody tr.live-set-empty-row{
    display: block !important;
    width: 100% !important;
  }
  .table-mobile-sets tbody tr.live-set-empty-row td{
    display: block !important;
    width: 100% !important;
    min-height: 54px !important;
    padding: .9rem .65rem !important;
    text-align: left !important;
  }
}
@media (max-width: 390px){
  .table-mobile-sets thead tr,
  .table-mobile-sets tbody tr.live-set-row{
    grid-template-columns: 3.25rem minmax(4.35rem, 1fr) 3.05rem 2.25rem 2.50rem !important;
  }
  .table-mobile-sets th,
  .table-mobile-sets td{
    padding-left: .18rem !important;
    padding-right: .18rem !important;
  }
  .table-mobile-sets .col-set,
  .table-mobile-sets .live-set-index-cell{
    padding-left: .35rem !important;
  }
  .table-mobile-sets .col-act,
  .table-mobile-sets td.text-end{
    padding-right: .35rem !important;
  }
  .table-mobile-sets thead th{font-size: .64rem !important;}
  .table-mobile-sets tbody td{font-size: .86rem !important;}
  .table-mobile-sets .btn-xs.btn-outline-danger,
  .table-mobile-sets .btn-outline-danger{
    flex-basis: 26px !important;
    width: 26px !important;
    height: 26px !important;
    min-width: 26px !important;
  }
}


/* === CoachPro LIVE v22: clean mobile series grid, no legacy table conflicts === */
.cp-live-start-tip{
  display:flex;
  align-items:flex-start;
  gap:.72rem;
  padding:.86rem .95rem;
  border-radius:18px;
  border:1px solid rgba(255,111,31,.22);
  background:linear-gradient(135deg, rgba(255,111,31,.14), rgba(255,255,255,.035));
  box-shadow:0 14px 32px rgba(0,0,0,.16);
}
.cp-live-start-tip__icon{
  width:34px;
  height:34px;
  flex:0 0 34px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:linear-gradient(180deg, rgba(255,111,31,.95), rgba(238,74,20,.92));
  color:#fff;
  box-shadow:0 10px 24px rgba(255,111,31,.20);
}
.cp-live-start-tip__title{
  color:var(--text);
  font-weight:700;
  line-height:1.15;
  margin-bottom:.15rem;
}
.cp-live-start-tip__text{
  color:var(--muted);
  font-size:.94rem;
  line-height:1.35;
}
html[data-theme="light"] .cp-live-start-tip{
  background:linear-gradient(135deg, rgba(255,111,31,.10), rgba(255,255,255,.92));
  border-color:rgba(234,88,12,.20);
  box-shadow:0 12px 28px rgba(15,23,42,.07);
}
@media (max-width:767.98px){
  .set-log-card{
    width:100% !important;
    max-width:100% !important;
    overflow:hidden !important;
    border-radius:18px !important;
  }
  .set-log-card .table-responsive{
    width:100% !important;
    max-width:100% !important;
    overflow:hidden !important;
    padding:0 !important;
    margin:0 !important;
  }
  .live-sets-grid,
  .live-sets-grid.table,
  .live-sets-grid.table-brand{
    display:block !important;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    margin:0 !important;
    table-layout:auto !important;
    border-collapse:separate !important;
    border-spacing:0 !important;
    background:transparent !important;
    --bs-table-bg:transparent !important;
    --bs-table-striped-bg:transparent !important;
    --bs-table-hover-bg:transparent !important;
    box-shadow:none !important;
  }
  .live-sets-grid thead,
  .live-sets-grid tbody{
    display:block !important;
    width:100% !important;
    max-width:100% !important;
  }
  .live-sets-grid thead tr,
  .live-sets-grid tbody tr.live-set-row{
    display:grid !important;
    grid-template-columns:minmax(3.9rem,.95fr) minmax(4.9rem,1.18fr) minmax(3.05rem,.78fr) minmax(2.65rem,.58fr) 2.95rem !important;
    align-items:center !important;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
  }
  .live-sets-grid thead tr{
    min-height:42px !important;
    border-bottom:1px solid rgba(255,255,255,.07) !important;
    background:rgba(255,255,255,.025) !important;
  }
  .live-sets-grid tbody tr.live-set-row{
    min-height:54px !important;
    background:rgba(255,255,255,.035) !important;
    border-left:3px solid rgba(255,111,31,.88) !important;
    border-radius:0 14px 14px 0 !important;
    margin:0 !important;
    overflow:hidden !important;
  }
  html[data-theme="light"] .live-sets-grid tbody tr.live-set-row{
    background:rgba(15,23,42,.035) !important;
  }
  .live-sets-grid th,
  .live-sets-grid td{
    display:flex !important;
    align-items:center !important;
    min-width:0 !important;
    width:auto !important;
    max-width:100% !important;
    height:100% !important;
    padding:.56rem .34rem !important;
    border:0 !important;
    background:transparent !important;
    --bs-table-bg:transparent !important;
    box-shadow:none !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    white-space:nowrap !important;
  }
  .live-sets-grid th{
    color:rgba(255,255,255,.82) !important;
    font-size:.66rem !important;
    line-height:1.05 !important;
    font-weight:700 !important;
    letter-spacing:.08em !important;
    text-transform:uppercase !important;
  }
  html[data-theme="light"] .live-sets-grid th{color:rgba(15,23,42,.64) !important;}
  .live-sets-grid td{
    color:var(--text) !important;
    font-size:.93rem !important;
    font-weight:700 !important;
  }
  .live-sets-grid .col-set,
  .live-sets-grid .live-set-index-cell{
    justify-content:flex-start !important;
    padding-left:.42rem !important;
    overflow:visible !important;
  }
  .live-sets-grid .col-reps,
  .live-sets-grid tbody td:nth-child(2){justify-content:flex-start !important;}
  .live-sets-grid .col-kg,
  .live-sets-grid tbody td:nth-child(3),
  .live-sets-grid .col-rir,
  .live-sets-grid tbody td:nth-child(4){justify-content:center !important;}
  .live-sets-grid .col-act,
  .live-sets-grid tbody td:nth-child(5){
    justify-content:flex-end !important;
    text-align:right !important;
    padding-right:.46rem !important;
    overflow:visible !important;
  }
  .live-sets-grid td.text-end form{
    display:flex !important;
    align-items:center !important;
    justify-content:flex-end !important;
    width:auto !important;
    margin:0 !important;
    transform:none !important;
  }
  .live-sets-grid .live-set-index-wrap{
    display:inline-flex !important;
    align-items:center !important;
    gap:.22rem !important;
    min-width:0 !important;
    max-width:100% !important;
  }
  .live-sets-grid .live-set-drag-handle{
    flex:0 0 22px !important;
    width:22px !important;
    height:22px !important;
    min-width:22px !important;
    margin:0 !important;
    font-size:.72rem !important;
    background:rgba(255,255,255,.08) !important;
  }
  .live-sets-grid .js-set-no{min-width:.82rem !important;}
  .live-sets-grid .btn-xs.btn-outline-danger,
  .live-sets-grid .btn-outline-danger{
    flex:0 0 28px !important;
    width:28px !important;
    height:28px !important;
    min-width:28px !important;
    padding:0 !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    border-radius:999px !important;
    line-height:1 !important;
    transform:none !important;
  }
  .live-sets-grid tbody tr.live-set-empty-row{
    display:block !important;
    width:100% !important;
  }
  .live-sets-grid tbody tr.live-set-empty-row td{
    display:block !important;
    width:100% !important;
    padding:.95rem .75rem !important;
    min-height:54px !important;
    background:transparent !important;
  }
}
/* LIVE set tables: subtle, theme-aware separators improve scanability without
   turning each set into a heavy boxed row. Applies to initial and AJAX-added rows. */
tbody[data-live-set-list="1"] tr.live-set-row + tr.live-set-row > td{
  border-top:1px solid rgba(255,255,255,.105) !important;
}
html[data-theme="light"] tbody[data-live-set-list="1"] tr.live-set-row + tr.live-set-row > td{
  border-top-color:rgba(15,23,42,.105) !important;
}
@media (max-width:767.98px){
  .live-sets-grid tbody tr.live-set-row{
    position:relative !important;
    box-shadow:inset 0 -1px 0 rgba(255,255,255,.105) !important;
  }
  html[data-theme="light"] .live-sets-grid tbody tr.live-set-row{
    box-shadow:inset 0 -1px 0 rgba(15,23,42,.11) !important;
  }
  .live-sets-grid tbody tr.live-set-row:last-child{
    box-shadow:none !important;
  }
  .live-sets-grid tbody tr.live-set-row + tr.live-set-row > td{
    border-top:0 !important;
  }
}

@media (max-width:390px){
  .live-sets-grid thead tr,
  .live-sets-grid tbody tr.live-set-row{
    grid-template-columns:minmax(3.55rem,.95fr) minmax(4.55rem,1.12fr) minmax(2.85rem,.74fr) minmax(2.45rem,.56fr) 2.72rem !important;
  }
  .live-sets-grid th,
  .live-sets-grid td{padding-left:.24rem !important;padding-right:.24rem !important;}
  .live-sets-grid .col-set,
  .live-sets-grid .live-set-index-cell{padding-left:.34rem !important;}
  .live-sets-grid .col-act,
  .live-sets-grid tbody td:nth-child(5){padding-right:.34rem !important;}
  .live-sets-grid td{font-size:.86rem !important;}
  .live-sets-grid th{font-size:.62rem !important;}
  .live-sets-grid .btn-xs.btn-outline-danger,
  .live-sets-grid .btn-outline-danger{flex-basis:26px !important;width:26px !important;height:26px !important;min-width:26px !important;}
}


/* === v24: stronger premium add badges + polished live intro === */
.cp-add-title-premium,
h5:has(.cp-premium-plus),
h5:has(.cp-premium-plus-text),
h6:has(.cp-premium-plus),
h6:has(.cp-premium-plus-text){
  display:inline-flex !important;
  align-items:center !important;
  gap:.58rem !important;
  font-weight:700 !important;
}

.cp-premium-plus,
.cp-premium-plus-text,
h1 .cp-premium-plus,
h2 .cp-premium-plus,
h3 .cp-premium-plus,
h4 .cp-premium-plus,
h5 .cp-premium-plus,
h6 .cp-premium-plus,
h1 .cp-premium-plus-text,
h2 .cp-premium-plus-text,
h3 .cp-premium-plus-text,
h4 .cp-premium-plus-text,
h5 .cp-premium-plus-text,
h6 .cp-premium-plus-text,
.cp-add-title-premium .cp-premium-plus,
.cp-add-title-premium .cp-premium-plus-text{
  width:1.82rem !important;
  height:1.82rem !important;
  min-width:1.82rem !important;
  border-radius:999px !important;
  background:
    radial-gradient(circle at 30% 22%, rgba(255,255,255,.36), transparent 34%),
    linear-gradient(135deg, rgba(255,126,45,.99), rgba(229,60,24,.97)) !important;
  border:1px solid rgba(255,255,255,.18) !important;
  box-shadow:0 11px 24px rgba(239,83,31,.26), inset 0 1px 0 rgba(255,255,255,.26) !important;
}
.cp-premium-plus,
.cp-add-title-premium .cp-premium-plus,
h1 .cp-premium-plus,
h2 .cp-premium-plus,
h3 .cp-premium-plus,
h4 .cp-premium-plus,
h5 .cp-premium-plus,
h6 .cp-premium-plus{
  padding:.26rem !important;
  stroke-width:2.75 !important;
}
.cp-premium-plus-text,
.cp-add-title-premium .cp-premium-plus-text,
h1 .cp-premium-plus-text,
h2 .cp-premium-plus-text,
h3 .cp-premium-plus-text,
h4 .cp-premium-plus-text,
h5 .cp-premium-plus-text,
h6 .cp-premium-plus-text{
  font-size:1.16rem !important;
  font-weight:700 !important;
}

.cp-live-start-tip{
  display:grid;
  grid-template-columns:auto 1fr;
  align-items:center;
  gap:.78rem;
  padding:.82rem .95rem;
  border-radius:20px;
  border:1px solid rgba(255,111,31,.20);
  background:
    radial-gradient(circle at 16% 18%, rgba(255,132,43,.16), transparent 34%),
    linear-gradient(135deg, rgba(255,111,31,.11), rgba(255,255,255,.03));
  box-shadow:0 14px 30px rgba(0,0,0,.15);
}
.cp-live-start-tip__icon-wrap{
  width:50px;
  height:50px;
  min-width:50px;
  border-radius:16px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:
    radial-gradient(circle at 30% 24%, rgba(255,255,255,.32), transparent 34%),
    linear-gradient(135deg, rgba(255,126,45,.99), rgba(229,60,24,.96));
  border:1px solid rgba(255,255,255,.14);
  box-shadow:0 12px 22px rgba(239,83,31,.20), inset 0 1px 0 rgba(255,255,255,.24);
}
.cp-live-start-tip__icon{
  display:block;
  font-size:1.42rem;
  line-height:1;
  filter: drop-shadow(0 2px 5px rgba(0,0,0,.16));
}
.cp-live-start-tip__body{ min-width:0; }
.cp-live-start-tip__title{
  font-size:1.04rem;
  font-weight:700;
  line-height:1.12;
  color:var(--text);
  margin-bottom:.14rem;
}
.cp-live-start-tip__text{
  color:var(--muted);
  font-size:.94rem;
  line-height:1.34;
}
html[data-theme="light"] .cp-live-start-tip{
  background:
    radial-gradient(circle at 16% 18%, rgba(255,132,43,.13), transparent 34%),
    linear-gradient(135deg, rgba(255,111,31,.08), rgba(255,255,255,.95));
  box-shadow:0 12px 24px rgba(15,23,42,.07);
}


/* === v25: consistent section pluses, LIVE desktop actions, red drawer close buttons === */
/* Header plus: this targets the smaller SVG pluses in /clients, /plans, /exercises and the text pluses in add sections. */
.cp-add-title-premium,
h1:has(.cp-premium-plus), h2:has(.cp-premium-plus), h3:has(.cp-premium-plus),
h4:has(.cp-premium-plus), h5:has(.cp-premium-plus), h6:has(.cp-premium-plus),
h1:has(.cp-premium-plus-text), h2:has(.cp-premium-plus-text), h3:has(.cp-premium-plus-text),
h4:has(.cp-premium-plus-text), h5:has(.cp-premium-plus-text), h6:has(.cp-premium-plus-text){
  display:inline-flex !important;
  align-items:center !important;
  gap:.6rem !important;
  font-weight:700 !important;
}
h1 .cp-premium-plus, h2 .cp-premium-plus, h3 .cp-premium-plus,
h4 .cp-premium-plus, h5 .cp-premium-plus, h6 .cp-premium-plus,
.cp-add-title-premium .cp-premium-plus,
h1 .cp-premium-plus-text, h2 .cp-premium-plus-text, h3 .cp-premium-plus-text,
h4 .cp-premium-plus-text, h5 .cp-premium-plus-text, h6 .cp-premium-plus-text,
.cp-add-title-premium .cp-premium-plus-text{
  display:inline-grid !important;
  place-items:center !important;
  flex:0 0 auto !important;
  width:1.86rem !important;
  height:1.86rem !important;
  min-width:1.86rem !important;
  min-height:1.86rem !important;
  border-radius:999px !important;
  color:#fff !important;
  background:
    radial-gradient(circle at 30% 20%, rgba(255,255,255,.36), transparent 34%),
    linear-gradient(135deg, rgba(255,126,45,.99), rgba(229,60,24,.97)) !important;
  border:1px solid rgba(255,255,255,.18) !important;
  box-shadow:0 11px 24px rgba(239,83,31,.26), inset 0 1px 0 rgba(255,255,255,.26) !important;
  line-height:1 !important;
}
h1 .cp-premium-plus, h2 .cp-premium-plus, h3 .cp-premium-plus,
h4 .cp-premium-plus, h5 .cp-premium-plus, h6 .cp-premium-plus,
.cp-add-title-premium .cp-premium-plus{
  padding:.27rem !important;
  box-sizing:border-box !important;
  stroke-width:2.9 !important;
}
h1 .cp-premium-plus-text, h2 .cp-premium-plus-text, h3 .cp-premium-plus-text,
h4 .cp-premium-plus-text, h5 .cp-premium-plus-text, h6 .cp-premium-plus-text,
.cp-add-title-premium .cp-premium-plus-text{
  font-size:1.18rem !important;
  font-weight:700 !important;
}
/* Keep normal inline pluses inside real buttons. */
.btn .cp-premium-plus,
.btn .cp-premium-plus-text,
button .cp-premium-plus,
button .cp-premium-plus-text,
a.btn .cp-premium-plus,
a.btn .cp-premium-plus-text{
  display:inline !important;
  width:auto !important;
  height:auto !important;
  min-width:0 !important;
  min-height:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:none !important;
  box-shadow:none !important;
  color:inherit !important;
  font:inherit !important;
  line-height:inherit !important;
}

/* Trening LIVE: cleaner desktop layout for Klient / Zakończ + PDF / Usuń trening. */
@media (min-width: 992px){
  .session-live-top-actions--trainer-active{
    display:grid !important;
    grid-template-columns: 210px 250px 220px;
    align-items:stretch !important;
    gap:.75rem !important;
  }
  .session-live-top-actions--trainer-active .session-live-action-wrap{
    min-width:0 !important;
    width:100% !important;
  }
  .session-live-top-actions--trainer-active .session-live-action-wrap--client{ order:1; }
  .session-live-top-actions--trainer-active .session-live-action-wrap--finish{ order:2; }
  .session-live-top-actions--trainer-active .session-live-action-wrap--delete{ order:3; }
  .session-live-top-actions--trainer-active form,
  .session-live-top-actions--trainer-active .btn{
    width:100% !important;
    height:100% !important;
  }
  .session-live-top-actions--trainer-active .session-live-primary-action,
  .session-live-top-actions--trainer-active .session-live-secondary-btn,
  .session-live-top-actions--trainer-active .session-live-danger-btn{
    min-height:56px !important;
    border-radius:18px !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    gap:.5rem !important;
    padding:.85rem 1.05rem !important;
    font-weight:700 !important;
    white-space:nowrap !important;
  }
}
@media (min-width: 992px) and (max-width: 1199.98px){
  .session-live-top-actions--trainer-active{
    grid-template-columns: 1fr 1.18fr 1fr;
    width:100%;
  }
}

/* Drawer footer: close buttons should read as close/cancel, not a white action button. */
.cp-drawer__footer [data-cp-drawer-close],
#cpNotifCloseBtn,
#cpChatCloseBtn{
  color:#ff5b6d !important;
  border-color:rgba(255,91,109,.72) !important;
  background:rgba(255,91,109,.055) !important;
  box-shadow:none !important;
}
.cp-drawer__footer [data-cp-drawer-close]:hover,
#cpNotifCloseBtn:hover,
#cpChatCloseBtn:hover{
  color:#fff !important;
  border-color:rgba(255,91,109,.92) !important;
  background:rgba(255,91,109,.18) !important;
}
html[data-theme="light"] .cp-drawer__footer [data-cp-drawer-close],
html[data-theme="light"] #cpNotifCloseBtn,
html[data-theme="light"] #cpChatCloseBtn{
  color:#dc2626 !important;
  border-color:rgba(220,38,38,.46) !important;
  background:rgba(220,38,38,.055) !important;
}
html[data-theme="light"] .cp-drawer__footer [data-cp-drawer-close]:hover,
html[data-theme="light"] #cpNotifCloseBtn:hover,
html[data-theme="light"] #cpChatCloseBtn:hover{
  color:#991b1b !important;
  border-color:rgba(220,38,38,.62) !important;
  background:rgba(220,38,38,.10) !important;
}


/* === v27: warmup-style native emoji for live intro + full-width desktop action row === */
.cp-live-start-tip{
  gap: 14px !important;
  padding: 16px 18px !important;
  border-radius: 24px !important;
  border: 1px solid rgba(230,90,26,0.22) !important;
  background: linear-gradient(135deg, rgba(255,111,31,.10), rgba(255,255,255,.04)) !important;
  box-shadow: 0 14px 32px rgba(0,0,0,.10) !important;
}
.cp-live-start-tip__icon-wrap{
  width: 38px !important;
  height: 38px !important;
  min-width: 38px !important;
  border-radius: 14px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 18px !important;
  background: rgba(230,90,26,0.18) !important;
  border: 1px solid rgba(230,90,26,0.35) !important;
  box-shadow: 0 8px 24px rgba(230,90,26,0.08) !important;
}
.cp-live-start-tip__icon{
  display: block !important;
  font-size: 18px !important;
  line-height: 1 !important;
  filter: none !important;
}
.cp-live-start-tip__title{
  font-size: 1.02rem !important;
  font-weight:700 !important;
  margin-bottom: .16rem !important;
}
.cp-live-start-tip__text{
  font-size: .95rem !important;
  line-height: 1.36 !important;
}
html[data-theme="light"] .cp-live-start-tip{
  background: linear-gradient(135deg, rgba(255,111,31,.08), rgba(255,255,255,.94)) !important;
  border-color: rgba(230,90,26,0.22) !important;
  box-shadow: 0 12px 28px rgba(15,23,42,.06) !important;
}
@media (max-width: 575.98px){
  .cp-live-start-tip{
    padding: 14px 14px !important;
    border-radius: 20px !important;
  }
  .cp-live-start-tip__icon-wrap{
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    border-radius: 12px !important;
    font-size: 17px !important;
  }
  .cp-live-start-tip__icon{ font-size: 17px !important; }
}

@media (min-width: 992px){
  .session-live-top-actions--trainer-active{
    display: grid !important;
    grid-template-columns: minmax(0,1fr) minmax(0,1.3fr) minmax(0,1fr) !important;
    gap: .95rem !important;
    width: 100% !important;
    align-items: stretch !important;
  }
  .session-live-top-actions--trainer-active .session-live-action-wrap,
  .session-live-top-actions--trainer-active .session-live-action-wrap--client,
  .session-live-top-actions--trainer-active .session-live-action-wrap--finish,
  .session-live-top-actions--trainer-active .session-live-action-wrap--delete{
    min-width: 0 !important;
    width: 100% !important;
    flex: 1 1 auto !important;
  }
  .session-live-top-actions--trainer-active .session-live-primary-slot,
  .session-live-top-actions--trainer-active .session-live-secondary-actions,
  .session-live-top-actions--trainer-active .session-live-inline-form,
  .session-live-top-actions--trainer-active .session-live-finish-form,
  .session-live-top-actions--trainer-active form,
  .session-live-top-actions--trainer-active a{
    width: 100% !important;
  }
  .session-live-top-actions--trainer-active .session-live-primary-action,
  .session-live-top-actions--trainer-active .session-live-secondary-btn,
  .session-live-top-actions--trainer-active .session-live-danger-btn{
    width: 100% !important;
    min-height: 58px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 18px !important;
    padding: .9rem 1.15rem !important;
    font-weight:700 !important;
  }
  .session-live-top-actions--trainer-active .session-live-action-wrap--finish .session-live-primary-action{
    min-width: 0 !important;
  }
}

/* === v28: exact warmup icon match for live start tip === */
.cp-live-start-tip .cp-live-start-tip__icon-wrap{
  width: 38px !important;
  height: 38px !important;
  min-width: 38px !important;
  flex: 0 0 38px !important;
  border-radius: 14px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 18px !important;
  background: rgba(230,90,26,0.18) !important;
  border: 1px solid rgba(230,90,26,0.35) !important;
  box-shadow: 0 8px 24px rgba(230,90,26,0.08) !important;
  padding: 0 !important;
  transform: none !important;
}
.cp-live-start-tip .cp-live-start-tip__icon{
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  flex: 0 0 auto !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  display: block !important;
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  color: inherit !important;
  font-size: 18px !important;
  line-height: 1 !important;
  filter: none !important;
  transform: none !important;
}
@media (max-width: 576px){
  .cp-live-start-tip .cp-live-start-tip__icon-wrap{
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    flex-basis: 34px !important;
    border-radius: 12px !important;
    font-size: 17px !important;
  }
  .cp-live-start-tip .cp-live-start-tip__icon{
    font-size: 17px !important;
  }
}


/* === v29: restore drawer footer centering + trainer calendar compact spacing === */
.cp-drawer__footer{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:12px !important;
}
.cp-drawer__footer .btn,
.cp-drawer__footer a.btn,
.cp-drawer__footer button.btn{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  min-height:46px !important;
  line-height:1.1 !important;
  white-space:normal !important;
  padding-inline:1rem !important;
}
.cp-drawer__footer .btn-outline-brand{
  flex:1 1 auto !important;
}
.cp-drawer__footer [data-cp-drawer-close],
#cpNotifCloseBtn,
#cpChatCloseBtn{
  flex:0 0 auto !important;
  min-width:132px !important;
  color:#ff5b6d !important;
  border-color:rgba(255,91,109,.72) !important;
  background:rgba(255,91,109,.055) !important;
  box-shadow:none !important;
}
.cp-drawer__footer [data-cp-drawer-close]:hover,
#cpNotifCloseBtn:hover,
#cpChatCloseBtn:hover{
  color:#fff !important;
  border-color:rgba(255,91,109,.92) !important;
  background:rgba(255,91,109,.18) !important;
}
html[data-theme="light"] .cp-drawer__footer [data-cp-drawer-close],
html[data-theme="light"] #cpNotifCloseBtn,
html[data-theme="light"] #cpChatCloseBtn{
  color:#dc2626 !important;
  border-color:rgba(220,38,38,.50) !important;
  background:rgba(220,38,38,.055) !important;
}
html[data-theme="light"] .cp-drawer__footer [data-cp-drawer-close]:hover,
html[data-theme="light"] #cpNotifCloseBtn:hover,
html[data-theme="light"] #cpChatCloseBtn:hover{
  color:#991b1b !important;
  border-color:rgba(220,38,38,.68) !important;
  background:rgba(220,38,38,.10) !important;
}
@media (max-width:575.98px){
  .cp-drawer__footer{
    gap:10px !important;
  }
  .cp-drawer__footer .btn,
  .cp-drawer__footer a.btn,
  .cp-drawer__footer button.btn{
    min-height:48px !important;
    padding-inline:.85rem !important;
  }
  .cp-drawer__footer [data-cp-drawer-close],
  #cpNotifCloseBtn,
  #cpChatCloseBtn{
    min-width:118px !important;
  }
}

/* Keep trainer calendar directly under hero, same spacing rhythm as other pages. */
.trainer-calendar-page{
  padding-top:0 !important;
  margin-top:0 !important;
}
.trainer-calendar-page.container,
.trainer-calendar-page .container{
  padding-top:0 !important;
  margin-top:0 !important;
}
.trainer-calendar-page > .card:first-child,
.trainer-calendar-page > .trainer-calendar-card:first-child,
.trainer-calendar-page .trainer-calendar-card:first-child{
  margin-top:0 !important;
}
body:has(.trainer-calendar-page) .cp-page-hero{
  margin-bottom:.9rem !important;
}
@media (max-width:575.98px){
  .trainer-calendar-page{
    padding-top:0 !important;
  }
  body:has(.trainer-calendar-page) .cp-page-hero{
    margin-bottom:.75rem !important;
  }
}

/* Premium body measurement charts (/me + client detail) */
.cp-measure-charts{
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}
.cp-measure-charts-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}
.cp-measure-charts-head h6{
  font-weight:700;
  letter-spacing:-.02em;
}
.cp-measure-charts-count{
  flex:0 0 auto;
  border:1px solid rgba(243,103,40,.32);
  background:rgba(243,103,40,.10);
  color:var(--accent);
  border-radius:999px;
  padding:6px 10px;
  font-size:12px;
  font-weight:700;
}
.cp-measure-chart-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:14px;
}
.cp-measure-chart-card{
  border:1px solid var(--border);
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.022));
  border-radius:20px;
  padding:14px;
  box-shadow:0 14px 34px rgba(0,0,0,.14);
  overflow:hidden;
}
[data-theme="light"] .cp-measure-chart-card{
  background:linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.74));
  box-shadow:0 12px 30px rgba(17,24,39,.08);
}
.cp-measure-chart-meta{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:8px;
}
.cp-measure-chart-title{
  font-weight:700;
  letter-spacing:-.02em;
  line-height:1.15;
}
.cp-measure-chart-sub{
  color:var(--muted);
  font-size:12px;
  margin-top:3px;
}
.cp-measure-chart-current{
  text-align:right;
  min-width:78px;
}
.cp-measure-chart-current b{
  display:inline-block;
  font-size:20px;
  line-height:1;
  letter-spacing:-.04em;
}
.cp-measure-chart-current span{
  margin-left:3px;
  color:var(--muted);
  font-size:12px;
  font-weight:700;
}
.cp-measure-chart-current small{
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-weight:700;
}
.cp-measure-chart-current small.is-up{ color:var(--accent); }
.cp-measure-chart-current small.is-down{ color:#22c55e; }
.cp-measure-chart-box{
  position:relative;
  height:220px;
}
.cp-empty-premium{
  display:flex;
  gap:12px;
  align-items:center;
  border:1px dashed var(--border);
  background:rgba(255,255,255,.035);
  border-radius:18px;
  padding:14px;
}
[data-theme="light"] .cp-empty-premium{ background:rgba(17,24,39,.025); }
.cp-empty-premium-icon{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:16px;
  background:rgba(243,103,40,.12);
  flex:0 0 auto;
}
.cp-empty-premium span{
  display:block;
  margin-top:2px;
  color:var(--muted);
  font-size:13px;
}
@media (max-width: 768px){
  .cp-measure-chart-grid{ grid-template-columns:1fr; }
  .cp-measure-charts-head{ align-items:flex-start; }
  .cp-measure-chart-card{ border-radius:18px; padding:13px; }
  .cp-measure-chart-box{ height:180px; }
}

/* Separate bottom section for all body measurement charts */
.cp-measure-charts-panel .cp-measure-charts{
  margin-top:0;
  padding-top:0;
  border-top:0;
}
.cp-measure-charts-panel .card-brand > .cp-measure-charts{
  margin-top:0;
}

/* === CoachPro menu cleanup 2026-05-21 ===
   Mobile account menu is no longer a nested dropdown inside the collapsed navbar.
   This removes the in-flow height jump and avoids conflicts with Bootstrap dropdown
   positioning. Desktop account dropdown stays as a normal Bootstrap dropdown. */
@media (max-width:991.98px){
  .navbar.nav-brand .cp-mobile-account-summary{ width:100%; }
  .navbar.nav-brand .cp-mobile-account-summary .cp-mobile-account-toggle{
    width:100%; display:flex!important; align-items:center!important; justify-content:center!important;
    pointer-events:none; cursor:default; min-height:54px; gap:12px!important;
  }
  .navbar.nav-brand .cp-mobile-account-summary .cp-mobile-account-toggle::after{ display:none!important; }
}
@media (min-width:992px){
  .navbar.nav-brand .cp-desktop-account-dropdown{ position:relative!important; }
  .navbar.nav-brand .cp-desktop-account-dropdown .dropdown-menu,
  .navbar.nav-brand .cp-desktop-account-dropdown .dropdown-menu[data-bs-popper]{
    position:absolute!important; right:0!important; left:auto!important; top:100%!important;
    transform:none!important; z-index:2400!important; pointer-events:auto!important; min-width:220px;
  }
}

/* LIVE set drag: do not select the ⋮⋮ grip or cell text while dragging/reordering. */
.live-set-drag-handle,
.live-set-index-cell,
.live-set-index-wrap,
html.cp-drag-active,
html.cp-drag-active body,
html.cp-drag-active .live-set-row,
html.cp-drag-active .table-mobile-sets{
  -webkit-user-select:none!important;
  user-select:none!important;
  -webkit-touch-callout:none!important;
}
.live-set-drag-handle{ touch-action:none!important; }

/* === CoachPro mobile account menu polish 2026-05-21 ===
   Clean in-flow collapse inside hamburger: no dropdown positioning, no overlay,
   consistent spacing with the premium mobile navigation. */
@media (max-width:991.98px){
  .navbar.nav-brand .cp-mobile-account-summary{display:none!important;}
  .navbar.nav-brand .cp-mobile-account-item{
    width:100%;
    margin-top:.28rem;
    padding-top:.72rem;
    border-top:1px solid rgba(255,255,255,.08);
  }
  html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-item{border-top-color:rgba(11,11,13,.08);}

  .navbar.nav-brand .cp-mobile-account-toggle,
  .navbar.nav-brand .cp-mobile-account-toggle.nav-link{
    width:100%;
    min-height:64px;
    display:flex!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:12px!important;
    padding:10px 14px!important;
    border:1px solid rgba(255,255,255,.11)!important;
    border-radius:22px!important;
    background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.032))!important;
    box-shadow:0 14px 34px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.08)!important;
    color:rgba(255,255,255,.94)!important;
    text-align:left!important;
    cursor:pointer;
    -webkit-tap-highlight-color:transparent;
  }
  html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-toggle,
  html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-toggle.nav-link{
    border-color:rgba(11,11,13,.10)!important;
    background:linear-gradient(180deg,rgba(11,11,13,.045),rgba(11,11,13,.018))!important;
    color:rgba(11,11,13,.92)!important;
    box-shadow:0 14px 30px rgba(11,11,13,.08), inset 0 1px 0 rgba(255,255,255,.70)!important;
  }
  .navbar.nav-brand .cp-mobile-account-toggle::after{display:none!important;}

  .navbar.nav-brand .cp-nav-avatar--menu{
    width:42px!important;
    height:42px!important;
    flex:0 0 42px;
    margin:0!important;
  }
  .navbar.nav-brand .cp-mobile-account-copy{
    min-width:0;
    flex:1 1 auto;
    display:flex;
    flex-direction:column;
    gap:3px;
  }
  .navbar.nav-brand .cp-mobile-account-name{
    display:block;
    max-width:100%;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-weight:700!important;
    font-size:.98rem!important;
    line-height:1.08!important;
    letter-spacing:.035em!important;
    text-transform:none!important;
  }
  .navbar.nav-brand .cp-mobile-account-subtitle{
    color:var(--muted);
    font-size:.72rem;
    line-height:1;
    font-weight:700;
    letter-spacing:.12em;
    text-transform:uppercase;
  }
  .navbar.nav-brand .cp-mobile-account-chevron{
    width:30px;
    height:30px;
    flex:0 0 30px;
    border-radius:999px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    background:rgba(255,255,255,.055);
    border:1px solid rgba(255,255,255,.08);
    position:relative;
    transition:transform .18s ease, background .18s ease;
  }
  html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-chevron{
    background:rgba(11,11,13,.045);
    border-color:rgba(11,11,13,.07);
  }
  .navbar.nav-brand .cp-mobile-account-chevron::before{
    content:"";
    width:8px;
    height:8px;
    border-right:2px solid currentColor;
    border-bottom:2px solid currentColor;
    transform:rotate(45deg) translate(-1px,-1px);
    opacity:.72;
  }
  .navbar.nav-brand .cp-mobile-account-toggle[aria-expanded="true"] .cp-mobile-account-chevron{
    transform:rotate(180deg);
    background:rgba(255,111,31,.16);
  }

  .navbar.nav-brand .cp-mobile-account-collapse{width:100%;}
  .navbar.nav-brand .cp-mobile-account-menu{
    margin-top:10px;
    padding:7px;
    border:1px solid rgba(255,255,255,.09);
    border-radius:20px;
    background:rgba(255,255,255,.035);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.045);
  }
  html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-menu{
    border-color:rgba(11,11,13,.08);
    background:rgba(11,11,13,.025);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.70);
  }
  .navbar.nav-brand .cp-mobile-account-link{
    min-height:46px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:12px 14px;
    border-radius:15px;
    color:var(--text)!important;
    text-decoration:none!important;
    font-weight:700;
    line-height:1.15;
    letter-spacing:.015em;
    text-align:center;
  }
  .navbar.nav-brand .cp-mobile-account-link + .cp-mobile-account-link{
    margin-top:2px;
    border-top:1px solid rgba(255,255,255,.055);
  }
  html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-link + .cp-mobile-account-link{border-top-color:rgba(11,11,13,.055);}
  .navbar.nav-brand .cp-mobile-account-link:hover,
  .navbar.nav-brand .cp-mobile-account-link:focus-visible{
    background:rgba(255,255,255,.065);
    outline:none;
  }
  html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-link:hover,
  html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-link:focus-visible{background:rgba(11,11,13,.045);}
  .navbar.nav-brand .cp-mobile-account-link--logout{color:rgba(255,255,255,.76)!important;}
  html[data-theme="light"] .navbar.nav-brand .cp-mobile-account-link--logout{color:rgba(11,11,13,.68)!important;}
}


/* 2026-05-21: keep desktop account dropdown above sticky tab bars / glass tabs.
   The account menu belongs to the navbar stacking context, so the navbar itself
   must sit above any page-level tabbar, not only the dropdown element. */
@media (min-width:992px){
  .navbar.nav-brand{ z-index:5000 !important; }
  .navbar.nav-brand .cp-desktop-account-dropdown{ z-index:5010 !important; }
  .navbar.nav-brand .cp-desktop-account-dropdown .dropdown-menu,
  .navbar.nav-brand .cp-desktop-account-dropdown .dropdown-menu[data-bs-popper],
  .navbar.nav-brand .nav-user-menu{ z-index:5020 !important; }
  .cp-tabbar.cp-tabbar-sticky,
  .cp-tabbar.cp-tabbar-glass{ z-index:900 !important; }
}

/* CoachPro: responsive active-plan assignment form — stable on desktop/tablet/mobile */
.cp-plan-assign-form{
  display:grid;
  grid-template-columns:minmax(0,4fr) minmax(0,2fr) minmax(0,2fr) minmax(0,2fr) minmax(112px,1.7fr);
  gap:.75rem;
  align-items:end;
  width:100%;
  max-width:100%;
  min-width:0;
}
.cp-plan-assign-form .form-label{margin-bottom:.35rem;white-space:nowrap;}
.cp-plan-assign-field{min-width:0;max-width:100%;}
.cp-plan-assign-field .input-brand,
.cp-plan-assign-field .form-select,
.cp-plan-assign-field .form-control{width:100%;max-width:100%;min-width:0;box-sizing:border-box;}
.cp-plan-assign-field--submit .btn{min-height:48px;width:100%;padding-left:.85rem;padding-right:.85rem;white-space:nowrap;}
.cp-plan-assign-form.is-unlimited{
  grid-template-columns:minmax(0,5fr) minmax(0,2.2fr) minmax(0,2.2fr) minmax(112px,1.8fr);
}
.cp-plan-assign-form.is-unlimited [data-cp-plan-end-wrap]{display:none!important;}
.cp-plan-active-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;min-width:0;}
.cp-plan-active-main{min-width:0;flex:1 1 auto;}
.cp-plan-active-actions{display:flex;align-items:center;justify-content:flex-end;gap:.55rem;flex:0 1 auto;flex-wrap:wrap;min-width:0;}
.cp-plan-active-actions .btn{white-space:nowrap;}
@media (max-width:1399.98px){
  .cp-plan-assign-form{grid-template-columns:minmax(0,1.4fr) minmax(0,.75fr) minmax(0,.75fr) minmax(0,.75fr);}
  .cp-plan-assign-form.is-unlimited{grid-template-columns:minmax(0,1.4fr) minmax(0,.75fr) minmax(0,.75fr);}
  .cp-plan-assign-field--submit{grid-column:1 / -1;justify-self:end;width:min(180px,100%);}
}
@media (max-width:991.98px){
  .cp-plan-assign-form,
  .cp-plan-assign-form.is-unlimited{grid-template-columns:1fr 1fr;}
  .cp-plan-assign-field--plan{grid-column:1 / -1;}
  .cp-plan-assign-field--submit{grid-column:1 / -1;justify-self:stretch;width:100%;}
}
@media (max-width:575.98px){
  .cp-plan-assign-form,
  .cp-plan-assign-form.is-unlimited{grid-template-columns:1fr;gap:.65rem;}
  .cp-plan-assign-field--plan,
  .cp-plan-assign-field--submit{grid-column:auto;justify-self:stretch;width:100%;}
  .cp-plan-active-row{flex-direction:column;align-items:stretch;}
  .cp-plan-active-actions{justify-content:stretch;}
  .cp-plan-active-actions .btn{flex:1 1 100%;width:100%;}
}


/* CoachPro realistic hero graphics
   Keeps generated visuals inside the existing hero cards without shifting layout. */
.cp-hero-photo-card{
  position: relative;
  isolation: isolate;
  min-height: 166px;
  border-radius: 20px;
  overflow: hidden;
  padding: 0;
  background:
    radial-gradient(360px 180px at 78% 12%, rgba(242,106,46,.18), transparent 62%),
    linear-gradient(135deg, rgba(255,255,255,.06), rgba(255,255,255,.02));
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: 0 18px 46px rgba(0,0,0,.18);
}
.cp-hero-photo-card::before,
.cp-hero-photo-card::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:2;
}
.cp-hero-photo-card::before{
  background:
    linear-gradient(90deg, rgba(11,11,13,.72) 0%, rgba(11,11,13,.14) 18%, rgba(11,11,13,0) 45%, rgba(11,11,13,.42) 100%),
    linear-gradient(0deg, rgba(11,11,13,.72) 0%, rgba(11,11,13,0) 28%, rgba(11,11,13,.34) 100%);
  opacity:.74;
}
.cp-hero-photo-card::after{
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.07), inset 0 0 46px rgba(0,0,0,.46);
  border-radius: inherit;
}
.cp-hero-photo{
  display:block;
  width:100%;
  height: clamp(154px, 15vw, 188px);
  min-height: 0;
  max-height: none;
  object-fit: cover;
  object-position: center;
  border: 0;
  border-radius: inherit;
  opacity: .92;
  transform: scale(1.015);
  -webkit-mask-image: radial-gradient(ellipse at center, #000 58%, rgba(0,0,0,.84) 72%, rgba(0,0,0,.32) 90%, transparent 100%);
  mask-image: radial-gradient(ellipse at center, #000 58%, rgba(0,0,0,.84) 72%, rgba(0,0,0,.32) 90%, transparent 100%);
}
html[data-theme="light"] .cp-hero-photo-card{
  border-color: rgba(11,11,13,.08);
  background:
    radial-gradient(360px 180px at 78% 12%, rgba(242,106,46,.10), transparent 62%),
    linear-gradient(135deg, rgba(236,240,245,.98), rgba(228,233,239,.94));
  box-shadow: 0 15px 30px rgba(17,24,39,.07);
}
html[data-theme="light"] .cp-hero-photo-card::before{
  background:
    linear-gradient(90deg, rgba(17,24,39,.22) 0%, rgba(17,24,39,.08) 16%, rgba(17,24,39,0) 42%, rgba(17,24,39,.16) 100%),
    linear-gradient(0deg, rgba(17,24,39,.19) 0%, rgba(17,24,39,0) 30%, rgba(17,24,39,.10) 100%);
  opacity:.62;
}
html[data-theme="light"] .cp-hero-photo{
  opacity:.98;
  filter: saturate(1.05) contrast(1.06) brightness(.95);
}
@media (max-width: 991.98px){
  .cp-page-hero .cp-hero-photo-card{
    margin-top:.25rem;
    min-height:132px;
  }
  .cp-page-hero .cp-hero-photo{
    height:136px;
  }
}
@media (max-width: 575.98px){
  .cp-page-hero .cp-hero-photo-card{
    border-radius:18px;
  }
  .cp-page-hero .cp-hero-photo{
    height:126px;
    object-position:center;
  }
}

/* === Edit finished session: keep actions readable and prevent return-to-summary workflow confusion === */
.session-live-top-actions--edit-finished{
  width:100%;
  justify-content:stretch;
  align-items:stretch;
}
.session-live-top-actions--edit-finished .session-live-primary-slot,
.session-live-top-actions--edit-finished .session-live-secondary-actions{
  width:100%;
}
.session-live-top-actions--edit-finished .session-live-primary-slot{
  order:1;
}
.session-live-top-actions--edit-finished .session-live-secondary-actions{
  order:2;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:.65rem;
}
.session-live-top-actions--edit-finished .session-live-primary-slot > *,
.session-live-top-actions--edit-finished .session-live-secondary-actions > *,
.session-live-top-actions--edit-finished form,
.session-live-top-actions--edit-finished .btn{
  width:100%;
}
.session-live-top-actions--edit-finished .session-live-primary-action{
  min-height:56px;
  border-radius:18px;
}
.session-live-top-actions--edit-finished .session-live-secondary-btn,
.session-live-top-actions--edit-finished .session-live-danger-btn{
  min-height:48px;
  border-radius:16px;
}
@media (min-width: 992px){
  .session-live-top-actions--edit-finished{
    display:grid !important;
    grid-template-columns:minmax(220px,1.2fr) minmax(0,2.2fr);
    gap:.85rem !important;
    align-items:stretch !important;
  }
  .session-live-top-actions--edit-finished .session-live-primary-slot,
  .session-live-top-actions--edit-finished .session-live-secondary-actions{
    width:100% !important;
  }
  .session-live-top-actions--edit-finished .session-live-secondary-actions{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
}
@media (max-width: 575.98px){
  .session-live-top-actions--edit-finished .session-live-secondary-actions{
    grid-template-columns:1fr;
  }
}

/* CoachPro patch: account avatar crop preview */
.cp-account-avatar-form .cp-upload-preview,
.me-inline-settings .cp-upload-preview{
  border:1px solid var(--border, rgba(255,255,255,.12));
  background:rgba(255,255,255,.035);
  border-radius:22px;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--muted,#98a2b3);
  font-weight:700;
}
.cp-account-avatar-form .cp-upload-preview img,
.me-inline-settings .cp-upload-preview img{width:100%;height:100%;object-fit:cover;display:block;}
.cp-account-avatar-form .cp-upload-preview-avatar,
.me-inline-settings .cp-upload-preview-avatar{width:150px;height:150px;border-radius:999px;}
.cp-account-avatar-form .cp-crop-controls,
.me-inline-settings .cp-crop-controls{display:grid;gap:.55rem;margin-top:.75rem;padding:.85rem;border:1px solid var(--border,rgba(255,255,255,.12));border-radius:18px;background:rgba(255,255,255,.035)}
.cp-account-avatar-form .cp-crop-controls label,
.me-inline-settings .cp-crop-controls label{display:grid;grid-template-columns:130px 1fr;align-items:center;gap:.75rem;color:var(--muted,#98a2b3);font-size:.86rem;font-weight:700;margin:0}
.cp-account-avatar-form .cp-crop-controls input[type="range"],
.me-inline-settings .cp-crop-controls input[type="range"]{width:100%;accent-color:var(--brand,#ff5a1f)}
.cp-account-avatar-form .cp-crop-controls small,
.me-inline-settings .cp-crop-controls small{color:var(--muted,#98a2b3);line-height:1.35}
@media (max-width:768px){.cp-account-avatar-form .cp-crop-controls label,.me-inline-settings .cp-crop-controls label{grid-template-columns:1fr}}


/* CoachPro account avatar focal controls patch */
.cp-account-avatar-form .cp-account-avatar-focus,
.me-inline-settings .cp-account-avatar-focus{display:grid!important;grid-template-columns:1fr!important;gap:.65rem!important;width:100%!important;margin:.85rem 0!important;padding:.9rem!important;border:1px solid var(--border,rgba(148,163,184,.24));border-radius:18px;background:rgba(148,163,184,.07)}
.cp-account-avatar-form .cp-account-avatar-focus label,
.me-inline-settings .cp-account-avatar-focus label{display:grid!important;grid-template-columns:92px minmax(0,1fr)!important;align-items:center!important;gap:.75rem!important;width:100%!important;margin:0!important;color:var(--muted,#98a2b3);font-size:.9rem;font-weight:700;}
.cp-account-avatar-form .cp-account-avatar-focus input[type="range"],
.me-inline-settings .cp-account-avatar-focus input[type="range"]{width:100%!important;min-width:0!important;accent-color:var(--brand,#ff5a1f);}
.cp-avatar-settings__preview img{width:100%;height:100%;object-fit:cover;}
@media(max-width:575.98px){.cp-account-avatar-form .cp-account-avatar-focus label,.me-inline-settings .cp-account-avatar-focus label{grid-template-columns:1fr!important;gap:.35rem!important}.cp-avatar-settings{align-items:flex-start!important}}

/* 2026-06-01: realistic hero photos without washed/white fade. */
.cp-hero-photo-card::before{
  background: linear-gradient(90deg, rgba(11,11,13,.42) 0%, rgba(11,11,13,.10) 24%, rgba(11,11,13,0) 58%, rgba(11,11,13,.24) 100%) !important;
  opacity:.38 !important;
}
html[data-theme="light"] .cp-hero-photo-card::before{
  background: linear-gradient(90deg, rgba(17,24,39,.08) 0%, rgba(17,24,39,.02) 28%, rgba(17,24,39,0) 62%, rgba(17,24,39,.06) 100%) !important;
  opacity:.22 !important;
}
.cp-hero-photo-card::after{
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.06), inset 0 0 20px rgba(0,0,0,.22) !important;
}
.cp-hero-photo{
  opacity:1 !important;
  filter:saturate(1.04) contrast(1.02) !important;
  -webkit-mask-image:none !important;
  mask-image:none !important;
  transform:none !important;
}
html[data-theme="light"] .cp-hero-photo{
  opacity:1 !important;
  filter:saturate(1.04) contrast(1.02) brightness(1) !important;
}

/* 2026-06-01: verified desktop navbar rhythm.
   Replaces the earlier emergency overrides: compact text links on desktop,
   no forced wide pills, and the center menu has priority before the right badge group. */
@media (min-width: 992px){
  .navbar.nav-brand{
    padding-left: .75rem !important;
    padding-right: .75rem !important;
  }
  .navbar.nav-brand .navbar-brand{
    margin-right: .7rem !important;
    flex: 0 0 auto !important;
  }
  .navbar.nav-brand .brand-logo{
    width: 52px;
    height: 52px;
    border-radius: 15px;
  }
  .navbar.nav-brand .brand-title{
    font-size: .9rem !important;
    letter-spacing: .038em !important;
  }

  .navbar.nav-brand .navbar-collapse{
    display: flex !important;
    min-width: 0 !important;
  }
  .navbar.nav-brand .navbar-nav.nav-primary{
    flex: 1 1 auto !important;
    min-width: 0 !important;
    gap: .04rem !important;
    align-items: center !important;
    overflow: visible !important;
    white-space: nowrap !important;
    padding-inline: 0 !important;
  }
  .navbar.nav-brand .navbar-nav.nav-primary .nav-item{
    flex: 0 0 auto !important;
    width: auto !important;
  }
  .navbar.nav-brand .navbar-nav.nav-primary .nav-link{
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 34px !important;
    padding: .42rem .48rem !important;
    border-radius: 11px !important;
    font-size: .89rem !important;
    line-height: 1 !important;
    letter-spacing: .005em !important;
    border: 1px solid transparent !important;
    background: transparent !important;
    transition: background-color .16s ease, border-color .16s ease, color .16s ease, transform .12s ease;
  }
  .navbar.nav-brand .navbar-nav.nav-primary .nav-link:hover,
  .navbar.nav-brand .navbar-nav.nav-primary .nav-link:focus-visible{
    background: rgba(255,255,255,.055) !important;
    border-color: rgba(255,255,255,.08) !important;
    color: var(--text) !important;
  }
  html[data-theme="light"] .navbar.nav-brand .navbar-nav.nav-primary .nav-link:hover,
  html[data-theme="light"] .navbar.nav-brand .navbar-nav.nav-primary .nav-link:focus-visible{
    background: rgba(15,23,42,.045) !important;
    border-color: rgba(15,23,42,.095) !important;
  }

  .navbar.nav-brand .navbar-right{
    flex: 0 0 auto !important;
    gap: .42rem !important;
    margin-left: .55rem !important;
  }
  .navbar-actions--desktop{ gap: .42rem !important; margin-left: .35rem !important; }
  .navbar.nav-brand .badge-wrap{
    font-size: .68rem !important;
    padding: .32rem .52rem !important;
    letter-spacing: .055em !important;
    border: 1px solid var(--border) !important;
    background: var(--badge-muted-bg) !important;
  }
  .navbar-right .nav-user-email{ max-width: 220px !important; }
}

@media (min-width: 1400px){
  .navbar.nav-brand .navbar-nav.nav-primary{ gap: .08rem !important; }
  .navbar.nav-brand .navbar-nav.nav-primary .nav-link{
    padding-left: .54rem !important;
    padding-right: .54rem !important;
    font-size: .9rem !important;
  }
}

@media (min-width: 1700px){
  .navbar.nav-brand .navbar-nav.nav-primary{ gap: .12rem !important; }
  .navbar.nav-brand .navbar-nav.nav-primary .nav-link{
    padding-left: .62rem !important;
    padding-right: .62rem !important;
  }
  .navbar-right .nav-user-email{ max-width: 260px !important; }
}

/* Light theme: make surfaces and form borders visible instead of white-on-white. */
html[data-theme="light"]{
  --border: rgba(15,23,42,.145);
  --border-strong: rgba(15,23,42,.22);
  --input-border: rgba(15,23,42,.18);
  --badge-muted-bg: rgba(15,23,42,.055);
  --surface2: #F0F3F8;
  --shadow: 0 18px 42px rgba(15,23,42,.115);
  --shadow-soft: 0 12px 30px rgba(15,23,42,.105);
}
html[data-theme="light"] .nav-brand{
  border-bottom-color: rgba(15,23,42,.13) !important;
  box-shadow: 0 8px 24px rgba(15,23,42,.055);
}
html[data-theme="light"] .card-brand,
html[data-theme="light"] .card-dark,
html[data-theme="light"] .inner-card,
html[data-theme="light"] .item-brand,
html[data-theme="light"] .guide-tip,
html[data-theme="light"] .guide-chip,
html[data-theme="light"] .cp-crop-controls,
html[data-theme="light"] .cp-account-avatar-focus,
html[data-theme="light"] .me-inline-settings .cp-account-avatar-focus{
  border-color: var(--border) !important;
}
html[data-theme="light"] .card-brand,
html[data-theme="light"] .card-dark{
  box-shadow: 0 16px 38px rgba(15,23,42,.09) !important;
}
html[data-theme="light"] .input-brand,
html[data-theme="light"] .form-select.input-brand,
html[data-theme="light"] .form-control.input-brand,
html[data-theme="light"] .form-control,
html[data-theme="light"] .form-select{
  border-color: var(--input-border) !important;
}
html[data-theme="light"] .input-brand:focus,
html[data-theme="light"] .form-select.input-brand:focus,
html[data-theme="light"] .form-control:focus,
html[data-theme="light"] .form-select:focus{
  border-color: rgba(230,90,26,.62) !important;
  box-shadow: 0 0 0 .2rem rgba(230,90,26,.14) !important;
}
html[data-theme="light"] .badge-muted,
html[data-theme="light"] .badge-wrap{
  border-color: rgba(15,23,42,.14) !important;
}
html[data-theme="light"] .nav-icon-btn{
  border-color: rgba(15,23,42,.14) !important;
  background: rgba(15,23,42,.035) !important;
}

/* 2026-06-01: light-theme form controls audit — visible unchecked borders.
   Applies to Bootstrap checkboxes/switches and custom check-in pills without changing logic. */
.form-check-input,
input[type="checkbox"],
input[type="radio"]{
  border-color: rgba(255,255,255,.26);
}
html[data-theme="light"] .form-check-input,
html[data-theme="light"] input[type="checkbox"],
html[data-theme="light"] input[type="radio"]{
  border-color: rgba(15,23,42,.34) !important;
  background-color: #fff;
  box-shadow: inset 0 1px 2px rgba(15,23,42,.08);
}
html[data-theme="light"] .form-check-input:hover,
html[data-theme="light"] input[type="checkbox"]:hover,
html[data-theme="light"] input[type="radio"]:hover{
  border-color: rgba(15,23,42,.48) !important;
}
html[data-theme="light"] .form-check-input:focus,
html[data-theme="light"] input[type="checkbox"]:focus,
html[data-theme="light"] input[type="radio"]:focus{
  border-color: rgba(230,90,26,.66) !important;
  box-shadow: 0 0 0 .2rem rgba(230,90,26,.14), inset 0 1px 2px rgba(15,23,42,.08) !important;
}
html[data-theme="light"] .form-check-input:checked,
html[data-theme="light"] input[type="checkbox"]:checked,
html[data-theme="light"] input[type="radio"]:checked{
  border-color: rgba(230,90,26,.82) !important;
  background-color: var(--brand) !important;
  box-shadow: none !important;
}

.cp-client-permission-card{
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.025);
}
html[data-theme="light"] .cp-client-permission-card{
  border-color: rgba(15,23,42,.16) !important;
  background: rgba(15,23,42,.025);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.78);
}
html[data-theme="light"] .checkin-toggle-card,
html[data-theme="light"] .checkin-check-pill,
html[data-theme="light"] .checkin-question-row,
html[data-theme="light"] .checkin-history-card,
html[data-theme="light"] .checkin-answer-item,
html[data-theme="light"] .live-ex-history{
  border-color: rgba(15,23,42,.16) !important;
}
html[data-theme="light"] .checkin-toggle-card input,
html[data-theme="light"] .checkin-check-pill input{
  outline: 1px solid rgba(15,23,42,.22);
  outline-offset: 1px;
}

/* === CoachPro 2026-06-04: LIVE rest timer as left side panel on desktop === */
@media (min-width: 992px) and (pointer: fine){
  .timer-sheet-backdrop{
    background: rgba(0,0,0,.18) !important;
    backdrop-filter: blur(1px) !important;
  }
  .timer-sheet{
    left: max(16px, calc(env(safe-area-inset-left, 0px) + 16px)) !important;
    right: auto !important;
    top: calc(var(--nav-h, 72px) + var(--safe-top, 0px) + 18px) !important;
    bottom: auto !important;
    width: min(382px, calc(100vw - 32px)) !important;
    max-height: calc(100dvh - var(--nav-h, 72px) - var(--safe-top, 0px) - 36px) !important;
    border-radius: 24px !important;
    padding: 12px !important;
    opacity: 0;
    transform: translate3d(-18px, 0, 0) scale(.985) !important;
    transition: transform .22s cubic-bezier(.22,.8,.22,1), opacity .18s ease !important;
  }
  .timer-sheet.is-open{
    opacity: 1 !important;
    transform: translate3d(0, 0, 0) scale(1) !important;
  }
  .timer-sheet.cp-sheet-closing{
    opacity: 0 !important;
    transform: translate3d(-18px, 0, 0) scale(.985) !important;
  }
  .timer-sheet-handle{
    display:none !important;
  }
  .timer-sheet-header{
    align-items:center !important;
    justify-content:space-between !important;
    padding:2px 2px 8px !important;
    border-bottom:1px solid var(--cp-border, rgba(148,163,184,.18)) !important;
  }
  .timer-sheet-body{
    padding-top:.35rem !important;
  }
  .timer-big{
    font-size:52px !important;
    text-align:left !important;
    margin:10px 2px 8px !important;
  }
  .timer-quick{
    justify-content:flex-start !important;
  }
  .timer-actions{
    grid-template-columns:1fr 1fr !important;
  }
  body.timer-sheet-open > main,
  body.timer-sheet-open > .container.py-3.flex-grow-1{
    margin-top:0 !important;
  }
}

/* === /me tabs + global CTA containment hotfix 2026-06-04 ===
   The client dashboard has many tabs. On desktop it must behave like mobile:
   one horizontal row, clipped inside the rounded dock, with the active tab scrolled into view. */
.cp-tabs-scope[data-cp-tabs="me"]{
  max-width:100%;
  overflow-x:clip;
}
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass.cp-tabs-me,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-premium.cp-tabs-me{
  display:flex !important;
  flex-wrap:nowrap !important;
  justify-content:flex-start !important;
  align-items:center !important;
  gap:.55rem !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  -webkit-overflow-scrolling:touch !important;
  scrollbar-width:none !important;
  scroll-padding-inline:1rem !important;
  overscroll-behavior-x:contain !important;
  border-radius:22px !important;
  clip-path:inset(0 round 22px);
}
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass.cp-tabs-me::-webkit-scrollbar,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-premium.cp-tabs-me::-webkit-scrollbar{
  width:0 !important;
  height:0 !important;
  display:none !important;
}
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass.cp-tabs-me .cp-tab,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-premium.cp-tabs-me .cp-tab{
  flex:0 0 auto !important;
  white-space:nowrap !important;
  scroll-margin-inline:1rem !important;
}
@media (min-width:992px) and (hover:hover) and (pointer:fine){
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass.cp-tabs-me,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-premium.cp-tabs-me{
    flex-wrap:nowrap !important;
    overflow-x:auto !important;
    overflow-y:hidden !important;
    padding:.65rem !important;
  }
}
.cp-tabs-scope[data-cp-tabs="me"] .me-card-chatcta--global{
  display:block !important;
  margin-top:1rem !important;
  margin-bottom:1.25rem !important;
}
@media(max-width:575.98px){
  .cp-tabs-scope[data-cp-tabs="me"] .me-card-chatcta--global{
    margin-top:.85rem !important;
    margin-bottom:calc(1rem + env(safe-area-inset-bottom,0px)) !important;
  }
}

/* Approved exercise media: hidden entirely when no verified match exists. */
.cp-exercise-media{position:relative;flex:0 0 64px;width:64px;height:64px;border:1px solid var(--cp-border,rgba(127,127,127,.2));border-radius:14px;padding:0;overflow:hidden;background:var(--cp-surface,#fff);box-shadow:0 6px 18px rgba(15,23,42,.08)}
.cp-exercise-media img{width:100%;height:100%;object-fit:cover;display:block}
.cp-exercise-media-play{position:absolute;right:5px;bottom:5px;width:22px;height:22px;border-radius:999px;display:grid;place-items:center;background:rgba(15,23,42,.78);color:#fff;font-size:10px;padding-left:1px}
.cp-exercise-media-modal[hidden]{display:none!important}.cp-exercise-media-modal{position:fixed;inset:0;z-index:1100;display:grid;place-items:center;padding:18px}.cp-exercise-media-backdrop{position:absolute;inset:0;background:rgba(2,6,23,.72);backdrop-filter:blur(5px)}
.cp-exercise-media-dialog{position:relative;z-index:1;width:min(720px,100%);max-height:min(86vh,760px);border-radius:22px;background:var(--cp-surface,#fff);padding:14px;box-shadow:0 28px 80px rgba(0,0,0,.35)}
.cp-exercise-media-stage{display:grid;place-items:center;min-height:260px;max-height:calc(86vh - 28px);overflow:hidden;border-radius:16px;background:#fff}.cp-exercise-media-stage img,.cp-exercise-media-stage video{display:block;max-width:100%;max-height:calc(86vh - 56px);object-fit:contain}
.cp-exercise-media-close{position:absolute;top:22px;right:22px;z-index:2;width:38px;height:38px;border:0;border-radius:999px;background:rgba(15,23,42,.82);color:#fff;font-size:25px;line-height:1}.cp-modal-open{overflow:hidden}
@media (max-width:575.98px){.cp-exercise-media{flex-basis:54px;width:54px;height:54px;border-radius:12px}.cp-exercise-media-dialog{padding:8px;border-radius:18px}.cp-exercise-media-stage{min-height:220px}.cp-exercise-media-close{top:14px;right:14px}}
.exercise-picker-select{display:flex;align-items:center;gap:12px;min-width:0}.exercise-picker-thumb{width:48px;height:48px;flex:0 0 48px;border-radius:11px;object-fit:cover;background:#fff;border:1px solid rgba(127,127,127,.18)}
@media (max-width:575.98px){.exercise-picker-thumb{width:44px;height:44px;flex-basis:44px}}

/* === Landing: premium video reviews carousel 2026-06-21 === */
.lp-video-reviews-section{overflow:hidden}
.lp-video-reviews-section .lp-container{overflow:hidden}
.lp-video-reviews-heading{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:24px;
  margin-bottom:22px;
}
.lp-video-reviews-copy{max-width:760px}
.lp-video-reviews-copy .lp-h2{margin-bottom:8px}
.lp-video-reviews-copy .lp-sub{margin:0}
.lp-video-reviews-eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin-bottom:10px;
  color:var(--orange2, #f0572d);
  font-size:.76rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.lp-video-reviews-controls{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.lp-video-reviews-arrow{
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  border-radius:15px;
  border:1px solid rgba(255,255,255,.13);
  background:rgba(255,255,255,.07);
  color:var(--text-95, #fff);
  box-shadow:0 12px 30px rgba(0,0,0,.16);
  transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease;
}
.lp-video-reviews-arrow svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.lp-video-reviews-arrow:hover:not(:disabled){
  transform:translateY(-2px);
  border-color:rgba(240,87,45,.48);
  background:rgba(240,87,45,.13);
  box-shadow:0 16px 34px rgba(0,0,0,.22);
}
.lp-video-reviews-arrow:focus-visible,
.lp-video-review-play:focus-visible,
.lp-video-reviews-dot:focus-visible{
  outline:3px solid rgba(240,87,45,.35);
  outline-offset:3px;
}
.lp-video-reviews-arrow:disabled{opacity:.35;cursor:default}
html[data-theme="light"] .lp-video-reviews-arrow{
  border-color:rgba(17,24,39,.10);
  background:rgba(255,255,255,.82);
  color:#202733;
  box-shadow:0 12px 28px rgba(17,24,39,.09);
}

.lp-video-reviews-carousel{
  position:relative;
  min-width:0;
  padding:clamp(14px,2vw,22px);
  border:1px solid rgba(255,255,255,.10);
  border-radius:28px;
  background:
    radial-gradient(circle at 10% 0%,rgba(240,87,45,.18),transparent 34%),
    radial-gradient(circle at 94% 100%,rgba(255,107,0,.10),transparent 30%),
    linear-gradient(145deg,rgba(255,255,255,.06),rgba(255,255,255,.025));
  box-shadow:0 28px 80px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.06);
  overflow:hidden;
}
.lp-video-reviews-carousel::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(115deg,transparent 0%,rgba(255,255,255,.035) 45%,transparent 70%);
}
html[data-theme="light"] .lp-video-reviews-carousel{
  border-color:rgba(17,24,39,.08);
  background:
    radial-gradient(circle at 8% 0%,rgba(240,87,45,.13),transparent 34%),
    radial-gradient(circle at 96% 100%,rgba(255,107,0,.08),transparent 30%),
    linear-gradient(145deg,rgba(255,255,255,.98),rgba(248,249,252,.95));
  box-shadow:0 26px 70px rgba(17,24,39,.11),inset 0 1px 0 rgba(255,255,255,.9);
}
.lp-video-reviews-track{
  position:relative;
  z-index:1;
  display:flex;
  gap:18px;
  width:100%;
  min-width:0;
  overflow-x:auto;
  overflow-y:hidden;
  padding:3px 2px 10px;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  scroll-padding-inline:2px;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.lp-video-reviews-track::-webkit-scrollbar{display:none}
.lp-video-review-card{
  flex:0 0 calc((100% - 36px)/3);
  min-width:270px;
  scroll-snap-align:start;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.12);
  border-radius:23px;
  background:rgba(11,14,20,.82);
  box-shadow:0 18px 42px rgba(0,0,0,.22);
  transform:translateZ(0);
  transition:transform .24s ease,border-color .24s ease,box-shadow .24s ease;
}
.lp-video-review-card:hover{
  transform:translateY(-4px);
  border-color:rgba(240,87,45,.34);
  box-shadow:0 24px 54px rgba(0,0,0,.30);
}
html[data-theme="light"] .lp-video-review-card{
  border-color:rgba(17,24,39,.09);
  background:#fff;
  box-shadow:0 16px 38px rgba(17,24,39,.11);
}
html[data-theme="light"] .lp-video-review-card:hover{box-shadow:0 22px 48px rgba(17,24,39,.15)}
.lp-video-review-media{
  position:relative;
  aspect-ratio:9/16;
  overflow:hidden;
  background:#080a0e;
}
.lp-video-review-media::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.18),transparent 22%,transparent 72%,rgba(0,0,0,.30));
}
.lp-video-review-media video{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  background:#080a0e;
}
.lp-video-review-media iframe{
  width:100%;
  height:100%;
  display:block;
  border:0;
  background:#080a0e;
}
.lp-video-review-media.is-drive-hosted::after{display:none}
.lp-video-review-badge{
  position:absolute;
  z-index:3;
  top:13px;
  left:13px;
  display:flex;
  align-items:center;
  gap:7px;
  padding:7px 10px;
  border:1px solid rgba(255,255,255,.18);
  border-radius:999px;
  background:rgba(11,14,20,.63);
  color:#fff;
  font-size:.7rem;
  font-weight:700;
  letter-spacing:.02em;
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  box-shadow:0 8px 22px rgba(0,0,0,.22);
}
.lp-video-review-live-dot{
  width:7px;
  height:7px;
  border-radius:999px;
  background:var(--orange2,#f0572d);
  box-shadow:0 0 0 4px rgba(240,87,45,.18),0 0 14px rgba(240,87,45,.65);
}
.lp-video-review-play{
  position:absolute;
  z-index:4;
  left:50%;
  top:50%;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:10px;
  border:0;
  background:transparent;
  color:#fff;
  font-weight:700;
  font-size:.82rem;
  text-shadow:0 2px 12px rgba(0,0,0,.55);
  transform:translate(-50%,-50%);
  transition:opacity .18s ease,transform .18s ease;
}
.lp-video-review-play:hover{transform:translate(-50%,-50%) scale(1.04)}
.lp-video-review-play-icon{
  width:62px;
  height:62px;
  display:grid;
  place-items:center;
  border:1px solid rgba(255,255,255,.36);
  border-radius:999px;
  background:linear-gradient(145deg,rgba(240,87,45,.94),rgba(255,107,0,.90));
  box-shadow:0 16px 38px rgba(0,0,0,.34),0 0 0 8px rgba(255,255,255,.09);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.lp-video-review-play-icon svg{width:28px;height:28px;fill:currentColor;stroke:none;margin-left:2px}
.lp-video-review-card.is-playing .lp-video-review-play{opacity:0;pointer-events:none;transform:translate(-50%,-50%) scale(.9)}
.lp-video-review-meta{
  display:flex;
  align-items:center;
  gap:11px;
  min-height:78px;
  padding:14px;
  background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.025));
}
html[data-theme="light"] .lp-video-review-meta{background:linear-gradient(180deg,#fff,#fafbfc)}
.lp-video-review-avatar{
  width:43px;
  height:43px;
  flex:0 0 43px;
  display:grid;
  place-items:center;
  border:1px solid rgba(240,87,45,.30);
  border-radius:14px;
  background:linear-gradient(145deg,rgba(240,87,45,.23),rgba(255,107,0,.10));
  color:var(--text-95,#fff);
  font-size:.76rem;
  font-weight:700;
  letter-spacing:.02em;
}
html[data-theme="light"] .lp-video-review-avatar{color:#1f2937}
.lp-video-review-person{min-width:0;flex:1}
.lp-video-review-name{
  overflow:hidden;
  color:var(--text-95,#fff);
  font-size:.97rem;
  font-weight:700;
  line-height:1.18;
  text-overflow:ellipsis;
  white-space:nowrap;
}
html[data-theme="light"] .lp-video-review-name{color:#171b23}
.lp-video-review-city{
  display:flex;
  align-items:center;
  gap:5px;
  margin-top:5px;
  color:var(--muted-2,rgba(255,255,255,.62));
  font-size:.78rem;
  font-weight:650;
}
html[data-theme="light"] .lp-video-review-city{color:#586171}
.lp-video-review-city svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.lp-video-review-mark{
  width:30px;
  height:30px;
  flex:0 0 30px;
  display:grid;
  place-items:center;
  border:1px solid rgba(240,87,45,.30);
  border-radius:999px;
  background:rgba(240,87,45,.13);
  color:var(--orange2,#f0572d);
}
.lp-video-review-mark svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}
.lp-video-reviews-footer{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:8px 2px 1px;
}
.lp-video-reviews-dots{display:flex;align-items:center;gap:7px;min-height:24px}
.lp-video-reviews-dot{
  width:8px;
  height:8px;
  padding:0;
  border:0;
  border-radius:999px;
  background:rgba(255,255,255,.22);
  transition:width .22s ease,background .22s ease,transform .22s ease;
}
.lp-video-reviews-dot:hover{transform:scale(1.2);background:rgba(240,87,45,.58)}
.lp-video-reviews-dot.is-active{width:28px;background:linear-gradient(90deg,var(--orange2,#f0572d),var(--orange,#ff6b00));box-shadow:0 0 14px rgba(240,87,45,.28)}
html[data-theme="light"] .lp-video-reviews-dot{background:rgba(17,24,39,.18)}
html[data-theme="light"] .lp-video-reviews-dot.is-active{background:linear-gradient(90deg,var(--orange2,#f0572d),var(--orange,#ff6b00))}
.lp-video-reviews-hint{
  display:flex;
  align-items:center;
  gap:7px;
  color:var(--muted-2,rgba(255,255,255,.58));
  font-size:.76rem;
  font-weight:700;
}
.lp-video-reviews-hint svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}

@media (max-width:991.98px){
  .lp-video-review-card{flex-basis:calc((100% - 18px)/2);min-width:260px}
}
@media (max-width:767.98px){
  .lp-video-reviews-heading{align-items:flex-start;margin-bottom:18px}
  .lp-video-reviews-controls{padding-top:2px}
  .lp-video-reviews-arrow{width:42px;height:42px;border-radius:14px}
  .lp-video-reviews-carousel{border-radius:24px;padding:14px}
  .lp-video-reviews-track{gap:13px}
  .lp-video-review-card{flex-basis:86%;min-width:248px;border-radius:20px}
  .lp-video-reviews-footer{padding-top:6px}
}
@media (max-width:575.98px){
  .lp-video-reviews-heading{display:block}
  .lp-video-reviews-controls{margin-top:15px}
  .lp-video-reviews-arrow{width:40px;height:40px}
  .lp-video-reviews-carousel{margin-inline:-4px;padding:11px;border-radius:22px}
  .lp-video-review-card{flex-basis:88%;min-width:238px}
  .lp-video-review-meta{min-height:72px;padding:12px}
  .lp-video-review-avatar{width:40px;height:40px;flex-basis:40px;border-radius:13px}
  .lp-video-review-play-icon{width:56px;height:56px}
  .lp-video-reviews-hint{display:none}
}
@media (max-width:390px){
  .lp-video-review-card{flex-basis:91%;min-width:224px}
}
@media (prefers-reduced-motion:reduce){
  .lp-video-review-card,
  .lp-video-reviews-arrow,
  .lp-video-review-play,
  .lp-video-reviews-dot{transition:none!important}
  .lp-video-reviews-track{scroll-behavior:auto}
}


/* CoachPro 2026-07-03: clear, responsive check-in review status. */
.cp-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;height:1.35rem;padding:0 .35rem;margin-left:.2rem;border-radius:999px;background:var(--brand-orange,#ff6f1f);color:#fff;font-size:.72rem;line-height:1;font-weight:700;box-shadow:0 0 0 2px rgba(255,111,31,.15)}
.checkin-inbox-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}
.checkin-status-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}
.checkin-summary-tile{appearance:none;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:.65rem;min-height:58px;padding:.72rem .85rem;border:1px solid rgba(255,255,255,.09);border-radius:17px;background:rgba(255,255,255,.035);color:var(--text-main,#fff);cursor:pointer;transition:.18s ease}
.checkin-summary-tile:hover,.checkin-summary-tile:focus-visible{border-color:rgba(255,111,31,.45);transform:translateY(-1px);outline:none}
.checkin-summary-tile.is-active{border-color:rgba(255,111,31,.62);background:rgba(255,111,31,.11);box-shadow:0 0 0 1px rgba(255,111,31,.10)}
.checkin-summary-tile.is-new strong{color:#ff9a52}.checkin-summary-tile.is-reviewed strong{color:#45d483}
.checkin-summary-label{font-size:.82rem;font-weight:700;color:var(--text-muted,#a7a7b0)}
.checkin-summary-tile strong{font-size:1.45rem;line-height:1;font-weight:700}
.checkin-badge-attention{background:linear-gradient(135deg,#ff6f1f,#ff8d3d)!important;color:#fff!important;box-shadow:0 8px 20px rgba(255,111,31,.22)}
.checkin-history-card{position:relative;overflow:hidden;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.checkin-history-card.is-new{border-color:rgba(255,111,31,.42);box-shadow:0 14px 34px rgba(0,0,0,.13),inset 4px 0 0 rgba(255,111,31,.95)}
.checkin-history-card.is-reviewed{border-color:rgba(57,201,123,.26);box-shadow:inset 4px 0 0 rgba(57,201,123,.82)}
.checkin-status-strip{display:flex;align-items:center;gap:.7rem;margin:-.1rem 0 .9rem;padding:.72rem .82rem;border-radius:16px}
.checkin-history-card.is-new .checkin-status-strip{background:rgba(255,111,31,.11);border:1px solid rgba(255,111,31,.24)}
.checkin-history-card.is-reviewed .checkin-status-strip{background:rgba(57,201,123,.09);border:1px solid rgba(57,201,123,.20)}
.checkin-status-mark{display:inline-flex;align-items:center;justify-content:center;width:2.05rem;height:2.05rem;flex:0 0 auto;border-radius:11px;font-size:1.05rem;font-weight:700}
.is-new .checkin-status-mark{background:rgba(255,111,31,.20);color:#ff9a52}.is-reviewed .checkin-status-mark{background:rgba(57,201,123,.17);color:#45d483}
.checkin-status-copy{display:grid;gap:.08rem;min-width:0}.checkin-status-copy strong{font-size:.94rem;line-height:1.25;color:var(--text-main,#fff)}.checkin-status-copy span{font-size:.79rem;line-height:1.35;color:var(--text-muted,#a7a7b0)}
.checkin-card-actions{display:flex;align-items:center;justify-content:flex-end;gap:.55rem;margin-top:1rem;padding-top:.85rem;border-top:1px solid rgba(255,255,255,.075)}
.checkin-card-actions .btn{min-height:40px;border-radius:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:.4rem}
.checkin-review-btn{min-width:210px}
.checkin-empty-state{display:flex;align-items:center;gap:.8rem;padding:1rem;border:1px dashed rgba(255,255,255,.12);border-radius:18px;background:rgba(255,255,255,.025)}
.checkin-empty-icon{width:2.35rem;height:2.35rem;display:grid;place-items:center;flex:0 0 auto;border-radius:13px;background:rgba(57,201,123,.13);color:#45d483;font-weight:700}
.checkin-empty-state>div:last-child{display:grid;gap:.12rem}.checkin-empty-state strong{color:var(--text-main,#fff)}.checkin-empty-state span{font-size:.84rem;color:var(--text-muted,#a7a7b0)}
html[data-theme="light"] .checkin-summary-tile{border-color:rgba(11,11,13,.10);background:rgba(11,11,13,.025);color:var(--text,#0b0b0d)}
html[data-theme="light"] .checkin-summary-tile.is-active{border-color:rgba(232,79,27,.48);background:rgba(255,111,31,.10)}
html[data-theme="light"] .checkin-summary-label{color:rgba(11,11,13,.62)}
html[data-theme="light"] .checkin-history-card.is-new{border-color:rgba(232,79,27,.34);box-shadow:0 12px 28px rgba(15,23,42,.07),inset 4px 0 0 rgba(232,79,27,.86)}
html[data-theme="light"] .checkin-history-card.is-reviewed{border-color:rgba(22,163,74,.24);box-shadow:inset 4px 0 0 rgba(22,163,74,.70)}
html[data-theme="light"] .checkin-status-copy strong,html[data-theme="light"] .checkin-empty-state strong{color:var(--text,#0b0b0d)}
html[data-theme="light"] .checkin-status-copy span,html[data-theme="light"] .checkin-empty-state span{color:rgba(11,11,13,.64)}
html[data-theme="light"] .checkin-card-actions{border-top-color:rgba(11,11,13,.08)}
html[data-theme="light"] .checkin-empty-state{border-color:rgba(11,11,13,.13);background:rgba(11,11,13,.018)}
@media(max-width:767.98px){.checkin-inbox-head{align-items:stretch}.checkin-reload-btn{flex:0 0 auto}.checkin-status-summary{gap:.45rem}.checkin-summary-tile{min-height:54px;padding:.62rem .65rem;display:grid;gap:.2rem;align-content:center}.checkin-summary-tile strong{font-size:1.25rem}.checkin-summary-label{font-size:.75rem}.checkin-history-card{padding:.85rem!important;border-radius:19px}.checkin-status-strip{align-items:flex-start;margin-bottom:.75rem;padding:.65rem .7rem}.checkin-history-meta{width:100%}.checkin-history-meta .cp-chip{flex:1 1 auto;text-align:center;justify-content:center}.checkin-card-actions{display:grid;grid-template-columns:1fr;margin-top:.85rem}.checkin-card-actions .btn,.checkin-review-btn{width:100%;min-width:0}}
@media(max-width:420px){.checkin-inbox-head{display:grid;grid-template-columns:1fr auto}.checkin-inbox-head .small{grid-column:1/-1}.checkin-status-summary{grid-template-columns:1fr}.checkin-summary-tile{display:flex;min-height:48px}.checkin-status-copy span{font-size:.76rem}.cp-tab-count{min-width:1.2rem;height:1.2rem;font-size:.67rem}}

/* =========================================================
   CoachPro: czytelny licznik nowych check-inów w pasku zakładek
   Licznik jest pozycjonowany niezależnie od emoji i etykiety.
   ========================================================= */
.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar .cp-tab{
  position:relative;
  overflow:visible !important;
  isolation:isolate;
}
.cp-tabs-scope[data-cp-tabs="client"] .cp-tab.cp-tab-has-count{
  padding-right:1rem;
}
.cp-tabs-scope[data-cp-tabs="client"] .cp-tab-count{
  position:absolute !important;
  z-index:8;
  top:.14rem;
  right:.16rem;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:1.42rem;
  height:1.42rem;
  margin:0 !important;
  padding:0 .34rem;
  border:2px solid rgba(20,21,27,.96);
  border-radius:999px;
  background:linear-gradient(135deg,#ff7a24,#e94718) !important;
  color:#fff !important;
  font-size:.68rem;
  line-height:1;
  font-weight:700;
  font-variant-numeric:tabular-nums;
  letter-spacing:-.02em;
  white-space:nowrap;
  box-shadow:0 5px 14px rgba(224,65,19,.38),0 0 0 1px rgba(255,255,255,.10);
  pointer-events:none;
}
html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-tab-count{
  border-color:rgba(255,255,255,.98);
  box-shadow:0 5px 14px rgba(224,65,19,.26),0 0 0 1px rgba(17,24,39,.08);
}
.cp-tabs-scope[data-cp-tabs="client"] .cp-tab-count.d-none{
  display:none !important;
}
.cp-tabs-scope[data-cp-tabs="client"] .cp-tab.has-unread{
  border-color:rgba(255,111,31,.42) !important;
}
@media (max-width:1180px){
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.cp-tab-has-count{
    padding-right:.75rem;
  }
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab-count{
    top:.12rem;
    right:.20rem;
    min-width:1.34rem;
    height:1.34rem;
    padding:0 .30rem;
    font-size:.64rem;
  }
}
@media (max-width:420px){
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab-count{
    top:.10rem;
    right:.16rem;
    min-width:1.28rem;
    height:1.28rem;
    font-size:.61rem;
  }
}

/* =========================================================
   CoachPro tab dock: final iOS/WebView emoji + check-in badge fix
   - badge stays fully inside the tab capsule
   - color emoji are painted without GPU filters that could delay rendering
   ========================================================= */
.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab{
  position:relative !important;
}

.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab.cp-tab-has-count{
  padding-right:1rem !important;
}

.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab-count{
  top:6px !important;
  right:6px !important;
  min-width:20px !important;
  width:auto !important;
  height:20px !important;
  padding:0 5px !important;
  border-width:2px !important;
  font-size:11px !important;
  line-height:16px !important;
  box-sizing:border-box !important;
  transform:none !important;
  translate:none !important;
  overflow:hidden !important;
  clip-path:none !important;
}

/* Keep the badge above the active-glass overlay but inside the rounded dock. */
.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab-count{
  z-index:6 !important;
}
.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:1.42rem !important;
  min-width:1.42rem !important;
  height:1.42rem !important;
  min-height:1.42rem !important;
  margin:0 0 3px !important;
  padding:0 !important;
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif !important;
  font-size:1.08rem !important;
  font-style:normal !important;
  font-weight:400 !important;
  line-height:1 !important;
  font-variant-emoji:emoji;
  text-rendering:auto !important;
  -webkit-font-smoothing:antialiased;
  opacity:1 !important;
  visibility:visible !important;
  filter:none !important;
  text-shadow:none !important;
  transform:none !important;
  -webkit-transform:none !important;
  backface-visibility:visible !important;
  -webkit-backface-visibility:visible !important;
  content-visibility:visible !important;
  contain:none !important;
  overflow:visible !important;
  isolation:isolate;
}

@media (max-width:420px){
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab-count{
    top:5px !important;
    right:5px !important;
    min-width:19px !important;
    height:19px !important;
    padding:0 4px !important;
    font-size:10.5px !important;
  }
}

/* === CoachPro 2026-07-05: keep the LIVE timer close button at the far right === */
.timer-sheet-header{
  width:100%;
  justify-content:space-between !important;
}
.timer-sheet-heading{
  flex:1 1 auto;
  min-width:0;
}
.timer-sheet-close{
  margin-left:auto !important;
  flex:0 0 auto;
  align-self:flex-start;
}
@media (min-width: 992px){
  .timer-sheet-close{ align-self:center; }
}


/* === CoachPro 2026-07-05: client avatar, measurement visibility, stable month nav, LIVE desktop finish === */
/* Larger client photos in /me and /client_detail without changing avatars elsewhere. */
.me-hero-avatar-wrap{
  width:104px;
  height:104px;
}
.cp-client-hero-avatar{
  width:104px !important;
  height:104px !important;
  min-width:104px;
  flex-basis:104px;
  font-size:1.35rem;
}
@media (min-width:768px){
  .me-hero-avatar-wrap{
    width:120px;
    height:120px;
  }
  .cp-client-hero-avatar{
    width:120px !important;
    height:120px !important;
    min-width:120px;
    flex-basis:120px;
    font-size:1.5rem;
  }
}
@media (max-width:575.98px){
  .cp-context-main:has(.cp-client-hero-avatar){
    gap:.8rem;
  }
  .cp-client-hero-avatar{
    width:96px !important;
    height:96px !important;
    min-width:96px;
    flex-basis:96px;
  }
}

/* Make the optional body-circumference fields look like an intentional, tappable section. */
.cp-body-circumference-details{
  border:1px solid rgba(242,106,46,.28);
  border-radius:18px;
  background:linear-gradient(180deg, rgba(242,106,46,.08), rgba(255,255,255,.025));
  padding:.25rem;
  overflow:hidden;
  transition:border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.cp-body-circumference-details[open]{
  border-color:rgba(242,106,46,.48);
  background:linear-gradient(180deg, rgba(242,106,46,.11), rgba(255,255,255,.03));
  box-shadow:0 12px 28px rgba(242,106,46,.08);
}
.cp-body-circumference-toggle{
  list-style:none;
  width:100%;
  min-height:52px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.8rem;
  padding:.72rem .85rem;
  border-radius:14px;
  cursor:pointer;
  color:var(--text);
  user-select:none;
}
.cp-body-circumference-toggle::-webkit-details-marker{display:none}
.cp-body-circumference-toggle__label{
  font-weight:700;
  letter-spacing:-.01em;
}
.cp-body-circumference-toggle__label small{
  color:var(--muted);
  font-size:.78em;
  font-weight:700;
}
.cp-body-circumference-toggle__action{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  flex:0 0 auto;
  color:var(--orange2, #f26a2e);
  font-size:.82rem;
  font-weight:700;
}
.cp-body-circumference-toggle__action b{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  border-radius:999px;
  background:rgba(242,106,46,.14);
  font-size:1.35rem;
  line-height:1;
  transition:transform .18s ease;
}
.cp-body-circumference-details[open] .cp-body-circumference-toggle__action b{
  transform:rotate(90deg);
}
.cp-body-circumference-details > .row{
  padding:.15rem .6rem .7rem;
}
html[data-theme="light"] .cp-body-circumference-details{
  background:linear-gradient(180deg, rgba(242,106,46,.075), rgba(255,255,255,.9));
  border-color:rgba(217,82,28,.25);
}
html[data-theme="light"] .cp-body-circumference-details[open]{
  background:linear-gradient(180deg, rgba(242,106,46,.1), rgba(255,255,255,.96));
  border-color:rgba(217,82,28,.42);
}

/* Fixed columns keep arrows in exactly the same place for every month name. */
.cp-month-nav-fixed{
  align-items:center;
}
.cp-month-nav-fixed .me-cal-month,
.cp-month-nav-fixed #trAvailMiniMonthLabel{
  min-width:0;
  width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  text-align:center;
}
.cp-month-nav-fixed--me{
  display:grid !important;
  grid-template-columns:46px minmax(150px, 1fr) 46px auto;
  gap:8px;
  width:100%;
  flex-wrap:nowrap !important;
}
.cp-month-nav-fixed--client{
  display:grid !important;
  grid-template-columns:46px minmax(170px, 1fr) 46px auto;
  gap:8px;
  width:min(100%, 470px);
  flex-wrap:nowrap !important;
}
.cp-month-nav-fixed--trainer{
  grid-template-columns:var(--tr-cal-control-h, 48px) minmax(170px, 1fr) var(--tr-cal-control-h, 48px) auto !important;
}
.cp-month-nav-fixed--mini{
  display:grid !important;
  grid-template-columns:36px minmax(0, 1fr) 36px;
  gap:8px;
  width:100%;
}
.cp-month-nav-fixed--mini > button{
  width:36px;
  min-width:36px;
  height:36px;
  padding:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  font-size:1.25rem;
  line-height:1;
}
@media (max-width:767.98px){
  .cp-month-nav-fixed--trainer{
    grid-template-columns:var(--tr-cal-control-h, 44px) minmax(0, 1fr) var(--tr-cal-control-h, 44px) !important;
  }
  .cp-month-nav-fixed--trainer #trCalToday{
    grid-column:1 / -1;
  }
}
@media (max-width:575.98px){
  .cp-month-nav-fixed--me{
    grid-template-columns:46px minmax(0, 1fr) 46px;
  }
  .cp-month-nav-fixed--me #meCalToday{
    grid-column:1 / -1;
    width:100%;
  }
  .cp-month-nav-fixed--client{
    grid-template-columns:44px minmax(0, 1fr) 44px;
    width:100%;
  }
  .cp-month-nav-fixed--client #trCalToday{
    grid-column:1 / -1;
    width:100%;
    min-width:0;
  }
  .cp-month-nav-fixed--client .me-cal-btn{
    width:44px;
    min-width:44px;
    height:44px;
  }
}

/* Desktop-only LIVE actions. The whole stack appears and disappears together,
   using the same scroll threshold as the global scroll-to-top control. */
.cp-session-desktop-actions,
.cp-session-finish-desktop{
  display:none;
}
@media (min-width:1200px){
  .cp-session-desktop-actions{
    position:fixed;
    right:16px;
    bottom:calc(env(safe-area-inset-bottom, 0px) + 78px + var(--fab-extra-bottom, 0px));
    z-index:1057;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:.55rem;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translateY(10px) scale(.98);
    transform-origin:bottom right;
    transition:opacity .2s ease, transform .2s ease, visibility 0s linear .2s;
  }
  .cp-session-desktop-actions.is-visible{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:translateY(0) scale(1);
    transition-delay:0s;
  }
  .cp-session-finish-desktop{
    display:block;
    margin:0;
  }
  .cp-session-add-exercise-desktop__btn,
  .cp-session-finish-desktop__btn{
    min-height:48px;
    padding:.72rem 1rem;
    border-radius:999px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:.5rem;
    white-space:nowrap;
    font-weight:700;
    backdrop-filter:blur(12px) saturate(1.15);
    -webkit-backdrop-filter:blur(12px) saturate(1.15);
    box-shadow:0 12px 30px rgba(0,0,0,.18), inset 0 0 0 1px rgba(255,255,255,.08);
  }
  .cp-session-add-exercise-desktop__btn{
    color:var(--text) !important;
    background:rgba(15,18,24,.72) !important;
    border:1px solid rgba(242,106,46,.72) !important;
  }
  .cp-session-add-exercise-desktop__btn:hover,
  .cp-session-add-exercise-desktop__btn:focus-visible{
    color:#fff !important;
    border-color:rgba(255,132,48,1) !important;
    background:rgba(230,90,26,.9) !important;
    box-shadow:0 15px 34px rgba(0,0,0,.24), 0 0 0 3px rgba(242,106,46,.16);
  }
  html[data-theme="light"] .cp-session-add-exercise-desktop__btn{
    color:#1f2937 !important;
    background:rgba(255,255,255,.88) !important;
  }
  .cp-session-finish-desktop__btn{
    position:relative;
    isolation:isolate;
    overflow:hidden;
    color:#fff !important;
    background:rgba(15,18,24,.16) !important;
    border:1px solid rgba(242,106,46,.82) !important;
    text-shadow:0 1px 3px rgba(0,0,0,.95), 0 0 10px rgba(0,0,0,.55);
    -webkit-text-stroke:.2px rgba(0,0,0,.55);
  }
  .cp-session-finish-desktop__btn::before{
    content:"";
    position:absolute;
    z-index:0;
    inset:0 auto 0 0;
    width:var(--session-progress-pct, 0%);
    max-width:100%;
    border-radius:inherit;
    background:linear-gradient(90deg, rgba(230,90,26,.9), rgba(255,132,48,.96));
    box-shadow:inset -1px 0 0 rgba(255,255,255,.25);
    transition:width .32s ease;
  }
  .cp-session-finish-desktop__btn > *{
    position:relative;
    z-index:1;
  }
  .cp-session-finish-desktop__btn:hover,
  .cp-session-finish-desktop__btn:focus-visible{
    color:#fff !important;
    border-color:rgba(255,132,48,1) !important;
    background:rgba(15,18,24,.25) !important;
    box-shadow:0 15px 34px rgba(0,0,0,.24), 0 0 0 3px rgba(242,106,46,.16);
  }
  body.cp-drawer-open .cp-session-desktop-actions,
  body.timer-sheet-open .cp-session-desktop-actions,
  body.set-sheet-open .cp-session-desktop-actions,
  body.cp-keyboard-open .cp-session-desktop-actions{
    opacity:0;
    visibility:hidden;
    pointer-events:none;
  }
}

/* Light theme: the K/M selector needs a visible neutral outline even when unchecked. */
html[data-theme="light"] .cp-gender-pill span,
:root[data-theme="light"] .cp-gender-pill span{
  color:#111827;
  border-color:rgba(15,23,42,.30);
  background:rgba(15,23,42,.045);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.72);
}
html[data-theme="light"] .cp-gender-pill:hover span,
:root[data-theme="light"] .cp-gender-pill:hover span{
  border-color:rgba(15,23,42,.46);
  background:rgba(15,23,42,.075);
}
html[data-theme="light"] .cp-gender-pill input:checked + span,
:root[data-theme="light"] .cp-gender-pill input:checked + span{
  color:#9a3412;
  border-color:rgba(230,90,26,.92);
  background:rgba(242,106,46,.17);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.62), 0 0 0 2px rgba(242,106,46,.08);
}

/* /index avatar now matches /client_detail exactly. */
.dash-hero-avatar{
  width:104px !important;
  height:104px !important;
  min-width:104px;
  flex-basis:104px;
  font-size:1.35rem;
}
@media (min-width:768px){
  .dash-hero-avatar{
    width:120px !important;
    height:120px !important;
    min-width:120px;
    flex-basis:120px;
    font-size:1.5rem;
  }
}
@media (max-width:575.98px){
  .dash-hero-avatar{
    width:96px !important;
    height:96px !important;
    min-width:96px;
    flex-basis:96px;
  }
}

/* Keep initials visible until the actual image has loaded and decoded.
   This removes the brief empty-avatar flash on page load. */
.cp-nav-avatar.cp-avatar--pending > span,
.cp-profile-avatar.cp-avatar--pending > span,
.me-hero-avatar-wrap.cp-avatar--pending > span{
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
  position:relative;
  z-index:1;
}
.cp-nav-avatar.cp-avatar--pending > img,
.cp-profile-avatar.cp-avatar--pending > img,
.me-hero-avatar-wrap.cp-avatar--pending > img{
  opacity:0 !important;
}
.cp-nav-avatar.cp-avatar--loaded > img,
.cp-profile-avatar.cp-avatar--loaded > img,
.me-hero-avatar-wrap.cp-avatar--loaded > img{
  opacity:1 !important;
  transition:opacity .14s ease;
}
.cp-nav-avatar.cp-avatar--loaded > span,
.cp-profile-avatar.cp-avatar--loaded > span,
.me-hero-avatar-wrap.cp-avatar--loaded > span{
  display:none !important;
}


/* =========================================================
   Unified SVG tab dock – /me + /client_detail
   One component, one geometry, no delayed system-emoji painting.
   ========================================================= */
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass{
  --cp-glass-tab-width:96px;
}
.cp-tabbar.cp-tabbar-glass .cp-tab-icon{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  flex:0 0 24px !important;
  width:24px !important;
  min-width:24px !important;
  height:24px !important;
  min-height:24px !important;
  margin:0 0 4px !important;
  color:currentColor;
  line-height:1;
  transform:none !important;
}
.cp-tabbar.cp-tabbar-glass .cp-tab-icon .cp-ico{
  display:block;
  width:22px;
  height:22px;
  stroke:currentColor;
  vector-effect:non-scaling-stroke;
}
.cp-tabbar.cp-tabbar-glass .cp-tab-icon + .cp-tab-label{
  width:100% !important;
  min-height:2.16em !important;
  max-height:2.16em !important;
  display:-webkit-box !important;
  -webkit-box-orient:vertical !important;
  -webkit-line-clamp:2 !important;
  overflow:hidden !important;
  white-space:normal !important;
  text-align:center !important;
  line-height:1.08 !important;
}

@media (max-width:1180px){
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass{
    width:max-content !important;
    max-width:calc(100vw - 18px) !important;
    min-width:0 !important;
    justify-content:flex-start !important;
    gap:0 !important;
    padding:6px 10px !important;
    border-radius:999px !important;
  }
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    flex:0 0 var(--cp-glass-tab-width) !important;
    width:var(--cp-glass-tab-width) !important;
    min-width:var(--cp-glass-tab-width) !important;
    max-width:var(--cp-glass-tab-width) !important;
    height:66px !important;
    min-height:66px !important;
    max-height:66px !important;
    padding:.48rem .42rem .52rem !important;
    gap:0 !important;
  }
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass.cp-tabbar--fits,
  .cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass.cp-tabbar--fits{
    justify-content:flex-start !important;
  }
}

/* Native shells use exactly the same dock for trainer and client views. */
html.inapp .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
  width:max-content !important;
  max-width:calc(100vw - 18px) !important;
  min-width:0 !important;
  justify-content:flex-start !important;
  gap:0 !important;
  padding:6px 10px !important;
  border-radius:999px !important;
}
html.inapp .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab{
  flex:0 0 var(--cp-glass-tab-width) !important;
  width:var(--cp-glass-tab-width) !important;
  min-width:var(--cp-glass-tab-width) !important;
  max-width:var(--cp-glass-tab-width) !important;
}

/* =========================================================
   CoachPro 2026-07-21 – stable Apple-like liquid-glass tabs
   Keep the original glass geometry and active capsule. Emoji stay native and
   remain in the normal paint flow so WebView renders them before interaction.
   ========================================================= */
.cp-tabbar.cp-tabbar-glass .cp-tab-emoji{
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif !important;
  font-variant-emoji:emoji;
  -webkit-font-smoothing:antialiased;
  backface-visibility:visible;
  -webkit-backface-visibility:visible;
  transform:none;
  -webkit-transform:none;
}

/* Larger, rounded initials for trainer/client avatars without a photo. */
.cp-avatar--fallback > .cp-avatar-initials,
.cp-avatar-settings__fallback.cp-avatar-initials{
  font-family:var(--font-ui) !important;
  font-weight:700 !important;
  font-style:normal !important;
  letter-spacing:-.085em !important;
  line-height:1 !important;
  text-transform:uppercase !important;
  text-rendering:geometricPrecision;
  -webkit-font-smoothing:antialiased;
  transform:translateX(-.025em) translateY(-.015em);
  text-shadow:0 2px 3px rgba(117,38,9,.20),0 8px 20px rgba(117,38,9,.12) !important;
}
.me-hero-avatar-wrap.cp-avatar--fallback > .cp-avatar-initials,
.cp-client-hero-avatar.cp-avatar--fallback > .cp-avatar-initials,
.dash-hero-avatar.cp-avatar--fallback > .cp-avatar-initials{
  font-size:3.15rem !important;
}
.me-trainer-avatar.cp-avatar--fallback > .cp-avatar-initials{
  font-size:1.8rem !important;
}
.cp-avatar-settings__preview.cp-avatar--fallback > .cp-avatar-initials,
.cp-avatar-settings__fallback.cp-avatar-initials{
  font-size:2rem !important;
}
.me-hero-avatar-wrap.cp-avatar--fallback::before,
.cp-client-hero-avatar.cp-avatar--fallback::before,
.dash-hero-avatar.cp-avatar--fallback::before{
  inset:7px !important;
  border-color:rgba(255,255,255,.20) !important;
}
.me-hero-avatar-wrap.cp-avatar--fallback::after,
.cp-client-hero-avatar.cp-avatar--fallback::after,
.dash-hero-avatar.cp-avatar--fallback::after{
  right:-12% !important;
  bottom:-18% !important;
  width:58% !important;
  height:58% !important;
  background:rgba(255,255,255,.08) !important;
  border-color:rgba(255,255,255,.16) !important;
}
@media (min-width:768px){
  .me-hero-avatar-wrap.cp-avatar--fallback > .cp-avatar-initials,
  .cp-client-hero-avatar.cp-avatar--fallback > .cp-avatar-initials,
  .dash-hero-avatar.cp-avatar--fallback > .cp-avatar-initials{
    font-size:3.65rem !important;
  }
}
@media (max-width:575.98px){
  .me-hero-avatar-wrap.cp-avatar--fallback > .cp-avatar-initials,
  .cp-client-hero-avatar.cp-avatar--fallback > .cp-avatar-initials,
  .dash-hero-avatar.cp-avatar--fallback > .cp-avatar-initials{
    font-size:2.85rem !important;
  }
}

/* =========================================================
   Landing marketplace expansion – trainers + clients
   ========================================================= */
.lp-section-kicker{
  display:inline-flex;
  margin-bottom:10px;
  color:#ff9a68;
  font-size:11px;
  font-weight:700;
  letter-spacing:.13em;
  text-transform:uppercase;
}
html[data-theme="light"] .lp-section-kicker{color:#c2410c;}

.lp-cta--audiences{max-width:640px;}
.lp-cta--audiences .lp-btn-login{grid-column:1/-1;}

.lp-hero-media--dual{display:flex;align-items:center;justify-content:center;min-width:0;}
.lp-dual-preview{
  position:relative;
  width:min(100%,500px);
  min-height:500px;
  display:flex;
  align-items:center;
  justify-content:center;
  isolation:isolate;
}
.lp-dual-preview::before{
  content:"";
  position:absolute;
  inset:8% 2%;
  border-radius:50%;
  background:radial-gradient(circle,rgba(233,78,27,.28),rgba(233,78,27,.05) 48%,transparent 72%);
  filter:blur(10px);
  z-index:-1;
}
.lp-preview-device{
  position:absolute;
  width:48%;
  max-width:240px;
  padding:9px;
  border:1px solid rgba(255,255,255,.13);
  border-radius:30px;
  background:linear-gradient(180deg,rgba(25,26,31,.96),rgba(9,10,13,.98));
  box-shadow:0 34px 70px rgba(0,0,0,.46),inset 0 1px 0 rgba(255,255,255,.07);
  overflow:hidden;
}
html[data-theme="light"] .lp-preview-device{
  border-color:rgba(11,11,13,.13);
  background:linear-gradient(180deg,#fff,#edf0f5);
  box-shadow:0 34px 70px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.9);
}
.lp-preview-device img{display:block;width:100%;height:auto;max-height:455px;object-fit:cover;object-position:top;border-radius:22px;background:var(--surface2);}
.lp-preview-device--trainer{left:3%;top:2%;transform:rotate(-5deg);z-index:1;}
.lp-preview-device--client{right:2%;bottom:1%;transform:rotate(5deg);z-index:2;}
.lp-preview-label{
  position:absolute;
  top:18px;
  left:50%;
  transform:translateX(-50%);
  z-index:3;
  width:max-content;
  max-width:calc(100% - 24px);
  padding:6px 10px;
  border:1px solid rgba(255,255,255,.13);
  border-radius:999px;
  background:rgba(9,10,13,.82);
  color:#fff;
  font-size:10px;
  font-weight:700;
  letter-spacing:.03em;
  backdrop-filter:blur(10px);
}
html[data-theme="light"] .lp-preview-label{background:rgba(255,255,255,.9);color:#111;border-color:rgba(15,23,42,.12);}

.lp-section-paths{padding-top:38px;}
.lp-path-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:24px;}
.lp-path-card{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:18px;
  padding:26px;
  border:1px solid var(--lp-bd2);
  border-radius:28px;
  background:linear-gradient(145deg,rgba(255,255,255,.055),rgba(255,255,255,.018));
  box-shadow:0 22px 56px rgba(0,0,0,.18);
  overflow:hidden;
}
.lp-path-card::after{content:"";position:absolute;width:220px;height:220px;right:-100px;top:-110px;border-radius:50%;pointer-events:none;}
.lp-path-card--client::after{background:radial-gradient(circle,rgba(59,130,246,.20),transparent 70%);}
.lp-path-card--trainer::after{background:radial-gradient(circle,rgba(233,78,27,.22),transparent 70%);}
html[data-theme="light"] .lp-path-card{background:linear-gradient(145deg,#fff,rgba(247,248,251,.96));box-shadow:0 22px 56px rgba(15,23,42,.08);}
.lp-path-icon{width:52px;height:52px;display:grid;place-items:center;border:1px solid var(--lp-bd2);border-radius:17px;background:var(--lp-bg-1);font-size:24px;}
.lp-path-copy{position:relative;z-index:1;}
.lp-path-overline{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;}
.lp-path-card h3{margin:7px 0 10px;color:var(--text);font-size:clamp(21px,2vw,29px);line-height:1.08;letter-spacing:-.035em;}
.lp-path-card p{margin:0;color:var(--muted);line-height:1.58;}
.lp-path-list{display:grid;gap:8px;margin:17px 0 0;padding:0;list-style:none;color:var(--text-85);font-size:13px;}
.lp-path-list li{display:flex;gap:9px;align-items:flex-start;}
.lp-path-list li::before{content:"✓";color:#ff9a68;font-weight:700;}
html[data-theme="light"] .lp-path-list li::before{color:#c2410c;}
.lp-path-card>.lp-btn{margin-top:auto;align-self:flex-start;min-width:210px;justify-content:center;}

.lp-market-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:34px;align-items:center;}
.lp-market-copy>.lp-btn{display:inline-flex;margin-top:22px;}
.lp-market-steps{display:grid;gap:10px;margin-top:23px;}
.lp-market-steps>div{display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--lp-bd);border-radius:16px;background:var(--lp-bg-0);}
.lp-market-steps>div>strong{width:36px;height:36px;display:grid;place-items:center;border-radius:12px;background:rgba(233,78,27,.15);color:#ff9a68;}
html[data-theme="light"] .lp-market-steps>div>strong{color:#c2410c;}
.lp-market-steps span,.lp-market-steps b,.lp-market-steps small{display:block;}
.lp-market-steps b{color:var(--text);font-size:14px;}
.lp-market-steps small{margin-top:2px;color:var(--muted);font-size:12px;line-height:1.4;}
.lp-market-demo{display:grid;gap:12px;padding:20px;border:1px solid var(--lp-bd2);border-radius:28px;background:linear-gradient(160deg,rgba(255,255,255,.06),rgba(255,255,255,.018));box-shadow:0 26px 64px rgba(0,0,0,.22);}
html[data-theme="light"] .lp-market-demo{background:linear-gradient(160deg,#fff,#f4f6fa);box-shadow:0 26px 64px rgba(15,23,42,.10);}
.lp-market-search{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--lp-bd2);border-radius:17px;background:var(--surface);}
.lp-market-search>span{font-size:20px;}.lp-market-search b,.lp-market-search small{display:block;}.lp-market-search b{color:var(--text);font-size:13px;}.lp-market-search small{margin-top:2px;color:var(--muted);font-size:11px;}
.lp-market-card{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px;border:1px solid var(--lp-bd);border-radius:18px;background:var(--surface);}
.lp-market-avatar{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:linear-gradient(135deg,rgba(233,78,27,.25),rgba(59,130,246,.18));color:var(--text);font-weight:700;}
.lp-market-card b,.lp-market-card small{display:block;}.lp-market-card b{color:var(--text);font-size:13px;}.lp-market-card small{margin-top:3px;color:var(--muted);font-size:11px;}.lp-market-card em{color:#ff9a68;font-size:11px;font-style:normal;font-weight:700;text-align:right;}
html[data-theme="light"] .lp-market-card em{color:#c2410c;}
.lp-market-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;}.lp-market-tags i{padding:4px 7px;border-radius:999px;background:var(--surface2);color:var(--text-85);font-size:9px;font-style:normal;font-weight:700;}
.lp-market-note{padding:10px 12px;border-radius:14px;background:rgba(34,197,94,.10);color:#9be7b1;font-size:11px;line-height:1.45;}
html[data-theme="light"] .lp-market-note{color:#166534;background:rgba(34,197,94,.10);}

.lp-journey-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:24px;}
.lp-journey{display:flex;flex-direction:column;padding:24px;border:1px solid var(--lp-bd2);border-radius:26px;background:var(--lp-bg-0);}
html[data-theme="light"] .lp-journey{background:rgba(255,255,255,.76);}
.lp-journey-head{display:flex;align-items:center;gap:13px;padding-bottom:16px;border-bottom:1px solid var(--lp-bd);}
.lp-journey-head>span{width:48px;height:48px;display:grid;place-items:center;border-radius:16px;background:var(--surface2);font-size:23px;}
.lp-journey-head small,.lp-journey-head h3{display:block;}.lp-journey-head small{color:#ff9a68;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;}html[data-theme="light"] .lp-journey-head small{color:#c2410c;}.lp-journey-head h3{margin:3px 0 0;color:var(--text);font-size:19px;}
.lp-journey ol{display:grid;gap:0;margin:8px 0 20px;padding:0;list-style:none;counter-reset:journey;}
.lp-journey li{position:relative;padding:14px 0 14px 39px;border-bottom:1px solid var(--lp-bd);counter-increment:journey;}
.lp-journey li:last-child{border-bottom:0;}.lp-journey li::before{content:counter(journey);position:absolute;left:0;top:14px;width:26px;height:26px;display:grid;place-items:center;border-radius:9px;background:rgba(233,78,27,.14);color:#ff9a68;font-size:11px;font-weight:700;}html[data-theme="light"] .lp-journey li::before{color:#c2410c;}
.lp-journey li b,.lp-journey li span{display:block;}.lp-journey li b{color:var(--text);font-size:13px;}.lp-journey li span{margin-top:3px;color:var(--muted);font-size:12px;line-height:1.45;}
.lp-journey>.lp-btn{margin-top:auto;align-self:flex-start;}

@media(max-width:991.98px){
  .lp-dual-preview{min-height:450px;width:min(100%,460px);margin-inline:auto;}
  .lp-market-grid{grid-template-columns:1fr;}
}
@media(max-width:767.98px){
  .lp-path-grid,.lp-journey-grid{grid-template-columns:1fr;}
  .lp-path-card{padding:21px;border-radius:23px;}
  .lp-path-card>.lp-btn{width:100%;align-self:stretch;}
  .lp-market-demo{padding:14px;border-radius:22px;}
}
@media(max-width:520px){
  .lp-dual-preview{min-height:390px;transform:scale(.96);}
  .lp-preview-device{width:52%;padding:7px;border-radius:25px;}
  .lp-preview-device img{border-radius:18px;max-height:360px;}
  .lp-preview-label{top:13px;font-size:9px;padding:5px 8px;}
  .lp-market-card{grid-template-columns:42px minmax(0,1fr);}.lp-market-card em{grid-column:2;text-align:left;}.lp-market-avatar{width:42px;height:42px;}
}




/* Find-trainer CTA: one consistent, high-visibility treatment across the public site,
   native welcome screen and trainer pages. The search icon is CSS-rendered so every
   CTA keeps identical spacing without duplicating SVG markup in templates. */
a.cp-find-trainer-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.48rem;
  font-weight:700;
  text-decoration:none;
  border-color:rgba(255,139,82,.62) !important;
  background:linear-gradient(135deg,#f06424 0%,#dc4516 100%) !important;
  color:#fff !important;
  box-shadow:0 9px 24px rgba(226,78,24,.27), inset 0 1px 0 rgba(255,255,255,.18);
  transition:transform .16s ease,box-shadow .16s ease,filter .16s ease;
}
a.cp-find-trainer-btn::before{
  content:"";
  width:1.05em;
  height:1.05em;
  flex:0 0 1.05em;
  background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5'/%3E%3C/svg%3E") center/contain no-repeat;
}
a.cp-find-trainer-btn:hover,
a.cp-find-trainer-btn:focus-visible{
  color:#fff !important;
  transform:translateY(-1px);
  filter:saturate(1.08) brightness(1.04);
  box-shadow:0 13px 30px rgba(226,78,24,.34), inset 0 1px 0 rgba(255,255,255,.22);
}
a.cp-find-trainer-btn:active{transform:translateY(0);box-shadow:0 6px 16px rgba(226,78,24,.24)}
.navbar a.nav-link.cp-find-trainer-btn{margin:.3rem .45rem;padding:.62rem .9rem !important;border:1px solid rgba(255,139,82,.62);border-radius:999px}
.rp-powered-mini.cp-find-trainer-btn{padding:.48rem .68rem;min-height:38px}
.rp-powered-mini.cp-find-trainer-btn img{background:#fff;border-radius:8px;padding:2px}
.rp-powered-mini.cp-find-trainer-btn img{order:1}
.rp-powered-mini.cp-find-trainer-btn::before{order:2}
.rp-powered-mini.cp-find-trainer-btn span{order:3}


/* =========================================================
   CoachPro premium landing + final Inter weight hierarchy
   Visual-only changes: no routes, forms or application logic.
   ========================================================= */

/* Final weight hierarchy for the whole product. */
body{font-weight:400;letter-spacing:-.006em;}
p, li, input, textarea, select{font-weight:400;}
label, .form-label, .nav-link, .dropdown-item, .btn, button{font-weight:600;}
strong, b{font-weight:700;}
h1, h2, h3, h4, h5, h6{font-weight:700;letter-spacing:-.025em;}
.navbar.nav-brand .navbar-nav .nav-link,
.navbar.nav-brand .navbar-nav .dropdown-toggle,
.navbar.nav-brand .dropdown-menu .dropdown-item,
.navbar.nav-brand .nav-user-email{font-weight:600;letter-spacing:-.01em;}
.navbar.nav-brand .brand-title{font-weight:700;letter-spacing:.015em;}

/* Keep emoji glyphs native while the rest of the UI uses Inter. */
.cp-tab-emoji,
.cp-tab-emoji-prewarm,
.nav-emoji,
.lp-device-ico{
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif !important;
}

.lp-hero--platform{
  position:relative;
  overflow:clip;
  padding-top:clamp(34px,4.2vw,62px);
  padding-bottom:clamp(42px,6vw,76px);
  border-bottom:1px solid rgba(255,255,255,.07);
  background:
    radial-gradient(720px 480px at 77% 34%,rgba(233,78,27,.23),transparent 67%),
    radial-gradient(540px 360px at 19% 22%,rgba(255,255,255,.055),transparent 70%),
    linear-gradient(118deg,rgba(14,15,18,.98),rgba(10,10,12,.96) 52%,rgba(37,16,8,.96));
}
html[data-theme="light"] .lp-hero--platform{
  border-bottom-color:rgba(15,23,42,.08);
  background:
    radial-gradient(720px 480px at 77% 34%,rgba(233,78,27,.16),transparent 67%),
    radial-gradient(540px 360px at 19% 22%,rgba(255,255,255,.9),transparent 70%),
    linear-gradient(118deg,#f8f9fc,#fff 52%,#fff4ed);
}
.lp-hero--platform::after{
  content:"";
  position:absolute;
  inset:auto -8% -185px 38%;
  height:310px;
  border-radius:50%;
  background:rgba(233,78,27,.12);
  filter:blur(90px);
  pointer-events:none;
}
.lp-hero--platform .lp-hero-grid{
  position:relative;
  z-index:1;
  grid-template-columns:minmax(0,1.03fr) minmax(390px,.97fr);
  gap:clamp(34px,5vw,76px);
  align-items:center;
}
.lp-hero--platform .lp-hero-copy{min-width:0;max-width:760px;}
.lp-hero--platform .lp-eyebrow{
  color:#ff9b69;
  font-size:11px;
  font-weight:700;
  letter-spacing:.11em;
}
html[data-theme="light"] .lp-hero--platform .lp-eyebrow{color:#b83d12;}
.lp-hero--platform .lp-h1{
  max-width:14.8ch;
  margin-top:17px;
  font-size:clamp(38px,4.35vw,68px);
  line-height:.99;
  letter-spacing:-.055em;
  font-weight:800;
  text-wrap:balance;
}
.lp-hero--platform .lp-leadwrap{margin-top:22px;}
.lp-hero--platform .lp-lead{
  max-width:67ch;
  color:var(--muted);
  font-size:clamp(15px,1.18vw,18px);
  line-height:1.66;
  text-align:left;
  text-wrap:pretty;
  hyphens:none;
}

.lp-audience-summary{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:11px;
  margin-top:24px;
  max-width:700px;
}
.lp-audience-summary__item{
  display:grid;
  grid-template-columns:42px minmax(0,1fr);
  gap:12px;
  align-items:center;
  min-height:84px;
  padding:14px 15px;
  border:1px solid rgba(255,255,255,.105);
  border-radius:19px;
  background:linear-gradient(145deg,rgba(255,255,255,.07),rgba(255,255,255,.025));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
  backdrop-filter:blur(12px);
}
html[data-theme="light"] .lp-audience-summary__item{
  border-color:rgba(15,23,42,.10);
  background:rgba(255,255,255,.78);
  box-shadow:0 14px 34px rgba(15,23,42,.06),inset 0 1px 0 rgba(255,255,255,.8);
}
.lp-audience-summary__icon{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:14px;
  background:rgba(233,78,27,.14);
  color:#ff9561;
}
html[data-theme="light"] .lp-audience-summary__icon{color:#bc3f14;background:rgba(233,78,27,.11);}
.lp-audience-summary__icon svg{width:22px;height:22px;}
.lp-audience-summary__item strong,
.lp-audience-summary__item small{display:block;}
.lp-audience-summary__item strong{color:var(--text);font-size:13px;font-weight:700;}
.lp-audience-summary__item small{margin-top:4px;color:var(--muted);font-size:11px;line-height:1.38;font-weight:400;}

.lp-hero-actions{
  display:flex;
  flex-wrap:wrap;
  gap:11px;
  margin-top:22px;
}
.lp-hero-actions .lp-btn{
  min-height:50px;
  min-width:220px;
  padding:13px 21px !important;
  border-radius:15px !important;
  font-size:14px;
  font-weight:700 !important;
}
.lp-hero-actions .lp-btn.ghost{
  background:rgba(255,255,255,.035);
  border-color:rgba(255,255,255,.16) !important;
}
html[data-theme="light"] .lp-hero-actions .lp-btn.ghost{background:rgba(255,255,255,.72);}
.lp-hero-links{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:9px;
  margin-top:13px;
  color:var(--muted);
  font-size:12px;
}
.lp-hero-links a{color:inherit;text-decoration:none;border-bottom:1px solid transparent;transition:color .16s ease,border-color .16s ease;}
.lp-hero-links a:hover{color:var(--text);border-color:currentColor;}
.lp-hero-links>span{opacity:.42;}

.lp-hero--platform .lp-hero-under{margin-top:24px;}
.lp-hero--platform .trust-strip{gap:8px;}
.lp-hero--platform .trust-strip .trust-item{
  position:relative;
  min-height:46px;
  padding:11px 12px 11px 31px;
  border:0;
  border-radius:13px;
  background:rgba(255,255,255,.035);
  color:var(--text-85);
  font-size:11px;
  line-height:1.35;
  font-weight:500;
}
.lp-hero--platform .trust-strip .trust-item::before{
  content:"";
  position:absolute;
  left:12px;
  top:50%;
  width:9px;
  height:9px;
  border-radius:50%;
  background:#f26a2a;
  box-shadow:0 0 0 4px rgba(242,106,42,.12);
  transform:translateY(-50%);
}
html[data-theme="light"] .lp-hero--platform .trust-strip .trust-item{background:rgba(15,23,42,.035);}
.lp-hero--platform .lp-device-note{
  align-items:center;
  margin-top:14px;
  gap:7px;
  font-size:clamp(14px,1.08vw,16px);
  text-align:center;
}
.lp-hero--platform .lp-device-note-label{
  font-size:clamp(11px,.86vw,13px);
  font-weight:500;
  letter-spacing:.025em;
}
.lp-hero--platform .lp-device-note-items{justify-content:center;gap:9px;}
.lp-device-item{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;}
.lp-device-ico{
  display:inline-block;
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif !important;
  font-size:1.05em;
  line-height:1;
  filter:saturate(1.08);
}

.lp-hero--platform .lp-dual-preview{
  width:min(100%,560px);
  min-height:570px;
}
.lp-hero--platform .lp-dual-preview::before{
  inset:7% -2%;
  background:radial-gradient(circle,rgba(233,78,27,.32),rgba(233,78,27,.08) 46%,transparent 72%);
  filter:blur(14px);
}
.lp-hero--platform .lp-preview-device{
  width:49%;
  max-width:270px;
  padding:9px;
  border-radius:34px;
  box-shadow:0 38px 84px rgba(0,0,0,.48),inset 0 1px 0 rgba(255,255,255,.08);
}
.lp-hero--platform .lp-preview-device img{
  max-height:520px;
  border-radius:25px;
  object-position:top;
}
.lp-hero--platform .lp-preview-device--trainer{left:1%;top:0;transform:rotate(-4deg);}
.lp-hero--platform .lp-preview-device--client{right:0;bottom:0;transform:rotate(4deg);}
.lp-hero--platform .lp-preview-label{
  top:16px;
  padding:7px 11px;
  border-radius:999px;
  font-size:9px;
  font-weight:700;
  letter-spacing:.02em;
  box-shadow:0 8px 22px rgba(0,0,0,.18);
}

.lp-hero--platform .lp-store-cta--hero{
  grid-column:1/-1;
  margin-top:30px;
  border-radius:22px;
  background:linear-gradient(145deg,rgba(255,255,255,.055),rgba(255,255,255,.018));
  border-color:rgba(255,255,255,.09);
}
html[data-theme="light"] .lp-hero--platform .lp-store-cta--hero{background:rgba(255,255,255,.72);border-color:rgba(15,23,42,.09);}
.lp-hero--platform .lp-store-title{font-weight:700;}

.lp-section-paths{padding-top:clamp(58px,7vw,96px);padding-bottom:clamp(62px,8vw,106px);}
.lp-section-head--center{text-align:center;display:grid;justify-items:center;}
.lp-section-head--center .lp-sub{max-width:760px;}
.lp-section-paths .lp-h2{font-weight:700;letter-spacing:-.04em;font-size:clamp(29px,3vw,44px);}
.lp-section-paths .lp-section-kicker{font-weight:700;}
.lp-path-grid--connected{
  position:relative;
  gap:28px;
  margin-top:34px;
}
.lp-path-grid--connected::before{
  content:"";
  position:absolute;
  top:50%;
  left:calc(50% - 42px);
  width:84px;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(233,78,27,.7),transparent);
  transform:translateY(-50%);
  pointer-events:none;
}
.lp-path-grid--connected .lp-path-card{
  min-height:100%;
  padding:clamp(23px,3vw,34px);
  border-radius:28px;
  gap:19px;
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.lp-path-grid--connected .lp-path-card:hover{
  transform:translateY(-4px);
  border-color:rgba(233,78,27,.28);
  box-shadow:0 30px 72px rgba(0,0,0,.25);
}
html[data-theme="light"] .lp-path-grid--connected .lp-path-card:hover{box-shadow:0 30px 72px rgba(15,23,42,.11);}
.lp-path-grid--connected .lp-path-icon{
  width:56px;
  height:56px;
  border-radius:18px;
  color:#ff9460;
  background:linear-gradient(145deg,rgba(233,78,27,.17),rgba(233,78,27,.06));
}
html[data-theme="light"] .lp-path-grid--connected .lp-path-icon{color:#b93d12;}
.lp-path-svg{width:26px;height:26px;}
.lp-path-grid--connected .lp-path-overline{font-weight:700;}
.lp-path-grid--connected .lp-path-card h3{
  max-width:18ch;
  margin-top:9px;
  font-size:clamp(24px,2.5vw,35px);
  line-height:1.07;
  font-weight:700;
  letter-spacing:-.045em;
}
.lp-path-grid--connected .lp-path-card p{font-size:14px;line-height:1.65;}
.lp-path-grid--connected .lp-path-list{font-size:13px;line-height:1.5;}
.lp-path-grid--connected .lp-path-list li::before{font-weight:700;}
.lp-path-grid--connected .lp-path-card>.lp-btn{min-height:48px;font-weight:700 !important;}
.lp-path-text-link{
  width:max-content;
  max-width:100%;
  color:var(--muted);
  font-size:12px;
  font-weight:600;
  text-decoration:none;
  border-bottom:1px solid transparent;
}
.lp-path-text-link:hover{color:var(--text);border-color:currentColor;}
.lp-path-bridge{
  position:absolute;
  z-index:3;
  left:50%;
  top:50%;
  display:grid;
  justify-items:center;
  gap:6px;
  transform:translate(-50%,-50%);
  pointer-events:none;
}
.lp-path-bridge__logo{
  width:58px;
  height:58px;
  display:grid;
  place-items:center;
  padding:8px;
  border:1px solid rgba(255,255,255,.13);
  border-radius:19px;
  background:rgba(11,11,14,.93);
  box-shadow:0 18px 40px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.06);
}
html[data-theme="light"] .lp-path-bridge__logo{background:rgba(255,255,255,.96);border-color:rgba(15,23,42,.12);box-shadow:0 18px 40px rgba(15,23,42,.12);}
.lp-path-bridge__logo img{display:block;width:100%;height:100%;object-fit:contain;}
.lp-path-bridge small{
  padding:5px 8px;
  border-radius:999px;
  background:var(--surface);
  color:var(--muted);
  font-size:8px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  white-space:nowrap;
}

@media(max-width:1199.98px){
  .lp-hero--platform .lp-hero-grid{grid-template-columns:minmax(0,1fr) minmax(340px,.85fr);gap:32px;}
  .lp-hero--platform .lp-h1{font-size:clamp(39px,5vw,58px);}
  .lp-hero--platform .lp-dual-preview{min-height:500px;}
  .lp-hero--platform .lp-preview-device img{max-height:455px;}
}
@media(max-width:991.98px){
  .lp-hero--platform{padding-top:34px !important;padding-bottom:54px;}
  .lp-hero--platform .lp-hero-grid{grid-template-columns:1fr;gap:28px;}
  .lp-hero--platform .lp-hero-copy{max-width:760px;margin-inline:auto;text-align:center;}
  .lp-hero--platform .lp-h1{max-width:15ch;margin-inline:auto;font-size:clamp(38px,7vw,58px);}
  .lp-hero--platform .lp-lead{max-width:64ch;margin-inline:auto;text-align:center;}
  .lp-audience-summary{max-width:690px;margin-inline:auto;margin-top:23px;text-align:left;}
  .lp-hero-actions{justify-content:center;}
  .lp-hero-links{justify-content:center;}
  .lp-hero--platform .lp-dual-preview{width:min(100%,520px);min-height:500px;margin-inline:auto;}
  .lp-hero--platform .lp-device-note{align-items:center;}
  .lp-hero--platform .lp-device-note-items{justify-content:center;}
  .lp-path-bridge{display:none;}
  .lp-path-grid--connected::before{display:none;}
}
@media(max-width:767.98px){
  .lp-hero--platform{padding-bottom:44px;}
  .lp-hero--platform .lp-h1{font-size:clamp(34px,10vw,48px);line-height:1.01;}
  .lp-hero--platform .lp-lead{font-size:15px;line-height:1.62;}
  .lp-audience-summary{grid-template-columns:1fr;gap:9px;}
  .lp-audience-summary__item{min-height:74px;padding:12px 13px;}
  .lp-hero-actions{display:grid;grid-template-columns:1fr;width:100%;}
  .lp-hero-actions .lp-btn{width:100%;min-width:0;}
  .lp-hero--platform .lp-dual-preview{min-height:440px;max-width:430px;}
  .lp-hero--platform .lp-preview-device{width:51%;padding:7px;border-radius:27px;}
  .lp-hero--platform .lp-preview-device img{max-height:400px;border-radius:20px;}
  .lp-hero--platform .lp-preview-label{top:12px;font-size:8px;padding:6px 8px;}
  .lp-path-grid--connected{gap:14px;margin-top:26px;}
  .lp-path-grid--connected .lp-path-card{padding:22px;border-radius:23px;}
  .lp-path-grid--connected .lp-path-card h3{max-width:none;font-size:27px;}
}
@media(max-width:520px){
  .lp-hero--platform{padding-top:26px !important;}
  .lp-hero--platform .lp-eyebrow{font-size:9px;line-height:1.35;}
  .lp-hero--platform .lp-h1{font-size:clamp(31px,10.7vw,43px);letter-spacing:-.047em;}
  .lp-hero--platform .lp-leadwrap{margin-top:17px;}
  .lp-audience-summary{margin-top:18px;}
  .lp-audience-summary__item{grid-template-columns:38px minmax(0,1fr);gap:10px;border-radius:16px;}
  .lp-audience-summary__icon{width:38px;height:38px;border-radius:12px;}
  .lp-hero-links{font-size:11px;gap:7px;}
  .lp-hero--platform .lp-dual-preview{min-height:380px;transform:none;}
  .lp-hero--platform .lp-preview-device{width:52%;max-width:205px;}
  .lp-hero--platform .lp-preview-device img{max-height:345px;}
  .lp-hero--platform .lp-store-cta--hero{margin-top:20px;border-radius:18px;}
  .lp-section-paths{padding-top:54px;padding-bottom:64px;}
  .lp-section-paths .lp-h2{font-size:31px;}
}
@media(prefers-reduced-motion:reduce){
  .lp-path-grid--connected .lp-path-card{transition:none;}
  .lp-path-grid--connected .lp-path-card:hover{transform:none;}
}


/* Client/trainer avatar picker: reliable native gallery trigger in iOS/Android WebView. */
.cp-avatar-file-picker{display:grid;gap:.5rem;width:100%}
.cp-avatar-file-picker__button{display:flex!important;align-items:center!important;justify-content:center!important;min-height:46px!important;margin:0!important;cursor:pointer!important}
.cp-avatar-file-picker__name{padding:0 .2rem;overflow-wrap:anywhere}
.cp-avatar-file-picker:focus-within .cp-avatar-file-picker__button{box-shadow:0 0 0 .22rem rgba(255,96,31,.16)!important}
@media(max-width:575.98px){.cp-avatar-file-picker__button{min-height:48px!important}}

/* 2026-07-18: navbar CTA alignment, dashboard welcome emphasis and trainer assignment status. */
.dash-hero-title--welcome{
  font-weight:800;
}

.cp-assignment-status{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  max-width:100%;
  padding:.4rem .68rem;
  border:1px solid var(--border);
  border-radius:12px;
  background:rgba(255,255,255,.035);
  color:var(--text-soft);
  font-size:.78rem;
  font-weight:700;
  line-height:1.25;
  vertical-align:middle;
  white-space:normal;
}
.cp-assignment-status__dot{
  width:.45rem;
  height:.45rem;
  flex:0 0 .45rem;
  border-radius:999px;
  background:currentColor;
  box-shadow:0 0 0 4px rgba(245,158,11,.10);
}
.cp-assignment-status--attention{
  border-color:rgba(245,158,11,.24);
  background:rgba(245,158,11,.075);
  color:#f4c56a;
}
.cp-assignment-status--chat{
  margin-top:.3rem;
  width:fit-content;
}
html[data-theme="light"] .cp-assignment-status--attention{
  border-color:rgba(180,83,9,.20);
  background:rgba(245,158,11,.075);
  color:#9a5708;
}

@media (max-width:991.98px){
  /* The collapsed menu gives links width:100%; compensate for the CTA's side margins
     so its orange background stays perfectly even on both sides. */
  .navbar.nav-brand .navbar-nav .nav-link.cp-find-trainer-btn{
    width:calc(100% - .9rem);
    margin:.35rem .45rem;
    box-sizing:border-box;
    min-height:46px;
  }
}

/* =========================================================
   CoachPro 2026-07-21 – account avatar editor
   One compact editor for trainer settings, client settings and /me.
   ========================================================= */
.cp-account-avatar-editor{
  margin:0 0 1.55rem;
}
.cp-account-avatar-form{
  margin:0;
  padding:1rem;
  border:1px solid var(--border,rgba(148,163,184,.22));
  border-radius:22px;
  background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(148,163,184,.045));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
.cp-account-avatar-editor__grid{
  display:grid;
  grid-template-columns:168px minmax(0,1fr);
  gap:1rem;
  align-items:start;
}
.cp-account-avatar-editor__preview-column{
  display:grid;
  justify-items:center;
  gap:.55rem;
}
.cp-account-avatar-preview{
  position:relative;
  width:156px;
  height:156px;
  display:grid;
  place-items:center;
  overflow:hidden;
  border:1px solid rgba(255,107,31,.28);
  border-radius:999px;
  background:linear-gradient(145deg,rgba(255,107,31,.18),rgba(148,163,184,.08));
  box-shadow:0 18px 38px rgba(0,0,0,.16),inset 0 0 0 5px rgba(255,255,255,.035);
  isolation:isolate;
}
.cp-account-avatar-preview img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  z-index:2;
}
.cp-account-avatar-preview .cp-avatar-initials{
  font-size:2.4rem!important;
  z-index:1;
}
.cp-account-avatar-preview__unavailable{
  position:absolute;
  inset:0;
  z-index:3;
  display:grid;
  place-items:center;
  padding:1rem;
  text-align:center;
  font-size:.75rem;
  font-weight:700;
  line-height:1.35;
  color:var(--text);
  background:rgba(15,23,42,.74);
  backdrop-filter:blur(8px);
}
.cp-account-avatar-editor__preview-label{
  color:var(--muted);
  font-size:.76rem;
  font-weight:700;
}
.cp-account-avatar-editor__controls{
  display:grid;
  gap:.8rem;
  min-width:0;
}
.cp-account-avatar-editor .cp-avatar-file-picker{
  gap:.42rem;
}
.cp-account-avatar-editor .cp-avatar-file-picker__button{
  gap:.5rem;
  min-height:48px!important;
  border-radius:15px!important;
}
.cp-account-avatar-editor .cp-avatar-file-picker__name{
  line-height:1.35;
}
.cp-account-avatar-focus{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:.72rem!important;
  width:100%!important;
  margin:0!important;
  padding:.85rem!important;
  border:1px solid var(--border,rgba(148,163,184,.22));
  border-radius:17px;
  background:rgba(148,163,184,.055);
}
.cp-account-avatar-focus label{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:.38rem!important;
  width:100%!important;
  margin:0!important;
  color:var(--text)!important;
  font-size:.84rem!important;
  font-weight:700!important;
}
.cp-account-avatar-focus__head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
}
.cp-account-avatar-focus output{
  min-width:48px;
  padding:.18rem .42rem;
  border:1px solid var(--border,rgba(148,163,184,.2));
  border-radius:999px;
  background:rgba(148,163,184,.08);
  color:var(--muted);
  font-size:.72rem;
  font-weight:800;
  line-height:1.2;
  text-align:center;
}
.cp-account-avatar-focus input[type="range"]{
  width:100%!important;
  min-width:0!important;
  height:28px;
  margin:0!important;
  accent-color:var(--brand,#ff5a1f);
  cursor:pointer;
}
.cp-account-avatar-focus input[type="range"]::-webkit-slider-runnable-track{
  height:6px;
  border-radius:999px;
  background:linear-gradient(90deg,rgba(255,107,31,.75),rgba(148,163,184,.24));
}
.cp-account-avatar-focus input[type="range"]::-webkit-slider-thumb{
  width:20px;
  height:20px;
  margin-top:-7px;
  border:3px solid #fff;
  border-radius:999px;
  background:var(--brand,#ff5a1f);
  box-shadow:0 3px 12px rgba(0,0,0,.24);
  -webkit-appearance:none;
}
.cp-account-avatar-editor__hint{
  margin:0;
  line-height:1.4;
}
.cp-account-avatar-editor__save{
  min-height:46px;
  border-radius:15px!important;
}
.cp-account-avatar-editor__save:disabled{
  opacity:.48;
  cursor:not-allowed;
}
.cp-account-avatar-reset-form{
  margin:.55rem 0 0;
}
.cp-account-avatar-reset-form .btn{
  min-height:43px;
  border-radius:14px!important;
}
html[data-theme="light"] .cp-account-avatar-form{
  background:linear-gradient(180deg,#fff,rgba(15,23,42,.025));
  box-shadow:0 12px 28px rgba(15,23,42,.055),inset 0 1px 0 #fff;
}
html[data-theme="light"] .cp-account-avatar-preview__unavailable{
  color:#fff;
}
@media(max-width:575.98px){
  .cp-account-avatar-form{padding:.85rem;border-radius:19px;}
  .cp-account-avatar-editor__grid{grid-template-columns:1fr;gap:.85rem;}
  .cp-account-avatar-preview{width:142px;height:142px;}
  .cp-account-avatar-editor__controls{gap:.7rem;}
  .cp-account-avatar-focus{padding:.78rem!important;}
}

/* LIVE: unmistakable confirmation after a classic add-exercise redirect. */
.live-exercise-card{
  scroll-margin-top:calc(84px + var(--safe-top, env(safe-area-inset-top, 0px)));
}
.live-exercise-card.cp-live-exercise-added{
  position:relative;
  border-color:rgba(255,107,31,.92)!important;
  background-image:linear-gradient(180deg,rgba(255,107,31,.105),rgba(255,107,31,.025))!important;
  box-shadow:0 0 0 3px rgba(255,107,31,.23),0 18px 42px rgba(255,107,31,.18),var(--shadow-soft)!important;
  animation:cp-live-exercise-added 1.15s ease-out 2;
}
.cp-live-added-badge{
  position:sticky;
  top:calc(66px + var(--safe-top, env(safe-area-inset-top, 0px)));
  z-index:8;
  width:max-content;
  max-width:calc(100% - 1rem);
  max-height:42px;
  margin:-.15rem 0 .7rem auto;
  padding:.42rem .72rem;
  overflow:hidden;
  border-radius:999px;
  border:1px solid rgba(255,137,68,.46);
  background:rgba(21,16,13,.96);
  color:#ff9a5f;
  font-size:.78rem;
  line-height:1.15;
  font-weight:800;
  letter-spacing:.01em;
  box-shadow:0 10px 24px rgba(0,0,0,.24);
  opacity:1;
  transform:translate3d(0,0,0) scale(1);
  transform-origin:right center;
  transition:opacity .32s ease,transform .36s cubic-bezier(.2,.75,.25,1),max-height .38s ease,margin .38s ease,padding .38s ease,border-width .38s ease,filter .32s ease;
  animation:cp-live-added-badge-in .38s cubic-bezier(.2,.8,.25,1);
  will-change:opacity,transform;
  pointer-events:none;
}
.cp-live-added-badge.is-leaving{
  max-height:0;
  margin-bottom:0;
  padding-top:0;
  padding-bottom:0;
  border-top-width:0;
  border-bottom-width:0;
  opacity:0;
  filter:blur(1.5px);
  transform:translate3d(0,-7px,0) scale(.96);
}
@keyframes cp-live-added-badge-in{
  from{opacity:0;transform:translate3d(0,-8px,0) scale(.96)}
  to{opacity:1;transform:translate3d(0,0,0) scale(1)}
}
html[data-theme="light"] .cp-live-added-badge{
  background:#fff7f1;
  color:#c94e13;
  border-color:rgba(201,78,19,.25);
  box-shadow:0 10px 22px rgba(37,20,10,.12);
}
@keyframes cp-live-exercise-added{
  0%{transform:translateY(0);box-shadow:0 0 0 0 rgba(255,107,31,.50),0 18px 42px rgba(255,107,31,.16),var(--shadow-soft)}
  48%{transform:translateY(-2px);box-shadow:0 0 0 10px rgba(255,107,31,.06),0 20px 46px rgba(255,107,31,.22),var(--shadow-soft)}
  100%{transform:translateY(0);box-shadow:0 0 0 3px rgba(255,107,31,.23),0 18px 42px rgba(255,107,31,.18),var(--shadow-soft)}
}
@media(max-width:767.98px){
  .cp-live-added-badge{
    top:calc(58px + var(--safe-top, env(safe-area-inset-top, 0px)));
    margin-bottom:.55rem;
  }
}
@media(prefers-reduced-motion:reduce){
  .live-exercise-card.cp-live-exercise-added{animation:none;}
  .cp-live-added-badge{animation:none;transition:none;}
}

/* =========================================================
   CoachPro 2026-07-21 – stable native emoji in client tabs
   Do not promote every emoji to a separate composited layer. WKWebView can leave
   off-screen color glyph layers blank until the first tap/scroll repaint.
   ========================================================= */
.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji{
  display:inline-flex!important;
  opacity:1!important;
  visibility:visible!important;
  content-visibility:visible!important;
  contain:none!important;
  transform:none!important;
  -webkit-transform:none!important;
  backface-visibility:visible!important;
  -webkit-backface-visibility:visible!important;
  will-change:auto!important;
  filter:none!important;
  text-rendering:auto!important;
}

.cp-account-avatar-editor .cp-avatar-file-picker.has-error .cp-avatar-file-picker__button{
  border-color:rgba(239,68,68,.58)!important;
  box-shadow:0 0 0 .18rem rgba(239,68,68,.10)!important;
}
.cp-account-avatar-editor .cp-avatar-file-picker.has-error .cp-avatar-file-picker__name{
  color:#ef4444!important;
  font-weight:700;
}

/* =========================================================
   CoachPro 2026-07-21 hotfix – avatar editor containment
   The account card can be narrow on iPad even when the viewport is wide.
   React to the editor's real width, not only to the device width.
   ========================================================= */
.cp-account-avatar-form{
  container-type:inline-size;
  width:100%;
  max-width:100%;
  min-width:0;
  box-sizing:border-box;
  overflow:hidden;
}
.cp-account-avatar-editor,
.cp-account-avatar-editor__grid,
.cp-account-avatar-editor__preview-column,
.cp-account-avatar-editor__controls,
.cp-account-avatar-editor .cp-avatar-file-picker,
.cp-account-avatar-editor .cp-avatar-file-picker__button,
.cp-account-avatar-focus,
.cp-account-avatar-focus label,
.cp-account-avatar-focus input[type="range"]{
  max-width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
}
.cp-account-avatar-editor__grid{
  width:100%;
  grid-template-columns:minmax(142px,168px) minmax(0,1fr);
}
.cp-account-avatar-editor__controls{
  width:100%;
}
.cp-account-avatar-editor .cp-avatar-file-picker__button{
  white-space:normal;
  overflow-wrap:anywhere;
}
.cp-account-avatar-focus{
  overflow:hidden;
}
.cp-account-avatar-focus input[type="range"]{
  display:block;
  width:calc(100% - 4px) !important;
  margin-inline:2px !important;
}

@container (max-width:520px){
  .cp-account-avatar-editor__grid{
    grid-template-columns:minmax(0,1fr) !important;
    gap:1rem !important;
  }
  .cp-account-avatar-editor__preview-column{
    width:100%;
  }
  .cp-account-avatar-preview{
    width:148px;
    height:148px;
  }
  .cp-account-avatar-editor__controls{
    gap:.78rem;
  }
  .cp-account-avatar-editor .cp-avatar-file-picker__button{
    min-height:46px !important;
    padding:.72rem .9rem !important;
  }
  .cp-account-avatar-focus{
    padding:.85rem .9rem !important;
  }
}

/* Fallback for older WebViews without container queries. */
@media(max-width:991.98px){
  .cp-account-avatar-editor__grid{
    grid-template-columns:minmax(0,1fr) !important;
    gap:1rem !important;
  }
  .cp-account-avatar-editor__preview-column,
  .cp-account-avatar-editor__controls{
    width:100%;
  }
}

/* =========================================================
   CoachPro 2026-07-21 – client tab emoji root fix for iOS/WKWebView

   Root cause:
   each .cp-tab was forced into `contain: layout paint` and, for the active
   item, an additional backdrop-filter/composited layer. Inside a fixed,
   horizontally scrollable glass dock WKWebView may leave descendants of such
   paint-contained layers blank until a touch/scroll invalidates that tile.
   It affects both native emoji and PNG files, which is why raster icons did
   not solve the problem.

   Keep one glass layer on the dock, but do not create a paint/compositor layer
   for every individual tab. Native emoji remain in normal document paint flow.
   ========================================================= */
.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab{
  contain:none !important;
  content-visibility:visible !important;
  isolation:auto !important;
  overflow:visible !important;
  will-change:auto !important;
  transform:none !important;
  -webkit-transform:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}

.cp-tabs-scope[data-cp-tabs="client"] .cp-tabbar.cp-tabbar-glass .cp-tab .cp-tab-emoji{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  flex:0 0 1.42rem !important;
  width:1.42rem !important;
  min-width:1.42rem !important;
  max-width:1.42rem !important;
  height:1.42rem !important;
  min-height:1.42rem !important;
  max-height:1.42rem !important;
  margin:0 0 3px !important;
  padding:0 !important;
  overflow:visible !important;
  opacity:1 !important;
  visibility:visible !important;
  content-visibility:visible !important;
  contain:none !important;
  isolation:auto !important;
  will-change:auto !important;
  transform:none !important;
  -webkit-transform:none !important;
  backface-visibility:visible !important;
  -webkit-backface-visibility:visible !important;
  filter:none !important;
  text-shadow:none !important;
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif !important;
  font-variant-emoji:emoji;
  font-size:1.08rem !important;
  font-style:normal !important;
  font-weight:400 !important;
  line-height:1 !important;
  text-rendering:auto !important;
  -webkit-font-smoothing:antialiased;
}

/* The warm-up run lives outside the scroll/compositing layer and is never visible. */
.cp-tab-emoji-prewarm{
  position:fixed !important;
  left:-10000px !important;
  top:0 !important;
  width:max-content !important;
  height:32px !important;
  overflow:visible !important;
  opacity:.01 !important;
  pointer-events:none !important;
  user-select:none !important;
  white-space:nowrap !important;
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif !important;
  font-size:24px !important;
  line-height:32px !important;
  contain:none !important;
  content-visibility:visible !important;
  transform:none !important;
  -webkit-transform:none !important;
  z-index:-1 !important;
}


/* =========================================================
   CoachPro 2026-07-21 – iOS client dock compositor fix

   The scrolling element must not also own backdrop-filter. WKWebView creates a
   tiled composited scrolling layer for that combination and can leave color
   emoji or normal PNG descendants blank until the first physical swipe.

   .cp-client-tab-dock owns the fixed glass surface. The nested .cp-tabbar only
   scrolls normal DOM content. Native emoji remain plain text in normal paint.
   ========================================================= */
.cp-client-tab-dock{
  display:contents;
  min-width:0;
}

@media (max-width:1180px){
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock{
    position:fixed;
    left:9px;
    right:9px;
    bottom:calc(12px + var(--safe-bottom, env(safe-area-inset-bottom, 0px)));
    z-index:1320;
    display:block;
    width:auto;
    max-width:740px;
    min-width:0;
    min-height:70px;
    margin-inline:auto;
    overflow:hidden;
    border:1px solid rgba(255,255,255,.14);
    border-radius:999px;
    background:rgba(0,0,0,.48);
    box-shadow:0 18px 44px rgba(0,0,0,.35);
    isolation:isolate;
    contain:none;
    transform:none;
    -webkit-transform:none;
    transition:opacity .12s ease, visibility .12s ease;
  }
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:0;
    pointer-events:none;
    border-radius:inherit;
    background:rgba(0,0,0,.08);
    -webkit-backdrop-filter:blur(12px);
    backdrop-filter:blur(12px);
  }
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock > .cp-tabbar.cp-tabbar-glass{
    position:relative !important;
    inset:auto !important;
    top:auto !important;
    right:auto !important;
    bottom:auto !important;
    left:auto !important;
    z-index:1 !important;
    display:flex !important;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    min-height:70px !important;
    height:auto !important;
    margin:0 !important;
    padding:6px 10px !important;
    overflow-x:auto !important;
    overflow-y:hidden !important;
    border:0 !important;
    border-radius:inherit !important;
    background:transparent !important;
    background-image:none !important;
    box-shadow:none !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
    isolation:auto !important;
    contain:none !important;
    content-visibility:visible !important;
    transform:none !important;
    -webkit-transform:none !important;
    -webkit-overflow-scrolling:touch !important;
    overscroll-behavior-x:contain;
    touch-action:pan-x;
    scrollbar-width:none !important;
  }
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock > .cp-tabbar.cp-tabbar-glass::-webkit-scrollbar{
    display:none !important;
    width:0 !important;
    height:0 !important;
  }
}

/* Native Capacitor shells use the mobile dock also on wide iPads. */
html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock{
  position:fixed;
  left:9px;
  right:9px;
  bottom:calc(12px + var(--safe-bottom, env(safe-area-inset-bottom, 0px)));
  z-index:1320;
  display:block;
  width:auto;
  max-width:740px;
  min-width:0;
  min-height:70px;
  margin-inline:auto;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.14);
  border-radius:999px;
  background:rgba(0,0,0,.48);
  box-shadow:0 18px 44px rgba(0,0,0,.35);
  isolation:isolate;
  contain:none;
  transform:none;
  -webkit-transform:none;
  transition:opacity .12s ease, visibility .12s ease;
}
html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock::before,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock::before,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock::before,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock::before,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  border-radius:inherit;
  background:rgba(0,0,0,.08);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
}
html.inapp .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock > .cp-tabbar.cp-tabbar-glass,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock > .cp-tabbar.cp-tabbar-glass,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock > .cp-tabbar.cp-tabbar-glass,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock > .cp-tabbar.cp-tabbar-glass,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock > .cp-tabbar.cp-tabbar-glass{
  position:relative !important;
  inset:auto !important;
  top:auto !important;
  right:auto !important;
  bottom:auto !important;
  left:auto !important;
  z-index:1 !important;
  display:flex !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  min-height:70px !important;
  height:auto !important;
  margin:0 !important;
  padding:6px 10px !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  border:0 !important;
  border-radius:inherit !important;
  background:transparent !important;
  background-image:none !important;
  box-shadow:none !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
  isolation:auto !important;
  contain:none !important;
  content-visibility:visible !important;
  transform:none !important;
  -webkit-transform:none !important;
  -webkit-overflow-scrolling:touch !important;
  overscroll-behavior-x:contain;
  touch-action:pan-x;
  scrollbar-width:none !important;
}

/* Every tab descendant is above the separate glass pseudo-layer. */
.cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock .cp-tab,
.cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock .cp-tab-emoji,
.cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock .cp-tab-label,
.cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock .cp-tab-count{
  position:relative !important;
  z-index:2 !important;
  contain:none !important;
  content-visibility:visible !important;
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
.cp-tabs-scope[data-cp-tabs="client"] .cp-client-tab-dock .cp-tab-emoji{
  display:flex !important;
  opacity:1 !important;
  visibility:visible !important;
  filter:none !important;
  transform:none !important;
  -webkit-transform:none !important;
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif !important;
  font-variant-emoji:emoji;
}

/* Hide the complete shell, not only its transparent inner scroller. */
body.cp-keyboard-open .cp-client-tab-dock,
html.cp-keyboard-open body .cp-client-tab-dock,
body.cp-editing-text .cp-client-tab-dock,
body.cp-checkin-photo-open .cp-client-tab-dock,
body.modal-open .cp-client-tab-dock,
body.cp-form-overlay-open .cp-client-tab-dock{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}


/* =========================================================
   CoachPro 2026-07-21 – client_detail tabs v2

   This component is intentionally isolated from the historical .cp-tabbar and
   .cp-tabbar-glass cascade.  Those selectors contain multiple native iOS/iPad
   width, transform, containment and backdrop-filter overrides accumulated over
   time.  Combining them caused a half-width dock and stale WKWebView emoji
   tiles.  /me remains untouched.

   The outer surface owns geometry.  The inner element owns horizontal scroll.
   Neither layer uses backdrop-filter, transforms, paint containment,
   content-visibility or will-change, so native emoji are painted immediately.
   ========================================================= */
.cp-client-tabs-v2,
.cp-client-tabs-v2 *,
.cp-client-tabs-v2 *::before,
.cp-client-tabs-v2 *::after{
  box-sizing:border-box;
}

.cp-client-tabs-v2{
  position:sticky;
  top:calc(var(--safe-top, 0px) + var(--nav-h, 0px) + 6px);
  z-index:1180;
  width:100%;
  max-width:100%;
  min-width:0;
  margin:0 0 .25rem;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.10);
  border-radius:20px;
  background:
    linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.025)),
    rgba(16,18,24,.96);
  box-shadow:0 10px 24px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.08);
  contain:none;
  content-visibility:visible;
  transform:none;
  -webkit-transform:none;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}

.cp-client-tabs-v2__scroll{
  display:flex;
  flex-wrap:nowrap;
  align-items:center;
  justify-content:flex-start;
  gap:.5rem;
  width:100%;
  max-width:100%;
  min-width:0;
  padding:.65rem;
  overflow-x:auto;
  overflow-y:hidden;
  scrollbar-width:none;
  overscroll-behavior-x:contain;
  touch-action:pan-x;
  -webkit-overflow-scrolling:auto;
  contain:none;
  content-visibility:visible;
  transform:none;
  -webkit-transform:none;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
.cp-client-tabs-v2__scroll::-webkit-scrollbar{
  display:none;
  width:0;
  height:0;
}

.cp-client-tabs-v2__tab,
.cp-client-tabs-v2__tab:hover,
.cp-client-tabs-v2__tab:focus,
.cp-client-tabs-v2__tab:active{
  position:relative;
  z-index:1;
  display:inline-flex;
  flex:0 0 auto;
  align-items:center;
  justify-content:center;
  gap:.45rem;
  min-width:0;
  margin:0;
  padding:.48rem .82rem;
  overflow:visible;
  border:1px solid rgba(255,255,255,.08);
  border-radius:999px;
  background:rgba(0,0,0,.16);
  box-shadow:none;
  color:rgba(255,255,255,.88);
  font-weight:700;
  line-height:1.1;
  text-align:center;
  white-space:nowrap;
  contain:none;
  content-visibility:visible;
  isolation:auto;
  transform:none;
  -webkit-transform:none;
  filter:none;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  will-change:auto;
}
.cp-client-tabs-v2__tab.is-active{
  border-color:rgba(255,115,0,.48);
  background:linear-gradient(180deg,rgba(255,115,0,.40),rgba(255,115,0,.14));
  box-shadow:0 10px 22px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.10);
  color:#fff;
}
.cp-client-tabs-v2__tab:focus-visible{
  outline:2px solid rgba(255,122,36,.82);
  outline-offset:2px;
}

.cp-client-tabs-v2__emoji{
  position:relative;
  z-index:2;
  display:inline-flex;
  flex:0 0 1.42rem;
  align-items:center;
  justify-content:center;
  width:1.42rem;
  min-width:1.42rem;
  max-width:1.42rem;
  height:1.42rem;
  min-height:1.42rem;
  max-height:1.42rem;
  margin:0;
  padding:0;
  overflow:visible;
  opacity:1;
  visibility:visible;
  color:initial;
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;
  font-variant-emoji:emoji;
  font-size:1.08rem;
  font-style:normal;
  font-weight:400;
  line-height:1;
  text-rendering:auto;
  -webkit-font-smoothing:antialiased;
  contain:none;
  content-visibility:visible;
  transform:none;
  -webkit-transform:none;
  filter:none;
  will-change:auto;
}
.cp-client-tabs-v2__label{
  position:relative;
  z-index:2;
  display:block;
  min-width:0;
  overflow:visible;
  color:inherit;
  contain:none;
  content-visibility:visible;
}
.cp-client-tabs-v2__tab--count .cp-tab-count{
  position:absolute;
  z-index:4;
  top:4px;
  right:5px;
  margin:0;
}

html[data-theme="light"] .cp-client-tabs-v2{
  border-color:rgba(15,23,42,.10);
  background:
    linear-gradient(180deg,rgba(255,255,255,.96),rgba(246,248,252,.92)),
    #f8fafc;
  box-shadow:0 10px 22px rgba(15,23,42,.10),inset 0 1px 0 rgba(255,255,255,.96);
}
html[data-theme="light"] .cp-client-tabs-v2__tab{
  border-color:rgba(15,23,42,.10);
  background:rgba(15,23,42,.045);
  color:rgba(15,23,42,.84);
}
html[data-theme="light"] .cp-client-tabs-v2__tab.is-active{
  border-color:rgba(255,106,31,.42);
  background:linear-gradient(180deg,rgba(255,106,31,.23),rgba(255,106,31,.09));
  box-shadow:0 9px 18px rgba(15,23,42,.11),inset 0 1px 0 rgba(255,255,255,.72);
  color:#111827;
}

@media (max-width:1180px){
  .cp-client-tabs-v2{
    position:fixed;
    top:auto;
    left:9px;
    right:9px;
    bottom:calc(12px + var(--safe-bottom, env(safe-area-inset-bottom, 0px)));
    z-index:1320;
    width:auto;
    max-width:none;
    min-width:0;
    min-height:80px;
    margin:0;
    border-radius:31px;
    background:
      linear-gradient(145deg,rgba(255,255,255,.10),rgba(255,255,255,.035) 48%,rgba(255,122,36,.055)),
      rgba(10,10,12,.97);
    box-shadow:0 18px 44px rgba(0,0,0,.36),inset 0 1px 0 rgba(255,255,255,.12);
  }
  .cp-client-tabs-v2__scroll{
    width:100%;
    max-width:100%;
    min-height:78px;
    gap:0;
    padding:6px 10px;
  }
  .cp-client-tabs-v2__tab,
  .cp-client-tabs-v2__tab:hover,
  .cp-client-tabs-v2__tab:focus,
  .cp-client-tabs-v2__tab:active{
    flex:0 0 96px;
    width:96px;
    min-width:96px;
    max-width:96px;
    height:66px;
    min-height:66px;
    max-height:66px;
    flex-direction:column;
    gap:0;
    padding:.48rem .42rem .52rem;
    border:0;
    border-radius:24px;
    background:transparent;
    white-space:normal;
  }
  .cp-client-tabs-v2__tab.is-active{
    border:0;
    background:
      linear-gradient(180deg,rgba(255,255,255,.20),rgba(255,255,255,.075)),
      rgba(255,111,31,.20);
    box-shadow:0 8px 22px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.16);
  }
  .cp-client-tabs-v2__emoji{
    flex-basis:1.42rem;
    margin:0 0 3px;
    font-size:1.08rem;
  }
  .cp-client-tabs-v2__label{
    display:-webkit-box;
    width:100%;
    overflow:hidden;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
    font-size:.66rem;
    font-weight:700;
    letter-spacing:-.01em;
    line-height:1.08;
    white-space:normal;
  }
  html[data-theme="light"] .cp-client-tabs-v2{
    border-color:rgba(15,23,42,.13);
    background:
      linear-gradient(145deg,rgba(255,255,255,.96),rgba(248,250,252,.94) 52%,rgba(255,122,36,.075)),
      #f8fafc;
    box-shadow:0 16px 38px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.92);
  }
  html[data-theme="light"] .cp-client-tabs-v2__tab{
    background:transparent;
  }
  html[data-theme="light"] .cp-client-tabs-v2__tab.is-active{
    background:
      linear-gradient(180deg,rgba(255,255,255,.82),rgba(255,255,255,.32)),
      rgba(255,111,31,.16);
  }
}

/* Native shells use the bottom dock even on wide iPads. */
html.inapp .cp-client-tabs-v2,
html.cp-native-app .cp-client-tabs-v2,
html.cp-native-shell .cp-client-tabs-v2,
html[data-cp-platform="ios"] .cp-client-tabs-v2,
html[data-cp-platform="android"] .cp-client-tabs-v2{
  position:fixed;
  top:auto;
  left:9px;
  right:9px;
  bottom:calc(12px + var(--safe-bottom, env(safe-area-inset-bottom, 0px)));
  z-index:1320;
  width:auto;
  max-width:none;
  min-width:0;
  min-height:80px;
  margin:0;
  overflow:hidden;
  border-radius:31px;
}
html.inapp .cp-client-tabs-v2__scroll,
html.cp-native-app .cp-client-tabs-v2__scroll,
html.cp-native-shell .cp-client-tabs-v2__scroll,
html[data-cp-platform="ios"] .cp-client-tabs-v2__scroll,
html[data-cp-platform="android"] .cp-client-tabs-v2__scroll{
  width:100%;
  max-width:100%;
  min-height:78px;
  gap:0;
  padding:6px 10px;
}
html.inapp .cp-client-tabs-v2__tab,
html.cp-native-app .cp-client-tabs-v2__tab,
html.cp-native-shell .cp-client-tabs-v2__tab,
html[data-cp-platform="ios"] .cp-client-tabs-v2__tab,
html[data-cp-platform="android"] .cp-client-tabs-v2__tab{
  flex:0 0 96px;
  width:96px;
  min-width:96px;
  max-width:96px;
  height:66px;
  min-height:66px;
  max-height:66px;
  flex-direction:column;
  gap:0;
  padding:.48rem .42rem .52rem;
  border:0;
  border-radius:24px;
  white-space:normal;
}
html.inapp .cp-client-tabs-v2__label,
html.cp-native-app .cp-client-tabs-v2__label,
html.cp-native-shell .cp-client-tabs-v2__label,
html[data-cp-platform="ios"] .cp-client-tabs-v2__label,
html[data-cp-platform="android"] .cp-client-tabs-v2__label{
  display:-webkit-box;
  width:100%;
  overflow:hidden;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  font-size:.66rem;
  line-height:1.08;
  white-space:normal;
}

body.cp-keyboard-open .cp-client-tabs-v2,
html.cp-keyboard-open body .cp-client-tabs-v2,
body.cp-editing-text .cp-client-tabs-v2,
body.cp-checkin-photo-open .cp-client-tabs-v2,
body.modal-open .cp-client-tabs-v2,
body.cp-form-overlay-open .cp-client-tabs-v2{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}


/* =========================================================
   CoachPro 2026-07-21 – Liquid Glass V3 for /client_detail + /me

   IMPORTANT FOR WKWEBVIEW:
   - the blurred glass is painted behind the horizontally scrolling content;
   - emoji, labels and buttons never receive backdrop-filter, transform or
     paint containment;
   - the active capsule uses only translucent gradients, so changing tabs does
     not recreate a filtered glyph layer.
   ========================================================= */

/* Remove the native grey tap flash which looked like a one-frame blink. */
.cp-client-tabs-v2__tab,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab{
  -webkit-appearance:none;
  appearance:none;
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
  user-select:none;
  -webkit-user-select:none;
  outline:none;
}

/* ----- /client_detail: blur lives on an isolated background layer ----- */
.cp-client-tabs-v2{
  isolation:isolate;
  background:rgba(10,11,15,.38);
  border-color:rgba(255,255,255,.16);
  box-shadow:
    0 18px 48px rgba(0,0,0,.30),
    0 2px 10px rgba(0,0,0,.18),
    inset 0 1px 0 rgba(255,255,255,.20),
    inset 0 -1px 0 rgba(255,255,255,.045);
}
.cp-client-tabs-v2::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  border-radius:inherit;
  background:
    radial-gradient(120% 90% at 18% -20%,rgba(255,255,255,.18),transparent 52%),
    linear-gradient(145deg,rgba(255,255,255,.10),rgba(255,255,255,.025) 48%,rgba(255,92,31,.045));
  -webkit-backdrop-filter:blur(26px) saturate(185%);
  backdrop-filter:blur(26px) saturate(185%);
}
.cp-client-tabs-v2::after{
  content:"";
  position:absolute;
  inset:1px;
  z-index:1;
  pointer-events:none;
  border-radius:inherit;
  background:
    linear-gradient(112deg,rgba(255,255,255,.13),transparent 24%,transparent 72%,rgba(255,255,255,.035));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.025);
}
.cp-client-tabs-v2__scroll{
  position:relative;
  z-index:3;
  background:transparent;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}

.cp-client-tabs-v2__tab,
.cp-client-tabs-v2__tab:hover,
.cp-client-tabs-v2__tab:focus,
.cp-client-tabs-v2__tab:active{
  border-color:transparent;
  background:transparent;
  box-shadow:none;
  color:rgba(255,255,255,.84);
  transition:color .14s ease;
}
.cp-client-tabs-v2__tab::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  border:1px solid transparent;
  border-radius:inherit;
  background:transparent;
  box-shadow:none;
  opacity:0;
  transition:opacity .14s ease,background-color .14s ease,border-color .14s ease,box-shadow .14s ease;
}
.cp-client-tabs-v2__tab:not(.is-active):active::before{
  opacity:1;
  border-color:rgba(255,255,255,.075);
  background:rgba(255,255,255,.075);
}
.cp-client-tabs-v2__tab.is-active{
  border-color:transparent;
  background:transparent;
  box-shadow:none;
  color:#fff;
  text-shadow:0 1px 7px rgba(0,0,0,.28);
}
.cp-client-tabs-v2__tab.is-active::before{
  opacity:1;
  border-color:rgba(255,255,255,.17);
  background:
    radial-gradient(105% 95% at 24% 0%,rgba(255,255,255,.22),transparent 50%),
    linear-gradient(155deg,rgba(255,255,255,.11),rgba(255,255,255,.045)),
    rgba(255,95,31,.12);
  box-shadow:
    0 8px 22px rgba(0,0,0,.20),
    inset 0 1px 0 rgba(255,255,255,.18),
    inset 0 -1px 0 rgba(255,255,255,.035);
}
.cp-client-tabs-v2__emoji,
.cp-client-tabs-v2__label{
  position:relative;
  z-index:2;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}

/* ----- /me: retain its proven DOM/emoji rendering, only refine the glass ----- */
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
  border-color:rgba(255,255,255,.16) !important;
  background:
    radial-gradient(120% 100% at 18% -24%,rgba(255,255,255,.16),transparent 50%),
    linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.018) 52%,rgba(255,92,31,.035)),
    rgba(10,11,15,.38) !important;
  -webkit-backdrop-filter:blur(26px) saturate(185%) !important;
  backdrop-filter:blur(26px) saturate(185%) !important;
  box-shadow:
    0 18px 48px rgba(0,0,0,.30),
    0 2px 10px rgba(0,0,0,.18),
    inset 0 1px 0 rgba(255,255,255,.20),
    inset 0 -1px 0 rgba(255,255,255,.045) !important;
}
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab{
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
  border-color:transparent !important;
  background:transparent !important;
  box-shadow:none !important;
  transition:color .14s ease,background-color .14s ease,border-color .14s ease,box-shadow .14s ease !important;
}
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab:not(.is-active):active{
  background:rgba(255,255,255,.075) !important;
}
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
  border:1px solid rgba(255,255,255,.17) !important;
  background:
    radial-gradient(105% 95% at 24% 0%,rgba(255,255,255,.22),transparent 50%),
    linear-gradient(155deg,rgba(255,255,255,.11),rgba(255,255,255,.045)),
    rgba(255,95,31,.12) !important;
  box-shadow:
    0 8px 22px rgba(0,0,0,.20),
    inset 0 1px 0 rgba(255,255,255,.18),
    inset 0 -1px 0 rgba(255,255,255,.035) !important;
}

/* Light theme keeps the same glass depth without becoming milky/opaque. */
html[data-theme="light"] .cp-client-tabs-v2{
  border-color:rgba(15,23,42,.12);
  background:rgba(248,250,252,.48);
  box-shadow:
    0 18px 42px rgba(15,23,42,.16),
    inset 0 1px 0 rgba(255,255,255,.82),
    inset 0 -1px 0 rgba(15,23,42,.035);
}
html[data-theme="light"] .cp-client-tabs-v2::before{
  background:
    radial-gradient(120% 90% at 18% -20%,rgba(255,255,255,.72),transparent 54%),
    linear-gradient(145deg,rgba(255,255,255,.52),rgba(255,255,255,.16) 48%,rgba(255,92,31,.05));
}
html[data-theme="light"] .cp-client-tabs-v2__tab,
html[data-theme="light"] .cp-client-tabs-v2__tab:hover,
html[data-theme="light"] .cp-client-tabs-v2__tab:focus,
html[data-theme="light"] .cp-client-tabs-v2__tab:active{
  color:rgba(15,23,42,.76);
  background:transparent;
}
html[data-theme="light"] .cp-client-tabs-v2__tab.is-active{
  color:#111827;
  background:transparent;
}
html[data-theme="light"] .cp-client-tabs-v2__tab.is-active::before{
  border-color:rgba(255,255,255,.78);
  background:
    radial-gradient(105% 95% at 24% 0%,rgba(255,255,255,.90),transparent 52%),
    linear-gradient(155deg,rgba(255,255,255,.56),rgba(255,255,255,.22)),
    rgba(255,95,31,.13);
  box-shadow:
    0 8px 20px rgba(15,23,42,.12),
    inset 0 1px 0 rgba(255,255,255,.92),
    inset 0 -1px 0 rgba(15,23,42,.035);
}
html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
  border-color:rgba(15,23,42,.12) !important;
  background:
    radial-gradient(120% 100% at 18% -24%,rgba(255,255,255,.78),transparent 50%),
    linear-gradient(145deg,rgba(255,255,255,.48),rgba(255,255,255,.14) 52%,rgba(255,92,31,.045)),
    rgba(248,250,252,.48) !important;
  box-shadow:
    0 18px 42px rgba(15,23,42,.16),
    inset 0 1px 0 rgba(255,255,255,.86),
    inset 0 -1px 0 rgba(15,23,42,.035) !important;
}
html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
  border-color:rgba(255,255,255,.78) !important;
  background:
    radial-gradient(105% 95% at 24% 0%,rgba(255,255,255,.90),transparent 52%),
    linear-gradient(155deg,rgba(255,255,255,.56),rgba(255,255,255,.22)),
    rgba(255,95,31,.13) !important;
  box-shadow:
    0 8px 20px rgba(15,23,42,.12),
    inset 0 1px 0 rgba(255,255,255,.92),
    inset 0 -1px 0 rgba(15,23,42,.035) !important;
}

/* Accessibility: reduce blur/transparency only when requested by the OS. */
@media (prefers-reduced-transparency: reduce){
  .cp-client-tabs-v2,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
    background:rgba(14,15,19,.90) !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
  }
  .cp-client-tabs-v2::before{
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
}

/* =========================================================
   CoachPro 2026-07-21 – Liquid Glass V4 (transparent iOS dock)

   Production-safe approximation of iOS Liquid Glass for WKWebView:
   - real backdrop blur remains on one isolated surface only;
   - a JavaScript-updated specular highlight uses CSS variables;
   - emoji/text never receive filters, transforms or paint containment;
   - no animated active-state compositor, preventing the tab-change flash.
   ========================================================= */

/* Shared optical position; JavaScript updates these to the active tab centre. */
.cp-client-tabs-v2,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
  --cp-liquid-x:50%;
  --cp-liquid-y:22%;
}

/* More transparent and more rounded outer glass. */
.cp-client-tabs-v2{
  border-radius:42px !important;
  border-color:rgba(255,255,255,.22) !important;
  background:rgba(7,8,12,.14) !important;
  box-shadow:
    0 18px 44px rgba(0,0,0,.22),
    0 3px 14px rgba(0,0,0,.12),
    inset 0 1px 0 rgba(255,255,255,.27),
    inset 0 -1px 0 rgba(255,255,255,.055) !important;
}
.cp-client-tabs-v2::before{
  border-radius:inherit !important;
  background:
    radial-gradient(115px 82px at var(--cp-liquid-x) var(--cp-liquid-y),rgba(255,255,255,.18),rgba(255,255,255,.055) 38%,transparent 72%),
    linear-gradient(155deg,rgba(255,255,255,.075),transparent 38%,rgba(255,255,255,.018) 72%,rgba(255,109,47,.025)) !important;
  -webkit-backdrop-filter:blur(34px) saturate(190%) brightness(108%) !important;
  backdrop-filter:blur(34px) saturate(190%) brightness(108%) !important;
}
.cp-client-tabs-v2::after{
  inset:1px !important;
  border-radius:inherit !important;
  background:
    linear-gradient(118deg,rgba(255,255,255,.18),rgba(255,255,255,.025) 24%,transparent 42%,transparent 74%,rgba(255,255,255,.045)),
    radial-gradient(150px 60px at var(--cp-liquid-x) 0%,rgba(255,255,255,.09),transparent 76%) !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035) !important;
}

/* Rounder, clearer active glass capsule. */
.cp-client-tabs-v2__tab,
.cp-client-tabs-v2__tab:hover,
.cp-client-tabs-v2__tab:focus,
.cp-client-tabs-v2__tab:active{
  border-radius:31px !important;
  transition:none !important;
}
.cp-client-tabs-v2__tab::before{
  border-radius:31px !important;
  transition:none !important;
}
.cp-client-tabs-v2__tab.is-active::before{
  border-color:rgba(255,255,255,.25) !important;
  background:
    radial-gradient(90% 88% at 28% 0%,rgba(255,255,255,.22),transparent 54%),
    linear-gradient(155deg,rgba(255,255,255,.095),rgba(255,255,255,.025)),
    rgba(255,102,42,.065) !important;
  box-shadow:
    0 9px 22px rgba(0,0,0,.16),
    inset 0 1px 0 rgba(255,255,255,.25),
    inset 0 -1px 0 rgba(255,255,255,.045) !important;
}
.cp-client-tabs-v2__tab:not(.is-active):active::before{
  background:rgba(255,255,255,.045) !important;
  border-color:rgba(255,255,255,.09) !important;
}

/* /me receives the same transparent optical surface and radii. */
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
  border-radius:42px !important;
  border-color:rgba(255,255,255,.22) !important;
  background:
    radial-gradient(115px 82px at var(--cp-liquid-x) var(--cp-liquid-y),rgba(255,255,255,.18),rgba(255,255,255,.055) 38%,transparent 72%),
    linear-gradient(155deg,rgba(255,255,255,.075),transparent 38%,rgba(255,255,255,.018) 72%,rgba(255,109,47,.025)),
    rgba(7,8,12,.14) !important;
  -webkit-backdrop-filter:blur(34px) saturate(190%) brightness(108%) !important;
  backdrop-filter:blur(34px) saturate(190%) brightness(108%) !important;
  box-shadow:
    0 18px 44px rgba(0,0,0,.22),
    0 3px 14px rgba(0,0,0,.12),
    inset 0 1px 0 rgba(255,255,255,.27),
    inset 0 -1px 0 rgba(255,255,255,.055) !important;
}
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab:hover,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab:focus,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab:active{
  border-radius:31px !important;
  transition:none !important;
}
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
  border-color:rgba(255,255,255,.25) !important;
  background:
    radial-gradient(90% 88% at 28% 0%,rgba(255,255,255,.22),transparent 54%),
    linear-gradient(155deg,rgba(255,255,255,.095),rgba(255,255,255,.025)),
    rgba(255,102,42,.065) !important;
  box-shadow:
    0 9px 22px rgba(0,0,0,.16),
    inset 0 1px 0 rgba(255,255,255,.25),
    inset 0 -1px 0 rgba(255,255,255,.045) !important;
}
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab:not(.is-active):active{
  background:rgba(255,255,255,.045) !important;
}

/* Native/mobile dimensions keep the rounded pill silhouette. */
@media (max-width:1180px){
  .cp-client-tabs-v2,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
    border-radius:42px !important;
  }
  .cp-client-tabs-v2__tab,
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab{
    border-radius:31px !important;
  }
}

html.inapp .cp-client-tabs-v2,
html.cp-native-app .cp-client-tabs-v2,
html.cp-native-shell .cp-client-tabs-v2,
html[data-cp-platform="ios"] .cp-client-tabs-v2,
html[data-cp-platform="android"] .cp-client-tabs-v2,
html.inapp .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
html.cp-native-app .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
html.cp-native-shell .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
html[data-cp-platform="ios"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass,
html[data-cp-platform="android"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
  border-radius:42px !important;
}

/* Light mode: still transparent, without turning into an opaque white plate. */
html[data-theme="light"] .cp-client-tabs-v2{
  border-color:rgba(255,255,255,.72) !important;
  background:rgba(244,247,252,.20) !important;
  box-shadow:
    0 18px 38px rgba(15,23,42,.13),
    inset 0 1px 0 rgba(255,255,255,.90),
    inset 0 -1px 0 rgba(15,23,42,.035) !important;
}
html[data-theme="light"] .cp-client-tabs-v2::before{
  background:
    radial-gradient(115px 82px at var(--cp-liquid-x) var(--cp-liquid-y),rgba(255,255,255,.76),rgba(255,255,255,.22) 40%,transparent 72%),
    linear-gradient(155deg,rgba(255,255,255,.36),transparent 42%,rgba(255,109,47,.025)) !important;
}
html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
  border-color:rgba(255,255,255,.72) !important;
  background:
    radial-gradient(115px 82px at var(--cp-liquid-x) var(--cp-liquid-y),rgba(255,255,255,.76),rgba(255,255,255,.22) 40%,transparent 72%),
    linear-gradient(155deg,rgba(255,255,255,.36),transparent 42%,rgba(255,109,47,.025)),
    rgba(244,247,252,.20) !important;
}
html[data-theme="light"] .cp-client-tabs-v2__tab.is-active::before,
html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active{
  border-color:rgba(255,255,255,.88) !important;
  background:
    radial-gradient(90% 88% at 28% 0%,rgba(255,255,255,.92),transparent 56%),
    linear-gradient(155deg,rgba(255,255,255,.52),rgba(255,255,255,.14)),
    rgba(255,102,42,.075) !important;
}

/* =========================================================
   CoachPro 2026-07-21 – Liquid Glass V5
   Visible orange label for the currently active tab.
   Text only: native emoji rendering and glass layers remain untouched.
   ========================================================= */
.cp-client-tabs-v2__tab.is-active .cp-client-tabs-v2__label,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
.cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span{
  color:#ff7a2f !important;
  font-weight:800 !important;
  text-shadow:
    0 0 8px rgba(255,122,47,.24),
    0 1px 3px rgba(0,0,0,.34) !important;
  -webkit-text-fill-color:#ff7a2f !important;
}

/* Keep the orange readable on the brighter light glass surface. */
html[data-theme="light"] .cp-client-tabs-v2__tab.is-active .cp-client-tabs-v2__label,
html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-label,
html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass .cp-tab.is-active .cp-tab-emoji + span{
  color:#e95712 !important;
  -webkit-text-fill-color:#e95712 !important;
  text-shadow:0 1px 4px rgba(255,106,31,.15) !important;
}


/* 2026-07-29: stable flash close button after responsive shell changes. */
.cp-flash-alert{
  position:relative!important;
  display:flex;
  align-items:center;
  min-height:52px;
  padding-right:3.35rem!important;
}
.cp-flash-alert > .btn-close{
  position:absolute!important;
  top:50%!important;
  right:.9rem!important;
  left:auto!important;
  margin:0!important;
  padding:.55rem!important;
  transform:translateY(-50%)!important;
  flex:0 0 auto;
  z-index:3;
}

/* Drawer avatars: initials remain visible until the image has actually decoded. */
.cp-drawer-item__avatar.cp-avatar--pending > .cp-drawer-item__avatar-fallback{
  display:inline-flex!important;
  opacity:1!important;
  visibility:visible!important;
  z-index:1!important;
}
.cp-drawer-item__avatar.cp-avatar--pending > img{opacity:0!important;}
.cp-drawer-item__avatar.cp-avatar--loaded > img{opacity:1!important;}
.cp-drawer-item__avatar.cp-avatar--loaded > .cp-drawer-item__avatar-fallback{
  display:none!important;
  opacity:0!important;
}
.cp-drawer-item__avatar > img{transition:opacity .16s ease;}

/* Simpler records and exercise-progress surface for trainer and client dashboards. */
.cp-records-card--simple .cp-records-head{align-items:center;}
.cp-records-controls--simple{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:.75rem;
  flex-wrap:wrap;
}
.cp-records-control-group--primary{flex:1 1 420px;}
.cp-records-more{flex:0 1 auto;min-width:155px;}
.cp-records-more > summary,
.cp-record-card-details > summary,
.cp-strength-details > summary{
  cursor:pointer;
  list-style:none;
  user-select:none;
}
.cp-records-more > summary::-webkit-details-marker,
.cp-record-card-details > summary::-webkit-details-marker,
.cp-strength-details > summary::-webkit-details-marker{display:none;}
.cp-records-more > summary{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:.5rem .8rem;
  border:1px solid var(--border);
  border-radius:999px;
  color:var(--muted);
  font-weight:700;
  font-size:.82rem;
}
.cp-records-more[open] > summary{color:var(--text);border-color:rgba(255,111,35,.48);background:rgba(255,111,35,.08);}
.cp-records-more__body{
  display:grid;
  gap:.65rem;
  margin-top:.65rem;
  padding:.75rem;
  border:1px solid var(--border);
  border-radius:16px;
  background:rgba(255,255,255,.025);
}
.cp-record-card--simple .cp-record-highlight{margin-bottom:.75rem;}
.cp-record-comparison{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.6rem;
  margin-top:.2rem;
}
.cp-record-comparison > div{
  min-width:0;
  padding:.65rem .7rem;
  border:1px solid var(--border);
  border-radius:14px;
  background:rgba(255,255,255,.025);
}
.cp-record-comparison span{display:block;color:var(--muted);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;}
.cp-record-comparison strong{display:block;margin-top:.18rem;overflow-wrap:anywhere;font-size:.9rem;}
.cp-record-comparison__gain{border-color:rgba(34,197,94,.30)!important;background:rgba(34,197,94,.08)!important;}
.cp-record-comparison__gain strong{color:#35c979;}
.cp-record-card-details{margin-top:.65rem;}
.cp-record-card-details > summary{color:var(--muted);font-size:.8rem;font-weight:700;}
.cp-record-card-details[open] > summary{color:var(--text);}
.cp-record-card-details .cp-record-meta-list{margin-top:.5rem;}
.cp-strength-details{
  border:1px solid var(--border);
  border-radius:16px;
  padding:.7rem .8rem;
  background:rgba(255,255,255,.025);
}
.cp-strength-details > summary{display:flex;justify-content:space-between;align-items:center;gap:.75rem;font-weight:700;}
.cp-strength-simple .me-strength-range .btn{white-space:nowrap;}
html[data-theme='light'] .cp-records-more__body,
html[data-theme='light'] .cp-record-comparison > div,
html[data-theme='light'] .cp-strength-details{background:rgba(15,23,42,.025);}
@media(max-width:575.98px){
  .cp-flash-alert{padding-left:.9rem!important;padding-right:3rem!important;min-height:48px;}
  .cp-flash-alert > .btn-close{right:.65rem!important;}
  .cp-records-controls--simple{display:block;}
  .cp-records-control-group--primary{margin-bottom:.65rem;}
  .cp-records-more{width:100%;}
  .cp-records-more > summary{width:100%;}
  .cp-record-comparison{grid-template-columns:1fr;}
  .cp-strength-simple .me-strength-range{width:100%;display:flex;}
  .cp-strength-simple .me-strength-range .btn{flex:1 1 0;}
  .cp-strength-details > summary{align-items:flex-start;flex-direction:column;gap:.2rem;}
}

/* =========================================================
   CoachPro 2026-07-29 – client detail chat + progress R2
   Responsive embedded chat, drawer-safe client tabs and mobile-safe progress tables.
   ========================================================= */

/* The notification/message drawers must always cover the floating client dock. */
body.cp-drawer-open .cp-drawer-backdrop{
  z-index:1590 !important;
}
body.cp-drawer-open .cp-drawer{
  z-index:1600 !important;
}
body.cp-drawer-open .cp-client-tabs-v2{
  z-index:1030 !important;
  pointer-events:none !important;
}

/* Embedded trainer chat: use the available client-detail width instead of an 8/12 column. */
.cp-client-chat-embed{
  width:100%;
  max-width:none;
  min-width:0;
  scroll-margin-top:calc(var(--safe-top, 0px) + var(--nav-h, 72px) + 96px);
}
.cp-client-chat-embed .chat-card{
  width:100%;
  min-width:0;
  height:clamp(520px, calc(100dvh - var(--safe-top, 0px) - var(--nav-h, 72px) - 150px), 780px);
  min-height:520px;
  max-height:none;
}
.cp-client-chat-embed .chat-messages{
  min-height:0 !important;
  max-height:none !important;
  overscroll-behavior:contain;
}
.cp-client-chat-embed .chat-bubble-wrap{
  max-width:min(820px, calc(100% - 42px));
}
.cp-client-chat-embed .chat-bubble{
  max-width:100%;
}
.cp-client-chat-embed .chat-text{
  overflow-wrap:anywhere;
  word-break:break-word;
}

/* Make the four composer controls predictable at every width. */
.cp-client-chat-embed .chat-input form#chatSendForm,
.cp-client-chat-embed .chat-input form.d-flex{
  grid-template-columns:48px minmax(0,1fr) 48px 58px !important;
  grid-template-areas:"attach text voice send";
}
.cp-client-chat-embed #chatAttachBtn{grid-area:attach;}
.cp-client-chat-embed #chatText{grid-area:text;}
.cp-client-chat-embed #chatVoiceBtn{grid-area:voice;}
.cp-client-chat-embed #chatSendBtn{grid-area:send;}

/* Exercise progress: stable desktop columns and readable mobile cards. */
:is(#client-strength-card, #me-strength-card){
  min-width:0;
}
:is(#client-strength-card, #me-strength-card) .cp-progress-table-wrap{
  width:100%;
  max-width:100%;
  overflow-x:auto;
  border:1px solid var(--border);
  border-radius:16px;
}
:is(#client-strength-card, #me-strength-card) .cp-progress-table{
  width:100%;
  min-width:680px;
  margin:0;
  table-layout:fixed;
  font-variant-numeric:tabular-nums;
}
:is(#client-strength-card, #me-strength-card) .cp-progress-table--best,
:is(#client-strength-card, #me-strength-card) .cp-progress-table--ratio{
  min-width:560px;
}
:is(#client-strength-card, #me-strength-card) .cp-progress-table .cp-col-exercise{
  width:34%;
}
:is(#client-strength-card, #me-strength-card) .cp-progress-table th,
:is(#client-strength-card, #me-strength-card) .cp-progress-table td{
  padding:.72rem .75rem;
  vertical-align:middle;
  overflow-wrap:anywhere;
  word-break:normal;
}
:is(#client-strength-card, #me-strength-card) .cp-progress-table th{
  color:var(--muted);
  font-size:.76rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.035em;
  white-space:normal;
}
:is(#client-strength-card, #me-strength-card) .cp-progress-table td:first-child{
  text-align:left !important;
}
.cp-progress-positive{
  color:#35c979 !important;
}
.cp-ratio-percent{
  color:var(--muted);
  font-weight:700;
  white-space:nowrap;
}

/* The relative-strength disclosure now looks and behaves like an obvious button. */
.cp-strength-details{
  padding:0 !important;
  overflow:hidden;
  background:rgba(255,255,255,.025);
}
.cp-strength-details__toggle{
  width:100%;
  min-height:68px;
  padding:.78rem .9rem;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:1rem !important;
  border:0;
  background:linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.02));
  transition:background .16s ease, box-shadow .16s ease;
}
.cp-strength-details__toggle:hover,
.cp-strength-details__toggle:focus-visible{
  background:linear-gradient(180deg, rgba(255,122,36,.13), rgba(255,122,36,.055));
  box-shadow:inset 0 0 0 1px rgba(255,122,36,.26);
  outline:none;
}
.cp-strength-details__main{
  display:flex;
  align-items:center;
  gap:.72rem;
  min-width:0;
}
.cp-strength-details__icon{
  width:40px;
  height:40px;
  flex:0 0 40px;
  display:grid;
  place-items:center;
  border-radius:13px;
  background:rgba(255,122,36,.13);
  border:1px solid rgba(255,122,36,.23);
  font-size:1.12rem;
}
.cp-strength-details__title{
  display:block;
  color:var(--text);
  font-weight:800;
}
.cp-strength-details__subtitle{
  display:block;
  margin-top:.14rem;
  color:var(--muted);
  font-size:.78rem;
  font-weight:500;
  line-height:1.3;
}
.cp-strength-details__side{
  display:flex;
  align-items:center;
  gap:.65rem;
  flex:0 0 auto;
}
.cp-strength-details__weight{
  padding:.36rem .58rem;
  border-radius:999px;
  border:1px solid var(--border);
  color:var(--muted);
  font-size:.76rem;
  white-space:nowrap;
}
.cp-strength-details__weight strong{color:var(--text);}
.cp-strength-details__action{
  min-width:82px;
  min-height:36px;
  padding:.42rem .62rem;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.35rem;
  border-radius:999px;
  border:1px solid rgba(255,122,36,.45);
  background:rgba(255,122,36,.10);
  color:var(--orange2);
  font-size:.78rem;
  font-weight:800;
}
.cp-strength-details__action-label::before{content:"Pokaż";}
.cp-strength-details[open] .cp-strength-details__action-label::before{content:"Ukryj";}
.cp-strength-details__chevron{
  display:inline-block;
  font-size:1rem;
  line-height:1;
  transition:transform .16s ease;
}
.cp-strength-details[open] .cp-strength-details__chevron{transform:rotate(180deg);}
.cp-strength-details__body{
  padding:0 .8rem .8rem;
  border-top:1px solid var(--border);
}
html[data-theme="light"] .cp-strength-details__toggle{
  background:linear-gradient(180deg, rgba(15,23,42,.035), rgba(15,23,42,.015));
}
html[data-theme="light"] .cp-strength-details__toggle:hover,
html[data-theme="light"] .cp-strength-details__toggle:focus-visible{
  background:linear-gradient(180deg, rgba(255,122,36,.11), rgba(255,122,36,.045));
}

@media (max-width:1180px){
  .cp-client-chat-embed{
    padding-bottom:0 !important;
    margin-bottom:0 !important;
    scroll-margin-top:calc(var(--safe-top, 0px) + var(--nav-h, 64px) + 12px);
  }
  .cp-client-chat-embed .chat-card{margin-bottom:0 !important;}
  .cp-client-chat-embed .chat-card{
    height:clamp(480px, calc(100dvh - var(--safe-top, 0px) - var(--nav-h, 64px) - 116px), 720px);
    min-height:480px;
  }
}

@media (max-width:767.98px){
  .cp-client-chat-embed .chat-card{
    height:clamp(460px, calc(100dvh - var(--safe-top, 0px) - var(--nav-h, 58px) - 104px), 680px);
    min-height:460px;
    border-radius:20px;
  }
  .cp-client-chat-embed .chat-messages{
    padding:.72rem .62rem .65rem !important;
  }
  .cp-client-chat-embed .chat-bubble-wrap{
    max-width:calc(100% - 34px);
  }
  .cp-client-chat-embed .chat-bubble{
    padding:.62rem .7rem;
  }

  :is(#client-strength-card, #me-strength-card) .cp-progress-table-wrap{
    overflow:visible;
    border:0;
    border-radius:0;
  }
  :is(#client-strength-card, #me-strength-card) .cp-progress-table,
  :is(#client-strength-card, #me-strength-card) .cp-progress-table--best,
  :is(#client-strength-card, #me-strength-card) .cp-progress-table--ratio{
    min-width:0;
    table-layout:auto;
    background:transparent;
  }
  :is(#client-strength-card, #me-strength-card) .cp-progress-table thead,
  :is(#client-strength-card, #me-strength-card) .cp-progress-table colgroup{
    display:none;
  }
  :is(#client-strength-card, #me-strength-card) .cp-progress-table,
  :is(#client-strength-card, #me-strength-card) .cp-progress-table tbody,
  :is(#client-strength-card, #me-strength-card) .cp-progress-table tr,
  :is(#client-strength-card, #me-strength-card) .cp-progress-table td{
    display:block;
    width:100%;
  }
  :is(#client-strength-card, #me-strength-card) .cp-progress-table tbody{
    display:grid;
    gap:.68rem;
  }
  :is(#client-strength-card, #me-strength-card) .cp-progress-table tr{
    padding:.64rem .72rem;
    border:1px solid var(--border);
    border-radius:15px;
    background:rgba(255,255,255,.025);
    box-shadow:0 8px 18px rgba(0,0,0,.10);
  }
  :is(#client-strength-card, #me-strength-card) .cp-progress-table td{
    min-width:0;
    padding:.38rem 0 !important;
    display:grid;
    grid-template-columns:minmax(102px,.8fr) minmax(0,1.2fr);
    align-items:start;
    gap:.65rem;
    border:0 !important;
    text-align:right !important;
    font-size:.86rem !important;
  }
  :is(#client-strength-card, #me-strength-card) .cp-progress-table td::before{
    content:attr(data-label);
    color:var(--muted);
    font-size:.72rem;
    font-weight:800;
    text-align:left;
    text-transform:uppercase;
    letter-spacing:.035em;
  }
  :is(#client-strength-card, #me-strength-card) .cp-progress-table td:first-child{
    display:block;
    padding:0 0 .52rem !important;
    margin-bottom:.1rem;
    border-bottom:1px solid var(--border) !important;
    text-align:left !important;
    font-size:.96rem !important;
  }
  :is(#client-strength-card, #me-strength-card) .cp-progress-table td:first-child::before{
    display:none;
  }
  html[data-theme="light"] :is(#client-strength-card, #me-strength-card) .cp-progress-table tr{
    background:rgba(15,23,42,.025);
  }

  .cp-strength-details__toggle{
    align-items:flex-start !important;
    flex-direction:column;
    gap:.7rem !important;
  }
  .cp-strength-details__side{
    width:100%;
    justify-content:space-between;
  }
  .cp-strength-details__action{
    min-width:92px;
  }
}

@media (max-width:480px){
  .cp-client-chat-embed .chat-input{
    padding:.5rem !important;
  }
  .cp-client-chat-embed .chat-input form#chatSendForm,
  .cp-client-chat-embed .chat-input form.d-flex{
    grid-template-columns:44px 44px minmax(0,1fr) 54px !important;
    grid-template-areas:
      "text text text text"
      "attach voice . send";
    gap:.42rem !important;
  }
  .cp-client-chat-embed .chat-input .chat-textarea,
  .cp-client-chat-embed .chat-input textarea#chatText{
    height:auto !important;
    min-height:46px !important;
    max-height:104px !important;
  }
  .cp-client-chat-embed .chat-input .chat-composer-btn,
  .cp-client-chat-embed .chat-input #chatSendBtn{
    align-self:center !important;
  }
  .cp-client-chat-embed .chat-card{
    --cp-chat-composer-h:112px !important;
  }
  .cp-strength-details__main{align-items:flex-start;}
  .cp-strength-details__subtitle{font-size:.74rem;}
  .cp-strength-details__weight{font-size:.72rem;}
}


/* =========================================================
   CoachPro 2026-07-29 – records / measurements R3
   One lightweight exercise chart, consistent client/trainer tables,
   and no artificial blank space below the embedded mobile chat.
   ========================================================= */

/* Body measurement sections keep the requested visual order without stacked separators. */
#clientMeasureChartsSection,
#meMeasureChartsSection{
  scroll-margin-top:calc(var(--safe-top, 0px) + var(--nav-h, 72px) + 18px);
}

/* Only one exercise chart is rendered at a time, selected from the dropdown. */
.cp-exercise-progress-card{
  min-width:0;
  padding:1rem;
  border:1px solid var(--border);
  border-radius:18px;
  background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.018));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.cp-exercise-progress-head{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(220px,320px);
  align-items:end;
  gap:1rem;
}
.cp-exercise-progress-select-wrap{
  display:grid;
  gap:.38rem;
  min-width:0;
  margin:0;
}
.cp-exercise-progress-select-wrap > span{
  color:var(--muted);
  font-size:.76rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.035em;
}
.cp-exercise-progress-select-wrap select{
  width:100%;
  min-width:0;
}
.cp-exercise-progress-kpis{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:.65rem;
  margin-top:.9rem;
}
.cp-exercise-progress-kpis > div{
  min-width:0;
  padding:.7rem .75rem;
  border:1px solid var(--border);
  border-radius:14px;
  background:rgba(255,255,255,.025);
}
.cp-exercise-progress-kpis span{
  display:block;
  color:var(--muted);
  font-size:.72rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.035em;
}
.cp-exercise-progress-kpis strong{
  display:block;
  margin-top:.2rem;
  color:var(--text);
  font-size:1rem;
  overflow-wrap:anywhere;
}
.cp-exercise-progress-kpis strong.is-up{color:#35c979;}
.cp-exercise-progress-kpis strong.is-down{color:#ef6a6a;}
.cp-exercise-progress-chart{
  position:relative;
  width:100%;
  height:300px;
  margin-top:.85rem;
  padding:.55rem .35rem .15rem;
  border-top:1px solid var(--border);
}
.cp-exercise-progress-chart canvas{
  width:100% !important;
  height:100% !important;
}
.cp-exercise-progress-empty{
  margin-top:.8rem;
  padding:.8rem;
  border:1px dashed var(--border);
  border-radius:14px;
  text-align:center;
}
html[data-theme="light"] .cp-exercise-progress-card,
html[data-theme="light"] .cp-exercise-progress-kpis > div{
  background:rgba(15,23,42,.025);
}

/* The same stable progress table/card layout is used in /client_detail and /me. */
:is(#client-strength-card, #me-strength-card) .cp-progress-table td .cp-ratio-percent{
  display:inline-block;
  margin-left:.18rem;
}

@media(max-width:767.98px){
  .cp-exercise-progress-card{padding:.82rem;border-radius:16px;}
  .cp-exercise-progress-head{grid-template-columns:1fr;align-items:start;gap:.75rem;}
  .cp-exercise-progress-kpis{grid-template-columns:1fr;}
  .cp-exercise-progress-kpis > div{display:flex;align-items:center;justify-content:space-between;gap:.75rem;}
  .cp-exercise-progress-kpis strong{margin-top:0;text-align:right;}
  .cp-exercise-progress-chart{height:235px;padding-left:0;padding-right:0;}
}

@media(max-width:480px){
  .cp-client-chat-embed{padding-bottom:0 !important;}
  .cp-client-chat-embed .chat-card{margin-bottom:0 !important;}
  .cp-client-chat-embed .chat-input{padding-bottom:.42rem !important;}
}

/* =========================================================
   CoachPro 2026-07-29 – mobile chat/footer correction R5
   Remove false iOS keyboard space below the composer and keep
   footer social controls independent from the legal-link row.
   ========================================================= */

/* Embedded /client_detail chat must end immediately after the composer.
   Keyboard visibility is handled by the visual-viewport script, so a
   permanent safe-area/viewport inset must not inflate this panel. */
.cp-client-chat-embed .chat-card{
  --cp-chat-extra-bottom:0px !important;
  --cp-chat-safe-bottom:0px !important;
}
.cp-client-chat-embed .chat-input{
  flex:0 0 auto !important;
  align-self:stretch !important;
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  padding-top:.5rem !important;
  padding-bottom:.5rem !important;
  margin:0 !important;
}
.cp-client-chat-embed .chat-input form#chatSendForm,
.cp-client-chat-embed .chat-input form.d-flex{
  min-height:0 !important;
  height:auto !important;
  margin:0 !important;
  align-content:start !important;
  grid-auto-rows:min-content !important;
}
.cp-client-chat-embed .chat-input > :last-child{
  margin-bottom:0 !important;
}

/* Footer layout: social buttons have their own group, while page links
   remain in one straight, independently scrollable row. */
.cp-footer-layout{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:.55rem 1rem;
}
.cp-footer-copy{
  flex:0 0 auto;
  line-height:1.35;
}
.cp-footer-main{
  min-width:0;
  max-width:100%;
  margin-left:auto;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:.7rem;
}
.cp-footer-socials{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:.5rem;
}
.cp-footer-socials .footer-social-btn{
  margin:0 !important;
  align-self:center;
}
.cp-footer-main .footer-links-scroll{
  min-width:0;
  max-width:100%;
}
.cp-footer-main .footer-links{
  display:flex !important;
  align-items:center !important;
  min-height:100%;
  margin:0 !important;
}
.cp-footer-main .footer-link{
  display:inline-flex;
  align-items:center;
  min-height:36px;
  line-height:1.2;
}

@media (max-width:767.98px){
  .cp-footer-layout{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    align-items:start;
    gap:.55rem;
  }
  .cp-footer-copy{
    width:100%;
  }
  .cp-footer-main{
    width:100%;
    max-width:100%;
    margin-left:0;
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    align-items:center;
    gap:.7rem;
  }
  .cp-footer-main--legal{
    grid-template-columns:minmax(0,1fr);
  }
  .cp-footer-main .footer-links-scroll{
    width:100% !important;
    min-width:0 !important;
    overflow-x:auto !important;
    overflow-y:hidden !important;
  }
  .cp-footer-main .footer-links{
    width:max-content !important;
    min-width:max-content !important;
    flex-wrap:nowrap !important;
    padding:0 0 2px !important;
  }
  .cp-footer-main .footer-link{
    min-height:44px;
  }
}

@media (max-width:480px){
  .cp-client-chat-embed .chat-input{
    padding:.48rem .5rem .5rem !important;
  }
  .cp-footer-main{
    gap:.62rem;
  }
  .cp-footer-socials{
    gap:.42rem;
  }
}


/* CoachPro universal route loader: browser, PWA and native WebView. */
.cp-native-top-loader.cp-global-top-loader,
#cpGlobalTopLoader{
  position:fixed !important;
  top:max(0px, calc(env(safe-area-inset-top, 0px) - 1px)) !important;
  left:0 !important;
  right:0 !important;
  width:100% !important;
  height:4px !important;
  z-index:2147483646 !important;
  display:block !important;
  overflow:hidden !important;
  pointer-events:none !important;
  opacity:0;
  visibility:hidden;
  transform:none !important;
  transition:opacity .12s ease, visibility 0s linear .12s !important;
  background:rgba(230,107,41,.09) !important;
}
.cp-native-top-loader.cp-global-top-loader.is-visible,
#cpGlobalTopLoader.is-visible{
  opacity:1 !important;
  visibility:visible !important;
  transition-delay:0s !important;
}
.cp-native-top-loader.cp-global-top-loader .cp-native-top-loader__bar,
#cpGlobalTopLoader .cp-native-top-loader__bar{
  width:38%;
  min-width:110px;
  height:100%;
  border-radius:999px;
  background:linear-gradient(90deg, rgba(230,107,41,.06), rgba(255,120,40,1), rgba(255,174,92,.95), rgba(230,107,41,.06));
  box-shadow:0 0 16px rgba(255,120,40,.58);
  transform:translate3d(-125%,0,0);
  animation:cp-global-loader-slide .82s cubic-bezier(.45,0,.55,1) infinite;
  will-change:transform;
}
@keyframes cp-global-loader-slide{
  from{transform:translate3d(-125%,0,0)}
  to{transform:translate3d(365%,0,0)}
}
@media (prefers-reduced-motion:reduce){
  .cp-native-top-loader.cp-global-top-loader .cp-native-top-loader__bar,
  #cpGlobalTopLoader .cp-native-top-loader__bar{
    animation-duration:1.6s;
  }
}

/* 2026-08-02: reliable mobile target position after adding a LIVE exercise. */
@media (max-width: 767.98px){
  .live-exercise-card{
    scroll-margin-top: calc(env(safe-area-inset-top, 0px) + 76px);
  }
}

/* CoachPro 2026-08-06: LIVE keyboard-safe bottom controls.
   While a real text/numeric keyboard is active, the fixed LIVE action bar must not
   occupy the already reduced visual viewport above the keyboard. */
body.cp-keyboard-open .live-action-bar,
body.cp-editing-text .live-action-bar,
html.cp-keyboard-open body .live-action-bar{
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  transform: translateY(calc(100% + 48px)) !important;
}
body.cp-keyboard-open .rest-timer-pill,
body.cp-editing-text .rest-timer-pill,
html.cp-keyboard-open body .rest-timer-pill{
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  transform: translateY(calc(100% + 32px)) !important;
}

/* CoachPro 2026-08-06: premium check-in status control and questionnaire copy flow. */
.checkin-config-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  flex-wrap:wrap;
}
.checkin-config-head__actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:.55rem;
  flex-wrap:wrap;
}
.checkin-copy-open-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.42rem;
  min-height:2.25rem;
  border-radius:12px;
  white-space:nowrap;
}
.checkin-copy-open-btn__icon{
  font-size:1rem;
  line-height:1;
  transform:translateY(-1px);
}
.checkin-status-chip{
  display:inline-flex;
  align-items:center;
  gap:.48rem;
  min-height:2.25rem;
  padding:.45rem .72rem;
  border:1px solid rgba(255,255,255,.10);
  border-radius:999px;
  background:rgba(255,255,255,.045);
  color:var(--text-soft,#ececf3);
  font-size:.78rem;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
  transition:border-color .18s ease,background .18s ease,color .18s ease,box-shadow .18s ease;
}
.checkin-status-chip__dot{
  width:.52rem;
  height:.52rem;
  border-radius:50%;
  background:#8d929d;
  box-shadow:0 0 0 4px rgba(141,146,157,.12);
  flex:0 0 auto;
}
.checkin-status-chip.is-active{
  color:#dffbea;
  border-color:rgba(34,197,94,.38);
  background:rgba(34,197,94,.12);
}
.checkin-status-chip.is-active .checkin-status-chip__dot{
  background:#22c55e;
  box-shadow:0 0 0 4px rgba(34,197,94,.14),0 0 14px rgba(34,197,94,.38);
}
.checkin-status-chip.is-inactive{
  color:var(--text-muted,#a7a7b0);
  border-color:rgba(255,255,255,.09);
  background:rgba(255,255,255,.035);
}
.checkin-status-chip.is-loading .checkin-status-chip__dot{
  animation:cp-checkin-status-pulse 1.15s ease-in-out infinite;
}
.checkin-status-chip.is-error{
  color:#fecaca;
  border-color:rgba(239,68,68,.36);
  background:rgba(239,68,68,.10);
}
.checkin-status-chip.is-error .checkin-status-chip__dot{background:#ef4444;box-shadow:0 0 0 4px rgba(239,68,68,.13)}
@keyframes cp-checkin-status-pulse{0%,100%{opacity:.45;transform:scale(.86)}50%{opacity:1;transform:scale(1)}}

.checkin-status-toggle{
  width:100%;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:.8rem;
  min-height:5rem;
  padding:.9rem 1rem;
  border:1px solid rgba(255,255,255,.11);
  border-radius:19px;
  background:linear-gradient(135deg,rgba(255,255,255,.055),rgba(255,255,255,.022));
  color:var(--text-main,#fff);
  text-align:left;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.055);
  cursor:pointer;
  transition:transform .16s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease;
}
.checkin-status-toggle:hover{
  transform:translateY(-1px);
  border-color:rgba(255,107,31,.42);
  background:linear-gradient(135deg,rgba(255,107,31,.095),rgba(255,255,255,.025));
}
.checkin-status-toggle:focus-visible{
  outline:0;
  border-color:rgba(255,107,31,.80);
  box-shadow:0 0 0 4px rgba(255,107,31,.16),inset 0 1px 0 rgba(255,255,255,.06);
}
.checkin-status-toggle__icon{
  width:2.75rem;
  height:2.75rem;
  display:grid;
  place-items:center;
  border-radius:15px;
  background:rgba(148,163,184,.11);
  border:1px solid rgba(148,163,184,.16);
  flex:0 0 auto;
}
.checkin-status-toggle__dot{
  width:.78rem;
  height:.78rem;
  border-radius:50%;
  background:#8d929d;
  box-shadow:0 0 0 5px rgba(141,146,157,.12);
  transition:background .18s ease,box-shadow .18s ease,transform .18s ease;
}
.checkin-status-toggle__copy{
  display:grid;
  gap:.2rem;
  min-width:0;
}
.checkin-status-toggle__copy strong{
  color:inherit;
  font-size:1rem;
  line-height:1.25;
}
.checkin-status-toggle__copy small{
  color:var(--text-muted,#a7a7b0);
  line-height:1.35;
}
.checkin-status-toggle__action{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:4.8rem;
  padding:.48rem .7rem;
  border-radius:999px;
  background:rgba(255,107,31,.13);
  border:1px solid rgba(255,107,31,.28);
  color:#ff9a57;
  font-size:.78rem;
  font-weight:800;
  white-space:nowrap;
}
.checkin-status-toggle.is-active{
  border-color:rgba(34,197,94,.40);
  background:linear-gradient(135deg,rgba(34,197,94,.13),rgba(34,197,94,.045));
  box-shadow:0 0 0 1px rgba(34,197,94,.07),inset 0 1px 0 rgba(255,255,255,.06);
}
.checkin-status-toggle.is-active:hover{border-color:rgba(34,197,94,.62);background:linear-gradient(135deg,rgba(34,197,94,.17),rgba(34,197,94,.055))}
.checkin-status-toggle.is-active .checkin-status-toggle__icon{background:rgba(34,197,94,.13);border-color:rgba(34,197,94,.23)}
.checkin-status-toggle.is-active .checkin-status-toggle__dot{background:#22c55e;box-shadow:0 0 0 5px rgba(34,197,94,.14),0 0 16px rgba(34,197,94,.34);transform:scale(1.06)}
.checkin-status-toggle.is-active .checkin-status-toggle__action{background:rgba(239,68,68,.09);border-color:rgba(239,68,68,.20);color:#fca5a5}

.checkin-copy-panel{
  margin-top:1rem;
  overflow:hidden;
  border:1px solid rgba(255,107,31,.24);
  border-radius:20px;
  background:linear-gradient(145deg,rgba(255,107,31,.075),rgba(255,255,255,.025));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.055),0 16px 34px rgba(0,0,0,.18);
}
.checkin-copy-panel[hidden]{display:none!important}
.checkin-copy-panel.is-open{animation:cpCheckinCopyOpen .18s ease both}
@keyframes cpCheckinCopyOpen{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
.checkin-copy-panel__head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  padding:1rem 1rem .85rem;
  border-bottom:1px solid rgba(255,255,255,.075);
}
.checkin-copy-panel__close{
  width:2.25rem;
  height:2.25rem;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  border:1px solid rgba(255,255,255,.12);
  border-radius:12px;
  background:rgba(255,255,255,.045);
  color:var(--text-main,#fff);
  font-size:1.35rem;
  line-height:1;
}
.checkin-copy-panel__close:hover{border-color:rgba(255,107,31,.45);background:rgba(255,107,31,.10)}
.checkin-copy-panel__body{display:grid;gap:.9rem;padding:1rem}
.checkin-copy-panel__actions{
  display:flex;
  justify-content:flex-end;
  gap:.65rem;
  padding:0 1rem 1rem;
}
.checkin-copy-activate{
  display:grid;
  grid-template-columns:auto auto minmax(0,1fr);
  align-items:center;
  gap:.7rem;
  padding:.82rem .9rem;
  border:1px solid rgba(255,255,255,.10);
  border-radius:17px;
  background:rgba(255,255,255,.035);
  cursor:pointer;
  transition:border-color .18s ease,background .18s ease;
}
.checkin-copy-activate:hover{border-color:rgba(255,107,31,.42);background:rgba(255,107,31,.07)}
.checkin-copy-activate input{width:1.12rem;height:1.12rem;accent-color:var(--brand-orange,#ff5a1f)}
.checkin-copy-activate__icon{
  width:2rem;
  height:2rem;
  display:grid;
  place-items:center;
  border-radius:11px;
  background:rgba(34,197,94,.12);
  border:1px solid rgba(34,197,94,.22);
  color:#4ade80;
  font-weight:900;
}
.checkin-copy-activate>span:last-child{display:grid;gap:.12rem;min-width:0}
.checkin-copy-activate strong{color:var(--text-main,#fff);line-height:1.25}
.checkin-copy-activate small{color:var(--text-muted,#a7a7b0);line-height:1.35}

html[data-theme="light"] .checkin-status-chip{
  border-color:rgba(15,23,42,.13);
  background:rgba(15,23,42,.035);
  color:rgba(15,23,42,.76);
}
html[data-theme="light"] .checkin-status-chip.is-active{color:#166534;border-color:rgba(22,163,74,.28);background:rgba(34,197,94,.10)}
html[data-theme="light"] .checkin-status-chip.is-error{color:#b91c1c;border-color:rgba(220,38,38,.22);background:rgba(239,68,68,.08)}
html[data-theme="light"] .checkin-status-toggle{
  border-color:rgba(15,23,42,.14);
  background:linear-gradient(135deg,rgba(15,23,42,.035),rgba(15,23,42,.015));
  color:var(--text,#0b0b0d);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.86);
}
html[data-theme="light"] .checkin-status-toggle__copy small{color:rgba(15,23,42,.64)}
html[data-theme="light"] .checkin-status-toggle.is-active{border-color:rgba(22,163,74,.30);background:linear-gradient(135deg,rgba(34,197,94,.11),rgba(34,197,94,.035))}
html[data-theme="light"] .checkin-copy-panel{
  border-color:rgba(234,88,12,.22);
  background:linear-gradient(145deg,rgba(255,107,31,.075),rgba(15,23,42,.018));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.92),0 14px 32px rgba(15,23,42,.09);
}
html[data-theme="light"] .checkin-copy-panel__head{border-color:rgba(15,23,42,.09)}
html[data-theme="light"] .checkin-copy-panel__close{border-color:rgba(15,23,42,.13);background:rgba(15,23,42,.035);color:var(--text,#0b0b0d)}
html[data-theme="light"] .checkin-copy-activate{border-color:rgba(15,23,42,.13);background:rgba(15,23,42,.025)}
html[data-theme="light"] .checkin-copy-activate strong{color:var(--text,#0b0b0d)}
html[data-theme="light"] .checkin-copy-activate small{color:rgba(15,23,42,.64)}

@media(max-width:575.98px){
  .checkin-config-head__actions{width:100%;justify-content:space-between}
  .checkin-copy-open-btn{flex:1 1 auto}
  .checkin-status-chip{flex:0 0 auto}
  .checkin-status-toggle{gap:.62rem;padding:.78rem;min-height:4.75rem}
  .checkin-status-toggle__icon{width:2.45rem;height:2.45rem;border-radius:13px}
  .checkin-status-toggle__action{min-width:4.2rem;padding:.43rem .58rem}
  .checkin-status-toggle__copy small{font-size:.76rem}
  .checkin-copy-panel{border-radius:17px}
  .checkin-copy-panel__head{padding:.85rem}
  .checkin-copy-panel__body{padding:.85rem}
  .checkin-copy-panel__actions{display:grid;grid-template-columns:1fr 1fr;padding:0 .85rem .85rem}
  .checkin-copy-panel__actions .btn{width:100%}
  .checkin-copy-activate{grid-template-columns:auto auto minmax(0,1fr);padding:.75rem}
}
@media(max-width:380px){
  .checkin-config-head__actions{display:grid;grid-template-columns:1fr;width:100%}
  .checkin-status-chip,.checkin-copy-open-btn{width:100%;justify-content:center}
  .checkin-status-toggle{grid-template-columns:auto minmax(0,1fr)}
  .checkin-status-toggle__action{grid-column:2;justify-self:start;margin-top:.1rem}
}

/* Check-in status: save immediately and prevent double taps while persistence is in flight. */
.checkin-status-toggle:disabled { cursor: wait; }
.checkin-status-toggle.is-saving { opacity: .72; pointer-events: none; }
.checkin-status-toggle.is-saving .checkin-status-toggle__action::after { content: "…"; }

/* ======================================================================
   CoachPro LIVE body map — same vector silhouettes as the session PDF
   Compact on desktop; available inside the existing collapsible volume
   section on phones/tablets so LIVE does not become visually overloaded.
   ====================================================================== */
.cp-live-volume-card-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:.75rem;
  margin-bottom:.8rem;
}
.cp-live-volume-map-live{
  display:inline-flex;
  align-items:center;
  gap:.36rem;
  flex:0 0 auto;
  min-height:24px;
  padding:.18rem .48rem;
  border-radius:999px;
  border:1px solid rgba(255,106,31,.26);
  background:rgba(255,106,31,.09);
  color:rgba(255,255,255,.78);
  font-size:.66rem;
  line-height:1;
  font-weight:800;
  letter-spacing:.055em;
}
.cp-live-volume-map-live > i{
  width:6px;
  height:6px;
  border-radius:999px;
  background:var(--brand, #ff6a1f);
  box-shadow:0 0 0 3px rgba(255,106,31,.11);
}
.cp-live-volume-map-wrap{
  position:relative;
  margin:0 0 .78rem;
  padding:.68rem .7rem .58rem;
  border:1px solid rgba(255,255,255,.085);
  border-radius:17px;
  background:
    radial-gradient(circle at 50% -18%, rgba(255,106,31,.09), transparent 42%),
    rgba(0,0,0,.10);
  overflow:hidden;
}
.cp-live-volume-map-wrap--desktop{
  margin-top:.1rem;
  margin-bottom:.8rem;
}
.cp-live-volume-map-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
  margin-bottom:.38rem;
  color:var(--text-soft);
  font-size:.79rem;
  font-weight:750;
}
.cp-live-bodymap-target{
  width:100%;
  min-width:0;
}
.cp-live-bodymap-figures{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  align-items:end;
  justify-items:center;
  gap:.32rem;
  width:100%;
  max-width:390px;
  margin:0 auto;
}
.cp-live-bodymap-figure{
  width:100%;
  min-width:0;
  margin:0;
  text-align:center;
}
.cp-live-bodymap-svg{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-width:0;
}
.cp-live-bodymap-svg svg{
  display:block;
  width:100%;
  height:clamp(172px, 45vw, 232px);
  overflow:visible;
}
.cp-live-bodymap-svg svg path[id]{
  transition:fill .24s ease, fill-opacity .24s ease;
}
.cp-live-bodymap-figure figcaption{
  margin-top:-.15rem;
  color:var(--muted);
  font-size:.67rem;
  font-weight:750;
  letter-spacing:.035em;
  text-transform:uppercase;
}
.cp-live-volume-map-caption{
  max-width:360px;
  margin:.28rem auto 0;
  color:var(--muted);
  font-size:.68rem;
  line-height:1.25;
  text-align:center;
}
.cp-live-bodymap-refreshed{
  animation:cpLiveBodymapRefresh .5s ease-out 1;
}
@keyframes cpLiveBodymapRefresh{
  0%{ border-color:rgba(255,106,31,.34); box-shadow:inset 0 0 0 1px rgba(255,106,31,.11); }
  100%{ box-shadow:inset 0 0 0 0 rgba(255,106,31,0); }
}
.cp-live-volume-row{
  --cp-muscle-color:#94A3B8;
  display:grid;
  grid-template-columns:minmax(88px, .82fr) minmax(0, 1.6fr);
  align-items:center;
  gap:.45rem .6rem;
  padding:.48rem 0;
  border-bottom:1px solid rgba(255,255,255,.075);
}
.cp-live-volume-row:last-child{ border-bottom:0; padding-bottom:.12rem; }
.cp-live-volume-row-name,
.cp-volume-chip-name{
  display:flex;
  align-items:center;
  gap:.42rem;
  min-width:0;
}
.cp-live-muscle-dot{
  display:inline-block;
  flex:0 0 auto;
  width:8px;
  height:8px;
  border-radius:999px;
  background:var(--cp-muscle-color, #94A3B8);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--cp-muscle-color, #94A3B8) 14%, transparent);
}
.cp-live-volume-row-name{
  color:var(--text-soft);
  font-weight:750;
  font-size:.78rem;
  line-height:1.15;
}
.cp-live-volume-row-meta{
  min-width:0;
  color:var(--muted);
  font-size:.68rem;
  line-height:1.25;
  text-align:right;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.cp-volume-peek-pill{
  display:inline-flex;
  align-items:center;
  gap:.38rem;
  --cp-muscle-color:#94A3B8;
}
.cp-volume-peek-pill .cp-live-muscle-dot{
  width:6px;
  height:6px;
  box-shadow:none;
}
.cp-volume-chip{
  --cp-muscle-color:#94A3B8;
}

@media (min-width:1200px){
  .cp-session-volume-desktop .cp-live-bodymap-svg svg{
    height:178px;
  }
  .cp-session-volume-desktop .cp-live-bodymap-figures{
    max-width:300px;
  }
  .cp-session-volume-desktop .cp-live-volume-map-caption{
    font-size:.65rem;
  }
}
@media (min-width:768px) and (max-width:1199.98px){
  .cp-session-volume-mobile .cp-live-bodymap-figures{
    max-width:440px;
  }
  .cp-session-volume-mobile .cp-live-bodymap-svg svg{
    height:238px;
  }
  .cp-session-volume-mobile .cp-volume-body{
    padding-top:.8rem;
  }
}
@media (max-width:575.98px){
  .cp-live-volume-map-wrap{
    padding:.58rem .52rem .52rem;
    border-radius:15px;
  }
  .cp-live-bodymap-figures{
    max-width:330px;
    gap:.08rem;
  }
  .cp-live-bodymap-svg svg{
    height:clamp(158px, 51vw, 205px);
  }
  .cp-live-volume-map-caption{
    font-size:.64rem;
  }
  .cp-live-volume-row{
    grid-template-columns:1fr;
    gap:.18rem;
  }
  .cp-live-volume-row-meta{
    padding-left:1.05rem;
    text-align:left;
  }
}
@media (max-width:360px){
  .cp-live-bodymap-svg svg{
    height:158px;
  }
  .cp-live-volume-map-head{
    font-size:.75rem;
  }
  .cp-live-volume-map-live{
    font-size:.61rem;
    padding:.16rem .42rem;
  }
}
html[data-theme="light"] .cp-live-volume-map-live{
  border-color:rgba(255,106,31,.28);
  background:rgba(255,106,31,.09);
  color:rgba(20,20,24,.72);
}
html[data-theme="light"] .cp-live-volume-map-wrap{
  border-color:rgba(12,12,16,.09);
  background:
    radial-gradient(circle at 50% -18%, rgba(255,106,31,.08), transparent 42%),
    rgba(12,12,16,.025);
}
html[data-theme="light"] .cp-live-volume-row{
  border-bottom-color:rgba(12,12,16,.075);
}
@media (prefers-reduced-motion: reduce){
  .cp-live-bodymap-svg svg path[id]{ transition:none !important; }
  .cp-live-bodymap-refreshed{ animation:none !important; }
}

/* =========================================================
   CoachPro 2026-08-07 – mobile/tablet tab dock surface cleanup
   /me + /client_detail only.
   Remove the moving Liquid Glass specular/radial fill from touch layouts.
   The active-tab capsule/label styling remains unchanged.
   Desktop keeps the original Liquid Glass highlight.
   ========================================================= */
@media (max-width:1180px), (hover:none) and (pointer:coarse){
  /* /client_detail: keep one even glass surface; no light/grey spot at the left edge. */
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2{
    background:rgba(7,8,12,.24) !important;
  }
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2::before{
    background:rgba(7,8,12,.10) !important;
    -webkit-backdrop-filter:blur(30px) saturate(180%) !important;
    backdrop-filter:blur(30px) saturate(180%) !important;
  }
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2::after{
    background:none !important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.035) !important;
  }

  /* /me: the radial highlight was painted directly on the dock itself. */
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
    background:rgba(7,8,12,.24) !important;
    -webkit-backdrop-filter:blur(30px) saturate(180%) !important;
    backdrop-filter:blur(30px) saturate(180%) !important;
  }

  /* Light theme: same fix, with a neutral translucent surface rather than a grey/white spot. */
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2{
    background:rgba(244,247,252,.42) !important;
  }
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2::before{
    background:rgba(255,255,255,.12) !important;
  }
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
    background:rgba(244,247,252,.42) !important;
  }
}

/* =========================================================
   CoachPro 2026-08-07 – mobile/tablet frosted tab dock V9
   Keep the V8 even surface (no moving grey/specular spot), but make the dock
   genuinely translucent so content passing underneath remains subtly visible
   and blurred. Desktop Liquid Glass remains untouched.
   ========================================================= */
@media (max-width:1180px), (hover:none) and (pointer:coarse){
  /* /client_detail – translucent shell + one blur owner. */
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2{
    background:rgba(7,8,12,.11) !important;
  }
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2::before{
    background:rgba(7,8,12,.025) !important;
    -webkit-backdrop-filter:blur(22px) saturate(150%) brightness(102%) !important;
    backdrop-filter:blur(22px) saturate(150%) brightness(102%) !important;
  }
  .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2::after{
    background:none !important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.035) !important;
  }

  /* /me – blur is applied directly to the dock surface. */
  .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
    background:rgba(7,8,12,.11) !important;
    -webkit-backdrop-filter:blur(22px) saturate(150%) brightness(102%) !important;
    backdrop-filter:blur(22px) saturate(150%) brightness(102%) !important;
  }

  /* Light theme: still frosted, but not an opaque white plate. */
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2{
    background:rgba(248,250,253,.22) !important;
  }
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="client"] .cp-client-tabs-v2::before{
    background:rgba(255,255,255,.055) !important;
    -webkit-backdrop-filter:blur(22px) saturate(145%) brightness(102%) !important;
    backdrop-filter:blur(22px) saturate(145%) brightness(102%) !important;
  }
  html[data-theme="light"] .cp-tabs-scope[data-cp-tabs="me"] .cp-tabbar.cp-tabbar-glass{
    background:rgba(248,250,253,.22) !important;
    -webkit-backdrop-filter:blur(22px) saturate(145%) brightness(102%) !important;
    backdrop-filter:blur(22px) saturate(145%) brightness(102%) !important;
  }
}

/* === CoachPro V11: shared finished-session body map + client history volume === */
.cp-report-bodymap{
  margin-top:.85rem;
  padding:.9rem;
  border:1px solid rgba(255,107,31,.16);
  border-radius:20px;
  background:radial-gradient(circle at 18% -20%,rgba(255,107,31,.105),transparent 42%),rgba(148,163,184,.035);
  overflow:hidden;
}
.cp-report-bodymap--embedded{margin-top:0}
.cp-report-bodymap-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.8rem;margin-bottom:.55rem}
.cp-report-bodymap-title{font-size:.9rem;font-weight:850;line-height:1.2}
.cp-report-bodymap-sub{margin-top:.16rem;font-size:.7rem;line-height:1.35;color:var(--muted,rgba(242,242,243,.68))}
.cp-report-bodymap-badge{flex:0 0 auto;display:inline-flex;align-items:center;gap:.32rem;padding:.25rem .5rem;border:1px solid rgba(255,107,31,.24);border-radius:999px;background:rgba(255,107,31,.08);font-size:.64rem;font-weight:800;color:var(--muted,rgba(242,242,243,.75));white-space:nowrap}
.cp-report-bodymap-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(180px,.85fr);gap:.85rem;align-items:center}
.cp-report-bodymap-figures{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.2rem;align-items:end;max-width:420px;width:100%;margin-inline:auto}
.cp-report-bodymap-figure{margin:0;min-width:0;text-align:center}
.cp-report-bodymap-svg{display:flex;align-items:center;justify-content:center;min-width:0}
.cp-report-bodymap-svg svg{display:block;width:auto;max-width:100%;height:220px;overflow:visible}
.cp-report-bodymap-figure figcaption{margin-top:.18rem;font-size:.62rem;font-weight:750;color:var(--muted,rgba(242,242,243,.62));text-transform:uppercase;letter-spacing:.06em}
.cp-report-bodymap-legend{min-width:0}
.cp-report-bodymap-legend-label{margin-bottom:.4rem;font-size:.68rem;color:var(--muted,rgba(242,242,243,.66))}
.cp-report-bodymap-groups{display:grid;grid-template-columns:1fr;gap:.32rem}
.cp-report-bodymap-group{display:flex;align-items:center;gap:.42rem;min-width:0;padding:.38rem .48rem;border:1px solid var(--cp-border,rgba(148,163,184,.14));border-radius:11px;background:rgba(255,255,255,.025)}
.cp-report-bodymap-rank{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:0 0 20px;border-radius:999px;background:rgba(148,163,184,.12);border:1px solid rgba(148,163,184,.18);font-size:.62rem;font-weight:900;line-height:1;color:var(--text,#f2f2f3);font-variant-numeric:tabular-nums}
.cp-report-bodymap-dot{width:8px;height:8px;flex:0 0 8px;border-radius:999px;background:var(--cp-map-color,#94A3B8);box-shadow:0 0 0 3px color-mix(in srgb,var(--cp-map-color,#94A3B8) 14%,transparent)}
.cp-report-bodymap-group-name{min-width:0;font-size:.72rem;font-weight:760;line-height:1.2;overflow-wrap:anywhere}
.cp-report-bodymap-scale{position:relative;height:3px;flex:1 1 42px;min-width:28px;max-width:76px;margin-left:auto;border-radius:999px;background:rgba(148,163,184,.13);overflow:hidden}
.cp-report-bodymap-scale>span{display:block;height:100%;width:var(--cp-map-strength,0%);border-radius:inherit;background:var(--cp-map-color,#94A3B8);opacity:.82}

.cp-me-session-muscles{overflow:hidden}
.cp-me-session-muscles-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.8rem;margin-bottom:.85rem}
.cp-me-session-muscles-head h5{margin:0}
.cp-me-session-muscles-kicker{font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--brand,#ff6b1f);white-space:nowrap}
.cp-me-volume-section{padding-top:.9rem;border-top:1px solid var(--cp-border,rgba(148,163,184,.14))}
.cp-me-volume-head{display:flex;align-items:flex-end;justify-content:space-between;gap:.75rem;margin-bottom:.58rem}
.cp-me-volume-title{font-size:.9rem;font-weight:850}
.cp-me-volume-sub{font-size:.68rem;color:var(--muted,rgba(242,242,243,.66));text-align:right}
.cp-me-volume-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}
.cp-me-volume-row{min-width:0;padding:.58rem .66rem;border:1px solid var(--cp-border,rgba(148,163,184,.14));border-radius:13px;background:rgba(148,163,184,.03)}
.cp-me-volume-name{font-size:.82rem;font-weight:820;line-height:1.2;overflow-wrap:anywhere}
.cp-me-volume-meta{margin-top:.2rem;font-size:.7rem;line-height:1.35;color:var(--muted,rgba(242,242,243,.67));font-variant-numeric:tabular-nums}

:root[data-theme="light"] .cp-report-bodymap{border-color:rgba(234,88,12,.14);background:radial-gradient(circle at 18% -20%,rgba(255,107,31,.08),transparent 42%),rgba(15,23,42,.018)}
:root[data-theme="light"] .cp-report-bodymap-group{background:rgba(255,255,255,.65);border-color:rgba(15,23,42,.10)}
:root[data-theme="light"] .cp-report-bodymap-rank{background:rgba(15,23,42,.055);border-color:rgba(15,23,42,.11);color:#17181b}
:root[data-theme="light"] .cp-me-volume-section{border-top-color:rgba(15,23,42,.10)}
:root[data-theme="light"] .cp-me-volume-row{background:rgba(255,255,255,.72);border-color:rgba(15,23,42,.11)}

@media(max-width:767.98px){
  .cp-report-bodymap{padding:.72rem .62rem;border-radius:16px}
  .cp-report-bodymap-head{margin-bottom:.3rem}
  .cp-report-bodymap-badge{display:none}
  .cp-report-bodymap-layout{grid-template-columns:1fr;gap:.58rem}
  .cp-report-bodymap-figures{max-width:350px;gap:0}
  .cp-report-bodymap-svg svg{height:clamp(170px,52vw,218px)}
  .cp-report-bodymap-groups{grid-template-columns:repeat(2,minmax(0,1fr));gap:.28rem}
  .cp-report-bodymap-group{padding:.34rem .38rem;gap:.34rem}
  .cp-report-bodymap-rank{width:18px;height:18px;flex-basis:18px;font-size:.58rem}
  .cp-report-bodymap-scale{display:none}
  .cp-report-bodymap-group-name{font-size:.68rem}
  .cp-me-session-muscles-head{margin-bottom:.68rem}
  .cp-me-session-muscles-kicker{display:none}
  .cp-me-volume-grid{grid-template-columns:1fr}
  .cp-me-volume-head{align-items:flex-start;flex-direction:column;gap:.1rem}
  .cp-me-volume-sub{text-align:left}
}
@media(max-width:380px){
  .cp-report-bodymap-svg svg{height:165px}
  .cp-report-bodymap-groups{grid-template-columns:1fr 1fr}
}

/* CoachPro fix 2026-08-07 v12:
   Tabbar side scroll hints are a touch/mobile affordance only.
   Opening desktop DevTools can shrink the CSS viewport below 1180px; that must
   not expose the two floating gray hint buttons on /me. */
@media (hover: hover) and (pointer: fine){
  html:not(.inapp):not(.cp-platform-ios):not(.cp-platform-android):not([data-cp-platform="ios"]):not([data-cp-platform="android"]) .cp-tabbar-scroll-hint,
  html:not(.inapp):not(.cp-platform-ios):not(.cp-platform-android):not([data-cp-platform="ios"]):not([data-cp-platform="android"]) .cp-tabbar-scroll-hint.is-visible,
  html:not(.inapp):not(.cp-platform-ios):not(.cp-platform-android):not([data-cp-platform="ios"]):not([data-cp-platform="android"]) .cp-tabbar-scroll-hint.is-visible.is-active{
    display:none !important;
    opacity:0 !important;
    visibility:hidden !important;
    pointer-events:none !important;
    animation:none !important;
  }
}

/* Phone health snapshot — shared by /me and trainer /client_detail. */
.cp-health-today-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.75rem;
}
.cp-health-today-tile{
  display:flex;
  align-items:center;
  gap:.8rem;
  min-width:0;
  padding:.9rem 1rem;
  border:1px solid var(--border, rgba(255,255,255,.10));
  border-radius:16px;
  background:color-mix(in srgb, var(--surface, #151518) 92%, transparent);
}
.cp-health-today-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  width:42px;
  height:42px;
  flex:0 0 42px;
  border-radius:13px;
  background:rgba(255,123,0,.12);
  font-size:1.2rem;
}
.cp-health-today-value{
  font-size:1.28rem;
  line-height:1.15;
  font-weight:800;
  letter-spacing:-.02em;
}
.cp-client-health-today{
  padding:.95rem;
  border:1px solid rgba(255,123,0,.18);
  border-radius:18px;
  background:linear-gradient(135deg,rgba(255,123,0,.07),rgba(255,255,255,.02));
}
.cp-phone-integrations{
  border-color:color-mix(in srgb, var(--border, rgba(255,255,255,.10)) 80%, rgba(255,123,0,.18));
}
:root[data-theme="light"] .cp-health-today-tile{
  background:rgba(255,255,255,.78);
}
:root[data-theme="light"] .cp-client-health-today{
  background:linear-gradient(135deg,rgba(255,123,0,.06),rgba(255,255,255,.92));
}
@media(max-width:575.98px){
  .cp-health-today-grid{grid-template-columns:1fr;gap:.6rem}
  .cp-health-today-tile{padding:.8rem .9rem;border-radius:15px}
  .cp-health-today-value{font-size:1.18rem}
}


/* --- Trainer calendar: clear, stable phone-calendar integration --- */
.cp-phone-calendar-panel{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:.8rem 1rem;
  margin-top:.8rem;
  padding:.72rem .8rem;
  border:1px solid var(--card-border);
  border-radius:1rem;
  background:rgba(255,255,255,.03);
}
.cp-phone-calendar-panel__main{
  display:flex;
  align-items:flex-start;
  gap:.68rem;
  min-width:0;
}
.cp-phone-calendar-panel__icon{
  width:2.35rem;
  height:2.35rem;
  flex:0 0 2.35rem;
  display:grid;
  place-items:center;
  border-radius:.78rem;
  border:1px solid rgba(244,140,22,.24);
  background:rgba(244,140,22,.10);
  font-size:1.05rem;
}
.cp-phone-calendar-panel__title-row{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:.4rem .55rem;
  line-height:1.25;
}
.cp-phone-calendar-panel__status{
  font-size:.68rem;
  font-weight:750;
}
.cp-phone-calendar-panel__help{
  margin-top:.22rem;
  line-height:1.35;
  max-width:58rem;
}
.cp-phone-calendar-panel__actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  min-width:13.5rem;
}
.cp-phone-calendar-panel__actions .btn{
  width:100%;
  min-width:13.5rem;
  white-space:nowrap;
}
html[data-theme="light"] .cp-phone-calendar-panel{
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,249,251,.96));
  border-color:rgba(20,24,36,.09);
  box-shadow:0 8px 22px rgba(20,24,36,.035);
}
html[data-theme="dark"] .cp-phone-calendar-panel{
  background:linear-gradient(180deg,rgba(20,24,36,.86),rgba(14,18,28,.92));
  border-color:rgba(255,255,255,.08);
}
@media (max-width:767.98px){
  .cp-phone-calendar-panel{
    grid-template-columns:1fr;
    padding:.7rem;
  }
  .cp-phone-calendar-panel__actions{
    width:100%;
    min-width:0;
  }
  .cp-phone-calendar-panel__actions .btn{
    width:100%;
    min-width:0;
  }
}

/* =========================================================
   CoachPro 2026-08 — contextual help + clearer trainer nav
   The ? button is a compact orientation center, not a chatbot.
   ========================================================= */
.cp-tools-menu{
  min-width: 290px;
  padding: .45rem;
  border-radius: 16px;
}
.cp-tools-item{
  display:flex !important;
  flex-direction:column;
  align-items:flex-start !important;
  gap:.12rem;
  padding:.68rem .75rem !important;
  border-radius:11px;
  white-space:normal !important;
}
.cp-tools-item-title{
  font-weight:750;
  line-height:1.2;
}
.cp-tools-item-desc{
  display:block;
  font-size:.74rem;
  line-height:1.35;
  color:rgba(255,255,255,.58);
}
html[data-theme="light"] .cp-tools-menu .cp-tools-item-desc{
  color:rgba(20,24,33,.58);
}

.cp-help-modal .cp-quickstart-dialog{
  width:calc(100% - 32px);
  max-width:940px;
  margin-left:auto;
  margin-right:auto;
}
.cp-help-modal .cp-modal-content{
  max-height:calc(100dvh - 32px);
  border-radius:24px;
  background:
    radial-gradient(circle at 10% 0%, rgba(255,122,26,.10), transparent 34%),
    linear-gradient(180deg, rgba(23,24,31,.985), rgba(15,16,22,.99));
  border:1px solid rgba(255,255,255,.11);
  box-shadow:0 28px 90px rgba(0,0,0,.58);
}
.cp-help-modal .cp-help-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  padding:1rem 1.1rem .72rem;
  border-bottom:1px solid rgba(255,255,255,.08) !important;
}
.cp-help-heading-wrap{
  min-width:0;
  display:flex;
  align-items:flex-start;
  gap:.7rem;
}
.cp-help-heading-wrap .cp-modal-badge{
  margin-top:.1rem;
  flex:0 0 auto;
}
.cp-help-modal .modal-title{
  font-size:1.14rem;
  line-height:1.25;
  font-weight:800;
  letter-spacing:-.015em;
}
.cp-help-subtitle{
  margin-top:.22rem;
  color:var(--muted);
  font-size:.84rem;
  line-height:1.4;
}
.cp-help-close{
  flex:0 0 auto;
  margin:0 !important;
  padding:.58rem !important;
  border-radius:999px;
  background-size:11px;
  opacity:.72;
}
.cp-help-close:hover{ opacity:1; }

.cp-help-modal .cp-help-body{
  padding:.85rem 1.1rem 1rem;
}
.cp-help-context{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  grid-template-areas:
    "kicker title"
    "kicker desc";
  column-gap:.8rem;
  row-gap:.08rem;
  padding:.72rem .8rem;
  margin-bottom:.8rem;
  border:1px solid rgba(255,122,26,.22);
  border-radius:15px;
  background:rgba(255,122,26,.065);
}
.cp-help-context-kicker{
  grid-area:kicker;
  align-self:center;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:70px;
  min-height:30px;
  padding:.3rem .55rem;
  border-radius:10px;
  background:rgba(255,122,26,.13);
  color:var(--brand,#ff7a1a);
  font-size:.7rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.055em;
}
.cp-help-context-title{
  grid-area:title;
  font-size:.9rem;
  line-height:1.25;
  font-weight:800;
}
.cp-help-context-desc{
  grid-area:desc;
  color:var(--muted);
  font-size:.79rem;
  line-height:1.42;
}
.cp-help-tabs{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.3rem;
  margin-bottom:.8rem;
  padding:.28rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:14px;
  background:rgba(255,255,255,.035);
}
.cp-help-tab{
  min-height:42px;
  border:0;
  border-radius:10px;
  background:transparent;
  color:var(--muted);
  font-weight:760;
  font-size:.86rem;
  line-height:1.2;
  padding:.55rem .7rem;
  transition:background .16s ease,color .16s ease,box-shadow .16s ease;
}
.cp-help-tab:hover{ color:var(--text); }
.cp-help-tab.active{
  color:var(--text);
  background:rgba(255,122,26,.13);
  box-shadow:inset 0 0 0 1px rgba(255,122,26,.27);
}
.cp-help-intro{
  margin-bottom:.72rem;
  padding:0 .08rem;
  color:var(--muted);
  font-size:.83rem;
  line-height:1.48;
}
.cp-help-intro strong{ color:var(--text); }
.cp-help-flow,
.cp-help-feature-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.55rem;
}
.cp-help-flow-card,
.cp-help-feature{
  color:var(--text) !important;
  text-decoration:none !important;
  border:1px solid rgba(255,255,255,.085);
  background:rgba(255,255,255,.032);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
  transition:transform .16s ease,border-color .16s ease,background .16s ease,box-shadow .16s ease;
}
.cp-help-flow-card:hover,
.cp-help-feature:hover{
  transform:translateY(-1px);
  border-color:rgba(255,122,26,.32);
  background:rgba(255,122,26,.055);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 8px 22px rgba(0,0,0,.14);
}
.cp-help-flow-card{
  display:grid;
  grid-template-columns:34px minmax(0,1fr) auto;
  align-items:center;
  gap:.62rem;
  min-height:92px;
  padding:.68rem .72rem;
  border-radius:15px;
}
.cp-help-flow-num{
  width:34px;
  height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:11px;
  background:rgba(255,122,26,.12);
  border:1px solid rgba(255,122,26,.24);
  color:var(--brand,#ff7a1a);
  font-size:.8rem;
  font-weight:850;
}
.cp-help-flow-copy,
.cp-help-feature > span:last-child{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:.2rem;
}
.cp-help-flow-copy strong,
.cp-help-feature strong{
  font-size:.87rem;
  line-height:1.25;
  font-weight:800;
}
.cp-help-flow-copy small,
.cp-help-feature small{
  color:var(--muted);
  font-size:.75rem;
  line-height:1.38;
}
.cp-help-arrow{
  color:var(--brand,#ff7a1a);
  font-size:1rem;
  opacity:.88;
}
.cp-help-feature{
  display:grid;
  grid-template-columns:38px minmax(0,1fr);
  gap:.65rem;
  align-items:flex-start;
  min-height:91px;
  padding:.72rem;
  border-radius:15px;
}
.cp-help-feature-mark{
  width:38px;
  height:28px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:9px;
  background:rgba(255,255,255,.055);
  border:1px solid rgba(255,255,255,.08);
  color:var(--brand,#ff7a1a);
  font-size:.68rem;
  font-weight:850;
  letter-spacing:.025em;
}
.cp-help-modal .cp-help-footer{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:.5rem;
  padding:.72rem 1.1rem max(.78rem,calc(env(safe-area-inset-bottom,0px) + .55rem));
  border-top:1px solid rgba(255,255,255,.08) !important;
}
.cp-help-modal .cp-help-footer .btn{
  min-height:40px;
  border-radius:12px;
  font-weight:750;
}
.cp-help-guide-btn{ margin-right:auto; }

html[data-theme="light"] .cp-help-modal .cp-modal-content{
  background:
    radial-gradient(circle at 10% 0%, rgba(255,122,26,.09), transparent 34%),
    linear-gradient(180deg,#fff,#f7f8fb);
  border-color:rgba(20,24,33,.10);
  box-shadow:0 28px 70px rgba(16,24,40,.20);
}
html[data-theme="light"] .cp-help-modal .cp-help-header,
html[data-theme="light"] .cp-help-modal .cp-help-footer{
  border-color:rgba(20,24,33,.08) !important;
}
html[data-theme="light"] .cp-help-tabs{
  border-color:rgba(20,24,33,.08);
  background:rgba(20,24,33,.035);
}
html[data-theme="light"] .cp-help-flow-card,
html[data-theme="light"] .cp-help-feature{
  background:rgba(255,255,255,.82);
  border-color:rgba(20,24,33,.09);
  box-shadow:0 7px 20px rgba(16,24,40,.045);
}
html[data-theme="light"] .cp-help-flow-card:hover,
html[data-theme="light"] .cp-help-feature:hover{
  background:rgba(255,122,26,.045);
  border-color:rgba(255,122,26,.30);
}
html[data-theme="light"] .cp-help-feature-mark{
  background:rgba(20,24,33,.035);
  border-color:rgba(20,24,33,.08);
}
html[data-theme="light"] .cp-help-context{
  background:rgba(255,122,26,.055);
  border-color:rgba(255,122,26,.20);
}

@media (max-width: 767.98px){
  .cp-help-flow,
  .cp-help-feature-grid{
    grid-template-columns:1fr;
  }
  .cp-help-flow-card,
  .cp-help-feature{
    min-height:auto;
  }
}

@media (max-width: 575.98px){
  .cp-help-modal .cp-quickstart-dialog,
  .cp-help-modal .cp-quickstart-dialog.modal-dialog-centered{
    width:100%;
    max-width:none;
    min-height:100%;
    height:100%;
    margin:0;
    align-items:stretch;
  }
  .cp-help-modal .cp-modal-content{
    width:100%;
    height:100dvh;
    max-height:100dvh;
    border:0;
    border-radius:0;
  }
  .cp-help-modal .cp-help-header{
    padding:max(.78rem,calc(env(safe-area-inset-top,0px) + .58rem)) .82rem .68rem;
  }
  .cp-help-heading-wrap{ gap:.55rem; }
  .cp-help-heading-wrap .cp-modal-badge{
    padding:.18rem .44rem;
    font-size:.63rem;
  }
  .cp-help-modal .modal-title{
    font-size:1rem;
    padding-right:.2rem;
  }
  .cp-help-subtitle{
    font-size:.76rem;
    line-height:1.35;
  }
  .cp-help-modal .cp-help-body{
    padding:.7rem .82rem .82rem;
  }
  .cp-help-context{
    grid-template-columns:1fr;
    grid-template-areas:"kicker" "title" "desc";
    gap:.24rem;
    padding:.65rem .7rem;
  }
  .cp-help-context-kicker{
    justify-self:start;
    min-width:0;
    min-height:24px;
    padding:.2rem .42rem;
    font-size:.62rem;
  }
  .cp-help-tabs{
    position:sticky;
    top:-.7rem;
    z-index:2;
    margin-left:-.05rem;
    margin-right:-.05rem;
    background:rgba(18,19,25,.94);
    -webkit-backdrop-filter:blur(12px);
    backdrop-filter:blur(12px);
  }
  html[data-theme="light"] .cp-help-tabs{
    background:rgba(250,250,252,.94);
  }
  .cp-help-tab{
    min-height:40px;
    padding:.48rem .45rem;
    font-size:.77rem;
  }
  .cp-help-intro{ font-size:.78rem; }
  .cp-help-flow-card{
    grid-template-columns:32px minmax(0,1fr) 15px;
    gap:.55rem;
    padding:.62rem .64rem;
  }
  .cp-help-flow-num{
    width:32px;
    height:32px;
  }
  .cp-help-feature{
    grid-template-columns:34px minmax(0,1fr);
    padding:.64rem;
  }
  .cp-help-feature-mark{
    width:34px;
    height:26px;
  }
  .cp-help-flow-copy strong,
  .cp-help-feature strong{ font-size:.83rem; }
  .cp-help-flow-copy small,
  .cp-help-feature small{ font-size:.72rem; }
  .cp-help-modal .cp-help-footer{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:.45rem;
    padding:.62rem .82rem max(.7rem,calc(env(safe-area-inset-bottom,0px) + .52rem));
  }
  .cp-help-modal .cp-help-footer .btn{
    width:100%;
    min-height:42px;
    padding-left:.55rem;
    padding-right:.55rem;
    font-size:.82rem;
  }
  .cp-help-guide-btn{ margin-right:0; }
  .cp-tools-menu{
    min-width:0;
  }
}

/* =========================================================
   CoachPro 2026-08-21 — help modal mobile alignment +
   reliable trainer Tools menu (no nested Bootstrap dropdown)
   ========================================================= */

/* Trainer tools: custom accessible menu so touch/mobile navbar navigation
   is not intercepted by Bootstrap dropdown + collapse at the same time. */
.navbar.nav-brand .cp-tools-nav{
  position:relative;
}
.navbar.nav-brand .cp-tools-toggle{
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.42rem;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.navbar.nav-brand .cp-tools-toggle:focus-visible{
  outline:2px solid rgba(255,122,26,.55);
  outline-offset:2px;
}
.navbar.nav-brand .cp-tools-chevron{
  width:.45rem;
  height:.45rem;
  flex:0 0 .45rem;
  border-right:1.7px solid currentColor;
  border-bottom:1.7px solid currentColor;
  transform:rotate(45deg) translateY(-1px);
  transform-origin:center;
  opacity:.7;
  transition:transform .16s ease, opacity .16s ease;
}
.navbar.nav-brand .cp-tools-nav.is-open .cp-tools-chevron{
  transform:rotate(225deg) translate(-1px,-1px);
  opacity:1;
}
.navbar.nav-brand .cp-tools-menu{
  position:absolute;
  top:calc(100% + .38rem);
  left:0;
  z-index:2500;
  width:max-content;
  min-width:300px;
  max-width:min(360px,calc(100vw - 24px));
  margin:0;
  padding:.45rem;
  list-style:none;
  border:1px solid rgba(255,255,255,.10);
  border-radius:16px;
  background:rgba(20,21,27,.98);
  box-shadow:0 20px 52px rgba(0,0,0,.42);
  -webkit-backdrop-filter:blur(18px);
  backdrop-filter:blur(18px);
}
.navbar.nav-brand .cp-tools-menu[hidden]{
  display:none !important;
}
.navbar.nav-brand .cp-tools-menu > li{
  margin:0;
  padding:0;
}
.navbar.nav-brand .cp-tools-menu > li + li{
  margin-top:2px;
}
.navbar.nav-brand .cp-tools-item{
  display:flex !important;
  flex-direction:column;
  align-items:flex-start !important;
  gap:.14rem;
  width:100%;
  padding:.7rem .76rem !important;
  border-radius:11px;
  color:var(--text) !important;
  text-decoration:none !important;
  white-space:normal !important;
  text-align:left;
  -webkit-tap-highlight-color:transparent;
}
.navbar.nav-brand .cp-tools-item:hover,
.navbar.nav-brand .cp-tools-item:focus-visible{
  background:rgba(255,255,255,.07);
  outline:none;
}
.navbar.nav-brand .cp-tools-item:active{
  background:rgba(255,122,26,.12);
}
.navbar.nav-brand .cp-tools-item-title{
  font-weight:780;
  line-height:1.2;
}
.navbar.nav-brand .cp-tools-item-desc{
  display:block;
  color:rgba(255,255,255,.59);
  font-size:.74rem;
  line-height:1.35;
}
html[data-theme="light"] .navbar.nav-brand .cp-tools-menu{
  border-color:rgba(20,24,33,.10);
  background:rgba(255,255,255,.985);
  box-shadow:0 18px 45px rgba(16,24,40,.16);
}
html[data-theme="light"] .navbar.nav-brand .cp-tools-item:hover,
html[data-theme="light"] .navbar.nav-brand .cp-tools-item:focus-visible{
  background:rgba(20,24,33,.05);
}
html[data-theme="light"] .navbar.nav-brand .cp-tools-item-desc{
  color:rgba(20,24,33,.60);
}

@media (max-width:991.98px){
  .navbar.nav-brand .cp-tools-nav{
    position:static;
  }
  .navbar.nav-brand .cp-tools-toggle,
  .navbar.nav-brand .cp-tools-toggle.nav-link{
    width:100%;
    min-height:50px;
    padding:.85rem 1rem;
    justify-content:center;
    text-align:center;
    border-radius:14px;
  }
  .navbar.nav-brand .cp-tools-menu,
  .navbar.nav-brand .navbar-collapse .cp-tools-menu{
    position:static !important;
    inset:auto !important;
    transform:none !important;
    float:none !important;
    width:100% !important;
    min-width:0;
    max-width:none;
    margin:.1rem 0 .42rem !important;
    padding:.36rem;
    border-radius:15px;
    background:rgba(255,255,255,.035);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
  html[data-theme="light"] .navbar.nav-brand .cp-tools-menu{
    background:rgba(20,24,33,.025);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.65);
  }
  .navbar.nav-brand .cp-tools-item{
    min-height:54px;
    padding:.67rem .8rem !important;
    text-align:left;
  }
  .navbar.nav-brand .cp-tools-item-title{
    font-size:.92rem;
  }
  .navbar.nav-brand .cp-tools-item-desc{
    font-size:.72rem;
  }
}

/* Help must sit above the sticky navbar (navbar uses z-index:1200). */
#cpQuickStartModal.cp-help-modal{
  z-index:2110;
}
body.cp-help-modal-open .modal-backdrop.show{
  z-index:2100;
}

/* Strong mobile overrides intentionally beat older #cpQuickStartModal Quick Start
   rules that added a second safe-area margin around the new full-screen help UI. */
@media (max-width:575.98px){
  #cpQuickStartModal.cp-help-modal{
    padding:0 !important;
  }
  #cpQuickStartModal.cp-help-modal .cp-quickstart-dialog,
  #cpQuickStartModal.cp-help-modal .cp-quickstart-dialog.modal-dialog-centered,
  #cpQuickStartModal.cp-help-modal .modal-dialog{
    width:100% !important;
    max-width:none !important;
    max-height:none !important;
    height:100% !important;
    min-height:100% !important;
    margin:0 !important;
    padding:0 !important;
    align-items:stretch !important;
  }
  #cpQuickStartModal.cp-help-modal .cp-modal-content,
  #cpQuickStartModal.cp-help-modal .modal-content{
    width:100% !important;
    height:100dvh !important;
    min-height:100dvh !important;
    max-height:100dvh !important;
    margin:0 !important;
    border:0 !important;
    border-radius:0 !important;
    overflow:hidden;
  }
  #cpQuickStartModal.cp-help-modal .cp-help-header,
  #cpQuickStartModal.cp-help-modal .modal-header{
    position:relative;
    top:auto;
    flex:0 0 auto;
    min-height:0;
    margin:0;
    padding:max(10px,env(safe-area-inset-top,0px)) 14px 11px !important;
    align-items:flex-start;
    background:transparent;
  }
  #cpQuickStartModal.cp-help-modal .cp-help-heading-wrap{
    display:block;
    width:100%;
    min-width:0;
    padding-right:42px;
  }
  #cpQuickStartModal.cp-help-modal .cp-help-heading-wrap .cp-modal-badge{
    display:inline-flex;
    margin:0 0 7px;
    padding:.18rem .46rem;
    font-size:.62rem;
    line-height:1.2;
  }
  #cpQuickStartModal.cp-help-modal .modal-title{
    margin:0;
    padding:0;
    max-width:100%;
    font-size:1.04rem;
    line-height:1.22;
    letter-spacing:-.012em;
  }
  #cpQuickStartModal.cp-help-modal .cp-help-subtitle{
    margin:.24rem 0 0;
    max-width:33rem;
    font-size:.76rem;
    line-height:1.34;
  }
  #cpQuickStartModal.cp-help-modal .cp-help-close{
    position:absolute;
    top:max(9px,env(safe-area-inset-top,0px));
    right:10px;
    margin:0 !important;
    padding:.58rem !important;
  }
  #cpQuickStartModal.cp-help-modal .cp-help-body,
  #cpQuickStartModal.cp-help-modal .modal-body{
    flex:1 1 auto;
    min-height:0;
    overflow-y:auto;
    overscroll-behavior:contain;
    padding:10px 14px 14px !important;
    background:transparent;
  }
  #cpQuickStartModal.cp-help-modal .cp-help-context{
    margin:0 0 .72rem;
    padding:.62rem .68rem;
  }
  #cpQuickStartModal.cp-help-modal .cp-help-tabs{
    top:-10px;
    margin-bottom:.7rem;
  }
  #cpQuickStartModal.cp-help-modal .cp-help-footer,
  #cpQuickStartModal.cp-help-modal .modal-footer{
    flex:0 0 auto;
    margin:0;
    padding:.6rem 14px max(.65rem,calc(env(safe-area-inset-bottom,0px) + .42rem)) !important;
  }
}

/* Desktop browser navbar safety net.
   Browser zoom and Windows HiDPI scaling can make CSS viewport width much smaller
   than the physical desktop screenshot. If a real fine pointer + hover device is
   available, keep the WEB app in its classic horizontal navbar on both public
   and authenticated pages. Native CoachPro shells are explicitly excluded. */
@media (min-width: 560px){
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand{
    flex-wrap:nowrap !important;
    overflow:visible !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand > .navbar-actions--mobile,
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand > .navbar-toggler{
    display:none !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-collapse.collapse{
    display:flex !important;
    position:static !important;
    flex:1 1 auto !important;
    flex-basis:auto !important;
    width:auto !important;
    min-width:0 !important;
    max-height:none !important;
    padding:0 !important;
    overflow:visible !important;
    border:0 !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-nav.nav-primary{
    flex:1 1 auto !important;
    flex-direction:row !important;
    flex-wrap:nowrap !important;
    align-items:center !important;
    gap:.04rem !important;
    min-width:0 !important;
    width:auto !important;
    margin:0 !important;
    padding:0 !important;
    white-space:nowrap !important;
    text-align:left !important;
    overflow:visible !important;
    scrollbar-width:none;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-nav.nav-primary::-webkit-scrollbar{
    display:none;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-nav.nav-primary > .nav-item{
    flex:0 0 auto !important;
    width:auto !important;
    border-top:0 !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-nav.nav-primary .nav-link{
    width:auto !important;
    min-height:34px !important;
    padding:.42rem .46rem !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    text-align:center !important;
    border-radius:11px !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-nav .d-lg-none,
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .cp-mobile-account-item{
    display:none !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-right{
    display:flex !important;
    flex:0 0 auto !important;
    align-items:center !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .cp-tools-nav{
    position:relative !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .cp-tools-menu{
    position:absolute !important;
    inset:auto auto auto 0 !important;
    transform:none !important;
    width:min(520px,calc(100vw - 32px)) !important;
    min-width:320px !important;
    margin-top:.45rem !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .cp-desktop-account-dropdown{
    position:relative !important;
  }

  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .cp-desktop-account-dropdown .dropdown-menu,
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .cp-desktop-account-dropdown .dropdown-menu[data-bs-popper]{
    position:absolute !important;
    right:0 !important;
    left:auto !important;
    top:100% !important;
    transform:none !important;
    width:auto !important;
    min-width:220px !important;
  }
}

@media (min-width:560px) and (max-width:991.98px){
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand{
    padding-left:.55rem !important;
    padding-right:.55rem !important;
  }
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-brand{
    margin-right:.35rem !important;
  }
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .brand-logo{
    width:44px !important;
    height:44px !important;
    border-radius:13px !important;
  }
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .brand-title{
    max-width:76px !important;
    font-size:.8rem !important;
  }
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-nav.nav-primary .nav-link{
    padding:.38rem .30rem !important;
    font-size:.80rem !important;
  }
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-right{
    gap:.28rem !important;
  }
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .navbar-right > .badge,
  html.cp-desktop-nav:not(.cp-native-shell) body:not(.inapp-shell) .navbar.nav-brand .nav-user-email{
    display:none !important;
  }
}

/* IMPORTANT: do not redefine Bootstrap .d-none here.
   app.css loads after bootstrap.min.css, so a late ".d-none{display:none!important}"
   wins over responsive utilities such as .d-md-block/.d-lg-flex/.d-xxl-block and
   makes desktop/tablet elements stay hidden at every viewport width. Bootstrap's
   own display utilities are the single source of truth for responsive visibility. */

/* Desktop navbar now uses Bootstrap lg (992px) globally; no public-only breakpoint shim is needed. */
