/* Suivi Formation — SPA mobile */
.sf-app {
  min-height: 100dvh;
  padding: calc(0.75rem + var(--safe-top)) 1rem calc(1rem + var(--safe-bottom));
  max-width: 28rem;
  margin: 0 auto;
}

@media (min-width: 640px) {
  .sf-app {
    max-width: 42rem;
    padding-left: 1.25rem;
    padding-right: 1.25rem;
  }
}

.sf-topbar {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 1rem;
}

.sf-back {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--pc-tap-min);
  min-height: var(--pc-tap-min);
  border: 2px solid var(--pc-border);
  border-radius: 14px;
  background: var(--pc-surface);
  color: var(--pc-accent);
  text-decoration: none;
  flex-shrink: 0;
}

.sf-back:active {
  background: var(--pc-accent-soft);
}

.sf-title {
  margin: 0;
  flex: 1;
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.2;
}

.sf-actions {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 1rem;
}

.sf-actions--manage {
  margin-bottom: 1rem;
}

.sf-actions--secondary {
  margin-top: 0.25rem;
}

/* Liste séances — carte unifiée, suppression en bandeau latéral */
.sf-session-item {
  display: flex;
  align-items: stretch;
  margin-bottom: 0.65rem;
  border-radius: 16px;
  border: 2px solid var(--pc-border);
  background: var(--pc-surface);
  box-shadow: var(--pc-shadow);
  overflow: hidden;
}

.sf-session-item__link {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  min-width: 0;
  min-height: var(--pc-tap-min);
  padding: 0.85rem 0.75rem 0.85rem 0.85rem;
  border: none;
  background: transparent;
  font-family: inherit;
  text-align: left;
  cursor: pointer;
  color: inherit;
}

.sf-session-item__link:active {
  background: var(--pc-accent-soft);
}

.sf-session-item__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 10px;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--pc-accent);
  background: var(--pc-accent-soft);
}

.sf-session-item__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.sf-session-item__title {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.25;
}

.sf-session-item__meta {
  font-size: 0.85rem;
  color: var(--pc-muted);
  line-height: 1.3;
}

.sf-session-item__chev {
  flex-shrink: 0;
  font-size: 1.35rem;
  font-weight: 300;
  line-height: 1;
  color: var(--pc-muted);
  padding-right: 0.15rem;
}

.sf-session-item__delete {
  flex: 0 0 3rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  min-height: var(--pc-tap-min);
  margin: 0;
  padding: 0;
  border: none;
  border-left: 1px solid var(--pc-border);
  background: transparent;
  color: #9aa8b5;
  cursor: pointer;
}

.sf-session-item__delete:active,
.sf-session-item__delete:focus-visible {
  background: #fef2f2;
  color: #b42318;
}

.sf-session-item--readonly .sf-session-item__link {
  padding-right: 0.85rem;
}

@media (min-width: 640px) {
  .sf-session-item__delete {
    flex-basis: 3.25rem;
    width: 3.25rem;
  }

  .sf-session-item:hover .sf-session-item__delete {
    color: #b42318;
    background: #fff8f8;
  }

  .sf-session-item:hover .sf-session-item__link {
    background: #fafcfd;
  }
}

.sf-session-danger-zone {
  display: flex;
  justify-content: center;
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid var(--pc-border);
}

.sf-link-danger {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  min-height: var(--pc-tap-min);
  padding: 0.5rem 0.75rem;
  font-family: inherit;
  font-size: 0.9rem;
  font-weight: 600;
  color: #b42318;
  background: transparent;
  border: none;
  border-radius: 10px;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.sf-link-danger:active,
.sf-link-danger:focus-visible {
  background: #fef2f2;
}

.sf-formation-actions {
  margin-bottom: 1rem;
}

.sf-formation-actions__heading {
  margin: 0 0 0.5rem;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pc-muted);
}

.sf-action-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem;
  margin-bottom: 0.65rem;
}

.sf-action-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.2rem;
  min-height: 4.75rem;
  padding: 0.75rem 0.5rem;
  font-family: inherit;
  text-align: center;
  border-radius: 14px;
  border: 2px solid var(--pc-accent);
  background: var(--pc-surface);
  color: var(--pc-text);
  cursor: pointer;
  box-shadow: var(--pc-shadow);
}

.sf-action-card:active {
  background: var(--pc-accent-soft);
  transform: scale(0.98);
}

