/* Training calendar v3 — a cold, compact training field notebook. */
:root {
  --training-accent: #8ea7c7;
  --training-cardio: #84a8c2;
  --training-strength: #b59468;
  --training-recovery: #8fa99a;
  --training-rest: #7e8792;
}

html[data-theme="chat"] {
  --training-accent: var(--blue);
  --training-cardio: #72a6c9;
  --training-strength: #ad865a;
  --training-recovery: #71a080;
  --training-rest: #9ba4ae;
}

html[data-theme="ipod"] {
  --training-accent: #5d6872;
  --training-cardio: #738a9c;
  --training-strength: #9c7a4f;
  --training-recovery: #758c7d;
  --training-rest: #90979e;
}

[data-workspace-view="course"],
#fixedCoursePlan,
.movement-plan-grid .decision-card:nth-child(2) { display: none !important; }

.movement-plan-grid { grid-template-columns: 1fr !important; }

.training-calendar-v3 {
  position: relative;
  overflow: hidden;
  padding: 0 !important;
  border-color: color-mix(in srgb,var(--training-accent) 35%,var(--line)) !important;
}

.training-calendar-v3::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg,var(--training-cardio),var(--training-strength),var(--training-recovery));
}

.training-calendar-head {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  gap: 18px;
  padding: 26px 26px 20px;
  border-bottom: 1px solid var(--line);
}

.training-calendar-head h2 { margin: 5px 0 7px; font-size: clamp(28px,3.4vw,44px); }
.training-calendar-head p { max-width: 760px; margin: 0; color: var(--muted); line-height: 1.75; }
.training-calendar-actions { display: flex; align-items: flex-start; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }

.training-fixed-routine {
  display: grid;
  grid-template-columns: repeat(4,minmax(0,1fr));
  gap: 1px;
  border-bottom: 1px solid var(--line);
  background: var(--line);
}

.training-routine-item {
  min-width: 0;
  background: var(--panel);
  padding: 15px 17px;
}

.training-routine-item span { display: block; color: var(--muted); font-size: 10px; letter-spacing: .05em; }
.training-routine-item strong { display: block; margin-top: 5px; font-size: 13px; line-height: 1.45; }
.training-routine-item small { display: block; margin-top: 5px; color: var(--muted); font-size: 10px; line-height: 1.45; }

.training-guide { border-bottom: 1px solid var(--line); background: color-mix(in srgb,var(--surface-soft) 64%,transparent); }
.training-guide summary { min-height: 44px; cursor: pointer; color: var(--muted); padding: 13px 24px; font-size: 11px; }
.training-guide > div { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 22px; border-top: 1px solid var(--line); padding: 15px 24px 18px; }
.training-guide p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.65; }
.training-guide b { color: var(--text); }

.training-month-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 24px 14px;
}

.training-month-nav { display: flex; align-items: center; gap: 7px; }
.training-month-nav button { width: 44px; border: 1px solid var(--line); border-radius: 12px; color: var(--text); background: var(--surface-control); cursor: pointer; }
.training-month-title { min-width: 154px; text-align: center; font-family: var(--font-cn); font-size: 21px; font-weight: 720; }
.training-month-key { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; color: var(--muted); font-size: 10px; }
.training-month-key span { display: inline-flex; align-items: center; gap: 5px; }
.training-month-key i { width: 8px; height: 8px; border-radius: 50%; background: var(--training-cardio); }
.training-month-key .strength { background: var(--training-strength); }
.training-month-key .recovery { background: var(--training-recovery); }
.training-month-key .rest { background: var(--training-rest); }

.training-calendar-wrap { overflow: hidden; padding: 0 24px 22px; }
.training-weekdays,
.training-month-grid { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); }
.training-weekdays { border: 1px solid var(--line); border-bottom: 0; border-radius: 16px 16px 0 0; overflow: hidden; }
.training-weekdays span { min-width: 0; border-right: 1px solid var(--line); color: var(--muted); padding: 9px; text-align: center; font-size: 10px; letter-spacing: .08em; }
.training-weekdays span:last-child { border-right: 0; }
.training-month-grid { border-top: 1px solid var(--line); border-left: 1px solid var(--line); }

