 /* ==========================================
   COACH APP 2.0
   ESTILOS PRINCIPALES
   ========================================== */

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: Arial, Helvetica, sans-serif;
  background: #0c0e12;
  color: #ffffff;
  min-height: 100vh;
}

button,
input,
select {
  font: inherit;
}

button {
  cursor: pointer;
}

/* ==========================================
   CONTENEDOR PRINCIPAL
   ========================================== */

.app-container {
  width: 100%;
  max-width: 1100px;
  margin: 0 auto;
  padding: 20px;
}

/* ==========================================
   BARRA SUPERIOR
   ========================================== */

.top-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  margin-bottom: 25px;
  padding: 15px 18px;

  background: #181b20;
  border: 1px solid #303640;
  border-radius: 14px;
}

.top-bar strong {
  font-size: 18px;
  letter-spacing: 0.5px;
}

.top-bar__title {
  display: grid;
  justify-items: center;
  min-width: 0;
}

.lan-sync-status {
  color: #9f9fa8;
  font-size: 14px;
  font-weight: 700;
}

.lan-sync-status--synced {
  color: #70d69a;
}

.lan-sync-status--saving,
.lan-sync-status--connecting {
  color: #e8c76e;
}

.lan-sync-status--offline {
  color: #ef8585;
}

.lan-sync-status--error,
.lan-sync-status--conflict { color: #ef8585; }
.top-bar__title { gap: 6px; text-align: center; }
.top-bar .sync-retry { font-size: 11px; padding: 7px 9px; }
[hidden] { display: none !important; }

.top-bar button {
  border: none;
  background: #252b34;
  color: #ffffff;
  padding: 9px 13px;
  border-radius: 8px;
}

.top-bar button:hover {
  background: #343e4b;
}

/* ==========================================
   TARJETAS
   ========================================== */

.card {
  background: #181b20;
  border: 1px solid #303640;
  border-radius: 16px;
  padding: 22px;
  margin-bottom: 18px;
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.25);
}

.card h1 {
  margin-bottom: 10px;
}

.card h2 {
  margin-bottom: 12px;
}

.card p {
  color: #bec5cf;
  line-height: 1.5;
}

/* ==========================================
   LOGIN
   ========================================== */

.login-card {
  max-width: 430px;
  margin: 100px auto 0;
  text-align: center;
}

.login-card h1 {
  font-size: 34px;
  letter-spacing: 2px;
  margin-bottom: 8px;
}

.login-card > p {
  margin-bottom: 30px;
}

.login-card label small {
  color: #a6afbc;
  font-weight: 400;
}

.login-card .login-card__hint {
  overflow-wrap: anywhere;
  margin: -2px 0 18px;
  color: #9f9fa8;
  font-size: 13px;
  text-align: left;
}

/* ==========================================
   FORMULARIOS
   ========================================== */

.form-group {
  text-align: left;
  margin-bottom: 18px;
}

.form-group label {
  display: block;
  margin-bottom: 7px;
  font-size: 14px;
  color: #c9c9d0;
}

input,
select {
  width: 100%;
  padding: 13px 14px;
  border-radius: 9px;
  border: 1px solid #34343b;
  background: #101318;
  color: #ffffff;
  outline: none;
}

input:focus,
select:focus {
  border-color: #ffffff;
}

/* ==========================================
   BOTONES
   ========================================== */

button {
  border: none;
  border-radius: 9px;
  padding: 11px 16px;
  background: #252b34;
  color: #ffffff;
  font-weight: 700;
  transition: 0.2s ease;
}

button:hover {
  transform: translateY(-1px);
  background: #343e4b;
}

.login-card button {
  width: 100%;
  margin-top: 5px;
  padding: 14px;
}

.login-card .auth-secondary { margin: 14px 0 18px; background: transparent; border: 1px solid #34343b; font-size: 12px; }
.login-card .auth-error { color: #ff9d9d; font-size: 13px; text-align: left; margin-bottom: 12px; overflow-wrap: anywhere; }
.auth-error:empty { display: none; }
button:disabled { cursor: wait; opacity: .65; }
.athlete-access { border-top: 1px solid #34343b; margin-top: 22px; padding-top: 20px; }
.athlete-access h3 { margin-bottom: 8px; }
.athlete-access p { margin-bottom: 12px; }
#athlete-access-result label { display: block; margin: 12px 0 8px; }
#athlete-access-result input { margin-bottom: 10px; }
@media (max-width: 600px) {
  .top-bar { flex-wrap: wrap; }
  .top-bar__title { flex: 1; }
  .athlete-access button { width: 100%; }
}

/* ==========================================
   DASHBOARD
   ========================================== */

.dashboard-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
  margin-top: 20px;
}

.dashboard-grid button {
  min-height: 115px;
  background: #181b20;
  border: 1px solid #303640;
  font-size: 16px;
}

.dashboard-grid button strong {
  display: inline-block;
  margin-top: 8px;
}

.athlete-navigation {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 18px;
}

.athlete-navigation button {
  min-height: 52px;
  border: 1px solid #34343b;
  background: #181b20;
}

.athlete-navigation button.is-active {
  border-color: #83d39c;
  background: #203027;
  color: #a9e7bb;
}

.athlete-section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 16px;
}

.athlete-section-heading h2,
.athlete-section-heading p {
  margin: 0;
}

.athlete-history-entry {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 10px;
  padding: 14px;
  border: 1px solid #303640;
  background: #101318;
  text-align: left;
}

.athlete-history-entry span:first-child {
  display: grid;
  gap: 4px;
}

.athlete-history-entry small {
  color: #a6afbc;
}

@media (max-width: 520px) {
  .athlete-section-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .athlete-section-heading button,
  .athlete-history-entry {
    width: 100%;
  }
}

/* ==========================================
   LISTAS
   ========================================== */

.list-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;

  padding: 17px 0;
  border-bottom: 1px solid #303640;
}

.list-item:last-child {
  border-bottom: none;
}

.list-item strong {
  font-size: 17px;
}

.list-item small {
  color: #a6afbc;
  line-height: 1.6;
}

/* ==========================================
   EJERCICIOS
   ========================================== */

.exercise-card {
  margin-bottom: 16px;
}

.exercise-card h2 {
  margin-top: 8px;
}

.exercise-card p {
  margin: 7px 0;
}

.exercise-card button {
  margin-top: 10px;
}

.set-row--autosave {
  display: grid;
  grid-template-columns: minmax(78px, 1fr) repeat(3, minmax(58px, .65fr));
  align-items: center;
  gap: 8px;
  margin: 10px 0;
}

.set-row--autosave input {
  width: 100%;
  min-width: 0;
}

.exercise-card.exercise-card--completed {
  display: none;
}

.workout-set-status {
  grid-column: 1 / -1;
  font-size: 12px;
  color: #bec5cf;
  font-weight: 700;
  text-align: right;
}

.workout-set-status.is-saving {
  color: #e3c36c;
}

.workout-set-status.is-saved,
.workout-exercise-status.is-complete,
.workout-autosave-completion.is-complete {
  color: #83d39c;
}

.workout-set-status.is-error {
  color: #ff8888;
}

.workout-exercise-status,
.workout-autosave-completion {
  font-size: 13px;
  font-weight: 700;
}

.session-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-top: 18px;
}

.session-summary-grid > div {
  padding: 14px;
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 12px;
  background: rgba(255, 255, 255, .04);
}

.session-summary-grid small,
.session-summary-grid strong {
  display: block;
}

.session-summary-grid small {
  margin-bottom: 6px;
  color: #bec5cf;
}

.session-exercise-note {
  margin-top: 14px;
  padding: 12px;
  border-left: 3px solid #e3c36c;
  background: rgba(227, 195, 108, .08);
}

.coach-feedback-card textarea,
.coach-exercise-feedback textarea {
  width: 100%;
  margin-top: 8px;
}

.account-actions,
.evaluation-form {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
}

.account-actions button {
  width: auto;
}

.evaluation-form input {
  flex: 1 1 170px;
}

.evaluation-history,
.template-list {
  display: grid;
  gap: 10px;
  margin-top: 16px;
}

.evaluation-history article,
.template-list button {
  padding: 12px;
  border: 1px solid #34343b;
  border-radius: 10px;
  background: #1d222a;
}

.evaluation-history p {
  margin: 6px 0;
}

.template-list button {
  display: flex;
  justify-content: space-between;
  text-align: left;
}

.weekly-plan__workout label {
  display: grid;
  gap: 5px;
  margin-top: 8px;
  font-size: 12px;
}

.nutrition-target-form,
.nutrition-ingredient-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 16px 0;
}