.sf-action-card__title {
  font-size: 0.95rem;
  font-weight: 700;
  line-height: 1.25;
  color: var(--pc-accent);
}

.sf-action-card__hint {
  font-size: 0.72rem;
  font-weight: 500;
  line-height: 1.3;
  color: var(--pc-muted);
}

.sf-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--pc-tap-min);
  padding: 0.65rem 1rem;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  border-radius: 14px;
  border: 2px solid transparent;
  cursor: pointer;
  text-decoration: none;
  flex: 1;
}

.sf-btn--primary {
  color: #fff;
  background: var(--pc-accent);
  box-shadow: var(--pc-shadow);
}

.sf-btn--secondary {
  color: var(--pc-accent);
  background: var(--pc-surface);
  border-color: var(--pc-border);
}

.sf-btn:active {
  transform: scale(0.98);
}

.sf-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.sf-card {
  padding: 1rem;
  margin-bottom: 0.75rem;
  border-radius: 16px;
  background: var(--pc-surface);
  border: 2px solid var(--pc-border);
  box-shadow: var(--pc-shadow);
}

.sf-card--tap {
  display: block;
  width: 100%;
  text-align: left;
  font-family: inherit;
  cursor: pointer;
}

.sf-card--tap:active {
  background: var(--pc-accent-soft);
}

.sf-card__title {
  margin: 0 0 0.25rem;
  font-size: 1.05rem;
  font-weight: 600;
}

.sf-card--summary .sf-card__badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-bottom: 0.5rem;
}

.sf-card--summary .sf-card__badges--instructors {
  margin-bottom: 0.65rem;
}

.sf-card--summary .sf-card__meta {
  margin: 0;
  padding-top: 0.15rem;
  border-top: 1px solid var(--pc-border);
}

.sf-card__meta {
  margin: 0;
  font-size: 0.9rem;
  color: var(--pc-muted);
}

.sf-section-title {
  margin: 1.25rem 0 0.75rem;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pc-accent);
}

.sf-carousel {
  display: flex;
  gap: 0.75rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 0.25rem;
  margin: 0 -0.25rem;
  padding-left: 0.25rem;
  padding-right: 0.25rem;
  -webkit-overflow-scrolling: touch;
}

.sf-carousel::-webkit-scrollbar {
  display: none;
}

.sf-carousel .sf-card {
  flex: 0 0 85%;
  scroll-snap-align: start;
  margin-bottom: 0;
}

.sf-empty {
  padding: 1.25rem;
  text-align: center;
  color: var(--pc-muted);
  border-radius: 16px;
  background: var(--pc-accent-soft);
  border: 1px dashed var(--pc-border);
}

.sf-field {
  margin-bottom: 1rem;
}

.sf-label {
  display: block;
  margin-bottom: 0.35rem;
  font-size: 0.9rem;
  font-weight: 600;
}

.sf-input,
.sf-select {
  width: 100%;
  min-height: var(--pc-tap-min);
  padding: 0.65rem 0.85rem;
  font-family: inherit;
  font-size: 1rem;
  border: 2px solid var(--pc-border);
  border-radius: 14px;
  background: var(--pc-surface);
  color: var(--pc-text);
}

.sf-input:focus,
.sf-select:focus {
  outline: none;
  border-color: var(--pc-accent);
}

.sf-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.sf-chip {
  min-height: 2.75rem;
  padding: 0.5rem 0.85rem;
  font-family: inherit;
  font-size: 0.95rem;
  font-weight: 600;
  border-radius: 999px;
  border: 2px solid var(--pc-border);
  background: var(--pc-surface);
  color: var(--pc-text);
  cursor: pointer;
}

.sf-chip--active {
  border-color: var(--pc-accent);
  background: var(--pc-accent-soft);
  color: var(--pc-accent);
}

.sf-student-row {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
  align-items: end;
}

.sf-student-row .sf-btn {
  flex: 0 0 auto;
  min-width: var(--pc-tap-min);
  padding: 0.5rem;
}

.sf-field--compact {
  margin: 0.5rem 0 0.35rem;
}

.sf-input--compact {
  min-height: 2.5rem;
  padding: 0.4rem 0.65rem;
  font-size: 0.9rem;
}