.training-day-cell {
  position: relative;
  min-width: 0;
  min-height: 145px;
  border: 0;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  color: var(--text);
  background: color-mix(in srgb,var(--panel) 96%,transparent);
  padding: 10px 11px 12px;
  text-align: left;
  cursor: pointer;
  transition: background .18s ease,box-shadow .18s ease;
}

.training-day-cell:hover { z-index: 2; background: var(--panel-strong); box-shadow: inset 0 0 0 1px var(--training-accent); }
.training-day-cell:focus-visible { z-index: 3; }
.training-day-cell.is-empty { color: var(--muted); background: color-mix(in srgb,var(--surface-soft) 58%,transparent); }
.training-day-cell.is-outside { min-height: 0; pointer-events: none; background: color-mix(in srgb,var(--bg) 70%,transparent); }
.training-day-cell.is-today { box-shadow: inset 0 0 0 2px var(--training-accent); }
.training-day-cell.is-done::after { content: "✓"; position: absolute; right: 9px; top: 8px; display: grid; place-items: center; width: 19px; height: 19px; border-radius: 50%; color: #fff; background: var(--training-recovery); font-size: 11px; }
.training-day-cell.is-dragging { opacity: .42; }
.training-day-cell.is-drop-target { z-index: 4; background: color-mix(in srgb,var(--training-accent) 13%,var(--panel)); box-shadow: inset 0 0 0 2px var(--training-accent); }
.training-drag-handle { position: absolute; right: 8px; top: 35px; z-index: 3; display: grid; place-items: center; width: 25px; height: 22px; border: 1px solid color-mix(in srgb,var(--text) 14%,var(--line)); border-radius: 8px; color: var(--muted); background: color-mix(in srgb,var(--panel) 92%,transparent); font-family: Arial,sans-serif; font-size: 13px; line-height: 1; cursor: grab; user-select: none; }
.training-drag-handle:hover { border-color: var(--training-accent); color: var(--text); }
.training-drag-handle:active { cursor: grabbing; }
.training-drag-handle:focus-visible { outline: 2px solid var(--training-accent); outline-offset: 2px; }

.training-day-number { display: block; margin-bottom: 9px; font-family: var(--font-latin); font-size: 13px; font-variant-numeric: tabular-nums; }
.training-day-label { display: block; overflow: hidden; font-size: 12px; font-weight: 720; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.training-day-cell:not(.is-empty) .training-day-label { padding-right: 30px; }
.training-day-extra { display: -webkit-box; overflow: hidden; margin-top: 5px; color: var(--muted); font-size: 10px; line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.training-day-rowing { display: inline-flex; margin-top: 7px; border: 1px solid color-mix(in srgb,var(--training-strength) 35%,var(--line)); border-radius: 999px; color: var(--training-strength); background: color-mix(in srgb,var(--training-strength) 9%,transparent); padding: 3px 7px; font-size: 9px; }
.training-day-dots { position: absolute; left: 10px; right: 10px; bottom: 9px; display: flex; gap: 4px; }
.training-day-dots i { width: 22px; height: 3px; border-radius: 999px; background: var(--training-cardio); }
.training-day-dots i.strength { background: var(--training-strength); }
.training-day-dots i.recovery { background: var(--training-recovery); }
.training-day-dots i.rest { background: var(--training-rest); }

.training-calendar-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  border-top: 1px solid var(--line);
  padding: 17px 24px 21px;
}
.training-calendar-footer p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
.training-calendar-footer div { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }

.training-edit-dialog {
  width: min(620px,calc(100% - 24px));
  max-height: min(820px,calc(100dvh - 24px));
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 22px;
  color: var(--text);
  background: var(--panel-strong);
  box-shadow: 0 28px 80px rgba(0,0,0,.35);
  padding: 0;
}
.training-edit-dialog::backdrop { background: rgba(4,7,11,.68); backdrop-filter: blur(6px); }
.training-edit-form { max-height: inherit; overflow: auto; overscroll-behavior: contain; padding: 22px; }
.training-edit-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.training-edit-head h2 { margin: 4px 0 0; font-size: 26px; }
.training-edit-close { width: 44px; border: 0; border-radius: 50%; color: var(--muted); background: var(--surface-control); cursor: pointer; }
.training-edit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 13px; }
.training-edit-grid label { display: grid; gap: 6px; color: var(--muted); font-size: 11px; }
.training-edit-grid label.wide { grid-column: 1 / -1; }
.training-edit-grid input,
.training-edit-grid select,
.training-edit-grid textarea { width: 100%; border: 1px solid var(--line); border-radius: 12px; color: var(--text); background: var(--surface-control); padding: 11px 12px; font: inherit; }
.training-edit-grid textarea { min-height: 82px; resize: vertical; }
.training-fixed-checks { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; grid-column: 1 / -1; border: 1px solid var(--line); border-radius: 14px; padding: 11px; }
.training-fixed-checks legend { color: var(--muted); padding: 0 5px; font-size: 10px; }
.training-fixed-checks label { display: flex; align-items: center; gap: 8px; min-height: 38px; border-radius: 9px; background: var(--surface-soft); padding: 7px 9px; color: var(--text); }
.training-fixed-checks input { flex: 0 0 auto; width: 18px; height: 18px; min-height: 18px !important; margin: 0; accent-color: var(--training-accent); }
.training-edit-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 18px; }
.training-edit-actions div { display: flex; gap: 8px; }
.training-delete { border: 1px solid color-mix(in srgb,var(--rose) 40%,var(--line)); border-radius: 11px; color: var(--rose); background: transparent; padding: 9px 12px; cursor: pointer; }
.training-reschedule { display: grid; grid-template-columns: minmax(150px,.8fr) minmax(300px,1.5fr); align-items: center; gap: 14px; margin: 0 0 16px; border: 1px solid color-mix(in srgb,var(--training-accent) 30%,var(--line)); border-radius: 15px; background: color-mix(in srgb,var(--training-accent) 6%,var(--surface-soft)); padding: 12px; }
.training-reschedule > div:first-child { display: grid; gap: 3px; }
.training-reschedule strong { font-size: 12px; }
.training-reschedule small { color: var(--muted); font-size: 9px; line-height: 1.45; }
.training-reschedule > div:last-child { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 6px; }
.training-reschedule button { min-height: 36px; border: 1px solid var(--line); border-radius: 10px; color: var(--text); background: var(--surface-control); padding: 6px 7px; font-size: 10px; cursor: pointer; }
.training-reschedule button:hover { border-color: var(--training-accent); background: var(--panel); }
.training-reschedule button:focus-visible { outline: 2px solid var(--training-accent); outline-offset: 2px; }