.nutrition-calculator {
  margin: 18px 0;
  padding: 16px;
  border: 1px solid #3b3b45;
  border-radius: 14px;
  background: #171b21;
}
.nutrition-calculator__fields {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 14px 0;
}
.nutrition-calculator__fields label { display: grid; gap: 6px; }
.nutrition-calculator__fields label:last-child { grid-column: 1 / -1; }
.calorie-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 16px; }
.calorie-options article { display: grid; gap: 9px; padding: 14px; border: 1px solid #34343b; border-radius: 12px; background: #1f1f25; }
.calorie-options article.is-maintenance { border-color: #79c6a3; }
.calorie-options strong { font-size: 1.35rem; }
.calorie-options button { margin: 0; }
.nutrition-calculator__meta, .nutrition-calculator__pending { margin-top: 12px; color: #c9c9d0; }

.nutrition-target-form label {
  display: grid;
  gap: 6px;
}

.nutrition-target-form button,
.nutrition-ingredient-form button {
  grid-column: 1 / -1;
}

.nutrition-progress-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 18px 0;
}

.nutrition-progress {
  padding: 13px;
  border: 1px solid #34343b;
  border-radius: 12px;
  background: #1d222a;
}

.nutrition-progress > div:first-child {
  display: flex;
  justify-content: space-between;
  gap: 12px;
}

.nutrition-progress__track {
  height: 10px;
  margin: 10px 0 6px;
  overflow: hidden;
  border-radius: 999px;
  background: #34343b;
}

.nutrition-progress__track span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: #83d39c;
}

.nutrition-progress__track span.is-over { background: #e3c36c; }

.nutrition-food-list { display: grid; gap: 8px; margin: 16px 0; }
.nutrition-food-list article { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 12px; padding: 11px; border-radius: 10px; background: #1d222a; }
.nutrition-food-list small { display: block; color: #bec5cf; }
.nutrition-food-list button { width: auto; margin: 0; }
.nutrition-diet textarea { width: 100%; }
.nutrition-catalog-table { overflow-x: auto; margin: 12px 0; }
.nutrition-catalog-table table { width: 100%; border-collapse: collapse; min-width: 560px; }
.nutrition-catalog-table th, .nutrition-catalog-table td { text-align: left; padding: 10px; border-bottom: 1px solid #34343b; }
.nutrition-catalog-table small { color: #bec5cf; }
.nutrition-food-list article > div:last-child button { margin: 4px; }

@media (max-width: 680px) {
  .nutrition-target-form,
  .nutrition-ingredient-form,
  .nutrition-progress-grid { grid-template-columns: 1fr 1fr; }
  .nutrition-calculator__fields,
  .calorie-options { grid-template-columns: 1fr; }
  .nutrition-food-list article { grid-template-columns: 1fr; }
  .nutrition-food-list button { width: 100%; }
}

@media (max-width: 560px) {
  .account-actions,
  .evaluation-form {
    flex-direction: column;
  }
  .account-actions button { width: 100%; }
}

.coach-feedback-card--athlete,
.coach-exercise-feedback--athlete {
  border-color: rgba(131, 211, 156, .45);
  background: rgba(131, 211, 156, .08);
}

.coach-exercise-feedback {
  margin-top: 16px;
  padding: 14px;
  border: 1px solid rgba(131, 211, 156, .3);
  border-radius: 12px;
}

.coach-exercise-feedback small,
.coach-feedback-card small {
  display: block;
  margin-top: 7px;
  color: #bec5cf;
}

@media (max-width: 680px) {
  .session-summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.workout-exercise-status.is-ready {
  color: #e3c36c;
}

.exercise-completion-actions {
  display: grid;
  gap: 10px;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid #3d3d45;
}

.exercise-completion-actions .workout-exercise-status,
.exercise-completion-actions .exercise-complete-button,
.exercise-completion-actions small {
  margin: 0;
}

.exercise-completion-actions .exercise-complete-button {
  width: 100%;
  min-height: 48px;
}

.exercise-completion-actions small {
  color: #a6afbc;
  line-height: 1.45;
}

.exercise-observation {
  margin: 16px 0 8px;
  padding: 14px;
  border: 1px solid #3d3d45;
  border-radius: 12px;
  background: #171b21;
}

.exercise-observation label {
  display: block;
  margin-bottom: 8px;
  color: #f2f2f4;
  font-weight: 700;
}

.exercise-observation textarea {
  width: 100%;
  min-height: 82px;
  resize: vertical;
}

.exercise-observation small {
  display: block;
  margin-top: 6px;
  color: #a6afbc;
}

.exercise-rest-timer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 14px 0;
  padding: 14px;
  border: 1px solid #4a4a54;
  border-radius: 12px;
  background: #171b21;
}

.exercise-rest-timer div {
  display: grid;
  gap: 4px;
}

.exercise-rest-timer small {
  color: #a6afbc;
  font-size: 11px;
  font-weight: 700;
}

.exercise-rest-timer strong {
  color: #83d39c;
  font-size: 26px;
  font-variant-numeric: tabular-nums;
}

.exercise-rest-timer button {
  width: auto;
  margin: 0;
}

@media (max-width: 520px) {
  .exercise-rest-timer {
    align-items: stretch;
    flex-direction: column;
  }

  .exercise-rest-timer button {
    width: 100%;
  }
}

.exercise-history-entry__note {
  margin-top: 10px;
  padding: 10px;
  border-left: 3px solid #83d39c;
  border-radius: 6px;
  background: #202027;
}

@media (max-width: 520px) {
  .set-row--autosave {
    grid-template-columns: minmax(60px, .9fr) repeat(3, minmax(48px, .65fr));
    gap: 5px;
  }
}

.exercise-history-trigger {
  min-height: 36px;
  margin-top: 10px;
  padding: 8px 12px;
  border: 1px solid #494951;
  background: #1d222a;
  font-size: 12px;
}

.exercise-history-overlay {
  position: fixed;
  z-index: 1500;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom));
  background: rgba(0, 0, 0, .78);
}

.exercise-history-dialog {
  width: min(100%, 720px);
  max-height: 90vh;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 22px;
  border: 1px solid #34343b;
  border-radius: 16px;
  background: #181b20;
  box-shadow: 0 18px 55px rgba(0, 0, 0, .5);
}

.exercise-history-dialog__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.exercise-history-dialog__header h2,
.exercise-history-dialog__header p {
  margin: 0 0 8px;
}

.exercise-history-dialog__header p,
.exercise-history-entry__workout {
  color: #bec5cf;
}

.exercise-history-entry {
  padding: 16px 0;
  border-top: 1px solid #34343b;
}

.exercise-history-entry h3,
.exercise-history-entry p {
  margin: 0 0 8px;
}

.exercise-history-entry ul {
  display: grid;
  gap: 6px;
  margin: 10px 0;
  padding: 0;
  list-style: none;
}

.exercise-history-entry li {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #1d222a;
}

.exercise-history-entry__volume {
  font-weight: 700;
}

.exercise-history-empty {
  padding: 18px 0;
  color: #bec5cf;
}

.exercise-progress-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin: 16px 0 10px;
}

.exercise-progress-summary > div,
.exercise-progress-chart {
  padding: 12px;
  border: 1px solid #34343b;
  border-radius: 12px;
  background: #1d222a;
}

.exercise-progress-summary small,
.exercise-progress-summary strong {
  display: block;
}

.exercise-progress-summary strong {
  margin-top: 5px;
  font-size: 18px;
}

.exercise-progress-comparison {
  padding: 10px 12px;
  border-radius: 9px;
  background: rgba(131, 211, 156, .08);
}

.exercise-progress-charts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin: 12px 0 18px;
}

.exercise-progress-chart > div {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}

.exercise-progress-chart svg {
  display: block;
  width: 100%;
  margin: 8px 0;
}

.exercise-progress-list {
  display: grid;
  gap: 12px;
}

.exercise-progress-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.exercise-progress-card h3,
.exercise-progress-card p {
  margin: 5px 0;
}

.exercise-progress-card button {
  width: auto;
  flex: 0 0 auto;
}

@media (max-width: 680px) {
  .exercise-progress-summary,
  .exercise-progress-charts {
    grid-template-columns: 1fr;
  }

  .exercise-progress-card {
    align-items: stretch;
    flex-direction: column;
  }

  .exercise-progress-card button {
    width: 100%;
  }
}

/* ==========================================
   TEXTO / ETIQUETAS
   ========================================== */

.profile-header {
  margin-bottom: 20px;
}

.profile-header h1 {
  margin: 6px 0;
}

.profile-header p:first-child {
  font-size: 12px;
  font-weight: bold;
  letter-spacing: 1.5px;
  color: #888891;
}

.section-header {
  margin-bottom: 20px;
}

.section-header h1 {
  margin-top: 5px;
}

/* ==========================================
   RESPONSIVE
   ========================================== */

@media (max-width: 600px) {

  .app-container {
    padding: 12px;
  }

  .login-card {
    margin-top: 60px;
  }

  .dashboard-grid {
    grid-template-columns: 1fr;
  }

  .top-bar {
    padding: 12px;
  }

  .top-bar strong {
    font-size: 15px;
  }

  .list-item {
    align-items: flex-start;
  }

  .list-item button {
    flex-shrink: 0;
  }
}

.workout-editor__context {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.workout-editor__context > div {
  display: grid;
  min-width: 0;
  gap: 6px;
}

.workout-editor__context span,
.workout-editor__section-heading > span {
  color: #bec5cf;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
}

.workout-editor__context strong {
  overflow-wrap: anywhere;
}

.workout-editor__section-heading,
.workout-editor__exercise-item,
.workout-editor__exercise-actions,
.workout-editor__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.workout-editor__section-heading h2,
.workout-editor__exercise-item h3,
.workout-editor__exercise-item p {
  margin: 0;
}

.workout-editor__exercise-list {
  display: grid;
  gap: 10px;
  margin: 0 0 16px;
  padding: 0;
  list-style: none;
}

.workout-editor__exercise-item {
  min-width: 0;
  padding: 14px;
  background: #101318;
  border: 1px solid #303640;
  border-radius: 10px;
}

.workout-editor__exercise-item > div:first-child {
  min-width: 0;
  overflow-wrap: anywhere;
}

.workout-editor__exercise-item p {
  margin-top: 6px;
}

.workout-editor__empty,
.workout-editor__error {
  margin: 0 0 16px;
}

.workout-editor__error {
  color: #ffaaaa !important;
}

.workout-editor__exercise-form {
  display: grid;
  gap: 14px;
  margin-top: 16px;
  padding: 16px;
  background: #101318;
  border: 1px solid #34343b;
  border-radius: 12px;
}

.workout-editor__exercise-form h3 {
  margin: 0;
}

.workout-editor__picker {
  display: grid;
  gap: 12px;
  min-width: 0;
  margin-top: 14px;
  padding: 16px;
  background: #101318;
  border: 1px solid #34343b;
  border-radius: 12px;
}

.workout-editor__picker-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.workout-editor__picker-heading h3 {
  margin: 0;
}

.workout-editor__picker-heading button {
  width: 44px;
  height: 44px;
  padding: 0;
  font-size: 24px;
}

.workout-editor__attribution {
  justify-self: start;
  color: #bec5cf;
  font-size: 12px;
}

.workout-editor__search-label {
  font-weight: 700;
}

.workout-editor__search {
  min-height: 48px;
}

.workout-editor__category-browser {
  display: grid;
  gap: 10px;
}

.workout-editor__category-all {
  display: flex;
}

.workout-editor__category-group {
  display: grid;
  gap: 6px;
}

.workout-editor__category-title {
  color: #8f8f99;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.workout-editor__category-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  overflow-x: auto;
  padding: 2px 1px 8px;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
}

.workout-editor__category-filter {
  min-height: 40px;
  flex: 0 0 auto;
  padding: 8px 13px;
  border: 1px solid #34343b;
  border-radius: 20px;
  background: #1d222a;
  color: #d7d7dd;
}

.workout-editor__category-filter.is-active {
  border-color: #cfcfd5;
  background: #e6e6e9;
  color: #111114;
}

.workout-editor__picker-list {
  display: grid;
  gap: 6px;
  max-height: min(52vh, 420px);
  min-height: 80px;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y;
}

.workout-editor__picker-option {
  display: flex;
  width: 100%;
  min-height: 52px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid #303640;
  background: #171b21;
  text-align: left;
  overflow-wrap: anywhere;
}

.workout-editor__picker-option:hover,
.workout-editor__picker-option:focus-visible {
  border-color: #a9a9b2;
  background: #252b34;
}

.workout-editor__library-card {
  display: grid;
  width: 100%;
  min-width: 0;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: stretch;
  gap: 14px;
  padding: 10px;
  border: 1px solid #303640;
  background: #171b21;
  text-align: left;
}

.workout-editor__library-card:hover,
.workout-editor__library-card:focus-visible {
  border-color: #a9a9b2;
  background: #252b34;
}

.workout-editor__library-card-select {
  align-self: flex-start;
  width: fit-content;
  min-height: 36px;
  padding: 8px 12px;
  border: 1px solid #494951;
  border-radius: 8px;
  background: #1d222a;
  color: inherit;
  font-size: 12px;
  font-weight: 700;
  text-align: left;
}

.workout-editor__library-card-select:focus-visible {
  outline: 2px solid #bec5cf;
  outline-offset: 3px;
}

.workout-editor__library-card-select:hover {
  background: #343e4b;
}

.workout-editor__library-card-info {
  display: flex;
  min-width: 0;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  overflow-wrap: anywhere;
}

.workout-editor__library-card-info > span,
.workout-editor__library-card-info small {
  color: #bec5cf;
}

.workout-editor__library-categories {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.workout-editor__library-equipment {
  font-size: 12px;
}

.exercise-quick-metadata {
  display: grid;
  gap: 4px;
  color: #bec5cf;
  font-size: 13px;
  overflow-wrap: anywhere;
}

.exercise-media {
  display: grid;
  justify-items: start;
  gap: 10px;
  min-width: 0;
  margin: 12px 0 16px;
}

.exercise-media__toggle {
  min-height: 38px;
  padding: 8px 12px;
  border: 1px solid #494951;
  border-radius: 8px;
  background: #1d222a;
  color: #e1e1e6;
  font-size: 12px;
  font-weight: 700;
}

.exercise-media__toggle:hover,
.exercise-media__toggle:focus-visible {
  border-color: #bec5cf;
  background: #25252b;
}

.exercise-media__image {
  display: grid;
  width: min(100%, 460px);
  min-width: 0;
  margin-inline: auto;
  place-items: center;
  overflow: hidden;
  border: 1px solid #34343b;
  border-radius: 8px;
  background: #101318;
}

.exercise-media__image[hidden] {
  display: none !important;
}

.exercise-media__image img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 340px;
  object-fit: contain;
}

.exercise-media__unavailable {
  margin: 0;
  color: #bec5cf;
  font-size: 13px;
}

.workout-editor__library-card-arrow {
  align-self: center;
  color: #bec5cf;
  font-size: 26px;
}

.workout-editor__demo {
  position: relative;
  display: grid;
  min-width: 0;
  aspect-ratio: 16 / 9;
  place-items: center;
  overflow: hidden;
  border: 1px solid #34343b;
  border-radius: 8px;
  background: radial-gradient(circle at 50% 35%, #303640, #111114 72%);
}

.workout-editor__demo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.workout-editor__demo img[hidden],
.workout-editor__demo-placeholder[hidden] {
  display: none;
}

.workout-editor__demo-placeholder {
  display: grid;
  width: 100%;
  height: 100%;
  align-content: center;
  justify-items: center;
  gap: 8px;
  padding: 12px;
  color: #c5c5cc;
  text-align: center;
}

.workout-editor__demo-placeholder > span {
  font-size: 28px;
  opacity: .8;
}

.workout-editor__exercise-detail {
  display: grid;
  gap: 16px;
  min-width: 0;
  padding: 16px;
  border: 1px solid #34343b;
  border-radius: 12px;
  background: #101318;
}

.workout-editor__detail-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
}

.workout-editor__detail-heading > span,
.workout-editor__exercise-metadata span {
  color: #bec5cf;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .05em;
}

.workout-editor__demo--detail {
  width: 100%;
  max-height: 360px;
}

.workout-editor__demo--athlete {
  width: min(100%, 460px);
  min-height: 140px;
  aspect-ratio: auto;
  margin: 14px auto;
}

.workout-editor__demo--athlete img {
  width: 100%;
  height: auto;
  max-height: 340px;
  object-fit: contain;
}

.workout-editor__demo--athlete .workout-editor__demo-placeholder {
  min-height: 140px;
}

.workout-editor__exercise-detail h3,
.workout-editor__instructions h4 {
  margin: 0;
}

.workout-editor__exercise-metadata {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
}

.workout-editor__exercise-metadata > div {
  display: grid;
  gap: 4px;
}

.workout-editor__instructions {
  display: grid;
  gap: 8px;
}

.workout-editor__instructions ol {
  margin: 0;
  padding-left: 22px;
  color: #d0d0d6;
  line-height: 1.55;
}

.workout-editor__library-section {
  display: grid;
  gap: 8px;
}

.workout-editor__library-section h4 {
  margin: 0;
}

.workout-editor__library-section ul {
  display: grid;
  gap: 6px;
  margin: 0;
  padding-left: 22px;
  color: #d0d0d6;
  line-height: 1.5;
}

.workout-editor__unavailable {
  margin: 0;
  color: #bec5cf;
}

.workout-editor__no-results {
  display: grid;
  gap: 5px;
  padding: 18px 8px;
  color: #bec5cf;
  text-align: center;
}

.workout-editor__no-results strong {
  color: #fff;
}

.workout-editor__selected-exercise {
  display: grid;
  gap: 8px;
  padding: 12px;
  background: #101318;
  border: 1px solid #303640;
  border-radius: 10px;
}

.workout-editor__selected-exercise span {
  color: #bec5cf;
  font-size: 13px;
}

.workout-editor__number-fields {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.workout-editor__number-fields .form-group {
  min-width: 0;
  margin: 0;
}

.workout-editor__add-exercise {
  width: 100%;
}

.workout-editor__footer {
  justify-content: flex-end;
  flex-wrap: wrap;
  margin-bottom: 24px;
}

.workout-editor__footer .primary-button {
  background: #e6e6e9;
  color: #111114;
  font-weight: 700;
}

.workout-editor button {
  min-height: 44px;
}

@media (max-width: 600px) {
  .workout-editor__context,
  .workout-editor__number-fields {
    grid-template-columns: 1fr;
  }

  .workout-editor__exercise-item {
    align-items: stretch;
    flex-direction: column;
  }

  .workout-editor__exercise-actions,
  .workout-editor__footer {
    display: grid;
    grid-template-columns: 1fr;
  }

  .workout-editor__exercise-actions button,
  .workout-editor__footer button {
    width: 100%;
  }

  .workout-editor__library-card {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
  }

  .workout-editor__library-card .workout-editor__demo {
    grid-column: 1 / -1;
  }

  .workout-editor__demo--athlete {
    width: 100%;
    max-width: 100%;
  }

  .workout-editor__library-card-arrow {
    grid-column: auto;
    grid-row: auto;
  }
}

/* ==========================================
   DASHBOARD DEL COACH
   ========================================== */

.coach-dashboard__welcome {
  margin-bottom: 20px;
}

.coach-dashboard__welcome h1 {
  margin-bottom: 8px;
}

.coach-dashboard__welcome p,
.coach-dashboard__panel > p {
  color: #bec5cf;
  line-height: 1.5;
}

.coach-dashboard__stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 20px;
}

.coach-dashboard__stat,
.coach-dashboard__panel {
  min-width: 0;
  padding: 20px;
  background: #181b20;
  border: 1px solid #303640;
  border-radius: 16px;
}

.coach-dashboard__stat {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.coach-dashboard__stat > span {
  color: #bec5cf;
}

.coach-dashboard__stat > strong {
  font-size: 30px;
}

.coach-dashboard__stat > .coach-dashboard__stat-value {
  font-size: 17px;
}

.coach-dashboard__stat small,
.coach-dashboard__athlete small {
  color: #a6afbc;
  line-height: 1.5;
}

.coach-dashboard__sections {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.coach-dashboard__panel h2 {
  margin-bottom: 16px;
  font-size: 19px;
}

.coach-dashboard__panel-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.coach-dashboard__panel-heading h2 {
  margin-bottom: 0;
}

.coach-dashboard__activity {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  align-items: end;
  gap: 10px;
  min-height: 165px;
  padding-top: 10px;
}

.coach-dashboard__activity-day {
  display: flex;
  min-width: 0;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  color: #bec5cf;
  font-size: 13px;
}

.coach-dashboard__activity-track {
  display: flex;
  width: 100%;
  height: 112px;
  align-items: flex-end;
  overflow: hidden;
  border-radius: 7px;
  background: #101318;
}

.coach-dashboard__activity-bar {
  width: 100%;
  min-height: 4px;
  border-radius: 7px;
  background: #8b9cff;
}

.coach-dashboard__athletes {
  display: grid;
  gap: 12px;
}

.coach-dashboard__athlete {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 12px 0;
  border-bottom: 1px solid #303640;
}

.coach-dashboard__athlete:last-child {
  border-bottom: none;
}

.coach-dashboard__athlete h3 {
  margin-bottom: 5px;
  font-size: 16px;
}

.coach-dashboard__athlete p {
  margin-bottom: 4px;
  color: #bec5cf;
  line-height: 1.5;
}

.coach-dashboard__daily-training {
  display: grid;
  gap: 8px;
  margin-top: 12px;
  padding: 14px;
  background: #101318;
  border: 1px solid #303640;
  border-radius: 10px;
}

.coach-dashboard__daily-training p {
  margin: 0;
  overflow-wrap: anywhere;
}

.coach-dashboard__daily-training button {
  justify-self: start;
  margin-top: 4px;
}

.coach-dashboard__daily-empty {
  margin-top: 10px;
  color: #bec5cf;
}

.coach-alert-list {
  display: grid;
  gap: 9px;
}

.coach-alert,
.nutrition-visibility {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 12px 0;
}
.nutrition-visibility input {
  width: auto;
}
.notification-item {
  margin-bottom: 12px;
}
.notification-item .app-notification {
  width: 100%;
}
.notification-item__read {
  display: block;
  margin: 4px 0 0 auto;
  padding: 8px 12px;
  font-size: 12px;
}
.app-notification {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 12px;
  width: 100%;
  margin: 0;
  padding: 12px;
  border: 1px solid #34343b;
  border-radius: 12px;
  background: #1d222a;
  color: inherit;
  text-align: left;
}

.coach-alert span:first-child,
.app-notification > span:first-child {
  font-size: 22px;
}

.coach-alert strong,
.coach-alert small,
.app-notification strong,
.app-notification small {
  display: block;
}

.coach-alert small,
.app-notification small {
  margin-top: 4px;
  color: #bec5cf;
}

.coach-alert--priority-4 {
  border-color: rgba(255, 100, 100, .65);
  background: rgba(255, 100, 100, .08);
}

.coach-alert--priority-3 {
  border-color: rgba(227, 195, 108, .55);
}

.app-notification {
  margin-top: 9px;
}

.app-notification em {
  color: #83d39c;
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
}

.athlete-notifications .athlete-section-heading > strong {
  min-width: 28px;
  padding: 5px 9px;
  border-radius: 999px;
  background: #83d39c;
  color: #111;
  text-align: center;
}

@media (max-width: 560px) {
  .coach-alert,
  .app-notification {
    grid-template-columns: auto 1fr;
  }

  .app-notification em {
    grid-column: 2;
  }
}

@media (max-width: 900px) {
  .coach-dashboard__stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
  .coach-dashboard__sections {
    grid-template-columns: 1fr;
  }

  .coach-dashboard__stat,
  .coach-dashboard__panel {
    padding: 16px;
  }

  .coach-dashboard__athlete {
    align-items: flex-start;
    flex-direction: column;
  }

  .coach-dashboard__daily-training button {
    justify-self: stretch;
    width: 100%;
  }
}

.active-athlete-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
  margin-bottom: 16px;
  padding: 10px 14px;
  background: #181b20;
  border: 1px solid #303640;
  border-radius: 12px;
}

.active-athlete-summary__info {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 4px;
}

.active-athlete-summary__info strong {
  overflow-wrap: anywhere;
  font-size: 16px;
}

.active-athlete-summary__info small {
  color: #bec5cf;
}

.active-athlete-summary__add {
  display: inline-flex;
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  align-items: center;
  justify-content: center;
  padding: 0;
  border-radius: 50%;
  font-size: 25px;
  line-height: 1;
}

.weekly-plan__heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
}

.weekly-plan__heading h1,
.weekly-plan__heading h2,
.weekly-plan__heading p {
  margin: 0 0 6px;
}

.weekly-plan__navigation {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.weekly-plan__days {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.weekly-plan__days--month {
  grid-template-columns: repeat(7, minmax(150px, 1fr));
  overflow-x: auto;
}

.weekly-plan__day {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  background: #181b20;
  border: 1px solid #303640;
  border-radius: 14px;
}

.weekly-plan__day h3 {
  margin: 0;
  font-size: 15px;
}

.weekly-plan__workout {
  display: grid;
  gap: 8px;
  padding: 12px;
  background: #101318;
  border: 1px solid #303640;
  border-radius: 10px;
  overflow-wrap: anywhere;
}

.weekly-plan__workout p,
.weekly-plan__empty {
  margin: 0;
  color: #bec5cf;
}

.weekly-plan__workout small {
  color: #bec5cf;
}

.weekly-plan__status {
  font-size: 13px;
}

.weekly-plan__remove {
  background: #292329;
  color: #f0b4b4;
}

.weekly-plan__add {
  margin-top: auto;
}

@media (max-width: 900px) {
  .weekly-plan__days {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
  .weekly-plan__heading {
    align-items: stretch;
    flex-direction: column;
  }

  .weekly-plan__navigation {
    display: grid;
    grid-template-columns: 1fr;
  }

  .weekly-plan__days {
    grid-template-columns: 1fr;
  }

  .weekly-plan__day > button,
  .weekly-plan__workout button {
    width: 100%;
  }
}

.nutrition-catalog { margin: 20px 0; }
.nutrition-meal-list { display: grid; gap: 14px; margin: 18px 0; }
.nutrition-meal { border-top: 1px solid #34343b; padding-top: 12px; }
.nutrition-meal-subtotal { color: #a9dcc2; }
.nutrition-catalog > label { display: inline-grid; gap: 6px; width: 48%; margin-right: 1%; }
.nutrition-food-list article label { display: grid; gap: 4px; font-size: .85rem; }
@media (max-width: 680px) { .nutrition-catalog > label { width: 100%; } }
.nutrition-ingredient-form > p { grid-column: 1 / -1; }
.followup-panel { margin: 16px 0; }
.followup-panel summary,.technique-panel summary { cursor:pointer; font-weight:700; padding:12px 0; }
.followup-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; }
.followup-panel label,.technique-panel label { display:flex; flex-direction:column; gap:6px; margin:10px 0; }
.followup-panel input,.followup-panel select,.followup-panel textarea,.technique-panel input,.technique-panel textarea { width:100%; max-width:100%; box-sizing:border-box; padding:10px; background:#18181c; color:#fff; border:1px solid #444; border-radius:8px; }
.followup-check,.technique-list article { padding:14px 0; border-bottom:1px solid #383838; }
.technique-panel { margin:12px 0; border-top:1px solid #383838; }
.technique-list small { display:block; margin:6px 0; }
.followup-panel button,.technique-panel button { margin:8px 8px 8px 0; }
@media(max-width:480px) { .followup-grid{grid-template-columns:1fr 1fr;} .followup-panel .account-actions{display:flex;flex-wrap:wrap;} }
.technique-editor-overlay { position:fixed; inset:0; z-index:10000; background:rgba(0,0,0,.85); overflow-y:auto; padding:16px; overscroll-behavior:contain; }
.technique-editor-dialog { width:100%; max-width:760px; margin:0 auto 32px; box-sizing:border-box; }
.technique-editor-dialog label { display:flex; flex-direction:column; gap:8px; }
.technique-editor-dialog input { width:100%; box-sizing:border-box; padding:10px; background:#18181c; color:#fff; border:1px solid #555; border-radius:8px; }
.technique-editor-dialog button { margin:8px 8px 8px 0; }
.exercise-card { overflow-anchor:none; }
.workout-set-validation {
  grid-column: 1 / -1;
  color: #ffb4b4;
  white-space: normal;
  font-size: 0.875rem;
  line-height: 1.35;
}

.series-video-camera { min-height:44px; margin-top:6px; padding:6px 10px; font-size:13px; border:1px solid #697386; border-radius:8px; }
.series-video-camera.is-required { border-color:#79cfb2; color:#79cfb2; }
.series-video-camera:disabled { opacity:.5; }
.series-video-toggle { display:flex; align-items:center; gap:8px; min-height:44px; font-size:14px; }
.series-video-toggle input[type="checkbox"] { width:20px; height:20px; flex-shrink:0; }

.block-comparison-table { overflow-x:auto; margin:12px 0; }
.block-comparison-table table { width:100%; border-collapse:collapse; }
.block-comparison-table th,.block-comparison-table td { text-align:left; padding:10px; border-bottom:1px solid #475569; min-width:100px; }
.block-comparison textarea { width:100%; box-sizing:border-box; }
.block-comparison article { border-bottom:1px solid #475569; padding:12px 0; }
.training-block label { display:flex; flex-direction:column; gap:6px; margin:8px 0; }
.training-block input,.training-block select,.training-block textarea { max-width:100%; box-sizing:border-box; padding:10px; border:1px solid #64748b; border-radius:6px; background:#151c29; color:#fff; }
.training-block textarea { width:100%; }
.training-block details { margin:14px 0; }
.training-block summary { cursor:pointer; min-height:32px; }
.block-limit-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; }
.block-limit-grid fieldset { min-width:0; border:1px solid #475569; border-radius:8px; }
.training-block input[type="checkbox"] { width:20px; height:20px; }
.block-load-banner { padding:12px; border:1px solid #64748b; border-radius:8px; }
.block-load-high { background:rgba(251,191,36,.12); color:#ffe0a3; }
.block-research a { color:#a5d5ff; }
.progression-proposal { padding:14px 0; border-bottom:1px solid #475569; }
.progression-proposal button { margin:8px 8px 8px 0; }
.progression-proposal h4 { margin-bottom:8px; }
.athlete-preferences, .program-templates, .athlete-report { margin: 16px 0; }
.athlete-preferences summary, .program-templates summary, .athlete-report summary { cursor: pointer; font-weight: 700; padding: 12px 0; }
.athlete-preferences label, .program-templates label, .athlete-report label, [id^="video-marks-"] label { display: block; margin: 12px 0; }
.athlete-preferences input:not([type="checkbox"]), .athlete-preferences select, .athlete-preferences textarea, .program-templates input, .program-templates select, .athlete-report input, [id^="video-marks-"] input, [id^="video-marks-"] textarea { width: 100%; box-sizing: border-box; padding: 10px; border: 1px solid #555; border-radius: 8px; background: #171717; color: #fff; font: inherit; }
.athlete-preferences fieldset { min-width: 0; border: 1px solid #555; border-radius: 8px; }
[id^="video-marks-"] { margin-top: 16px; overflow-wrap: anywhere; }
.advisory { margin: 16px 0; }
.advisory summary { cursor: pointer; font-weight: 700; padding: 12px 0; }
.advisory label { display: block; margin: 12px 0; }
.advisory input[type="date"] { width: 100%; padding: 10px; border: 1px solid #555; border-radius: 8px; background: #171717; color: white; font: inherit; }
.athlete-tracking { margin: 16px 0; }
.athlete-tracking summary, .quick-swap summary { cursor: pointer; font-weight: 700; padding: 12px 0; }
.athlete-tracking label, .quick-swap label { display: block; margin: 12px 0; }
.athlete-tracking input, .athlete-tracking select, .athlete-tracking textarea, .quick-swap select { width: 100%; padding: 10px; border: 1px solid #555; border-radius: 8px; background: #171717; color: white; font: inherit; }
.athlete-tracking article { padding: 12px 0; border-bottom: 1px solid #444; overflow-wrap: anywhere; }
.athlete-tracking progress { width: 100%; height: 16px; accent-color: #63dbb1; }
.measurement-chart { width: 100%; height: auto; max-width: 640px; }
.quick-swap { margin: 12px 0; }

/* Consistent hierarchy across coach and athlete screens. */
.training-focus__heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
.training-focus label { display:block; }
.training-focus select { display:block; width:100%; margin-top:8px; }
.training-focus__rest { display:flex; align-items:center; gap:12px; flex-wrap:wrap; border-top:1px solid #34404d; padding-top:12px; }
.training-focus__rest[hidden] { display:none; }
.training-focus__rest small { flex:1 1 190px; }
.training-focus__rest strong { font-size:1.5rem; font-variant-numeric:tabular-nums; color:#83dfc0; }
.training-continue { display:grid; gap:8px; margin-top:16px; }
.training-continue small,.training-warmup-summary { color:#b9c3ce; font-size:.82rem; }
.training-group-label { padding:10px 12px; border-left:3px solid #83dfc0; background:#11161c; border-radius:4px; font-size:.85rem; }
.training-groups-editor { margin:0 0 18px; padding:16px; border:1px solid #2b333d; border-radius:14px; background:#171c22; }
.training-groups-editor fieldset { display:grid; gap:10px; padding:12px; margin:12px 0; border:1px solid #34404d; }
.training-groups-editor label { display:block; }
.training-groups-editor article { border-bottom:1px solid #34404d; padding:12px 0; }
.exercise-card.exercise-card--completed.training-focus-card { display:block; }
.set-row.training-warmup-row { border-left:3px solid #bba16b; }
.training-series-heading { font-size:.9rem; margin:16px 0 8px; color:#bbc9d5; }
body { background:#0e1115; color:#eef2f5; font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
.app-container { max-width:1180px; padding:24px; }
.card { background:#171c22; border-color:#2b333d; box-shadow:none; padding:22px; border-radius:14px; }
.card h1 { font-size:clamp(1.45rem,3vw,1.9rem); letter-spacing:-.03em; }
.card h2, .coach-dashboard__panel h2 { font-size:1.1rem; letter-spacing:-.015em; }
.card h3 { font-size:1rem; }
.card p { color:#b9c3ce; line-height:1.55; }
small { line-height:1.45; }
button { min-height:44px; border-radius:9px; font-size:.875rem; font-weight:600; line-height:1.35; }
button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible { outline:3px solid #83dfc0; outline-offset:3px; }
input:not([type="checkbox"]):not([type="radio"]),select,textarea { min-height:44px; border-radius:8px; font:inherit; }
input[type="checkbox"],input[type="radio"] { accent-color:#83dfc0; }
textarea { resize:vertical; }
a { color:#a1d5ff; }
.top-bar { background:#171c22; border-color:#2b333d; padding:12px 16px; gap:10px; margin-bottom:18px; }
.top-bar__title { flex:1; min-width:0; }
.top-bar__title strong { font-size:1rem; letter-spacing:0; }
.visual-save-tools { font-size:.75rem; }
.visual-save-tools summary { cursor:pointer; min-height:30px; padding:6px; color:#b9c3d1; }
.visual-save-tools button { margin-top:6px; }
.visual-panel { padding:0; }
.visual-panel > summary { display:flex; align-items:center; flex-wrap:wrap; gap:6px 16px; cursor:pointer; padding:17px 20px; min-height:54px; list-style:none; font-weight:650; }
.visual-panel > summary::-webkit-details-marker { display:none; }
.visual-panel > summary::after { content:"＋"; margin-left:auto; font-size:1.1rem; color:#94a6b7; }
.visual-panel[open] > summary::after { content:"−"; }
.visual-panel > summary small { color:#abb8c5; font-size:.78rem; font-weight:400; }
.visual-panel__body { padding:4px 20px 20px; }
.visual-panel__body > .card { border:0; border-radius:0; padding:8px 0; margin:0; background:transparent; }
.visual-panel__body > .card + .card { border-top:1px solid #2b333d; margin-top:12px; padding-top:16px; }
.visual-panel__body > .card > h2:first-child { font-size:1rem; }
.visual-panel__body details { margin-top:12px; }
details > summary { cursor:pointer; min-height:44px; padding:10px 0; line-height:1.4; }
.account-actions { gap:8px; }
.visual-actions { display:flex; gap:8px; flex-wrap:wrap; margin:12px 0; }
.visual-actions button { margin:0; width:auto; }
.visual-subtle { margin-top:10px; color:#b9c3d1; font-size:.85rem; }
.visual-compact-data { display:flex; gap:8px 20px; flex-wrap:wrap; margin:10px 0 16px; }
.visual-compact-data p { margin:0; }
.coach-dashboard__welcome { margin-bottom:18px; }
.coach-dashboard__welcome h1 { font-size:clamp(1.5rem,3vw,2rem); }
.coach-dashboard__panel,.coach-dashboard__stat,.coach-dashboard__athlete { box-shadow:none; border-color:#2b333d; background:#171c22; }
.coach-dashboard__stats { gap:12px; margin-bottom:18px; }
.coach-dashboard__stat { padding:16px; }
.coach-dashboard__stat strong { font-size:1.8rem; }
.coach-dashboard__stat small { font-size:.75rem; }
.coach-dashboard__sections { gap:16px; align-items:start; }
.coach-dashboard__sections > section:last-child { grid-column:1/-1; }
.coach-dashboard__athlete h3 { font-size:1.05rem; }
.coach-dashboard__daily-training { padding:12px; border-radius:10px; }
.coach-dashboard__daily-training details { margin:0; }
.coach-dashboard__daily-training summary { font-size:.82rem; color:#b9c3ce; }
.coach-dashboard__athlete .nutrition-visibility { margin-top:8px; }
.list-item { gap:12px; align-items:center; padding:14px 0; border-bottom-color:#2b333d; flex-wrap:wrap; }
.list-item > div:first-child { flex:1 1 220px; }
.list-item button { margin:0; }
.weekly-plan__navigation { gap:8px; }
.weekly-plan__navigation button { font-size:.78rem; padding:10px; }
.weekly-plan__day,.weekly-plan__workout { box-shadow:none; border-color:#2b333d; }
.weekly-plan__workout { background:#11161c; }
.athlete-week .weekly-plan__day--rest { padding:12px; gap:4px; opacity:.85; }
.athlete-week .weekly-plan__day--rest h3 { font-size:.78rem; }
.athlete-navigation { margin:0 0 18px; gap:8px; }
.exercise-card > h2 { font-size:1.25rem; }
.exercise-card .visual-exercise-guide { margin:8px 0; }
.visual-exercise-guide > summary { color:#b9c3ce; font-size:.85rem; }
.exercise-data { gap:12px; }
.block-comparison-table th,.block-comparison-table td { border-color:#34404d; padding:12px 10px; }
.nutrition-target-form,.evaluation-form { gap:12px; }
.visual-empty { color:#b9c3d1; padding:12px 0; }
@media(max-width:600px) {
 .app-container { padding:12px; }
 .card { padding:16px; margin-bottom:12px; }
 .visual-panel { padding:0; }
 .visual-panel > summary { padding:14px 16px; }
 .visual-panel > summary small { flex-basis:100%; order:2; }
 .visual-panel__body { padding:0 16px 16px; }
 .top-bar { padding:10px; gap:8px; }
 .top-bar__title strong { font-size:.88rem; }
 .coach-dashboard__stats { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
 .coach-dashboard__stat { padding:12px; }
 .coach-dashboard__stat strong { font-size:1.5rem; }
 .weekly-plan__navigation { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .athlete-week .weekly-plan__days { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .athlete-week .weekly-plan__day:not(.weekly-plan__day--rest) { grid-column:1/-1; }
 .visual-actions { display:grid; grid-template-columns:1fr 1fr; }
 .visual-actions button { width:100%; }
 .list-item > div:first-child { flex-basis:100%; }
 .list-item button { flex:1 1 130px; }
 .athlete-navigation button { font-size:.74rem; padding:10px 6px; }
}
.execution-instructions{border-left:3px solid var(--accent,#ff7587);padding:8px 12px;margin:12px 0;overflow-wrap:anywhere;}
.execution-instructions p{margin:6px 0;font-size:.9rem;}
.execution-instructions-editor{margin:12px 0;padding:12px;border:1px solid #343434;border-radius:10px;}
.execution-instructions-editor summary{cursor:pointer;min-height:44px;display:flex;align-items:center;}
.execution-instructions-editor label{display:block;margin-top:10px;}
.execution-instructions-editor small{display:block;margin-top:6px;}
.execution-instructions-editor textarea{display:block;width:100%;box-sizing:border-box;background:#242529;color:#f5f5f5;border:1px solid #393b42;border-radius:8px;padding:12px;font:inherit;resize:vertical;}
.execution-instructions-editor textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
/* Navegación por módulos: objetivos grandes para celular y teclado. */
.coach-module-groups { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.coach-module-groups > .visual-panel { margin: 0; min-width: 0; }
.coach-module-groups .visual-panel__body { display: grid; gap: 8px; }
.coach-module-groups button { width: 100%; min-height: 44px; white-space: normal; }
.visual-panel > summary { min-height: 44px; cursor: pointer; }
.visual-panel > summary:focus-visible { outline: 2px solid currentColor; outline-offset: -3px; }
@media (max-width: 600px) { .coach-module-groups { grid-template-columns: minmax(0,1fr); } }
.app-shell { --sidebar-width: 250px; min-height: 100vh; }
.app-shell.is-collapsed { --sidebar-width: 76px; }
.app-sidebar { position: fixed; inset: 0 auto 0 0; z-index: 100; width: var(--sidebar-width); display: flex; flex-direction: column; background: #181b20; border-right: 1px solid #303640; padding: 16px 12px; color: #fff; }
.app-main { margin-left: var(--sidebar-width); min-width: 0; outline: none; }
.app-main .app-container { max-width: 1180px; }
.sidebar-brand { display: flex; align-items: center; gap: 10px; min-height: 52px; margin-bottom: 10px; }
.sidebar-brand strong { white-space: nowrap; font-size: 18px; }
.sidebar-logo { background: var(--accent); color: #111; border-radius: 12px; display: grid; place-items: center; width: 40px; height: 40px; flex: 0 0 40px; font-weight: 900; font-size: 24px; }
.app-sidebar button { border: 0; color: #dfdfe7; background: transparent; border-radius: 10px; min-height: 46px; font-size: 14px; transition: background-color .15s ease,color .15s ease; }
.sidebar-nav { flex: 1; min-height: 0; overflow-y: auto; padding: 8px 0; }
.app-sidebar .sidebar-link, .sidebar-toggle { display: flex; position: relative; align-items: center; gap: 12px; width: 100%; padding: 12px; text-align: left; margin-bottom: 4px; }
.sidebar-link svg, .sidebar-toggle svg { flex: 0 0 22px; }
.sidebar-link .sidebar-label { line-height: 1.4; }
.app-sidebar button:hover { background: #24242b; }
.app-sidebar button.is-active { background: var(--accent); color: #101010; font-weight: 700; }
.app-shell button:focus-visible, .app-shell a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.app-sidebar button.is-active:focus-visible { outline-color: #fff; }
.sidebar-footer { border-top: 1px solid #303037; padding-top: 12px; }
.sidebar-user { display: flex; align-items: center; gap: 12px; padding: 10px 12px; min-width: 0; }
.sidebar-user .sidebar-label { display: grid; min-width: 0; gap: 4px; }
.sidebar-user strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.sidebar-user small { color: #aaaab6; font-size: 13px; }
.sidebar-tooltip { display: none; }
.is-collapsed .sidebar-label { display: none; }
.is-collapsed .sidebar-toggle svg { transform: rotate(180deg); }
.is-collapsed .sidebar-link:hover .sidebar-tooltip,.is-collapsed .sidebar-link:focus .sidebar-tooltip { display: block; position: fixed; left: 80px; z-index: 120; padding: 10px 14px; border: 1px solid #555; border-radius: 8px; color: white; background: #252b34; white-space: nowrap; box-shadow: 0 4px 20px #0008; }
.sidebar-close,.sidebar-menu-button,.sidebar-backdrop { display: none; }
.active-athlete-summary { flex-wrap: wrap; }
.active-athlete-summary > button { min-height: 44px; }
.app-main input,.app-main select,.app-main textarea { max-width: 100%; }
.app-main .top-bar__title { flex: 1; }
@media (max-width: 760px) {
  .app-shell,.app-shell.is-collapsed { --sidebar-width: 250px; }
  .app-main { margin-left: 0; width: 100%; }
  .app-main .app-container { padding: 12px; }
  .app-sidebar { transform: translateX(-100%); width: min(290px,85vw); visibility: hidden; }
  .is-menu-open .app-sidebar { transform: translateX(0); visibility: visible; }
  .is-collapsed .sidebar-label { display: block; }
  .is-collapsed .sidebar-user .sidebar-label { display: grid; }
  .sidebar-toggle { display: none; }
  .app-sidebar .sidebar-close { display: grid; place-items: center; margin-left: auto; width: 44px; flex: 0 0 44px; }
  .top-bar .sidebar-menu-button { display: block; min-height: 44px; min-width: 44px; font-size: 24px; }
  .sidebar-backdrop:not([hidden]) { display: block; position: fixed; inset: 0; z-index: 99; border: 0; background: #0009; }
  .sidebar-modal-open { overflow: hidden; }
  .is-collapsed .sidebar-link:hover .sidebar-tooltip,.is-collapsed .sidebar-link:focus .sidebar-tooltip { display: none; }
  .app-main .top-bar { gap: 8px; padding: 10px; }
  .app-main .top-bar strong { font-size: 16px; }
}

.review-filter-controls button { min-height: 44px; }
.review-filter-controls button[aria-pressed="true"] { background: var(--accent); color: #0c0e12; border-color: var(--accent); font-weight: 700; }
.review-filter-controls button:focus-visible { outline: 2px solid #ffffff; outline-offset: 3px; }
[data-session-comparison] [hidden] { display: none !important; }

/* Compact athlete capture: columns keep the same input IDs and save handlers. */
.athlete-compact-exercise { padding: 16px; }
.compact-program-details { margin: 12px 0; }
.compact-program-details summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; font-size: .875rem; color: #bec5cf; }
.athlete-compact-exercise .compact-series-columns,
.athlete-compact-exercise .compact-series-row { display: grid; grid-template-columns: minmax(0,1.7fr) repeat(3,minmax(0,1fr)); gap: 8px; align-items: center; }
.athlete-compact-exercise .compact-series-columns--timed,
.athlete-compact-exercise .compact-series-row--timed { grid-template-columns: minmax(0,1.7fr) minmax(0,1fr); }
.compact-series-columns { margin: 8px 0; color: #bec5cf; font-size: .875rem; }
.compact-series-columns span:not(:first-child) { text-align: center; }
.athlete-compact-exercise .compact-series-row { border-bottom: 1px solid #303640; margin: 0; padding: 10px 0; }
.compact-series-goal { min-width: 0; overflow-wrap: anywhere; }
.compact-series-goal strong { font-size: .875rem; }
.compact-series-goal small { display: block; font-size: .875rem; line-height: 1.4; color: #bec5cf; }
.athlete-compact-exercise .compact-series-row input { min-width: 0; width: 100%; min-height: 44px; padding: 8px 4px; text-align: center; font-size: 1rem; border-radius: 8px; }
.athlete-compact-exercise .compact-series-goal .series-video-camera { margin: 0 0 4px 4px; }
.athlete-compact-exercise .workout-set-status { font-size: .875rem; }
.athlete-compact-exercise .workout-set-validation:empty { display: none; }
@media(max-width:520px) {
  .athlete-compact-exercise { padding: 12px; }
  .athlete-compact-exercise .compact-series-columns,
  .athlete-compact-exercise .compact-series-row { gap: 5px; }
}
.athlete-compact-exercise .compact-series-goal .series-video-camera { width: 44px; padding: 6px; }
.athlete-compact-exercise .compact-series-goal .series-video-camera span { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

.athlete-compact-exercise .compact-series-columns,
.athlete-compact-exercise .compact-series-row { grid-template-columns:44px minmax(0,1.6fr) repeat(3,minmax(0,1fr)); }
.athlete-compact-exercise .compact-series-columns--timed,
.athlete-compact-exercise .compact-series-row--timed { grid-template-columns:44px minmax(0,1.7fr) minmax(0,1fr); }
.athlete-compact-exercise .compact-series-row > .series-video-camera { position:relative; width:44px; min-height:44px; margin:0; padding:6px; font-size:18px; }
.athlete-compact-exercise .compact-series-row > .series-video-camera span { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.series-video-camera.is-not-required::after { content:''; position:absolute; width:23px; height:2px; background:currentColor; transform:rotate(-45deg); top:50%; left:10px; }
.series-video-camera.is-attached { border-color:var(--accent); color:var(--accent); }
.series-video-camera.is-attached::after { content:'✓'; position:absolute; right:1px; bottom:0; font-size:12px; line-height:14px; background:#15151b; border-radius:4px; }
.series-video-camera:focus-visible { outline:2px solid #ffffff; outline-offset:3px; }
.series-video-camera { position:relative; }
/* Global autosave: separate persistence from exercise completion. */
.top-bar { display:grid; grid-template-columns:auto minmax(0,1fr) minmax(0,320px) auto; align-items:start; }
.top-bar__title { justify-items:start; text-align:left; align-self:center; }
.global-save-indicator { min-width:0; display:grid; justify-items:end; gap:4px; text-align:right; color:#9f9fa8; }
.global-save-indicator__state { display:flex; align-items:center; justify-content:flex-end; gap:8px; min-width:0; }
.global-save-indicator .lan-sync-status { color:inherit; overflow-wrap:anywhere; }
.global-save-indicator__icon { flex:0 0 20px; font-size:20px; line-height:1; }
.global-save-indicator--synced { color:#70d69a; }
.global-save-indicator--saving,.global-save-indicator--connecting { color:#e8c76e; }
.global-save-indicator--offline,.global-save-indicator--error,.global-save-indicator--conflict { color:#ef8585; }
.global-save-indicator--saving .global-save-indicator__icon,.global-save-indicator--connecting .global-save-indicator__icon { width:16px; height:16px; flex-basis:16px; font-size:0; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:autosave-spin .8s linear infinite; }
@keyframes autosave-spin { to { transform:rotate(360deg); } }
.athlete-compact-exercise .workout-set-status:not(.is-error) { display:none; }
@media(max-width:760px) {
 .top-bar { grid-template-columns:auto minmax(0,1fr) auto; gap:10px; }
 .top-bar .sidebar-menu-button { grid-column:3; grid-row:1; }
 .global-save-indicator { grid-column:2 / -1; grid-row:2; }
 .global-save-indicator .visual-save-tools { max-width:100%; }
 .global-save-indicator .sync-retry { min-height:44px; white-space:normal; }
}
@media(prefers-reduced-motion:reduce) { .global-save-indicator__icon { animation:none !important; } }
/* Per-exercise metrics stay beneath the series, without competing with input. */
.exercise-live-metrics { margin:14px 0; padding:12px 0; border-top:1px solid #303640; }
.exercise-live-metrics__values { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:16px 28px; }
.exercise-live-metrics__values>div { display:grid; gap:4px; text-align:right; min-width:0; }
.exercise-live-metrics__values span { color:#b9c3d1; font-size:.875rem; }
.exercise-live-metrics__values strong { color:var(--accent); font-size:1.25rem; overflow-wrap:anywhere; }
.exercise-live-metrics__values strong small { font-size:.875rem; font-weight:400; }
.exercise-live-metrics__help { margin-top:10px; color:#b9c3d1; font-size:.875rem; }
.exercise-live-metrics__help summary { cursor:pointer; min-height:44px; display:flex; align-items:center; }
.exercise-live-metrics__help summary::before { content:'▸'; margin-right:8px; }
.exercise-live-metrics__help[open] summary::before { content:'▾'; }
.exercise-live-metrics__help p { line-height:1.5; }
.exercise-live-metrics__help summary:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
/* Observations reveal the editor on demand and preserve the existing field. */
.exercise-observation--compact { padding:0; background:transparent; border-color:#303640; }
.exercise-observation--compact summary { cursor:pointer; min-height:44px; padding:12px; list-style:none; color:#f2f2f4; font-size:.875rem; }
.exercise-observation--compact summary::-webkit-details-marker { display:none; }
.exercise-observation--compact summary::before { content:'▸'; margin-right:8px; color:#b9c3d1; }
.exercise-observation--compact[open] summary::before { content:'▾'; }
.exercise-observation--compact summary:focus-visible { outline:2px solid var(--accent); outline-offset:3px; border-radius:10px; }
.exercise-observation__preview { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; overflow-wrap:anywhere; color:#b9c3d1; line-height:1.5; margin:6px 0 0 18px; }
.exercise-observation--compact[open] .exercise-observation__preview { display:none; }
.exercise-observation__editor { padding:0 12px 12px; }
.exercise-observation__editor textarea { box-sizing:border-box; background:#101318; border:1px solid #3d3d45; border-radius:8px; color:#f2f2f4; padding:10px; font:inherit; font-size:1rem; }
.exercise-observation__editor textarea:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }

.athlete-greeting { font-size:1.25rem; margin:8px 0 16px; }
.training-focus__selector summary,
.athlete-optional-note summary { cursor:pointer; min-height:44px; display:flex; align-items:center; color:#bec5cf; }
.training-focus__selector[open] { margin-bottom:12px; }
.athlete-optional-note textarea { width:100%; box-sizing:border-box; }
.athlete-optional-note label { display:block; margin:8px 0; }
.athlete-compact-exercise .series-video-camera.is-not-required { visibility:hidden; }
.athlete-compact-exercise .training-continue { margin:16px 0; }
.athlete-compact-exercise .visual-panel { margin:10px 0; box-shadow:none; }

.coach-dashboard__welcome h1 { font-size:1.35rem; margin:4px 0 14px; }
.coach-dashboard__panel:has([data-coach-alert-empty]:not([hidden])) { display:none; }
.coach-dashboard__sections > [data-notification-group] { grid-column:1/-1; }
.coach-dashboard__athletes { grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; }
.coach-dashboard__athlete { display:grid; grid-template-columns:1fr auto; padding:16px; border:1px solid #303640; border-radius:12px; }
.coach-dashboard__athlete > div { grid-column:1/-1; min-width:0; }
.coach-dashboard__program { display:block; margin:4px 0; }
.coach-dashboard__daily-training { padding:12px; }
.coach-dashboard__athlete > details { min-width:0; }
.coach-profile-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin:16px 0; }
.coach-profile-facts div { min-width:0; }
.coach-profile-facts dt { color:#a6afbc; font-size:.8rem; }
.coach-profile-facts dd { margin:5px 0 0; font-weight:600; overflow-wrap:anywhere; }
.coach-profile-extra summary,.coach-editor-extra summary,.coach-schedule-details summary,.coach-schedule-actions summary,.coach-optional-comment summary { cursor:pointer; min-height:44px; display:flex; align-items:center; font-size:.875rem; color:#bec5cf; }
.coach-schedule-actions { border-top:1px solid #303640; margin-top:4px; }
.coach-schedule-actions label { display:block; }
.coach-schedule-actions input { width:100%; box-sizing:border-box; }
.coach-schedule-actions .weekly-plan__remove { width:100%; margin-top:8px; }
.weekly-plan__heading h1 { font-size:1.15rem; line-height:1.4; }
.coach-review-controls { display:flex; flex-wrap:wrap; align-items:center; gap:12px; padding:12px 16px; }
.coach-review-controls p { margin:0; }
.coach-optional-comment[open] summary { margin-bottom:10px; }
.coach-optional-comment textarea { width:100%; box-sizing:border-box; }
.coach-optional-comment small { display:block; margin-top:8px; }
@media(max-width:900px) { .coach-dashboard__athletes { grid-template-columns:1fr; } }
@media(max-width:600px) { .coach-profile-facts { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; } .coach-dashboard__athlete { padding:12px; } }
/* Shared compact hierarchy for programming and athlete capture. */
.editor-series-table-wrap { width:100%; min-width:0; margin:16px 0; }
.editor-series-table { width:100%; border-collapse:collapse; table-layout:fixed; }
.editor-series-table caption { text-align:left; padding:8px 0 12px; color:#b9c3d1; font-size:.875rem; }
.editor-series-table th,.editor-series-table td { text-align:left; padding:10px 6px; vertical-align:top; border-bottom:1px solid #303640; }
.editor-series-table thead th { color:#b9c3d1; font-size:.875rem; font-weight:500; }
.editor-series-table th:first-child { width:42px; }
.editor-series-table input:not([type=checkbox]),.editor-series-table select { width:100%; min-width:0; box-sizing:border-box; margin:0; min-height:44px; font-size:1rem; }
.editor-table-check { display:flex; align-items:center; gap:6px; min-height:44px; font-size:.875rem; line-height:1.4; }
.editor-table-check input { flex:0 0 auto; }
.coach-exercise-guide { margin:12px 0; color:#b9c3d1; }
.coach-exercise-guide summary { cursor:pointer; padding:10px 0; min-height:44px; box-sizing:border-box; font-size:.875rem; }
.previous-exercise-reference { margin:12px 0 16px; padding:10px 12px; border-left:2px solid #596370; background:#101318; border-radius:6px; }
.previous-exercise-reference summary { cursor:pointer; min-height:44px; font-size:.875rem; color:#b9c3d1; }
.previous-exercise-reference summary strong { display:block; color:#e5e8ed; font-weight:500; margin:6px 0; overflow-wrap:anywhere; }
.previous-exercise-reference__body { font-size:.875rem; }
.previous-exercise-reference table { width:100%; border-collapse:collapse; }
.previous-exercise-reference th,.previous-exercise-reference td { padding:8px 4px; text-align:left; border-bottom:1px solid #303640; overflow-wrap:anywhere; }
.previous-exercise-reference caption { text-align:left; padding:8px 0; color:#b9c3d1; }
.previous-exercise-empty { color:#b9c3d1; font-size:.875rem; margin:10px 0; }
.coach-exercise-guide summary:focus-visible,.previous-exercise-reference summary:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
.workout-editor__exercise-actions { flex-wrap:wrap; gap:8px; }
.workout-editor__exercise-actions button,.exercise-history-trigger { min-height:44px; }
@media(max-width:760px) {
 .editor-series-table thead { position:absolute; width:1px; height:1px; clip-path:inset(50%); overflow:hidden; }
 .editor-series-table,.editor-series-table tbody { display:block; }
 .editor-series-table tr { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; padding:12px; margin-bottom:12px; border:1px solid #303640; border-radius:10px; }
 .editor-series-table th:first-child { grid-column:1 / -1; width:auto; }
 .editor-series-table td,.editor-series-table th { display:block; padding:0; border:0; min-width:0; }
 .editor-series-table td::before { content:attr(data-label); display:block; color:#b9c3d1; font-size:.875rem; margin:4px 0 6px; }
 .previous-exercise-reference table { table-layout:fixed; }
}
.training-session-total { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; margin:12px 0; font-size:.875rem; color:#b9c3d1; }
.training-session-total strong { color:var(--accent); font-size:1.125rem; }
.training-session-total__details { color:#b9c3d1; font-size:.875rem; }
.training-session-total__details summary { cursor:pointer; min-height:44px; padding:10px 0; box-sizing:border-box; }
.editor-series-table .editor-table-check input[type=checkbox] { width:20px; max-width:20px; height:20px; min-height:20px; flex:0 0 20px; margin:0; }
.editor-series-table .editor-table-check { flex-wrap:nowrap; overflow-wrap:anywhere; }
.video-review-filters { display:flex; flex-wrap:wrap; align-items:end; gap:12px; }
.video-review-filters label { display:grid; gap:6px; font-size:.875rem; }
.video-review-filters input,.video-review-filters select { min-height:44px; padding:10px; background:#101318; color:#fff; border:1px solid #3d3d45; }
.video-review-card { margin:12px 0; }
.video-review-card__heading { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; }
.video-review-card__heading span { color:#b9c3d1; font-size:.875rem; }
.video-review-card video { width:100%; max-height:320px; margin:12px 0; background:#000; border-radius:8px; }
.video-review-card label { display:block; margin:8px 0; }
.video-review-card textarea { width:100%; box-sizing:border-box; background:#101318; color:#fff; padding:10px; border:1px solid #3d3d45; }
.video-review-card button,.video-review-filters button,.finished-training-summary button { min-height:44px; }
.finished-training-summary__metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:18px 0; }
.finished-training-summary__metrics>div { display:grid; gap:6px; min-width:0; }
.finished-training-summary__metrics span { font-size:.875rem; color:#b9c3d1; }
.finished-training-summary__metrics strong { font-size:1.25rem; color:var(--accent); overflow-wrap:anywhere; }
.finished-training-summary summary,.finished-session-details>summary { cursor:pointer; min-height:44px; padding:10px 0; box-sizing:border-box; }
.finished-training-summary li { margin:10px 0; overflow-wrap:anywhere; }
.finished-training-summary li button { margin:6px 0 6px 12px; }
@media(max-width:760px){.finished-training-summary__metrics { grid-template-columns:1fr; }.video-review-filters>* { width:100%; min-width:0; }.video-review-card .visual-actions button { width:100%; }.finished-training-summary li button { display:block; margin-left:0; }}


/* Nexus Squad: charcoal surfaces, steel typography and red brand actions. */
:root { --accent:#ff7587; --brand:#c6283d; --brand-hover:#a51e30; --surface:#181b20; --border:#303640; --muted:#b9c3d1; color-scheme:dark; }
body { background:#0c0e12; color:#f3f5f8; font-family:Inter,"Segoe UI",Arial,sans-serif; }
.card { border-radius:14px; box-shadow:0 4px 16px #0002; }
.top-bar { background:#14181e; border-color:var(--border); border-radius:12px; }
.app-sidebar { background:#11151b; border-right-color:var(--border); }
.sidebar-brand { gap:10px; padding-bottom:14px; margin-bottom:8px; border-bottom:1px solid var(--border); min-height:74px; }
.sidebar-brand-name { display:grid; gap:4px; min-width:0; }
.sidebar-brand-name strong { font-size:15px; letter-spacing:.8px; color:#f4f6f8; }
.sidebar-brand-name small { font-size:12px; color:var(--muted); }
.sidebar-logo { position:relative; overflow:hidden; background:#000; border:1px solid #4b535f; border-radius:10px; }
.sidebar-logo img { position:absolute; width:104px; height:104px; max-width:none; left:-31px; top:-11px; }
.app-sidebar button.is-active { background:#3b1b25; color:#fff; box-shadow:inset 3px 0 var(--accent); }
.app-sidebar button:hover { background:#252b34; }
.app-sidebar button.is-active:hover { background:#4c2230; }
.is-collapsed .sidebar-brand-name { display:none; }
 .app-container button.primary-button,#auth-submit { background:var(--brand); color:#fff; border:1px solid #dd4054; }
.app-container button.primary-button:hover,#auth-submit:hover { background:var(--brand-hover); }
button:disabled { cursor:default; opacity:.65; transform:none; }
.review-filter-controls button[aria-pressed="true"] { background:#3b1b25; color:#fff; border-color:var(--accent); }
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
input[type=checkbox],input[type=radio] { accent-color:var(--brand); }
.login-card { margin:32px auto 20px; padding:28px; border-top:3px solid var(--brand); box-shadow:0 12px 36px #0004; }
.login-brand { display:flex; align-items:center; justify-content:center; gap:18px; margin:0 0 24px; text-align:left; }
.login-brand-emblem { position:relative; width:96px; height:96px; flex:0 0 96px; overflow:hidden; border-radius:16px; background:#000; border:1px solid #424953; }
.login-brand-emblem img { position:absolute; width:244px; height:244px; max-width:none; left:-73px; top:-25px; }
.login-card .login-brand h1 { font-size:22px; letter-spacing:1px; margin:0 0 8px; line-height:1.15; color:#f3f5f8; }
.login-brand-caption { font-size:12px; color:var(--muted); letter-spacing:2px; }
.login-card .auth-secondary { margin:10px 0 0; border-color:var(--border); font-size:12px; }
.login-card .auth-secondary:hover { background:#252b34; }
.login-card .login-card__hint { margin-top:18px; }
@media(max-width:760px) {
 .sidebar-brand-name,.is-collapsed .sidebar-brand-name { display:grid; }
 .login-card { margin:12px auto 20px; padding:22px; }
 .login-brand { gap:14px; margin-bottom:20px; }
 .login-brand-emblem { width:76px; height:76px; flex-basis:76px; }
 .login-brand-emblem img { width:193px; height:193px; left:-58px; top:-20px; }
 .login-card .login-brand h1 { font-size:19px; }
}
@media(prefers-reduced-motion:reduce) { button { transition:none; } button:hover { transform:none; } }
.sidebar-nav { scrollbar-width:thin; scrollbar-color:#48515f transparent; }
.sidebar-nav::-webkit-scrollbar { width:6px; }
.sidebar-nav::-webkit-scrollbar-thumb { background:#48515f; border-radius:6px; }
.is-collapsed .sidebar-link { padding:12px 10px; gap:0; justify-content:center; }
@media(max-width:760px) { .is-collapsed .sidebar-link { padding:12px; gap:12px; justify-content:flex-start; } }
:root { --runtime-notice-layer: 2000; }
.app-runtime-notice { position: fixed; z-index: var(--runtime-notice-layer); top: 12px; right: 12px; left: 12px; margin: 0 auto; max-width: 620px; display: flex; gap: 16px; align-items: center; justify-content: space-between; padding: 12px 16px; background: #252a32; color: #fff; border: 1px solid #a5343a; border-radius: 12px; box-shadow: 0 4px 20px #0006; }
.app-runtime-notice button { flex-shrink: 0; min-height: 44px; }
.app-runtime-notice button:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.coach-draft-recovery { margin: 16px; }
.coach-draft-recovery small { display: block; }
.workout-editor__footer #coach-editor-draft-status { flex-basis: 100%; font-size: .85rem; }

.athlete-edit-dialog{width:min(600px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid var(--border,#444);border-radius:16px;padding:24px;color:var(--text,#eee);background:var(--surface,#171717)}
.athlete-edit-dialog::backdrop{background:#000a}.athlete-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:16px 0}.athlete-edit-grid label{display:grid;gap:6px;min-width:0}.athlete-edit-grid input,.athlete-edit-grid select{width:100%;box-sizing:border-box;min-height:44px}.athlete-edit-dialog button{min-height:44px}.athlete-edit-dialog summary{cursor:pointer;padding:12px 0}.athlete-edit-dialog [role=alert]{color:#ff9292}.weekly-plan__day[aria-current=date]{border-color:#df343f}@media(max-width:480px){.athlete-edit-grid{grid-template-columns:1fr}.athlete-edit-dialog{padding:16px}}

/* Compact coach roster; keep training and nutrition actions scoped to each athlete. */
.coach-dashboard__roster { padding:16px; }
.coach-dashboard__roster .coach-dashboard__panel-heading { margin-bottom:12px; }
.coach-dashboard__roster .coach-dashboard__athletes { grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr)); gap:10px; align-items:start; }
.coach-dashboard__roster .coach-dashboard__athlete { display:flex; flex-direction:column; align-items:stretch; justify-content:flex-start; gap:8px; padding:12px; border:1px solid var(--border,#303640); border-radius:10px; background:var(--surface,#171c22); min-width:0; }
.coach-dashboard__roster .coach-dashboard__athlete:last-child { border-bottom:1px solid var(--border,#303640); }
.coach-dashboard__roster .coach-dashboard__athlete > div { min-width:0; }
.coach-dashboard__roster .coach-dashboard__athlete h3 { font-size:1rem; line-height:1.3; margin:0 0 3px; overflow-wrap:anywhere; }
.coach-dashboard__athlete-meta { display:block; font-size:.75rem; }
.coach-dashboard__roster .coach-dashboard__program { margin:2px 0 0; font-size:.8rem; overflow-wrap:anywhere; }
.coach-dashboard__roster .coach-dashboard__daily-empty { margin:0; font-size:.8rem; }
.coach-dashboard__roster .coach-dashboard__daily-training { margin-top:0; padding:8px 0 0; border:0; border-top:1px solid var(--border,#303640); border-radius:0; background:transparent; gap:4px; }
.coach-dashboard__athlete-sessions { display:grid; gap:8px; }
.coach-dashboard__session-heading { display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; }
.coach-dashboard__session-heading p { flex:1 1 130px; font-size:.85rem; line-height:1.4; }
.coach-dashboard__session-status { display:inline-flex; align-items:center; padding:3px 7px; border-radius:6px; font-size:.7rem; color:#c7cbd3; background:#282d36; }
.coach-dashboard__session-status.is-completed { color:#a7e6bc; background:#173626; }
.coach-dashboard__session-status.is-in-progress { color:#b7d5ff; background:#1d3048; }
.coach-dashboard__session-actions { display:flex; align-items:flex-start; gap:8px; }
.coach-dashboard__session-actions details { flex:1; min-width:0; }
.coach-dashboard__session-actions details p { font-size:.8rem; padding:4px 0; }
.coach-dashboard__roster .coach-dashboard__athlete button,.coach-dashboard__roster .coach-dashboard__athlete summary { min-height:44px; padding:8px 10px; margin:0; font-size:.8rem; line-height:1.3; cursor:pointer; }
.coach-dashboard__roster .coach-dashboard__athlete summary { display:flex; align-items:center; gap:6px; }
.coach-dashboard__roster .coach-dashboard__athlete summary::before { content:'▸'; flex-shrink:0; }
.coach-dashboard__roster .coach-dashboard__athlete details[open] > summary::before { content:'▾'; }
.coach-dashboard__roster .coach-dashboard__daily-training button { width:auto; flex-shrink:0; }
.coach-dashboard__athlete-actions { display:grid; grid-template-columns:1fr 1fr; align-items:start; gap:8px; padding-top:6px; border-top:1px solid var(--border,#303640); }
.coach-dashboard__athlete-actions > button { width:100%; }
.coach-dashboard__athlete-actions > details { min-width:0; }
.coach-dashboard__athlete-actions > details[open] { grid-column:1/-1; }
.coach-dashboard__athlete-actions .nutrition-visibility { min-height:44px; font-size:.8rem; line-height:1.4; }
.coach-dashboard__roster .coach-dashboard__athlete :is(button,summary):focus-visible { outline:2px solid var(--brand,#df343f); outline-offset:2px; }
@media(max-width:480px) { .coach-dashboard__roster { padding:12px; } }

/* One compact header for page, athlete context and cloud save status. */
.top-bar { display:flex; align-items:center; flex-wrap:wrap; padding:10px 12px; gap:8px; margin-bottom:14px; }
.top-bar .top-bar__title { flex:1; text-align:left; }
.top-bar:has(.active-athlete-summary) .top-bar__title { flex:0 1 auto; }
.top-bar .active-athlete-summary { flex:1; margin:0; padding:0 0 0 12px; border:0; border-left:1px solid var(--border); border-radius:0; background:transparent; gap:8px; flex-wrap:nowrap; }
.top-bar .active-athlete-summary__info { flex:1; gap:2px; }
.top-bar .active-athlete-summary__info strong { font-size:.85rem; }
.top-bar .active-athlete-summary__info small { font-size:.72rem; }
.top-bar .active-athlete-summary > button { font-size:.8rem; padding:8px 10px; min-height:44px; white-space:nowrap; }
.top-bar .active-athlete-summary__add { width:44px; height:44px; }
.top-bar > .lan-sync-status { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.top-bar .global-save-indicator { position:relative; display:block; margin-left:auto; flex:0 0 44px; text-align:left; }
.global-save-indicator__toggle { position:relative; display:flex; align-items:center; justify-content:center; width:44px; min-height:44px; cursor:pointer; border-radius:8px; list-style:none; }
.global-save-indicator__toggle::-webkit-details-marker { display:none; }
.global-save-indicator__toggle:hover { background:#ffffff0a; }
.global-save-indicator__toggle:focus-visible { outline:2px solid currentColor; outline-offset:2px; }
.top-bar .global-save-indicator__icon { width:24px; height:24px; flex:0 0 24px; border:0; border-radius:0; animation:none; }
.global-save-indicator__mark { position:absolute; right:2px; bottom:4px; min-width:13px; text-align:center; font-size:12px; line-height:14px; font-weight:bold; border-radius:4px; background:#14181e; }
.global-save-indicator--saving .global-save-indicator__toggle,.global-save-indicator--connecting .global-save-indicator__toggle { animation:save-icon-pulse 1.2s ease-in-out infinite; }
@keyframes save-icon-pulse { 50% { opacity:.5; } }
.global-save-indicator__panel { position:absolute; right:0; top:calc(100% + 6px); z-index:60; width:min(280px,calc(100vw - 48px)); padding:12px; background:var(--surface); color:var(--muted); border:1px solid var(--border); border-radius:10px; box-shadow:0 8px 24px #0008; }
.global-save-indicator__panel p { margin:0 0 8px; font-size:.85rem; line-height:1.4; }
.top-bar .global-save-indicator__panel button { width:100%; min-height:44px; margin:4px 0 0; white-space:normal; }
@media(max-width:760px) {
 .top-bar .active-athlete-summary { flex:1 0 100%; order:5; padding:6px 0 0; border-left:0; border-top:1px solid var(--border); }
 .top-bar:has(.active-athlete-summary) .top-bar__title { flex:1; }
}
@media(prefers-reduced-motion:reduce) { .global-save-indicator__toggle { animation:none !important; } }

.visual-create-athlete:not([open]) { display:none; }
.athlete-create-heading { display:flex; justify-content:space-between; align-items:center; gap:12px; margin:12px 0; }
.athlete-create-heading button { min-height:44px; }