.sf-textarea {
  width: 100%;
  font-family: inherit;
  font-size: 0.9rem;
  line-height: 1.4;
  padding: 0.55rem 0.65rem;
  border: 2px solid var(--pc-border);
  border-radius: 12px;
  background: var(--pc-surface);
  color: var(--pc-text, #14212e);
  resize: vertical;
  min-height: 3.5rem;
}

.sf-textarea--compact {
  font-size: 0.88rem;
  min-height: 3rem;
}

.sf-textarea:focus {
  outline: none;
  border-color: var(--pc-accent);
}

.sf-chip-row--compact {
  margin-top: 0.35rem;
  gap: 0.35rem;
}

.sf-chip-row--compact .sf-chip {
  padding: 0.3rem 0.65rem;
  font-size: 0.8rem;
}

/* — Session : hiérarchie — */
.sf-session-meta {
  margin-bottom: 0.85rem;
  padding: 0.65rem 0.75rem;
  border-radius: 12px;
  background: color-mix(in srgb, var(--pc-accent) 6%, var(--pc-surface));
  border: 1px solid var(--pc-border);
}

.sf-session-meta__when {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--pc-text, #14212e);
}

.sf-session-meta__level {
  margin: 0.2rem 0 0;
  font-size: 0.82rem;
  color: var(--pc-muted);
}

.sf-session-block {
  margin-bottom: 0.85rem;
  padding: 0.65rem 0.75rem;
  border-radius: 14px;
  background: var(--pc-surface);
  border: 1px solid var(--pc-border);
}

.sf-session-block__title {
  margin: 0 0 0.5rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pc-muted);
}