.momo-motion-active { position: fixed; z-index: 68; left: 0; top: 0; width: 190px; height: 176px; display: block; contain: layout paint; cursor: pointer; user-select: none; border: 0; background: transparent; box-shadow: none; transform: translate3d(var(--momo-x,calc(100vw - 214px)),var(--momo-y,calc(100vh - 194px)),0); transition: transform var(--momo-travel-time,0ms) linear; will-change: transform; }
body.momo-roaming-active .hero { grid-template-columns: minmax(0,1fr); }
body.momo-roaming-active .hero > div:first-child { grid-column: 1; }
.momo-motion-active:focus { outline: none; }
.momo-motion-active:focus-visible { border-radius: 18px; outline: 2px solid var(--training-accent); outline-offset: 5px; }
.momo-motion-active img.momo-pet-frame { position: absolute; right: 7px; bottom: 0; width: 176px; height: 142px; margin: 0; object-fit: contain !important; opacity: 0; filter: none; transform: translateX(var(--momo-frame-x,0%)) scaleX(var(--momo-facing,1)); transform-origin: 50% 100%; }
.momo-motion-active img.momo-pet-frame.is-visible { opacity: 1; }
.momo-motion-active img.momo-pet-frame.momo-crop-top { clip-path: inset(12% 0 0); }
.momo-motion-active figcaption { position: relative; z-index: 2; }
.momo-motion-active .momo-atlas-frame { position: absolute; right: 15px; bottom: 0; display: block; width: 160px; height: 173px; background-image: url('/assets/momo-pet/spritesheet.webp?v=3'); background-repeat: no-repeat; background-size: 800% 900%; }
.momo-codex-bubble {
  position: fixed;
  z-index: 69;
  left: 0;
  top: 0;
  display: grid;
  width: 190px;
  box-sizing: border-box;
  border: 1px solid color-mix(in srgb,var(--text) 20%,var(--line));
  border-radius: 16px 16px 16px 5px;
  color: var(--text);
  background: color-mix(in srgb,var(--panel) 94%,transparent);
  box-shadow: 0 12px 34px rgba(0,0,0,.16);
  padding: 10px 12px 9px;
  opacity: 0;
  pointer-events: none;
  text-decoration: none;
  transform: translate3d(var(--momo-bubble-x,calc(100vw - 214px)),calc(var(--momo-y,calc(100vh - 168px)) - 66px),0) scale(.96);
  transform-origin: 18px 100%;
  transition: transform var(--momo-travel-time,0ms) linear, opacity 180ms ease;
  will-change: transform;
}
.momo-codex-bubble::after {
  content: "";
  position: absolute;
  left: 16px;
  bottom: -7px;
  width: 12px;
  height: 12px;
  border-right: 1px solid color-mix(in srgb,var(--text) 20%,var(--line));
  border-bottom: 1px solid color-mix(in srgb,var(--text) 20%,var(--line));
  background: color-mix(in srgb,var(--panel) 94%,transparent);
  transform: rotate(45deg);
}
.momo-codex-bubble.is-visible { opacity: 1; pointer-events: auto; }
.momo-codex-bubble span { overflow: hidden; color: var(--muted); font-size: 10px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.momo-codex-bubble strong { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 3px; font-size: 12px; line-height: 1.25; }
.momo-codex-bubble strong i { color: var(--training-accent); font-style: normal; }
.momo-codex-bubble:hover { border-color: color-mix(in srgb,var(--training-accent) 55%,var(--line)); background: var(--panel); }
.momo-codex-bubble:focus-visible { outline: 2px solid var(--training-accent); outline-offset: 3px; }

.training-today-ribbon {
  display: grid;
  grid-template-columns: auto minmax(210px,1fr) minmax(300px,auto) auto;
  align-items: center;
  gap: 18px;
  margin: 0 0 18px;
  border: 1px solid color-mix(in srgb,var(--training-accent) 36%,var(--line));
  border-radius: 18px;
  background: color-mix(in srgb,var(--panel) 93%,transparent);
  box-shadow: var(--shadow-soft);
  padding: 14px 16px;
}
body.workspace-routed .training-today-ribbon { display: none; }
body.workspace-routed[data-active-view="overview"] .training-today-ribbon { display: grid; }
.training-today-date { display: grid; place-items: center; width: 54px; height: 54px; border: 1px solid var(--line); border-radius: 15px; background: var(--surface-soft); }
.training-today-date strong { font-family: var(--font-latin); font-size: 22px; line-height: 1; }
.training-today-date span { margin-top: 3px; color: var(--muted); font-size: 9px; letter-spacing: .08em; }
.training-today-copy { min-width: 0; }
.training-today-copy small { color: var(--muted); font-family: var(--font-latin); font-size: 9px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.training-today-copy h2 { overflow: hidden; margin: 3px 0 2px; font-size: 17px; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; }
.training-today-copy p { overflow: hidden; margin: 0; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.training-routine-buttons { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.training-routine-button { min-height: 34px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); background: var(--surface-control); padding: 6px 10px; font-size: 10px; cursor: pointer; }
.training-routine-button::before { content: "○"; margin-right: 5px; }
.training-routine-button.is-done { border-color: color-mix(in srgb,var(--training-recovery) 52%,var(--line)); color: var(--text); background: color-mix(in srgb,var(--training-recovery) 15%,var(--surface-control)); }
.training-routine-button.is-done::before { content: "✓"; color: var(--training-recovery); }
.training-today-actions { display: grid; gap: 6px; min-width: 112px; }
.training-today-actions .button,.training-today-actions .resource-ghost { width: 100%; min-height: 36px; display: flex; align-items: center; justify-content: center; box-sizing: border-box; margin: 0; padding: 7px 10px; text-align: center; font-size: 10px; line-height: 1.2; }
.training-today-actions .is-done { color: var(--text); background: color-mix(in srgb,var(--training-recovery) 18%,var(--surface-control)); }

html[data-reduced-motion="true"] .momo-motion-active img.momo-pet-frame { transition: none; }
html[data-reduced-motion="true"] .momo-motion-active { transition: none; }
html[data-reduced-motion="true"] .momo-codex-bubble { transition: opacity 180ms ease; }
@media (prefers-reduced-motion: reduce) { .momo-motion-active,.momo-motion-active img.momo-pet-frame,.momo-codex-bubble { transition: none; } }

@media (max-width: 820px) {
  .training-today-ribbon,
  body.workspace-routed[data-active-view="overview"] .training-today-ribbon { grid-template-columns: auto minmax(0,1fr); gap: 11px; padding: 13px; }
  .training-today-date { width: 48px; height: 48px; }
  .training-routine-buttons { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; justify-content: stretch; }
  .training-routine-button { text-align: left; }
  .training-today-actions { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; }
  .hero-momo.momo-motion-active { width: 104px; height: 100px; }
  .hero-momo.momo-motion-active img.momo-pet-frame { right: 4px; width: 96px; height: 80px; }
  .hero-momo.momo-motion-active .momo-atlas-frame { right: 7px; width: 90px; height: 98px; }
  .momo-codex-bubble { width: 164px; padding: 9px 10px 8px; transform: translate3d(var(--momo-bubble-x,calc(100vw - 176px)),calc(var(--momo-y,calc(100vh - 166px)) - 62px),0) scale(.96); }
  .training-calendar-head { grid-template-columns: 1fr; padding: 20px 17px 16px; }
  .training-calendar-actions { justify-content: flex-start; }
  .training-fixed-routine { grid-template-columns: 1fr 1fr; }
  .training-guide > div { grid-template-columns: 1fr; padding-inline: 15px; }
  .training-routine-item { padding: 12px 13px; }
  .training-month-toolbar { align-items: flex-start; flex-direction: column; padding: 15px 12px 11px; }
  .training-month-key { justify-content: flex-start; }
  .training-calendar-wrap { padding: 0 8px 16px; }
  .training-weekdays span { padding: 7px 2px; font-size: 9px; }
  .training-day-cell { min-height: 72px; padding: 7px 6px; }
  .training-day-number { margin-bottom: 5px; font-size: 11px; }
  .training-day-label { font-size: 0; }
  .training-day-cell:not(.is-empty) .training-day-label { padding-right: 0; }
  .training-day-label::first-letter { font-size: 0; }
  .training-day-extra,
  .training-day-rowing { display: none; }
  .training-day-dots { left: 6px; right: 6px; bottom: 7px; gap: 2px; }
  .training-day-dots i { width: 8px; height: 3px; }
  .training-day-cell.is-done::after { right: 4px; top: 4px; width: 16px; height: 16px; font-size: 9px; }
  .training-drag-handle { right: 4px; top: 28px; width: 22px; height: 19px; border-radius: 7px; font-size: 11px; }
  .training-calendar-footer { align-items: flex-start; flex-direction: column; padding: 15px 14px 18px; }
  .training-calendar-footer div { justify-content: flex-start; }
  .training-edit-dialog { width: 100%; max-width: none; max-height: 88dvh; margin: auto 0 0; border-radius: 22px 22px 0 0; }
  .training-edit-form { padding: 18px 16px calc(20px + env(safe-area-inset-bottom)); }
  .training-edit-grid { grid-template-columns: 1fr; }
  .training-reschedule { grid-template-columns: 1fr; }
  .training-reschedule > div:last-child { grid-template-columns: 1fr 1fr; }
  .training-edit-grid label.wide { grid-column: auto; }
  .training-fixed-checks { grid-column: auto; grid-template-columns: 1fr; }
  .training-edit-actions { align-items: stretch; flex-direction: column-reverse; }
  .training-edit-actions div { display: grid; grid-template-columns: 1fr 1fr; }
}
