/* Journey to 50 Kata — Journey Schedule dashboard (v2.3.32)
   All selectors are scoped to .j50-jsd so the component can sit safely inside Divi. */

.j50-jsd {
  --j50-paper: #f6f2ea;
  --j50-card: rgba(255,255,255,.94);
  --j50-ink: #1e2b3d;
  --j50-muted: #6f7b89;
  --j50-line: #dfe4e8;
  --j50-red: #c91f2c;
  --j50-blue: #2578bc;
  --j50-cyan: #4fa6bf;
  --j50-green: #21a366;
  --j50-orange: #ed941d;
  --j50-gray: #9ca6b1;
  color: var(--j50-ink);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  width: 100%;
}

.j50-jsd *, .j50-jsd *::before, .j50-jsd *::after { box-sizing: border-box; }

.j50-jsd-hero {
  position: relative;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  padding: 18px 6px 22px;
}

.j50-jsd-eyebrow {
  color: var(--j50-red);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .19em;
  margin-bottom: 6px;
}
.j50-jsd-hero h2 {
  margin: 0;
  color: #172131;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(34px, 4vw, 56px);
  line-height: 1.02;
  letter-spacing: -.02em;
}
.j50-jsd-hero p {
  margin: 8px 0 0;
  color: #59687a;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(16px, 1.5vw, 21px);
  letter-spacing: .02em;
}
.j50-jsd-owner {
  position: relative;
  z-index: 1;
  min-width: 220px;
  text-align: right;
  padding-bottom: 3px;
}
.j50-jsd-owner strong {
  display: inline-block;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 20px;
  font-weight: 600;
  padding-bottom: 5px;
  border-bottom: 2px solid var(--j50-red);
}
.j50-jsd-owner span {
  display: block;
  margin-top: 5px;
  color: var(--j50-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.j50-jsd-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 14px;
  margin-bottom: 16px;
}
.j50-jsd-summary-card,
.j50-jsd-panel {
  background: var(--j50-card);
  border: 1px solid rgba(53,66,78,.09);
  border-radius: 10px;
  box-shadow: 0 8px 22px rgba(31,42,52,.065);
}
.j50-jsd-summary-card {
  min-height: 98px;
  display: flex;
  align-items: center;
  gap: 15px;
  padding: 15px 17px;
}
.j50-jsd-summary-icon {
  flex: 0 0 48px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: #fff;
  font-size: 24px;
  font-weight: 800;
  line-height: 1;
}
.j50-jsd-summary-card--red .j50-jsd-summary-icon { background: var(--j50-red); }
.j50-jsd-summary-card--blue .j50-jsd-summary-icon { background: var(--j50-blue); }
.j50-jsd-summary-card .j50-jsd-summary-icon {
  display: grid;
  place-items: center;
  margin-top: 0;
  color: #fff;
  font-size: 24px;
  line-height: 1;
}
.j50-jsd-summary-card small,
.j50-jsd-summary-card strong,
.j50-jsd-summary-card > div > span { display: block; }
.j50-jsd-summary-card small {
  color: #28364a;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 14px;
  font-weight: 700;
  margin-bottom: 2px;
}
.j50-jsd-summary-card strong {
  color: #132039;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 25px;
  line-height: 1.05;
  font-weight: 700;
}
.j50-jsd-summary-card > div > span {
  margin-top: 5px;
  color: #6f7c8c;
  font-size: 11px;
  line-height: 1.25;
}
.j50-jsd-summary-card .j50-jsd-forecast-date {
  color: var(--j50-red);
  font-size: 30px;
  line-height: 1;
}

.j50-jsd-main-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(390px, 1fr);
  gap: 16px;
  align-items: start;
}
.j50-jsd-side-stack {
  display: grid;
  gap: 16px;
}
.j50-jsd-panel { overflow: hidden; }
.j50-jsd-panel-head {
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  background: linear-gradient(180deg, rgba(79,166,191,.10) 0%, rgba(79,166,191,.045) 100%);
  border-bottom: 1px solid #e1e7ea;
}
.j50-jsd-panel-head > div:first-child {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
}
.j50-jsd-panel-head h3 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  color: #1c2838;
  font-size: 22px;
  line-height: 1.1;
  font-weight: 700;
}
.j50-jsd-panel-mark {
  color: var(--j50-red);
  font-size: 22px;
  font-weight: 900;
  line-height: 1;
}
.j50-jsd-plan-tools {
  display: flex;
  align-items: center;
  gap: 12px;
  color: #748191;
  font-size: 11px;
  white-space: nowrap;
}
.j50-jsd-plan-tools a {
  color: var(--j50-blue);
  text-decoration: none;
  font-weight: 700;
}
.j50-jsd-plan-tools a:hover { text-decoration: underline; }