.sf-session-block__hint {
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  color: var(--pc-text, #14212e);
}

.sf-session-block__note {
  margin: 0.45rem 0 0;
  font-size: 0.75rem;
  color: var(--pc-muted);
  line-height: 1.35;
}

.sf-session-block--staff {
  background: color-mix(in srgb, var(--pc-bg, #eef2f6) 55%, var(--pc-surface));
}

.sf-session-block--skills {
  padding-bottom: 0.5rem;
}

.sf-label--sub {
  margin-top: 0.55rem;
  font-size: 0.8rem;
}

.sf-segmented {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  padding: 3px;
  border-radius: 12px;
  background: var(--pc-bg, #eef2f6);
  border: 1px solid var(--pc-border);
}

.sf-segment {
  min-height: 2.5rem;
  padding: 0.45rem 0.5rem;
  font-family: inherit;
  font-size: 0.9rem;
  font-weight: 600;
  border: none;
  border-radius: 9px;
  background: transparent;
  color: var(--pc-muted);
  cursor: pointer;
}

.sf-segment--active {
  background: var(--pc-surface);
  color: var(--pc-accent);
  box-shadow: 0 1px 3px rgba(20, 33, 46, 0.12);
}

.sf-student-tabs--block {
  margin-bottom: 0;
}

.sf-instructor-field {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.sf-input--instructor {
  min-height: 2.65rem;
  font-size: 1rem;
  font-weight: 600;
}

.sf-quickpick-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}

.sf-quickpick-row::before {
  content: 'Récents';
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--pc-muted);
  margin-right: 0.15rem;
}

.sf-quickpick {
  padding: 0.2rem 0.55rem;
  font-family: inherit;
  font-size: 0.78rem;
  font-weight: 500;
  border-radius: 6px;
  border: 1px dashed color-mix(in srgb, var(--pc-muted) 55%, var(--pc-border));
  background: transparent;
  color: var(--pc-muted);
  cursor: pointer;
}

.sf-quickpick:active,
.sf-quickpick--active {
  border-style: solid;
  border-color: var(--pc-accent);
  color: var(--pc-accent);
  background: var(--pc-accent-soft);
}

.sf-btn--ghost {
  width: 100%;
  margin-top: 0.5rem;
  font-size: 0.88rem;
  font-weight: 600;
  background: transparent;
}

.sf-btn--sticky {
  width: 100%;
  margin-top: 0.25rem;
}

.sf-eval-legend {
  display: flex;
  justify-content: space-around;
  margin: 0 0 0.35rem;
  padding: 0.3rem 0.25rem 0.4rem;
  font-size: 0.62rem;
  color: var(--pc-muted);
  border-bottom: 1px solid var(--pc-border);
}

.sf-eval-legend__item {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 0.1rem;
  min-width: 2.25rem;
}

.sf-eval-legend__lbl {
  font-weight: 700;
  letter-spacing: 0.02em;
}

.sf-eval-compact {
  display: flex;
  flex-direction: column;
  background: var(--pc-surface);
  border: 1px solid var(--pc-border);
  border-radius: 12px;
}

.sf-eval-row {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.45rem 0.5rem;
  border-bottom: 1px solid var(--pc-border);
}

.sf-eval-row:last-child {
  border-bottom: none;
}

.sf-eval-row__name {
  font-size: 0.88rem;
  line-height: 1.35;
  word-break: break-word;
}

.sf-eval-row__abbr {
  display: inline;
  font-weight: 700;
  color: var(--pc-text, #14212e);
  margin-right: 0.35rem;
}

.sf-eval-row__desc {
  font-weight: 500;
  color: var(--pc-muted);
}

.sf-eval-row__title {
  font-weight: 600;
  color: var(--pc-text, #14212e);
}

.sf-eval-row__btns {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.3rem;
  width: 100%;
}

.sf-eval-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: var(--pc-tap-min);
  max-height: 2.75rem;
  padding: 0;
  border-radius: 10px;
  border: 2px solid var(--pc-border);
  background: var(--pc-bg);
  color: var(--pc-muted);
  cursor: pointer;
}

@media (min-width: 640px) {
  .sf-eval-legend {
    display: grid;
    grid-template-columns: minmax(0, 1fr) repeat(4, 2.75rem);
    gap: 0.35rem;
    align-items: end;
  }

  .sf-eval-legend::before {
    content: 'Compétence';
    font-weight: 600;
    font-size: 0.72rem;
    align-self: center;
  }

  .sf-eval-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) repeat(4, 2.75rem);
    gap: 0.35rem;
    align-items: center;
    padding: 0.4rem 0.5rem;
  }

  .sf-eval-row__btns {
    display: contents;
  }

  .sf-eval-btn {
    width: 2.75rem;
    height: 2.75rem;
    max-height: none;
    justify-self: center;
  }
}

.sf-eval-btn--na { --sf-eval-color: #8a9baa; }
.sf-eval-btn--not_mastered { --sf-eval-color: #c0392b; }
.sf-eval-btn--acquiring { --sf-eval-color: #d68910; }
.sf-eval-btn--mastered { --sf-eval-color: #1e8449; }

.sf-eval-btn--active {
  border-color: var(--sf-eval-color, var(--pc-accent));
  background: color-mix(in srgb, var(--sf-eval-color, var(--pc-accent)) 14%, white);
  color: var(--sf-eval-color, var(--pc-accent));
}

.sf-student-tab--has-eval:not(.sf-student-tab--active) {
  border-color: color-mix(in srgb, var(--pc-accent) 45%, var(--pc-border));
}

.sf-student-tabs {
  display: flex;
  gap: 0.5rem;
  overflow-x: auto;
  margin-bottom: 0;
}

.sf-student-tab {
  flex-shrink: 0;
  min-height: 2.75rem;
  padding: 0.5rem 1rem;
  font-family: inherit;
  font-size: 0.9rem;
  font-weight: 600;
  border-radius: 999px;
  border: 2px solid var(--pc-border);
  background: var(--pc-surface);
  cursor: pointer;
}

.sf-student-tab--active {
  border-color: var(--pc-accent);
  background: var(--pc-accent-soft);
  color: var(--pc-accent);
}

.sf-toast {
  position: fixed;
  left: 1rem;
  right: 1rem;
  bottom: calc(1rem + var(--safe-bottom));
  max-width: 26rem;
  margin: 0 auto;
  padding: 0.85rem 1rem;
  border-radius: 14px;
  background: #14212e;
  color: #fff;
  font-size: 0.95rem;
  text-align: center;
  z-index: 100;
  opacity: 0;
  transform: translateY(0.5rem);
  transition: opacity 0.2s, transform 0.2s;
  pointer-events: none;
}

.sf-toast--show {
  opacity: 1;
  transform: translateY(0);
}

.sf-loading {
  text-align: center;
  padding: 2rem;
  color: var(--pc-muted);
}

.sf-close-options {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}

.sf-close-intro {
  margin-bottom: 0.65rem !important;
}

.sf-close-student {
  padding: 0.55rem 0.65rem;
  border: 1px solid var(--pc-border);
  border-radius: 12px;
  background: var(--pc-surface, #fff);
}

.sf-close-student--solo {
  padding-top: 0.35rem;
}

.sf-close-student__name {
  margin: 0 0 0.45rem;
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--pc-text);
}

.sf-close-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.84rem;
}

.sf-close-table th {
  padding: 0.2rem 0.35rem 0.35rem;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--pc-muted);
  text-align: left;
}

.sf-close-table th:not(:first-child) {
  text-align: center;
  width: 4.5rem;
}

.sf-close-table td {
  padding: 0.28rem 0.35rem;
  vertical-align: middle;
  border-top: 1px solid var(--pc-border);
}

.sf-close-table__curriculum {
  line-height: 1.25;
}

.sf-close-table__toggle {
  text-align: center;
}

.sf-close-mini {
  display: inline-flex;
  gap: 0.25rem;
  justify-content: center;
}

.sf-close-pill {
  min-width: 2rem;
  height: 2rem;
  padding: 0;
  border: 1px solid var(--pc-border);
  border-radius: 8px;
  background: #fff;
  color: var(--pc-muted);
  font-size: 0.78rem;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
}

.sf-close-pill--on {
  border-color: var(--pc-accent);
  background: var(--pc-accent-soft);
  color: var(--pc-accent);
}

.sf-close-pill--on.sf-close-pill--no {
  border-color: #c0392b;
  background: #fdecea;
  color: #c0392b;
}

.sf-field--close-instructor {
  margin-top: 0.15rem;
}

.sf-close-submit {
  width: 100%;
  margin-top: 0.15rem;
}

.sf-toggle-row {
  display: flex;
  gap: 0.5rem;
}

.sf-toggle-row .sf-btn {
  flex: 1;
}

.sf-toggle-row .sf-btn.sf-btn--active {
  border-color: var(--pc-accent);
  background: var(--pc-accent-soft);
  color: var(--pc-accent);
}

.sf-badge {
  display: inline-block;
  padding: 0.2rem 0.55rem;
  font-size: 0.75rem;
  font-weight: 700;
  border-radius: 999px;
  background: var(--pc-accent-soft);
  color: var(--pc-accent);
}

.sf-badge--catchup {
  background: #f3e8ff;
  color: #6b21a8;
  vertical-align: middle;
  margin-right: 0.25rem;
}

.sf-badge--student {
  background: #e3f2fd;
  color: #1565c0;
}

.sf-badge--curriculum {
  background: var(--pc-accent-soft);
  color: var(--pc-accent);
}

.sf-badge--instructor {
  background: #fff3e0;
  color: #e65100;
}

.sf-badge--dual {
  background: #e8f5e9;
  color: #2e7d32;
  vertical-align: middle;
  margin-left: 0;
}

.sf-archive-panel {
  margin-top: 1.25rem;
}

.sf-archive-panel__summary {
  margin: 0 0 0.75rem;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pc-accent);
  cursor: pointer;
  list-style: none;
}

.sf-archive-panel__summary::-webkit-details-marker {
  display: none;
}

.sf-archive-panel__summary::before {
  content: '▸ ';
  display: inline-block;
  transition: transform 0.15s ease;
}

.sf-archive-panel[open] .sf-archive-panel__summary::before {
  transform: rotate(90deg);
}

.sf-archive-panel__body {
  padding-top: 0.25rem;
}

.sf-archive-search {
  margin-bottom: 1rem;
}

.sf-archive-results {
  margin-top: 0.5rem;
}

.sf-empty--inline {
  padding: 0.85rem 1rem;
  margin: 0;
  text-align: left;
}

.sf-label__opt {
  font-weight: 400;
  color: var(--pc-muted);
}

.sf-archive-banner {
  margin: 0 0 0.75rem;
  padding: 0.65rem 0.85rem;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--pc-muted);
  background: var(--pc-accent-soft);
  border-radius: 12px;
  border: 1px dashed var(--pc-border);
}

.sf-resources-panel {
  margin-top: 0.75rem;
}

.sf-resources-lead {
  margin: 0 0 0.75rem;
  font-size: 0.9rem;
  color: var(--pc-muted);
  line-height: 1.4;
}

.sf-resources-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.sf-resource-link {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 3.25rem;
  padding: 0.65rem 0.85rem;
  border-radius: 14px;
  background: var(--pc-surface);
  border: 2px solid var(--pc-border);
  border-left-width: 5px;
  border-left-color: var(--sf-res-color, var(--pc-accent));
  text-decoration: none;
  color: inherit;
  box-shadow: var(--pc-shadow);
}

.sf-resource-link:active {
  transform: scale(0.99);
  background: var(--pc-accent-soft);
}

.sf-resource-link--plongee { --sf-res-color: #0c9aa7; }
.sf-resource-link--apnee { --sf-res-color: #1a5f8a; }
.sf-resource-link--secourisme { --sf-res-color: #c4382e; }
.sf-resource-link--autres { --sf-res-color: #5a6d7d; }

.sf-resource-link__cat {
  flex-shrink: 0;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--sf-res-color, var(--pc-accent));
  min-width: 4.75rem;
}

.sf-resource-link__label {
  flex: 1;
  min-width: 0;
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.25;
}

.sf-resource-link__icon {
  flex-shrink: 0;
  width: 1rem;
  height: 1rem;
  color: var(--pc-muted);
}

.sf-session--readonly {
  pointer-events: none;
  opacity: 0.92;
}

.sf-session--readonly .sf-student-tab {
  pointer-events: auto;
  opacity: 1;
}

.sf-curriculum-section {
  border: 1px solid var(--pc-border);
  border-radius: 14px;
  margin-bottom: 0.65rem;
  overflow: hidden;
  background: var(--pc-surface);
}

.sf-curriculum-section__title {
  margin: 0;
  padding: 0.75rem 1rem;
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--pc-text);
  border-bottom: 1px solid var(--pc-border);
  background: var(--pc-surface-alt, #f8fafc);
}

.sf-curriculum-section .sf-eval-compact {
  padding: 0 0.5rem 0.75rem;
}

.sf-curriculum-accordion {
  border: 1px solid var(--pc-border);
  border-radius: 14px;
  margin-bottom: 0.65rem;
  overflow: hidden;
  background: var(--pc-surface);
}

.sf-curriculum-accordion__head {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1rem;
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--pc-text);
  cursor: pointer;
  list-style: none;
  min-height: var(--pc-tap-min);
}

.sf-curriculum-accordion__head::-webkit-details-marker {
  display: none;
}

.sf-curriculum-accordion__head::before {
  content: '›';
  display: inline-block;
  color: var(--pc-accent);
  font-size: 1.1rem;
  transition: transform 0.15s ease;
}

.sf-curriculum-accordion[open] .sf-curriculum-accordion__head::before {
  transform: rotate(90deg);
}

.sf-curriculum-accordion .sf-eval-compact {
  padding: 0 0.5rem 0.75rem;
}

.sf-student-tabs--curriculum {
  margin-top: -0.35rem;
  margin-bottom: 0.75rem;
}

.sf-student-tab--curriculum {
  font-size: 0.85rem;
  padding: 0.45rem 0.75rem;
}


.sf-field__hint {
  margin: 0.35rem 0 0;
  font-size: 0.82rem;
  line-height: 1.4;
  color: var(--pc-muted);
}

.sf-field--dual {
  padding: 0.85rem 1rem;
  border: 1px dashed var(--pc-border);
  border-radius: 14px;
  background: var(--pc-accent-soft);
}

.sf-formation-curricula {
  margin-bottom: 1rem;
  padding: 0.85rem 1rem;
  border: 1px solid var(--pc-border);
  border-radius: 14px;
  background: var(--pc-surface);
}

.sf-formation-curricula__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
}

.sf-section-title--inline {
  margin: 0;
}

.sf-btn--compact {
  padding: 0.35rem 0.65rem;
  font-size: 0.8rem;
  min-height: 2.25rem;
}

.sf-curricula-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.sf-curricula-list__item {
  margin: 0;
}

.sf-curricula-fixed {
  margin: 0;
}

.sf-btn--link {
  color: var(--pc-muted);
  background: transparent;
  border: none;
  box-shadow: none;
  font-size: 0.9rem;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 0.15em;
  min-height: var(--pc-tap-min);
}

.sf-btn--link:active {
  color: var(--pc-accent);
}

.sf-catchup-info {
  margin-bottom: 1rem;
  padding: 0.75rem 0.9rem;
  font-size: 0.85rem;
  line-height: 1.45;
  color: var(--pc-text);
  background: var(--pc-accent-soft);
  border-radius: 12px;
  border: 1px solid var(--pc-border);
}

.sf-catchup-banner {
  margin-bottom: 0.75rem;
  padding: 0.65rem 0.85rem;
  font-size: 0.82rem;
  line-height: 1.4;
  color: #5b21b6;
  background: #f3e8ff;
  border-radius: 12px;
  border: 1px solid #e9d5ff;
}

.sf-stepper {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 0.5rem;
}

.sf-stepper__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--pc-tap-min);
  min-height: var(--pc-tap-min);
  font-size: 1.35rem;
  font-weight: 700;
  border: 2px solid var(--pc-border);
  border-radius: 14px;
  background: var(--pc-surface);
  color: var(--pc-accent);
  cursor: pointer;
}

.sf-stepper__value {
  min-width: 2.5rem;
  text-align: center;
  font-size: 1.5rem;
  font-weight: 700;
}

.sf-check {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 0.85rem;
  font-size: 0.9rem;
  cursor: pointer;
}

.sf-check input {
  width: 1.1rem;
  height: 1.1rem;
  flex-shrink: 0;
}

.sf-catchup-preview {
  list-style: none;
  margin: 0.85rem 0 0;
  padding: 0.65rem 0.75rem;
  border-radius: 12px;
  background: var(--pc-accent-soft);
  border: 1px solid var(--pc-border);
}

.sf-catchup-preview__item {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.35rem 0;
  font-size: 0.88rem;
  line-height: 1.35;
}

.sf-catchup-preview__item + .sf-catchup-preview__item {
  border-top: 1px solid rgba(13, 126, 168, 0.12);
}

.sf-catchup-preview__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 8px;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--pc-accent);
  background: #fff;
}

