/* SchoolDay v236.13: training planner overhaul. */
.training-section-v23613{display:block;margin:1rem 0;padding:1rem;border:1px solid var(--border,#d7e1ea);border-radius:12px;background:var(--card-bg,#fff)}
details.training-section-v23613>summary{cursor:pointer;font-size:1.08rem;font-weight:750;margin-bottom:1rem}
.inline-input-v23613{display:flex;align-items:center;gap:.45rem}.inline-input-v23613 input{max-width:8rem}
.training-inline-form-v23613{display:flex;align-items:end;gap:.6rem;flex-wrap:wrap}.training-inline-form-v23613 label{margin:0}
.training-category-grid-v23613{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}
.training-category-frame-v23613{min-width:0;padding:.8rem;border:2px dashed #b7c6d4;border-radius:12px;background:#f8fbfd}
.training-category-frame-v23613.is-drag-over{border-color:#1765a8;background:#eaf4fc}
.training-category-frame-v23613 h4{margin:.1rem 0 .65rem}.training-category-frame-head-v23613{display:flex;justify-content:space-between;align-items:start;gap:.5rem}
.training-category-module-v23613{padding:.6rem;margin:.45rem 0;border:1px solid #d7e1ea;border-radius:9px;background:#fff;cursor:grab}
.training-category-module-v23613 strong{display:block}.training-category-module-v23613 .form-actions{margin-top:.45rem}
.training-module-list-v23613{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.75rem}
.training-module-card-v23613{padding:.85rem;border:1px solid #d7e1ea;border-radius:10px;background:#fff}
.training-module-card-v23613 h4{margin:0 0 .35rem}.training-module-meta-v23613{display:flex;gap:.4rem;flex-wrap:wrap;margin:.5rem 0}
.training-chip-v23613{display:inline-flex;align-items:center;padding:.18rem .45rem;border-radius:999px;background:#e7f1f9;color:#184e77;font-size:.82rem}
.training-user-workspace-v23613{display:grid;grid-template-columns:minmax(240px,.9fr) repeat(2,minmax(270px,1fr));gap:1rem;align-items:start}
.training-user-workspace-v23613>section{min-width:0;padding:1rem;border:1px solid #d7e1ea;border-radius:12px;background:#f8fbfd}
.training-library-group-v23613{margin-bottom:.8rem;padding:.65rem;border:1px solid #d7e1ea;border-radius:10px;background:#fff}
.training-library-group-v23613>h4{margin:.1rem 0 .5rem}.training-library-item-v23613{padding:.55rem;margin:.35rem 0;border:1px solid #cbd8e4;border-radius:8px;background:#f9fcff;cursor:grab}
.training-quick-assign-v23613{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.35rem;margin-top:.4rem}.training-quick-assign-v23613 label{grid-column:1/-1;font-size:.82rem}
.training-user-column-v23613{min-height:120px;padding:.25rem;border:2px dashed transparent;border-radius:10px}.training-user-column-v23613.is-drag-over{border-color:#1765a8}
.training-user-bubble-v23613{display:block;width:100%;margin:.45rem 0;padding:.7rem;text-align:left;border:1px solid #b9cada;border-radius:16px;background:#fff;color:inherit;cursor:pointer}
.training-user-bubble-v23613:hover,.training-user-bubble-v23613:focus-visible{border-color:#1765a8;box-shadow:0 0 0 3px rgba(23,101,168,.16)}
.training-user-bubble-v23613>strong{display:block}.training-user-chips-v23613{display:flex;gap:.3rem;flex-wrap:wrap;margin:.45rem 0}.training-user-bubble-actions-v23613{display:flex;justify-content:flex-end;gap:.4rem;flex-wrap:wrap}
.training-modal-v23613{position:fixed;inset:0;z-index:2147483400;display:flex;align-items:center;justify-content:center;padding:1rem;background:rgba(8,25,42,.72)}
.training-modal-v23613.hidden{display:none}.training-modal-card-v23613{width:min(920px,100%);max-height:92vh;overflow:auto;padding:1.1rem;border-radius:14px;background:#fff;color:#17324d}
.training-user-assignment-v23613{margin:.7rem 0;padding:.8rem;border:1px solid #d7e1ea;border-radius:10px}.training-user-assignment-actions-v23613{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.6rem;align-items:end}
.training-history-table-v23613{width:100%;border-collapse:collapse}.training-history-table-v23613 th,.training-history-table-v23613 td{padding:.5rem;border-bottom:1px solid #d7e1ea;text-align:left}
.training-dashboard-widgets-v23613{display:grid;grid-template-columns:repeat(3,minmax(170px,1fr));gap:.75rem;margin-bottom:1rem}.training-dashboard-widget-v23613{padding:1rem;border:1px solid #c6d6e4;border-radius:12px;background:#f4f9fd}.training-dashboard-widget-v23613 strong{display:block;font-size:1.8rem;color:#1765a8}.training-dashboard-widget-v23613 span{font-size:.9rem}
.training-dashboard-list-v23613{display:grid;gap:.55rem;margin-top:1rem}.training-dashboard-person-v23613{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.7rem;align-items:center;width:100%;padding:.75rem;text-align:left;border:1px solid #d7e1ea;border-radius:9px;background:#fff;color:inherit}
.training-role-card-v23613{margin:.65rem 0;padding:.75rem;border:1px solid #d7e1ea;border-radius:10px}.training-role-card-v23613 h4{margin:0}.training-role-card-v23613 .form-actions{margin-top:.5rem}
.training-link-button-v23613{display:inline-block;padding:.45rem .7rem;border-radius:8px;background:#1765a8;color:#fff!important;text-decoration:none}.training-link-icon-v23613{text-decoration:none}.training-link-icon-v23613::before{content:"↗";margin-right:.35rem}
@media(max-width:1000px){.training-user-workspace-v23613{grid-template-columns:1fr}.training-dashboard-widgets-v23613{grid-template-columns:repeat(2,minmax(130px,1fr))}}
@media(max-width:600px){.training-dashboard-widgets-v23613{grid-template-columns:1fr}.training-dashboard-person-v23613{grid-template-columns:1fr}.training-modal-v23613{padding:.25rem}.training-modal-card-v23613{max-height:98vh;border-radius:8px}.training-user-assignment-actions-v23613{grid-template-columns:1fr}}

/* --- v236.14: the Manage Training banner ------------------------------- */
/* One function, seven sections. Each panel is a plain block; only "hidden"
   decides which is on screen, so nothing here fights the shell's own layout. */
.training-master-panel-v23614{min-width:0}
.training-master-panel-v23614.hidden{display:none}
.training-master-tabs-v23614{flex-wrap:wrap}

/* Three widgets now, not four: outstanding, upcoming, up to date. */
.training-dashboard-widget-v23613.is-outstanding-v23614{border-color:#e2b4b4;background:#fdf3f3}
.training-dashboard-widget-v23613.is-outstanding-v23614 strong{color:#a4262c}
.training-dashboard-widget-v23613.is-upcoming-v23614{border-color:#e4d2ac;background:#fdfaf1}
.training-dashboard-widget-v23613.is-upcoming-v23614 strong{color:#8a6100}
.training-dashboard-widget-v23613.is-up_to_date-v23614{border-color:#b6d8bd;background:#f2faf4}
.training-dashboard-widget-v23613.is-up_to_date-v23614 strong{color:#1c6b34}

.training-dashboard-toolbar-v23614{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.9rem;align-items:end;margin:1rem 0 .35rem}
.training-dashboard-actions-v23614{display:flex;gap:.45rem;flex-wrap:wrap;justify-content:flex-end}

/* A floated legend leaves its fieldset's grid flow, and the remaining child
   then becomes the only grid item and sizes to max-content -- which is what
   pushed a whole row off the edge of its card in v236.2. Keep it in flow. */
.training-dashboard-filters-v23614{min-width:0;margin:0;padding:.6rem .8rem;border:1px solid var(--border,#d7e1ea);border-radius:10px}
.training-dashboard-filters-v23614>legend{display:block;float:none;padding:0 .35rem;font-weight:650;font-size:.9rem}
.training-dashboard-filters-v23614{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.training-dashboard-filters-v23614 .check-card{margin:0}

.training-person-v23614{min-width:0;border:1px solid #d7e1ea;border-radius:10px;background:#fff;overflow:hidden}
.training-person-v23614.is-open-v23614{border-color:#1765a8;box-shadow:0 0 0 3px rgba(23,101,168,.12)}
.training-person-head-v23614{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem 1rem;align-items:center;width:100%;padding:.8rem .95rem;text-align:left;border:0;border-radius:0;background:transparent;color:inherit;cursor:pointer;font:inherit}
.training-person-head-v23614:hover,.training-person-head-v23614:focus-visible{background:#f4f9fd}
.training-person-name-v23614{min-width:0;font-size:1.05rem;font-weight:750}
.training-person-counts-v23614{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:flex-end}
.training-person-counts-v23614>span{display:inline-flex;align-items:center;padding:.2rem .5rem;border-radius:999px;font-size:.82rem;white-space:nowrap}
.training-person-counts-v23614 .is-outstanding-v23614{background:#fbe6e6;color:#a4262c}
.training-person-counts-v23614 .is-upcoming-v23614{background:#fbf1da;color:#7a5600}
.training-person-counts-v23614 .is-up_to_date-v23614{background:#e6f4ea;color:#1c6b34}
.training-person-body-v23614{padding:.2rem .95rem .95rem;border-top:1px solid #e4ecf3}
.training-person-body-v23614.hidden{display:none}
.training-person-body-v23614 h4{margin:.85rem 0 .3rem;font-size:.95rem}
.training-person-items-v23614{margin:0;padding-left:1.1rem}
.training-person-items-v23614>li{margin:.2rem 0}
.training-person-items-v23614>li.is-outstanding-v23614::marker{color:#a4262c}
.training-person-items-v23614>li.is-upcoming-v23614::marker{color:#8a6100}

/* Bulk due dates: two forms, one heading each, so "Individual Modules" and
   "Categories" cannot be mistaken for one control with two date boxes. */
.training-bulk-form-v23614{margin:0 0 1.2rem;padding:1rem;border:1px solid var(--border,#d7e1ea);border-radius:12px;background:var(--card-bg,#fff)}
.training-bulk-form-v23614>h3{margin:0}

/* Email scheduling. */
.training-email-form-v23614{display:grid;gap:1rem}
.training-schedule-group-v23614{min-width:0;margin:0;padding:.9rem 1rem 1rem;border:1px solid var(--border,#d7e1ea);border-radius:12px;background:var(--card-bg,#fff)}
.training-schedule-group-v23614>legend{display:block;float:none;padding:0 .4rem;font-weight:750;font-size:1.02rem}
.training-schedule-group-v23614>p{margin:.1rem 0 .6rem}
.training-schedule-group-v23614.is-off-v23614>.training-schedule-choice-v23614{opacity:.55}
.training-schedule-choice-v23614{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin-top:.55rem}
.training-schedule-choice-v23614 .check-card{margin:0}
.training-weekday-v23614{display:flex;align-items:center;gap:.4rem;margin:0}
.training-weekday-v23614 select{min-width:9rem}
.training-weekday-v23614 select:disabled{opacity:.5}
.training-extra-emails-v23614{display:block;margin-top:.7rem}
.training-extra-emails-v23614 input{width:100%}

@media(max-width:1000px){
  .training-dashboard-toolbar-v23614{grid-template-columns:1fr}
  .training-dashboard-actions-v23614{justify-content:flex-start}
}
@media(max-width:700px){
  .training-person-head-v23614{grid-template-columns:1fr}
  .training-person-counts-v23614{justify-content:flex-start}
}

/* --- v236.15: Scheduling Emails as a list, and Manage Categories ------- */

/* THE SCHEDULE CONTROLS WERE CARDS, AND CARDS ARE THE WRONG SHAPE FOR THIS.
   .check-card is a bordered box that stretches, so "Send these emails" sat at
   the far right of a full-width box with the tick miles away from it, and
   three radio boxes wrapped like tiles. These are one-line choices: the words,
   then the control, immediately. */
.training-schedule-list-v23615 {
  list-style: none;
  margin: .4rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: .1rem;
}
.training-schedule-list-v23615 > li {
  display: flex;
  align-items: center;
  gap: .6rem;
  flex-wrap: wrap;
  padding: .26rem .15rem;
  border-radius: .45rem;
}
.training-schedule-list-v23615 > li:hover { background: #f4f9fd; }
/* inline-flex, so the label shrinks to its words and the control lands beside
   them rather than at the end of the row. */
.training-switch-v23615 {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font-weight: 600;
  cursor: pointer;
}
.training-switch-v23615 > input {
  margin: 0;
  flex: 0 0 auto;
  width: 1.05rem;
  height: 1.05rem;
  cursor: pointer;
}
.training-weekly-row-v23615 > select { min-width: 8.5rem; }
.training-weekly-row-v23615 > select:disabled { opacity: .5; }
.training-schedule-group-v23614 > .training-schedule-choice-v23614 { margin-top: .1rem; }
.training-schedule-group-v23614.is-off-v23614 > .training-schedule-choice-v23614 { opacity: .5; }

/* Ungrouped is not a category, so it does not look like one. */
.training-category-frame-v23613.is-ungrouped-v23615 {
  background: #fdfefe;
  border-color: #e3eaf1;
  border-style: dashed;
}
.training-category-frame-v23613.is-ungrouped-v23615 h4 { color: #7c8c9b; }

/* One module, one line, where the name allows it. */
.training-category-module-v23613 {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
  padding: .4rem .55rem;
}
.training-category-module-v23613 > strong { display: block; flex: 1 1 7rem; min-width: 0; }
.training-category-module-v23613 > .muted { flex: 0 0 auto; font-size: .8rem; }
.training-category-module-v23613 .form-actions {
  margin-top: 0;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: .35rem;
}
.training-category-module-v23613 .form-actions label { margin: 0; font-size: .78rem; }
.training-category-module-v23613 .form-actions select { max-width: 7.5rem; }

/* The list view: every module in one alphabetical list, ungrouped first, and
   the category is a dropdown that moves it as soon as it is chosen. */
.training-category-views-v23615 { margin: .5rem 0 .85rem; }
.training-category-list-v23615.hidden { display: none; }
.training-category-table-v23615 { width: 100%; border-collapse: collapse; }
.training-category-table-v23615 th,
.training-category-table-v23615 td {
  padding: .45rem .55rem;
  border-bottom: 1px solid #dde6ee;
  text-align: left;
  vertical-align: middle;
}
.training-category-table-v23615 th { background: #eef4f9; }
.training-category-table-v23615 tr.is-ungrouped-v23615 td:first-child { font-weight: 750; }
.training-category-choice-v23615 { display: block; margin: 0; }
.training-category-choice-v23615 select { width: 100%; max-width: 15rem; }
.sr-only-v23615 {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 700px) {
  .training-category-module-v23613 { align-items: flex-start; }
  .training-category-module-v23613 .form-actions { width: 100%; }
  .training-category-table-v23615 th,
  .training-category-table-v23615 td { padding: .4rem .3rem; }
}

/* --- v236.16: optional evidence on your own training ------------------- */
/* Deliberately quiet. It is an optional extra under the thing that matters --
   the due date and the "I have done this" button -- so it is a dashed box
   rather than another card competing with them. */
.training-evidence-v23616 {
  margin: .75rem 0 0;
  padding: .6rem .7rem;
  border: 1px dashed #c3d2df;
  border-radius: 10px;
  background: #fbfdff;
}
.training-evidence-v23616:focus-visible,
.training-evidence-v23616.is-drag-over {
  border-color: #1765a8;
  border-style: solid;
  background: #eaf4fc;
  outline: none;
  box-shadow: 0 0 0 3px rgba(23, 101, 168, .16);
}
.training-evidence-head-v23616 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  flex-wrap: wrap;
}
.training-evidence-head-v23616 > h5 { margin: 0; font-size: .95rem; }
.training-evidence-hint-v23616 { margin: .3rem 0 0; font-size: .82rem; color: #61758a; }
.training-evidence-v23616.is-readonly-v23616 { border-style: solid; background: #f6fafd; }
.training-evidence-v23616.is-readonly-v23616 .training-evidence-hint-v23616 { display: none; }

.training-evidence-list-v23616 {
  list-style: none;
  margin: .5rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .25rem;
}
.training-evidence-item-v23616 {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
  padding: .28rem .35rem;
  border: 1px solid #dde6ee;
  border-radius: 8px;
  background: #fff;
}
/* The file name is the link. A separate "open" button beside a name that does
   nothing is two things to read where one will do. */
.training-evidence-open-v23616 {
  flex: 1 1 8rem;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  color: #1765a8;
  font: inherit;
  font-weight: 650;
  text-align: left;
  text-decoration: underline;
  cursor: pointer;
  overflow-wrap: anywhere;
}
.training-evidence-open-v23616:hover,
.training-evidence-open-v23616:focus-visible { color: #0f4778; }
.training-evidence-item-v23616 > .muted { flex: 0 0 auto; font-size: .8rem; }
.training-evidence-item-v23616 > button.secondary { flex: 0 0 auto; padding: .2rem .5rem; font-size: .8rem; }

@media (max-width: 600px) {
  .training-evidence-head-v23616 { align-items: flex-start; }
  .training-evidence-item-v23616 > button.secondary { width: 100%; }
}