.j50-jsd-table-wrap {
  max-height: 850px;
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
}
.j50-jsd-table {
  width: 100%;
  min-width: 568px;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: 12px;
  line-height: 1.25;
}
.j50-jsd-table thead th {
  position: sticky;
  top: 0;
  z-index: 4;
  background: #edf1f4;
  color: #28374c;
  font-size: 11px;
  font-weight: 800;
  text-align: left;
  padding: 10px 9px;
  border-bottom: 1px solid #dfe4e8;
}
.j50-jsd-table th:nth-child(1) { width: 16%; }
.j50-jsd-table th:nth-child(2) { width: 18%; }
.j50-jsd-table th:nth-child(3) { width: 22%; padding-right: 4px; }
.j50-jsd-table th:nth-child(4) { width: 44%; padding-left: 4px; }
.j50-jsd-table td:nth-child(3) { padding-right: 4px; }
.j50-jsd-table td:nth-child(4) { padding-left: 4px; }
.j50-jsd-table td {
  padding: 7px 9px;
  border-bottom: 1px solid #e9ecef;
  vertical-align: top;
  color: #425068;
  background: rgba(255,255,255,.69);
}
.j50-jsd-plan-row:hover td { background: #f8fbfd; }
.j50-jsd-plan-row.is-today td { background: #eef8fc; }
.j50-jsd-plan-row.is-paused td { background: #fbf5f3; }
.j50-jsd-month-row th {
  position: sticky;
  top: 36px;
  z-index: 3;
  padding: 7px 10px 6px;
  text-align: left;
  color: #4d5b6c;
  background: #f7f8f9;
  border-top: 1px solid #e2e6e9;
  border-bottom: 1px solid #e2e6e9;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 12px;
  letter-spacing: .04em;
}
.j50-jsd-date-cell strong,
.j50-jsd-table td > strong { color: #1d2b40; font-weight: 750; }
.j50-jsd-date-cell small,
.j50-jsd-session-note,
.j50-jsd-refresh-cell small {
  display: block;
  margin-top: 3px;
  color: #8a95a2;
  font-size: 10px;
  line-height: 1.15;
}
.j50-jsd-session {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #33455e;
  font-weight: 650;
}
.j50-jsd-session i {
  font-style: normal;
  font-size: 15px;
  line-height: 1;
}
.j50-jsd-session--learn i { color: var(--j50-blue); }
.j50-jsd-session--refresh i { color: var(--j50-red); }
.j50-jsd-session--pause i { color: #93645b; }
.j50-jsd-refresh-cell span { line-height: 1.35; }
.j50-jsd-dash { color: #a8b0ba; }
.j50-jsd-status-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 88px;
  justify-content: center;
  border-radius: 999px;
  padding: 5px 8px;
  font-size: 10px;
  font-weight: 750;
  white-space: nowrap;
}
.j50-jsd-status-pill i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
}
.j50-jsd-status-pill--completed { color: #168454; background: #daf3e6; }
.j50-jsd-status-pill--completed i { background: #20a565; }
.j50-jsd-status-pill--progress { color: #176ca9; background: #dceefa; }
.j50-jsd-status-pill--progress i { background: #2688cb; }
.j50-jsd-status-pill--planned { color: #647182; background: #eef1f4; }
.j50-jsd-status-pill--planned i { background: #9ba6b2; }
.j50-jsd-status-pill--paused { color: #8d5c52; background: #f4e6e2; }
.j50-jsd-status-pill--paused i { background: #a56a5e; }
.j50-jsd-table-note {
  margin: 0;
  padding: 10px 14px 12px;
  border-top: 1px solid #edf0f2;
  color: #7a8794;
  font-size: 10px;
  line-height: 1.35;
  font-style: italic;
}

.j50-jsd-total-chip,
.j50-jsd-status-count {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  border: 1px solid #dfe4e8;
  border-radius: 6px;
  padding: 0 9px;
  color: #4c5a6a;
  background: #fbfcfd;
  font-size: 10px;
  font-weight: 750;
}
.j50-jsd-chart-legend {
  display: flex;
  justify-content: flex-end;
  gap: 14px;
  padding: 12px 18px 0;
  color: #5c6878;
  font-size: 10px;
}
.j50-jsd-chart-legend span { display: inline-flex; align-items: center; gap: 5px; }
.j50-jsd-chart-legend i {
  display: inline-block;
  width: 9px;
  height: 9px;
  border-radius: 50%;
}
.j50-jsd-chart-legend .is-learned { background: var(--j50-red); }
.j50-jsd-chart-legend .is-learning { background: var(--j50-blue); }
.j50-jsd-chart-legend .is-remaining { background: #a5adb6; }
.j50-jsd-chart-wrap { padding: 0 8px 0 4px; }
.j50-jsd-chart-svg { display: block; width: 100%; height: auto; overflow: visible; }
.j50-jsd-chart-grid line { stroke: #e2e6ea; stroke-width: 1; }
.j50-jsd-chart-grid text { fill: #6d7988; font-size: 10px; }
.j50-jsd-area--remaining { fill: #dfe3e7; opacity: .95; }
.j50-jsd-area--learning { fill: var(--j50-blue); opacity: .88; }
.j50-jsd-area--learned { fill: var(--j50-red); opacity: .94; }
.j50-jsd-chart-line { stroke: #8f1923; stroke-width: 2.2; }
.j50-jsd-chart-tick { stroke: #aab3bd; stroke-width: 1; }
.j50-jsd-chart-month { fill: #657281; font-size: 10px; }
.j50-jsd-today-line { stroke: var(--j50-red); stroke-width: 1.6; stroke-dasharray: 5 4; }
.j50-jsd-today-label-bg { fill: var(--j50-red); }
.j50-jsd-today-label { fill: #fff; font-size: 9px; font-weight: 800; }
.j50-jsd-progress-stack {
  display: flex;
  width: calc(100% - 32px);
  height: 24px;
  margin: 5px 16px 0;
  overflow: hidden;
  border: 1px solid rgba(31,45,63,.08);
  border-radius: 999px;
  background: #e3e6e9;
  box-shadow: inset 0 1px 2px rgba(21,34,49,.08);
}
.j50-jsd-progress-stack-segment {
  display: block;
  min-width: 0;
  height: 100%;
  transition: width .25s ease;
}
.j50-jsd-progress-stack-segment--learned { background: var(--j50-red); }
.j50-jsd-progress-stack-segment--learning { background: var(--j50-blue); }
.j50-jsd-progress-stack-segment--not-started { background: #a5adb6; }
.j50-jsd-progress-stack-counts {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 8px;
  padding: 7px 16px 14px;
  color: #667383;
  font-size: 9px;
}
.j50-jsd-progress-stack-counts span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-width: 0;
  white-space: nowrap;
}
.j50-jsd-progress-stack-counts i {
  display: inline-block;
  width: 7px;
  height: 7px;
  flex: 0 0 7px;
  border-radius: 50%;
}
.j50-jsd-progress-stack-counts .is-learned { background: var(--j50-red); }
.j50-jsd-progress-stack-counts .is-learning { background: var(--j50-blue); }
.j50-jsd-progress-stack-counts .is-remaining { background: #a5adb6; }
.j50-jsd-progress-stack-counts strong {
  color: #26364d;
  font-size: 10px;
}
.j50-jsd-movement-progress {
  margin: 2px 16px 15px;
  padding: 13px 0 0;
  border-top: 1px solid #e7ebee;
}
.j50-jsd-movement-progress-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  padding: 0 1px 7px;
}
.j50-jsd-movement-progress-head > div {
  display: grid;
  gap: 2px;
}
.j50-jsd-movement-progress-head strong {
  color: #25364d;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 14px;
  line-height: 1.15;
}
.j50-jsd-movement-progress-head span {
  color: #7a8794;
  font-size: 9px;
  line-height: 1.25;
}
.j50-jsd-movement-progress-head b {
  color: #405068;
  font-size: 10px;
  line-height: 1.2;
  white-space: nowrap;
}
.j50-jsd-progress-stack--movements {
  width: 100%;
  height: 20px;
  margin: 0;
}
.j50-jsd-movement-progress-summary {
  display: flex;
  align-items: baseline;
  gap: 5px;
  padding: 6px 1px 0;
  color: #738090;
  font-size: 9px;
}
.j50-jsd-movement-progress-summary strong {
  color: var(--j50-red);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 17px;
  line-height: 1;
}
.j50-jsd-progress-stack-counts--movements {
  padding: 6px 0 0;
}

.j50-jsd-status-key {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 12px;
  padding: 4px 14px 7px;
  border-bottom: 1px solid #edf0f2;
}
.j50-jsd-kata-state {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #586576;
  font-size: 10px;
  white-space: nowrap;
}
.j50-jsd-kata-state i {
  display: inline-block;
  width: 8px;
  height: 8px;
  flex: 0 0 8px;
  border-radius: 50%;
  background: #a7b0ba;
}
/* The Journey deliberately exposes only three kata states. */
.j50-jsd-kata-state--learning i { background: var(--j50-blue); }
.j50-jsd-kata-state--refresh i { background: var(--j50-red); }
.j50-jsd-kata-state--not-started i { background: #a5adb6; }

.j50-jsd-status-columns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  column-gap: 22px;
  padding: 0 14px;
}
.j50-jsd-status-column { min-width: 0; }
.j50-jsd-status-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 31px;
  border-bottom: 1px solid #edf0f2;
  font-size: 10px;
}
.j50-jsd-status-item > strong {
  min-width: 0;
  overflow: hidden;
  color: #2d3d53;
  font-size: 10px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.j50-jsd-status-item--learning > strong { color: var(--j50-blue); }
.j50-jsd-status-item--refresh > strong { color: var(--j50-red); }
.j50-jsd-status-item--not-started > strong { color: #7f8995; }
.j50-jsd-status-reveal {
  margin: 0;
  border: 0;
  background: transparent;
}
.j50-jsd-status-reveal summary {
  cursor: pointer;
  list-style: none;
  margin-top: 1px;
  padding: 10px 14px 12px;
  border-top: 1px solid #e7eaed;
  color: var(--j50-blue);
  font-size: 10px;
  font-weight: 750;
  text-align: center;
}
.j50-jsd-status-reveal summary::-webkit-details-marker { display: none; }
.j50-jsd-status-reveal summary::after {
  content: "  ↓";
  color: #7b8794;
}
.j50-jsd-status-reveal-close-label { display: none; }

/* When expanded, keep the two-column kata sequence continuous and put the
   collapse control after the final kata instead of between rows 10 and 11. */
.j50-jsd-status-reveal[open] {
  display: flex;
  flex-direction: column;
}
.j50-jsd-status-reveal[open] .j50-jsd-status-columns--more { order: 1; }
.j50-jsd-status-reveal[open] summary {
  order: 2;
  margin-top: 0;
  border-top: 1px solid #e7eaed;
  border-bottom: 0;
}
.j50-jsd-status-reveal[open] summary::after { content: "  ↑"; }
.j50-jsd-status-reveal[open] .j50-jsd-status-reveal-open-label { display: none; }
.j50-jsd-status-reveal[open] .j50-jsd-status-reveal-close-label { display: inline; }
.j50-jsd-status-columns--more { padding-bottom: 10px; }

.j50-jsd-milestones-panel { padding-bottom: 2px; }
.j50-jsd-milestones {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 10px;
  padding: 19px 18px 17px;
}
.j50-jsd-milestones::before {
  content: "";
  position: absolute;
  left: 16.5%;
  right: 16.5%;
  top: 29px;
  height: 2px;
  background: #d6dbe0;
}
.j50-jsd-milestones > div {
  position: relative;
  z-index: 1;
  text-align: center;
}
.j50-jsd-milestones i {
  display: block;
  width: 17px;
  height: 17px;
  margin: 0 auto 8px;
  border-radius: 50%;
  background: #b8bec5;
  border: 3px solid #fff;
  box-shadow: 0 0 0 1px #cfd5da;
}
.j50-jsd-milestones i.is-first {
  background: var(--j50-red);
  box-shadow: 0 0 0 2px rgba(201,31,44,.28);
}
.j50-jsd-milestones strong,
.j50-jsd-milestones span { display: block; }
.j50-jsd-milestones strong {
  min-height: 30px;
  color: #26354a;
  font-size: 11px;
  line-height: 1.22;
}
.j50-jsd-milestones span {
  margin-top: 3px;
  color: #687586;
  font-size: 10px;
}

.j50-jsd-empty {
  padding: 22px;
  border: 1px solid #e0e4e7;
  border-radius: 8px;
  color: #657282;
  background: #fff;
}

@media (max-width: 1100px) {
  .j50-jsd-summary-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .j50-jsd-main-grid { grid-template-columns: 1fr; }
  .j50-jsd-table-wrap { max-height: 720px; }
}

@media (max-width: 720px) {
  .j50-jsd-hero { align-items: flex-start; flex-direction: column; padding-top: 8px; }
  .j50-jsd-owner { min-width: 0; text-align: left; }
  .j50-jsd-summary-grid { grid-template-columns: 1fr 1fr; gap: 9px; }
  .j50-jsd-summary-card { min-height: 90px; gap: 10px; padding: 12px; }
  .j50-jsd-summary-icon { flex-basis: 40px; width: 40px; height: 40px; font-size: 20px; }
  .j50-jsd-summary-card strong { font-size: 21px; }
  .j50-jsd-summary-card span { font-size: 10px; }
  .j50-jsd-panel-head { align-items: flex-start; }
  .j50-jsd-plan-tools { flex-direction: column; align-items: flex-end; gap: 3px; }
  .j50-jsd-panel-head h3 { font-size: 19px; }
  .j50-jsd-chart-legend { justify-content: flex-start; flex-wrap: wrap; }
  .j50-jsd-status-key { justify-content: flex-start; }
}

@media (max-width: 500px) {
  .j50-jsd-summary-grid { grid-template-columns: 1fr; }
  .j50-jsd-summary-card { min-height: 82px; }
  .j50-jsd-summary-card strong { font-size: 23px; }
  .j50-jsd-chart-panel .j50-jsd-panel-head { flex-direction: column; align-items: stretch; }
  .j50-jsd-total-chip { align-self: flex-start; }
  .j50-jsd-chart-legend { padding-left: 12px; gap: 9px; }
  .j50-jsd-status-columns { column-gap: 10px; padding-left: 10px; padding-right: 10px; }
  .j50-jsd-status-item { align-items: flex-start; flex-direction: column; gap: 2px; min-height: 48px; padding: 6px 0; }
  .j50-jsd-status-item > strong { width: 100%; font-size: 9px; }
  .j50-jsd-kata-state { font-size: 9px; }
  .j50-jsd-status-key { gap: 8px 10px; padding-left: 10px; padding-right: 10px; }
  .j50-jsd-milestones { grid-template-columns: 1fr; gap: 16px; }
  .j50-jsd-milestones::before { display: none; }
}

@media (max-width: 640px) {
  .j50-jsd-movement-progress-head { align-items: flex-start; flex-direction: column; gap: 5px; }
  .j50-jsd-movement-progress-head b { white-space: normal; }
  .j50-jsd-progress-stack-counts--movements { grid-template-columns: 1fr; gap: 4px; }
  .j50-jsd-progress-stack-counts--movements span { justify-content: flex-start; }
}

/* --------------------------------------------------------------------------
   v2.3.31+ — Training Activity heatmap
   -------------------------------------------------------------------------- */
.j50-jsd .j50-heatmap-panel {
  margin-bottom: 16px;
}
.j50-jsd .j50-heatmap {
  --j50-heatmap-cell: 13px;
  --j50-heatmap-gap: 3px;
  --j50-heatmap-level-0: #efeee9;
  --j50-heatmap-level-1: #b5d4f4;
  --j50-heatmap-level-2: #85b7eb;
  --j50-heatmap-level-3: #378add;
  --j50-heatmap-level-4: #185fa5;
  padding: 14px 16px 15px;
  color: #4f5b69;
  font: inherit;
}
.j50-jsd .j50-heatmap-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  min-height: 22px;
  margin-bottom: 10px;
  font-size: 11px;
  line-height: 1.2;
}
.j50-jsd .j50-heatmap-summary {
  color: #374556;
  font-weight: 600;
}
.j50-jsd .j50-heatmap-legend {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
  margin-left: auto;
  white-space: nowrap;
  color: #596573;
  font-size: 10px;
}
.j50-jsd .j50-heatmap-legend-swatch {
  display: inline-block;
  width: 12px;
  height: 12px;
  border: 1px solid rgba(35, 48, 62, .06);
  border-radius: 2px;
}
.j50-jsd .j50-heatmap-level-0 { background: var(--j50-heatmap-level-0); }
.j50-jsd .j50-heatmap-level-1 { background: var(--j50-heatmap-level-1); }
.j50-jsd .j50-heatmap-level-2 { background: var(--j50-heatmap-level-2); }
.j50-jsd .j50-heatmap-level-3 { background: var(--j50-heatmap-level-3); }
.j50-jsd .j50-heatmap-level-4 { background: var(--j50-heatmap-level-4); }
.j50-jsd .j50-heatmap-content {
  min-width: 0;
}
.j50-jsd .j50-heatmap-chart {
  width: max-content;
  max-width: 100%;
}
.j50-jsd .j50-heatmap-month-row,
.j50-jsd .j50-heatmap-grid-row {
  display: grid;
  grid-template-columns: 29px auto;
  align-items: start;
}
.j50-jsd .j50-heatmap-month-row {
  min-height: 17px;
}
.j50-jsd .j50-heatmap-month-corner {
  display: block;
}
.j50-jsd .j50-heatmap-month-grid {
  display: grid;
  grid-template-columns: repeat(var(--j50-heatmap-weeks), var(--j50-heatmap-cell));
  column-gap: var(--j50-heatmap-gap);
  min-width: 0;
  height: 17px;
}
.j50-jsd .j50-heatmap-month-label {
  align-self: start;
  color: #6c7784;
  font-size: 9px;
  line-height: 12px;
  white-space: nowrap;
}
.j50-jsd .j50-heatmap-row-labels {
  display: grid;
  grid-template-rows: repeat(7, var(--j50-heatmap-cell));
  row-gap: var(--j50-heatmap-gap);
  padding-right: 6px;
}
.j50-jsd .j50-heatmap-row-label {
  display: flex;
  align-items: center;
  color: #818b96;
  font-size: 9px;
  line-height: 1;
}
.j50-jsd .j50-heatmap-cells {
  display: grid;
  grid-template-columns: repeat(var(--j50-heatmap-weeks), var(--j50-heatmap-cell));
  grid-template-rows: repeat(7, var(--j50-heatmap-cell));
  grid-auto-flow: column;
  gap: var(--j50-heatmap-gap);
  width: max-content;
}
.j50-jsd .j50-heatmap-day {
  display: block;
  width: var(--j50-heatmap-cell);
  height: var(--j50-heatmap-cell);
  margin: 0;
  padding: 0;
  border: .5px solid transparent;
  border-radius: 2px;
  box-shadow: none;
  text-decoration: none;
  appearance: none;
  -webkit-appearance: none;
}
.j50-jsd .j50-heatmap-day.j50-heatmap-trained {
  border-color: rgba(27, 58, 91, .04);
}
.j50-jsd .j50-heatmap-day.j50-heatmap-rest {
  border: .5px dashed #c7c6c0;
  cursor: default;
}
.j50-jsd a.j50-heatmap-day.j50-heatmap-trained {
  cursor: pointer;
}
.j50-jsd .j50-heatmap-day:hover {
  filter: brightness(.96);
}
.j50-jsd .j50-heatmap-day:focus-visible {
  position: relative;
  z-index: 2;
  outline: 2px solid #172131;
  outline-offset: 2px;
}
.j50-jsd .j50-heatmap-spacer {
  visibility: hidden;
  pointer-events: none;
}
.j50-jsd .j50-heatmap-detail {
  min-height: 18px;
  margin-top: 10px;
  color: #3e4c5e;
  font-size: 11px;
  line-height: 1.4;
}
.j50-jsd .j50-heatmap-toggle {
  display: none;
  margin: 7px 0 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--j50-blue);
  font: inherit;
  font-size: 10px;
  font-weight: 700;
  line-height: 1.4;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
.j50-jsd .j50-heatmap-toggle:focus-visible {
  outline: 2px solid #172131;
  outline-offset: 3px;
}
.j50-jsd .j50-heatmap-error {
  margin: 0;
  color: #606c79;
  font-size: 11px;
}

@media (max-width: 767px) {
  .j50-jsd .j50-heatmap {
    padding: 13px 12px 14px;
  }
  .j50-jsd .j50-heatmap-toolbar {
    align-items: flex-start;
    flex-direction: column;
    gap: 7px;
    margin-bottom: 9px;
  }
  .j50-jsd .j50-heatmap-legend {
    justify-content: flex-start;
    margin-left: 0;
  }
  .j50-jsd .j50-heatmap-toggle:not([hidden]) {
    display: inline-block;
  }
  .j50-jsd .j50-heatmap-is-expanded .j50-heatmap-month-label,
  .j50-jsd .j50-heatmap-is-expanded .j50-heatmap-row-label {
    font-size: 8px;
  }
}

/* --------------------------------------------------------------------------
   v2.3.34 — Session Effort heatmap
   Uses the same geometry/interaction as Training Activity with a distinct
   five-step effort scale and an explicit historical Unrated state.
   -------------------------------------------------------------------------- */
.j50-jsd .j50-heatmap--effort {
  --j50-effort-level-1: #f4d7da;
  --j50-effort-level-2: #e9aeb4;
  --j50-effort-level-3: #d87882;
  --j50-effort-level-4: #bd4654;
  --j50-effort-level-5: #8f1f2b;
  --j50-effort-unrated: #d9d7d1;
}
.j50-jsd .j50-effort-level-1 { background: var(--j50-effort-level-1); }
.j50-jsd .j50-effort-level-2 { background: var(--j50-effort-level-2); }
.j50-jsd .j50-effort-level-3 { background: var(--j50-effort-level-3); }
.j50-jsd .j50-effort-level-4 { background: var(--j50-effort-level-4); }
.j50-jsd .j50-effort-level-5 { background: var(--j50-effort-level-5); }
.j50-jsd .j50-effort-unrated {
  background: var(--j50-effort-unrated);
  border-color: #b9b6ae;
}
.j50-jsd .j50-effort-unrated-key {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-left: 5px;
}
.j50-jsd .j50-heatmap-day.j50-effort-unrated {
  border-style: solid;
  cursor: pointer;
}


/* --------------------------------------------------------------------------
   v2.3.36 — Future heatmap cells
   Keep future dates visible in the calendar geometry without implying a Rest
   or effort state: transparent interior, existing dotted outline retained.
   -------------------------------------------------------------------------- */
.j50-jsd .j50-heatmap-day.j50-heatmap-future {
  background: transparent;
  border: .5px dashed #c7c6c0;
}

/* --------------------------------------------------------------------------
   v2.3.37 — Combined heatmap metric switch
   One fixed calendar grid; only the metric, colour scale and supporting copy swap.
   -------------------------------------------------------------------------- */
.j50-jsd .j50-heatmap-metric-switch {
  display: inline-flex;
  align-items: stretch;
  margin: 0 0 12px;
  padding: 2px;
  border: 1px solid #c9d0d7;
  border-radius: 6px;
  background: #f1f3f4;
}
.j50-jsd .j50-heatmap-metric-button {
  min-height: 30px;
  padding: 5px 11px;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: #66717d;
  font: inherit;
  font-size: 10px;
  font-weight: 700;
  line-height: 1.2;
  cursor: pointer;
}
.j50-jsd .j50-heatmap-metric-button.is-active {
  background: #fff;
  color: #26394d;
  box-shadow: 0 1px 2px rgba(30, 43, 56, .12);
}
.j50-jsd .j50-heatmap-metric-button:focus-visible {
  position: relative;
  z-index: 1;
  outline: 2px solid #172131;
  outline-offset: 2px;
}
.j50-jsd .j50-heatmap-legend[hidden] {
  display: none !important;
}
@media (max-width: 767px) {
  .j50-jsd .j50-heatmap-metric-switch {
    width: 100%;
    margin-bottom: 10px;
  }
  .j50-jsd .j50-heatmap-metric-button {
    flex: 1 1 50%;
    min-height: 38px;
    font-size: 11px;
  }
}

/* v2.3.82 — Apple Watch workout trend charts */
.j50-workout-trends-panel{margin-bottom:16px;padding:0 0 18px;overflow:hidden}
.j50-workout-trends-head{padding:16px 18px 12px}
.j50-trend-range{display:flex;gap:5px;background:#f1f3f5;border-radius:8px;padding:3px}
.j50-trend-range button{appearance:none;border:0;background:transparent;border-radius:6px;padding:7px 11px;color:#65717b;font:700 11px/1.1 inherit;cursor:pointer}
.j50-trend-range button.is-active{background:#fff;color:#293945;box-shadow:0 1px 4px rgba(31,42,52,.12)}
.j50-workout-trends{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:0 18px}
.j50-trend-card{border:1px solid rgba(53,66,78,.09);border-radius:9px;padding:14px;background:#fff;min-width:0}
.j50-trend-card:first-child{grid-column:1/-1}
.j50-trend-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px}
.j50-trend-title strong{font-size:14px;color:#293945}.j50-trend-title span{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#89939b}
.j50-trend-chart{height:205px;position:relative}.j50-trend-chart svg{display:block;width:100%;height:100%;overflow:visible}
.j50-trend-grid{stroke:#e8ecef;stroke-width:1}.j50-trend-axis{fill:#89939b;font-size:9px;font-weight:600}.j50-trend-line{fill:none;stroke:#315f86;stroke-width:4.25;stroke-linecap:round;stroke-linejoin:round}.j50-trend-line.is-secondary{stroke:#b84242;stroke-width:4.25}.j50-trend-dot{fill:#315f86;stroke:#fff;stroke-width:1.5}.j50-trend-dot.is-secondary{fill:#b84242}.j50-trend-empty{height:100%;display:grid;place-items:center;color:#89939b;font-size:12px}.j50-trend-legend{display:flex;gap:14px;font-size:10px;font-weight:700;color:#65717b;position:absolute;right:8px;top:-24px}.j50-trend-legend i{display:inline-block;width:15px;height:2px;margin-right:5px;vertical-align:middle;background:#315f86}.j50-trend-legend .max i{background:#b84242}
@media(max-width:700px){.j50-workout-trends-head{gap:10px;flex-direction:column;align-items:flex-start}.j50-workout-trends{grid-template-columns:1fr;padding:0 12px}.j50-trend-card:first-child{grid-column:auto}.j50-trend-range{width:100%}.j50-trend-range button{flex:1}.j50-trend-chart{height:190px}}

/* v2.3.83 — trend readability, medians and range feedback */
.j50-trend-axis{font-size:12px;font-weight:700;fill:#65717b}
.j50-trend-axis-x{font-size:12px}
.j50-trend-axis-y{font-size:12px}
.j50-trend-median{stroke:#6e7780;stroke-width:1.5;stroke-dasharray:6 5;opacity:.9}
.j50-trend-median.is-secondary{stroke:#9a5960}
.j50-trend-median-label{fill:#59636d;font-size:10px;font-weight:800}
.j50-trend-median-label.is-secondary{fill:#8f424a}
.j50-trend-range-status{margin-left:auto;color:#7b8791;font-size:11px;font-weight:700;white-space:nowrap}
@media(max-width:700px){.j50-trend-axis{font-size:13px}.j50-trend-median-label{font-size:10px}.j50-trend-range-status{margin-left:0}}


/* v2.3.84 — Workout Trends readability and analytical refinements */
.j50-workout-trends-panel{padding-bottom:22px}
.j50-workout-trends-head{gap:14px;flex-wrap:wrap}
.j50-trend-range{gap:0;padding:4px;border:1px solid #dce3e8;background:#edf1f4;border-radius:10px}
.j50-trend-range button{min-width:82px;padding:9px 13px;border-radius:7px;font-size:12px;font-weight:750;transition:background .16s ease,color .16s ease,box-shadow .16s ease}
.j50-trend-range button:hover{color:#293945;background:rgba(255,255,255,.55)}
.j50-trend-range button.is-active{background:#315f86;color:#fff;box-shadow:0 2px 5px rgba(31,42,52,.18)}
.j50-trend-range-status{font-size:12px;color:#65717b}
.j50-workout-trends{display:grid;grid-template-columns:1fr;gap:16px;padding:0 18px}
.j50-trend-card,.j50-trend-card:first-child{grid-column:auto;padding:17px 18px 14px;border-color:rgba(53,66,78,.12);box-shadow:0 1px 2px rgba(31,42,52,.025)}
.j50-trend-title{margin-bottom:3px}.j50-trend-title strong{font-size:15px}.j50-trend-title span{font-size:10px}
.j50-trend-summary{min-height:22px;display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:0 0 2px;color:#65717b;font-size:11px;font-weight:700}
.j50-trend-summary span{white-space:nowrap}.j50-trend-summary b{font-weight:700;color:#b1bac1}
.j50-trend-chart{height:285px;margin-top:2px}
.j50-trend-axis{font-size:13px;font-weight:700;fill:#65717b}.j50-trend-axis-x,.j50-trend-axis-y{font-size:13px}
.j50-trend-grid{stroke:#e5eaee;stroke-width:1}
.j50-trend-median{stroke:#75818a;stroke-width:1.4;stroke-dasharray:6 5;opacity:.8}.j50-trend-median.is-secondary{stroke:#a85b61}
.j50-trend-median-badge rect{fill:#fff;stroke:#d8dfe4;stroke-width:1;opacity:.96}.j50-trend-median-badge text{fill:#59636d;font-size:11px;font-weight:800}.j50-trend-median-badge.is-secondary rect{stroke:#e1c8ca}.j50-trend-median-badge.is-secondary text{fill:#91454b}
.j50-trend-regression{stroke:#315f86;stroke-width:2;stroke-dasharray:2 6;stroke-linecap:round;opacity:.38}.j50-trend-regression.is-secondary{stroke:#b84242;opacity:.34}
.j50-trend-legend{top:-28px;right:12px;gap:14px;font-size:10px}.j50-trend-legend.single{top:-27px}.j50-trend-legend .trend i{height:0;background:none;border-top:2px dotted #89939b}
@media(max-width:700px){.j50-workout-trends{padding:0 10px}.j50-trend-card,.j50-trend-card:first-child{padding:14px 10px 10px}.j50-trend-chart{height:245px}.j50-trend-axis,.j50-trend-axis-x,.j50-trend-axis-y{font-size:12px}.j50-trend-range{width:100%}.j50-trend-range button{min-width:0}.j50-trend-range-status{width:100%;margin-top:-3px}.j50-trend-summary{font-size:10px}.j50-trend-median-badge text{font-size:10px}}


/* v2.3.85 — Workout Duration crosshair tracker */
.j50-trend-crosshair{stroke:#53616d;stroke-width:1.4;stroke-dasharray:4 4;pointer-events:none}
.j50-trend-crosshair-dot{fill:#fff;stroke:#315f86;stroke-width:3;pointer-events:none}.j50-trend-crosshair-dot.is-secondary{stroke:#b84242}
.j50-trend-hover-tip{position:absolute;z-index:5;top:14px;transform:translateX(12px);min-width:104px;padding:8px 10px;border:1px solid #d8dfe4;border-radius:7px;background:rgba(255,255,255,.97);box-shadow:0 3px 10px rgba(31,42,52,.12);color:#293945;font-size:11px;line-height:1.25;pointer-events:none;white-space:nowrap}
.j50-trend-hover-tip strong,.j50-trend-hover-tip span{display:block}.j50-trend-hover-tip strong{font-size:11px;margin-bottom:2px}.j50-trend-hover-tip span{font-size:13px;font-weight:800;color:#315f86}.j50-trend-hover-tip span.is-secondary{color:#b84242;margin-top:2px}
.j50-trend-hover-tip.is-left{transform:translateX(calc(-100% - 12px))}
.j50-trend-chart[data-chart="duration"] svg,.j50-trend-chart[data-chart="heart"] svg{cursor:crosshair;touch-action:pan-y}
@media(max-width:700px){.j50-trend-hover-tip{top:10px;padding:7px 9px}.j50-trend-hover-tip span{font-size:12px}}

/* v2.3.87 — Weekly active calorie totals */
.j50-weekly-cal-bar{fill:#315f86;opacity:.82;outline:none;transition:opacity .15s ease}
.j50-weekly-cal-bar:hover,.j50-weekly-cal-bar:focus{opacity:1}
.j50-weekly-cal-bar.is-incomplete{fill:rgba(49,95,134,.22);stroke:#315f86;stroke-width:2;stroke-dasharray:6 4}
.j50-weekly-cal-note{margin-top:-3px;color:#65717b;font-size:10px;font-weight:600}

.j50-weekly-cal-bar.is-tracked{opacity:1;stroke:#173f62;stroke-width:3}
.j50-trend-hover-tip small{display:block;margin-top:3px;font-size:10px;font-weight:600;color:#6d7b86}


/* v2.3.91 — Workout Trends mobile readability pass */
@media (max-width:700px){
  .j50-workout-trends-panel{padding-bottom:20px}
  .j50-workout-trends-head{padding:15px 14px 12px;gap:11px}
  .j50-workout-trends-head h3{font-size:18px!important;line-height:1.25!important}
  .j50-trend-range{width:100%;padding:4px;gap:2px}
  .j50-trend-range button{min-height:42px;padding:9px 7px;font-size:14px;line-height:1.15}
  .j50-trend-range-status{width:100%;margin-top:0;font-size:13px;line-height:1.35;white-space:normal}
  .j50-workout-trends{padding:0 8px;gap:14px}
  .j50-trend-card,.j50-trend-card:first-child{padding:15px 10px 12px}
  .j50-trend-title{align-items:flex-start;gap:8px;margin-bottom:6px}
  .j50-trend-title strong{font-size:17px;line-height:1.25}
  .j50-trend-title span{font-size:12px;line-height:1.25;text-align:right;letter-spacing:.045em}
  .j50-trend-summary{min-height:25px;gap:6px;font-size:13px;line-height:1.35;margin-bottom:4px}
  .j50-trend-chart{height:300px;margin-top:4px}
  .j50-trend-axis,.j50-trend-axis-x,.j50-trend-axis-y{font-size:20px;font-weight:750}
  .j50-trend-median-badge text{font-size:17px;font-weight:800}
  .j50-trend-legend,.j50-trend-legend.single{top:-30px;right:6px;gap:9px;font-size:12px;line-height:1.2}
  .j50-trend-legend i{width:13px;margin-right:4px}
  .j50-trend-hover-tip{top:12px;min-width:132px;padding:10px 12px;border-radius:8px;font-size:14px;line-height:1.35;box-shadow:0 4px 14px rgba(31,42,52,.16)}
  .j50-trend-hover-tip strong{font-size:14px;margin-bottom:4px}
  .j50-trend-hover-tip span{font-size:16px;line-height:1.3}
  .j50-trend-hover-tip small{margin-top:4px;font-size:12px;line-height:1.3}
  .j50-weekly-cal-note{margin-top:2px;font-size:12px;line-height:1.4}
}
@media (max-width:390px){
  .j50-trend-title{display:block}
  .j50-trend-title span{display:block;margin-top:3px;text-align:left}
  .j50-trend-summary{font-size:12px}
  .j50-trend-range button{font-size:13px;padding-left:5px;padding-right:5px}
}

/* v2.3.93 compact weekday/month key */
.j50-trend-month{font-size:11px;font-weight:800;letter-spacing:.08em;fill:#7b8792}
@media(max-width:700px){.j50-trend-month{font-size:16px}.j50-trend-weekday{font-size:18px}}


/* v2.3.94 — calendar-aligned 30-day axis and daily workout/rest strip */
.j50-day-status.is-workout{fill:#c93b3b}
.j50-day-status.is-rest{fill:#5ca66b}
.j50-trend-weekday{font-size:11px;font-weight:800}
@media(max-width:700px){.j50-trend-weekday{font-size:15px}.j50-trend-month{font-size:14px}}


/* v2.3.95 — hand-drawn workout streak callouts */
.j50-streak-callout{color:#c93b3b;pointer-events:none}
.j50-streak-label{fill:currentColor;font-family:"Segoe Print","Bradley Hand","Comic Sans MS",cursive;font-size:11px;font-weight:700}
@media(max-width:700px){.j50-streak-label{font-size:15px}}

/* v2.4.0 — Workout Trends high-tech visual system */
.j50-workout-trends-panel{
  background:radial-gradient(circle at 15% 0%,rgba(36,106,170,.14),transparent 32%),linear-gradient(145deg,#0b1422 0%,#0d1828 48%,#09111d 100%);
  border:1px solid rgba(112,167,218,.16);border-radius:16px;box-shadow:0 18px 42px rgba(3,10,20,.22),inset 0 1px 0 rgba(255,255,255,.025);color:#eef7ff;
}
.j50-workout-trends-head{border-bottom:1px solid rgba(115,159,199,.12)}
.j50-workout-trends-head h3{color:#f5f9ff!important;text-shadow:0 0 18px rgba(86,170,255,.12)}
.j50-trend-range{background:rgba(17,31,49,.82);border:1px solid rgba(113,153,190,.18);box-shadow:inset 0 1px 8px rgba(0,0,0,.22)}
.j50-trend-range button{color:#8ea2ba}
.j50-trend-range button:hover{color:#dcecff;background:rgba(63,112,158,.14)}
.j50-trend-range button.is-active{background:linear-gradient(180deg,#275d8e,#17446d);color:#fff;box-shadow:0 0 0 1px rgba(91,173,255,.58),0 0 18px rgba(44,139,255,.30),inset 0 1px 0 rgba(255,255,255,.14)}
.j50-trend-range-status{color:#8fa8c2}
.j50-trend-card,.j50-trend-card:first-child{background:linear-gradient(180deg,rgba(14,26,42,.94),rgba(9,18,31,.96));border-color:rgba(102,151,194,.16);box-shadow:0 10px 26px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.025)}
.j50-trend-title strong{color:#f1f7ff}.j50-trend-title span{color:#7f9ab5}.j50-trend-summary{color:#8fa7be}.j50-trend-summary b{color:#4d6680}
.j50-trend-grid{stroke:#26394e;stroke-width:1;stroke-dasharray:3 5;opacity:.72}
.j50-trend-axis{fill:#8299b1}.j50-trend-month{fill:#718ba7}.j50-trend-weekday{fill:#a9bbcd}
.j50-trend-area{fill:url(#j50-area-primary);pointer-events:none}.j50-trend-area.is-secondary{fill:url(#j50-area-secondary)}
.j50-trend-line{stroke:url(#j50-line-primary);stroke-width:4.75;filter:drop-shadow(0 0 5px rgba(32,184,255,.55));vector-effect:non-scaling-stroke}
.j50-trend-line.is-secondary{stroke:url(#j50-line-secondary);stroke-width:4.75;filter:drop-shadow(0 0 5px rgba(255,77,141,.42))}
.j50-trend-dot{fill:#dffaff;stroke:#32caff;stroke-width:2.5;filter:drop-shadow(0 0 6px rgba(37,203,255,.95))}.j50-trend-dot.is-secondary{fill:#fff0f6;stroke:#ff5d96;filter:drop-shadow(0 0 6px rgba(255,77,141,.9))}
.j50-trend-regression{stroke:#5ea8ff;stroke-width:1.7;stroke-dasharray:3 7;opacity:.52}.j50-trend-regression.is-secondary{stroke:#ff789f;opacity:.38}
.j50-trend-median{stroke:#69aef8;stroke-width:1.5;stroke-dasharray:7 6;opacity:.68}.j50-trend-median.is-secondary{stroke:#ff789f;opacity:.58}
.j50-trend-median-badge rect{fill:rgba(10,21,35,.93);stroke:rgba(88,169,245,.38);opacity:1}.j50-trend-median-badge text{fill:#a9d6ff}.j50-trend-median-badge.is-secondary rect{stroke:rgba(255,104,150,.36)}.j50-trend-median-badge.is-secondary text{fill:#ffafc7}
.j50-trend-legend{color:#8fa7be}.j50-trend-legend i{background:#35c7ff;box-shadow:0 0 6px rgba(53,199,255,.5)}.j50-trend-legend .max i{background:#ff5d96;box-shadow:0 0 6px rgba(255,93,150,.45)}.j50-trend-legend .trend i{border-color:#7890aa;box-shadow:none}
.j50-trend-crosshair{stroke:#72c7ff;stroke-width:1.2;stroke-dasharray:4 5;opacity:.75}.j50-trend-crosshair-dot{fill:#f6fdff;stroke:#35caff;filter:drop-shadow(0 0 7px rgba(53,202,255,.95))}.j50-trend-crosshair-dot.is-secondary{stroke:#ff5d96;filter:drop-shadow(0 0 7px rgba(255,93,150,.9))}
.j50-trend-hover-tip{border:1px solid rgba(92,173,244,.30);background:rgba(8,18,31,.95);box-shadow:0 10px 28px rgba(0,0,0,.42),0 0 18px rgba(37,145,235,.12);color:#dcecff;backdrop-filter:blur(8px)}
.j50-trend-hover-tip strong{color:#fff}.j50-trend-hover-tip span{color:#45d2ff}.j50-trend-hover-tip span.is-secondary{color:#ff729f}.j50-trend-hover-tip small{color:#89a2bb}
.j50-day-status{opacity:.95}.j50-day-status.is-workout{fill:#ff405b;filter:drop-shadow(0 0 4px rgba(255,64,91,.55))}.j50-day-status.is-rest{fill:#39cf91;filter:drop-shadow(0 0 3px rgba(57,207,145,.34))}
.j50-streak-label{fill:#ff6378!important;font-weight:850!important;filter:drop-shadow(0 0 5px rgba(255,64,91,.34))}
.j50-weekly-cal-bar{fill:#29bfff;filter:drop-shadow(0 0 5px rgba(41,191,255,.34));opacity:.86}.j50-weekly-cal-bar:hover,.j50-weekly-cal-bar.is-tracked{fill:#53d5ff;opacity:1;filter:drop-shadow(0 0 9px rgba(65,207,255,.65))}.j50-weekly-cal-bar.is-incomplete{fill:#8b5cff;stroke:#b49aff;stroke-width:2;stroke-dasharray:5 4}.j50-weekly-cal-note{color:#728ca6}
.j50-trend-empty{color:#8099b2}
@media(max-width:700px){
 .j50-workout-trends-panel{border-radius:12px}.j50-trend-card,.j50-trend-card:first-child{border-radius:10px}
 .j50-trend-line,.j50-trend-line.is-secondary{stroke-width:4.5}
 .j50-trend-axis,.j50-trend-axis-x,.j50-trend-axis-y{fill:#9db1c5}
 .j50-trend-hover-tip{backdrop-filter:none}
}


/* v2.4.1 — 30-minute duration scale, external median labels, neon chart titles */
.j50-trend-title strong{
  font-family:"Rajdhani","Eurostile","Arial Narrow",system-ui,sans-serif;
  font-size:18px;
  font-weight:800;
  letter-spacing:.075em;
  text-transform:uppercase;
  color:#dff8ff;
  text-shadow:0 0 5px rgba(69,210,255,.78),0 0 14px rgba(67,139,255,.48),0 0 26px rgba(133,72,255,.22);
}
.j50-trend-median-leader{fill:none;stroke:#69aef8;stroke-width:1.2;stroke-dasharray:3 3;opacity:.65}
.j50-trend-median-leader.is-secondary{stroke:#ff789f;opacity:.58}
.j50-trend-median-badge rect{fill:rgba(9,19,33,.96);stroke-width:1}
.j50-trend-median-badge text{font-size:10px;font-weight:800;letter-spacing:.015em}
@media(max-width:700px){
 .j50-trend-title strong{font-size:18px;letter-spacing:.06em}
 .j50-trend-median-badge text{font-size:11px}
}

/* v2.4.4 — keep workout streaks visible on 90-day and All Time trend ranges */
.j50-streak-band{stroke:#ff6378;stroke-width:5;stroke-linecap:round;filter:drop-shadow(0 0 5px rgba(255,64,91,.34))}
.j50-streak-callout-long .j50-streak-label{font-size:10px}
@media(max-width:700px){.j50-streak-callout-long .j50-streak-label{font-size:13px}.j50-streak-band{stroke-width:6}}

/* v2.5.0 — mobile-first Fitness dashboard redesign */
.j50-fitness{--fit-bg:#090e13;--fit-card:#151b21;--fit-card-2:#11171d;--fit-line:#252d35;--fit-text:#f5f7f9;--fit-muted:#a8b0b9;--fit-red:#ff4057;--fit-orange:#ff783e;--fit-green:#53df9a;max-width:980px;margin:0 auto;padding:0 14px 32px;background:radial-gradient(circle at 82% 3%,rgba(148,13,28,.12),transparent 24%),linear-gradient(180deg,#0a0f14,#080c10 62%,#070a0d);color:var(--fit-text);border-radius:28px;overflow:hidden;box-shadow:0 26px 80px rgba(0,0,0,.3)}
.j50-fitness *{box-sizing:border-box}.j50-fitness-hero{position:relative;min-height:205px;padding:38px 24px 24px;display:flex;align-items:flex-start;overflow:hidden}.j50-fitness-hero-copy{position:relative;z-index:3}.j50-fitness-hero h2{margin:0!important;color:#fff!important;font-size:50px!important;line-height:.98!important;letter-spacing:-.035em!important;font-weight:800!important}.j50-fitness-title-rule{display:block;width:42px;height:5px;border-radius:6px;background:var(--fit-red);margin:14px 0 8px;box-shadow:0 0 12px rgba(255,64,87,.4)}.j50-fitness-hero p{margin:0!important;color:#aeb7c1!important;font-size:19px!important}.j50-fitness-hero-art{position:absolute;inset:0 0 0 42%;pointer-events:none}.j50-fitness-sun{position:absolute;width:160px;height:160px;right:54px;top:5px;border-radius:50%;background:radial-gradient(circle at 42% 42%,#ab1425 0 35%,#70101b 36% 55%,transparent 56%),conic-gradient(from 12deg,transparent 0 4%,#971423 5% 8%,transparent 9% 14%,#8d1420 15% 19%,transparent 20% 100%);filter:drop-shadow(0 0 26px rgba(180,15,34,.25));opacity:.9}.j50-fitness-karate{position:absolute;right:12px;top:20px;width:290px;height:auto;color:#aab0b5;opacity:.52;filter:drop-shadow(0 10px 18px #000)}
.j50-fitness-kata-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 25px}.j50-fitness-kata-card{min-height:112px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;padding:16px;border:1px solid #252d34;border-radius:18px;background:linear-gradient(145deg,#181e24,#12181e);box-shadow:inset 0 1px rgba(255,255,255,.025),0 10px 26px rgba(0,0,0,.16)}.j50-fitness-icon{width:49px;height:49px;border-radius:50%;display:inline-grid;place-items:center;font-size:24px;font-style:normal;font-weight:800;flex:0 0 49px}.j50-icon-red{color:#ff5065;background:rgba(186,38,54,.24)}.j50-icon-pink{color:#ff7788;background:rgba(185,50,70,.22)}.j50-icon-orange{color:#ff8245;background:rgba(170,81,28,.20)}.j50-icon-blue{color:#65baff;background:rgba(36,102,164,.25)}.j50-icon-purple{color:#9c77ff;background:rgba(101,67,174,.26)}.j50-fitness-kata-copy strong{display:block;font-size:15px;color:#fff}.j50-fitness-kata-copy>div:not(.j50-fitness-progress){display:flex;align-items:baseline;gap:6px;margin-top:3px}.j50-fitness-kata-copy b{font-size:27px;line-height:1;color:#fff}.j50-fitness-kata-copy span{font-size:13px;color:#aeb6be}.j50-fitness-progress{height:6px;margin-top:10px;background:#3a424b;border-radius:10px;overflow:hidden}.j50-fitness-progress i{display:block;height:100%;border-radius:10px;background:linear-gradient(90deg,#ff4057,#ff7b88);box-shadow:0 0 9px rgba(255,64,87,.34)}.j50-fitness-percent{align-self:end;color:#b8c0c8;font-size:12px;padding-bottom:2px}
.j50-fitness-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 2px 12px}.j50-fitness-section-head h3{margin:0!important;color:#fff!important;font-size:25px!important;line-height:1.15!important;letter-spacing:-.02em!important}.j50-fitness-section-head>span{color:#aab2ba;font-size:14px}.j50-fitness-metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:27px}.j50-fitness-metric{position:relative;min-height:88px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:13px;padding:12px 15px;border:1px solid #242c33;border-radius:15px;background:linear-gradient(145deg,#171d23,#11171c);box-shadow:0 8px 20px rgba(0,0,0,.14)}.j50-fitness-metric small{display:block;color:#adb5bd;font-size:13px;line-height:1.2;margin-bottom:3px}.j50-fitness-metric strong{display:block;color:#fff;font-size:23px;line-height:1.12;font-weight:800}.j50-fitness-metric strong em{font-size:13px;font-weight:500;color:#c6cbd1;font-style:normal}.j50-fitness-record{position:absolute;right:14px;top:18px;color:#ffca4c;font-size:18px}.j50-fitness-streak-card{grid-column:1/-1;grid-template-columns:auto 1fr;padding:15px 17px;min-height:118px}.j50-fitness-streak-copy{min-width:0}.j50-fitness-streak-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.j50-fitness-streak-top .j50-fitness-record{position:static;flex:0 0 auto;margin-top:2px}.j50-fitness-streak-progress{height:9px;margin-top:11px;background:#343d46;border-radius:999px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.45)}.j50-fitness-streak-progress i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#ff6b3d,#ff4057);box-shadow:0 0 10px rgba(255,64,87,.35)}.j50-fitness-streak-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px;color:#d5dbe0;font-size:12px}.j50-fitness-streak-bottom b{color:#fff}.j50-fitness-streak-bottom span:last-child{font-weight:800;color:#ff7180}.j50-fitness-streak-helper{display:block!important;margin-top:4px!important;margin-bottom:0!important;color:#86919a!important;font-size:11px!important}
.j50-fitness-performance{padding:0!important;margin:0!important;background:none!important;border:0!important;box-shadow:none!important}.j50-fitness-performance-head{margin-bottom:4px}.j50-fitness-range{appearance:none;border:0;background:transparent;color:#c2c8ce;font-size:14px;padding:7px 24px 7px 8px;background-image:linear-gradient(45deg,transparent 50%,#abb3bb 50%),linear-gradient(135deg,#abb3bb 50%,transparent 50%);background-position:calc(100% - 11px) 50%,calc(100% - 7px) 50%;background-size:4px 4px,4px 4px;background-repeat:no-repeat}.j50-trend-range-status{display:block;color:#737e88;font-size:11px;margin:0 2px 9px;text-align:right}.j50-fitness-charts{display:grid;gap:12px;padding:0!important}.j50-fitness-charts .j50-trend-card{padding:15px 14px 12px!important;border-radius:17px!important;border:1px solid #252d34!important;background:linear-gradient(145deg,#171d23,#10161b)!important;box-shadow:0 10px 24px rgba(0,0,0,.14)!important}.j50-trend-card-head{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;margin-bottom:4px}.j50-fitness-charts .j50-trend-title{display:block!important;margin:0!important}.j50-fitness-charts .j50-trend-title strong{display:block;color:#fff!important;text-shadow:none!important;text-transform:none!important;letter-spacing:0!important;font-family:inherit!important;font-size:18px!important;line-height:1.15}.j50-fitness-charts .j50-trend-title span{display:block;color:#a5aeb7!important;font-size:12px!important;margin-top:3px;letter-spacing:0!important;text-align:left!important}.j50-fitness-chart-kpi{text-align:right;min-width:120px}.j50-fitness-chart-kpi strong{font-size:19px;color:#fff}.j50-fitness-chart-kpi em{font-style:normal;font-size:11px;color:#c1c7cd}.j50-fitness-chart-kpi span{display:inline-block;margin-top:4px;font-size:11px;font-weight:800;color:var(--fit-green)}.j50-fitness-chart-kpi small{font-size:9px;color:#8e98a1}.j50-fitness-charts .j50-trend-chart{height:auto!important;min-height:180px;margin:0!important}.j50-fitness-charts svg{display:block;width:100%;height:auto;overflow:visible}.j50-fit-grid{stroke:#313941;stroke-width:1;stroke-dasharray:4 4;opacity:.6}.j50-fit-axis{fill:#a5adb6;font-size:11px;font-weight:600}.j50-fit-axis-x{font-size:10px}.j50-fit-bar{fill:url(#none);fill:#ff4d5f;filter:drop-shadow(0 0 4px rgba(255,77,95,.22))}.j50-trend-card:last-child .j50-fit-bar{fill:#ff783e;filter:drop-shadow(0 0 4px rgba(255,120,62,.22))}.j50-fit-line{fill:none;stroke:#ff5063;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px rgba(255,80,99,.35))}.j50-fit-area{fill:url(#j50fitarea)}.j50-fit-dot{fill:#ff5063;stroke:#ff5063}.j50-trend-empty,.j50-fitness-no-data{padding:28px;text-align:center;color:#929da7;border:1px solid #242c33;border-radius:15px;background:#11171c}.j50-training-plan-page{max-width:1180px;margin:0 auto}.j50-training-plan-page .j50-jsd-plan-panel{margin-top:0}
@media(max-width:700px){.j50-fitness{padding:0 10px 24px;border-radius:0}.j50-fitness-hero{min-height:164px;padding:28px 13px 20px}.j50-fitness-hero h2{font-size:42px!important}.j50-fitness-hero p{font-size:15px!important}.j50-fitness-hero-art{left:43%}.j50-fitness-sun{width:125px;height:125px;right:17px}.j50-fitness-karate{width:220px;right:-8px;top:24px}.j50-fitness-kata-row{gap:8px;margin-bottom:22px}.j50-fitness-kata-card{min-height:102px;padding:12px 10px;gap:9px;border-radius:14px}.j50-fitness-kata-card .j50-fitness-icon{width:40px;height:40px;flex-basis:40px;font-size:20px}.j50-fitness-kata-copy strong{font-size:12px}.j50-fitness-kata-copy b{font-size:23px}.j50-fitness-kata-copy span,.j50-fitness-percent{font-size:10px}.j50-fitness-section-head h3{font-size:22px!important}.j50-fitness-metrics{gap:8px}.j50-fitness-streak-card{min-height:112px;padding:12px 11px}.j50-fitness-streak-progress{height:8px}.j50-fitness-streak-bottom{font-size:11px}.j50-fitness-streak-helper{font-size:10px!important}.j50-fitness-metric{min-height:82px;padding:10px;gap:9px}.j50-fitness-metric .j50-fitness-icon{width:40px;height:40px;flex-basis:40px;font-size:19px}.j50-fitness-metric small{font-size:11px}.j50-fitness-metric strong{font-size:19px}.j50-fitness-metric strong em{font-size:11px}.j50-trend-card-head{grid-template-columns:auto 1fr;gap:9px}.j50-fitness-chart-kpi{grid-column:2;text-align:left;min-width:0;margin-top:-3px}.j50-fitness-chart-kpi strong{font-size:16px}.j50-fitness-chart-kpi span{margin-left:8px}.j50-fitness-charts .j50-trend-card{padding:13px 9px 8px!important}.j50-fitness-charts .j50-trend-title strong{font-size:16px!important}.j50-fitness-charts .j50-trend-title span{font-size:10px!important}.j50-fitness-charts .j50-trend-chart{min-height:150px}.j50-fit-axis{font-size:13px}.j50-fit-axis-x{font-size:12px}}
@media(max-width:390px){.j50-fitness-hero-art{opacity:.74}.j50-fitness-streak-card{grid-template-columns:auto 1fr!important}.j50-fitness-streak-card .j50-fitness-icon{width:34px;height:34px}.j50-fitness-streak-bottom{align-items:flex-start}.j50-fitness-streak-helper{line-height:1.3}.j50-fitness-kata-card{grid-template-columns:auto 1fr}.j50-fitness-percent{display:none}.j50-fitness-metric{grid-template-columns:1fr;gap:6px}.j50-fitness-metric .j50-fitness-icon{width:34px;height:34px}.j50-fitness-metric strong{font-size:18px}.j50-fitness-record{right:10px;top:10px}}