.sf-catchup-preview__when {
  color: var(--pc-text);
}

.sf-catchup-dates {
  margin-top: 0.75rem;
}

.sf-catchup-dates__summary {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--pc-accent);
  cursor: pointer;
  list-style: none;
}

.sf-catchup-dates__summary::-webkit-details-marker {
  display: none;
}

.sf-catchup-dates__list {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  margin-top: 0.75rem;
}

.sf-catchup-date-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.35rem;
}

.sf-label--inline {
  margin: 0;
  font-size: 0.85rem;
}

.sf-input--date {
  width: 100%;
}

.sf-segmented--compact {
  margin-top: 0.15rem;
}

.sf-segment--compact {
  flex: 1;
  padding: 0.45rem 0.5rem;
  font-size: 0.82rem;
}

.sf-add-skill {
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px dashed var(--pc-border);
}

.sf-add-skill__form {
  margin-top: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.sf-add-skill__hint {
  margin: 0 0 0.25rem;
  font-size: 0.8rem;
  color: var(--pc-muted);
  line-height: 1.4;
}

.sf-skill-code-field {
  display: flex;
  align-items: stretch;
  margin-bottom: 0.5rem;
}

.sf-skill-code-prefix {
  display: inline-flex;
  align-items: center;
  padding: 0 0.65rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.82rem;
  font-weight: 600;
  background: var(--pc-surface-2, #eef2f6);
  border: 1px solid var(--pc-border);
  border-right: none;
  border-radius: 8px 0 0 8px;
  color: var(--pc-muted);
  white-space: nowrap;
}

.sf-skill-code-suffix {
  flex: 1;
  min-width: 0;
  border-radius: 0 8px 8px 0 !important;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.sf-skill-badge {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.1rem 0.4rem;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border-radius: 4px;
  background: #e8f4ea;
  color: #1a6b32;
  vertical-align: middle;
}

.sf-admin-count {
  margin: 0 0 0.35rem;
  font-size: 0.85rem;
  color: var(--pc-muted);
}

.sf-admin-order-hint {
  margin: 0 0 0.75rem;
  font-size: 0.78rem;
  color: var(--pc-muted);
  line-height: 1.35;
}

.sf-admin-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.sf-admin-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto auto;
  gap: 0.4rem 0.5rem;
  align-items: center;
}

.sf-admin-row__main {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
}

.sf-admin-row__code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.72rem;
  color: var(--pc-muted);
  letter-spacing: 0.02em;
  word-break: break-all;
}

.sf-admin-row__order {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
  flex-shrink: 0;
  width: 2.75rem;
}

.sf-admin-row__pos {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.35rem;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--pc-accent);
  line-height: 1;
}

.sf-admin-drag-handle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--pc-tap-min);
  min-height: var(--pc-tap-min);
  padding: 0;
  border: 1px solid var(--pc-border);
  border-radius: 10px;
  background: var(--pc-bg, #eef2f6);
  color: var(--pc-muted);
  cursor: grab;
  touch-action: none;
  -webkit-user-select: none;
  user-select: none;
}

.sf-admin-drag-handle:active {
  cursor: grabbing;
  background: var(--pc-accent-soft);
  color: var(--pc-accent);
  border-color: color-mix(in srgb, var(--pc-accent) 40%, var(--pc-border));
}

.sf-admin-row--ghost {
  opacity: 0.4;
}

.sf-admin-row--chosen:not(.sf-admin-row--fallback) {
  box-shadow: 0 4px 14px rgba(20, 33, 46, 0.1);
}

.sf-admin-list .sf-admin-row--dragging {
  opacity: 0.12;
}

.sf-admin-row--fallback {
  opacity: 1 !important;
  box-shadow: 0 14px 36px rgba(20, 33, 46, 0.22);
  border-radius: 12px;
  background: var(--pc-surface);
  cursor: grabbing;
  z-index: 10000;
}

body.sf-admin-dragging {
  -webkit-user-select: none;
  user-select: none;
  cursor: grabbing;
}

body.sf-admin-dragging .sf-admin-list {
  touch-action: none;
}

.sf-admin-row__name {
  min-width: 0;
  grid-column: 2;
}

.sf-admin-row .sf-skill-badge--warn {
  grid-column: 3;
}

.sf-admin-row__del {
  grid-column: 4;
}

.sf-admin-row__del {
  flex-shrink: 0;
  min-width: var(--pc-tap-min);
  padding: 0 0.75rem;
  font-size: 1.25rem;
  line-height: 1;
}

.sf-btn--danger {
  background: #fff;
  color: #b42318;
  border: 2px solid #f5c4c0;
}

.sf-btn--danger:active {
  background: #fef2f2;
}

.sf-admin-row--dup {
  border: 2px solid #f5c87a;
  border-radius: 8px;
  padding: 0.35rem;
  background: #fffbeb;
}

.sf-skill-badge--warn {
  background: #fef3c7;
  color: #92400e;
  flex-shrink: 0;
  align-self: center;
}

.sf-btn--whatsapp {
  color: #fff;
  background: #25d366;
  border-color: #1da851;
  box-shadow: 0 4px 16px rgba(37, 211, 102, 0.28);
  gap: 0.5rem;
}

.sf-btn--whatsapp:active {
  background: #1da851;
}

.sf-btn--whatsapp:disabled {
  opacity: 0.65;
}

.sf-btn__icon {
  flex-shrink: 0;
}

.sf-status-grid {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}

.sf-status-skill {
  padding: 0.75rem 0.85rem;
  border: 2px solid var(--pc-border);
  border-radius: 14px;
  background: var(--pc-surface);
}

.sf-status-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.85rem;
  margin: 0.5rem 0 0.75rem;
  padding: 0.5rem 0.65rem;
  font-size: 0.72rem;
  color: var(--pc-muted);
  background: var(--pc-bg);
  border-radius: 10px;
  border: 1px solid var(--pc-border);
}

.sf-status-legend__item {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.sf-status-skill__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.5rem;
}

.sf-status-skill__name {
  margin: 0;
  flex: 1;
  min-width: 0;
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.35;
}

.sf-status-skill__pills {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.5rem;
}

.sf-session-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.75rem;
  height: 1.75rem;
  padding: 0 0.35rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1;
  color: #fff;
  cursor: default;
}

.sf-session-pill--na { background: #8a9baa; }
.sf-session-pill--not_mastered { background: #c0392b; }
.sf-session-pill--acquiring { background: #d68910; }
.sf-session-pill--mastered { background: #1e8449; }

.sf-status-skill__level {
  margin: 0.4rem 0 0;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--pc-muted);
}

.sf-status-skill__meta {
  margin: 0.2rem 0 0;
  font-size: 0.8rem;
  color: var(--pc-muted);
}

.sf-eval-dot {
  width: 0.85rem;
  height: 0.85rem;
  border-radius: 50%;
  flex-shrink: 0;
  margin-top: 0.2rem;
}

.sf-eval-dot--na { background: #8a9baa; }
.sf-eval-dot--not_mastered { background: #c0392b; }
.sf-eval-dot--acquiring { background: #d68910; }
.sf-eval-dot--mastered { background: #1e8449; }
