* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  min-height: 100vh;
  background: var(--color-canvas);
}

button,
input,
textarea,
select {
  font: inherit;
}

button,
a,
summary {
  touch-action: manipulation;
}

p {
  margin: 0 0 var(--space-4);
}

h1,
h2,
h3 {
  color: var(--color-brand-950);
  letter-spacing: -0.025em;
}

h1 {
  margin: 0;
  font-size: clamp(1.75rem, 3vw, 2.35rem);
  line-height: 1.12;
}

h2 {
  margin: 0 0 var(--space-2);
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.25;
}

h3 {
  margin: 0;
  font-size: 1rem;
  line-height: 1.35;
}

:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 3px;
}

.skip-link {
  position: fixed;
  z-index: 100;
  top: var(--space-3);
  left: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-sm);
  color: white;
  background: var(--color-navigation);
  transform: translateY(-150%);
}

.skip-link:focus {
  transform: translateY(0);
}

.app-icon {
  display: block;
  flex: 0 0 auto;
}

/* Shared application chrome */
.app-header {
  min-height: 4.5rem;
  padding: var(--space-4) clamp(1rem, 4vw, 3rem);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  border-bottom: 1px solid var(--color-border);
  background: var(--color-surface);
}

.brand {
  color: var(--color-brand-950);
  font-weight: 750;
  text-decoration: none;
}

.session {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  font-size: 0.875rem;
}

.shell {
  width: min(42rem, calc(100% - 2rem));
  margin: clamp(3rem, 10vh, 7rem) auto;
}

.shell-wide {
  width: min(72rem, calc(100% - 2rem));
}

/* Administration layout */
.admin-shell {
  min-height: 100dvh;
}

.admin-sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 20;
  width: var(--sidebar-width);
  padding: var(--space-6) var(--space-4);
  display: flex;
  flex-direction: column;
  border-right: 1px solid rgb(255 255 255 / 10%);
  color: white;
  background: var(--color-navigation);
}

.admin-brand {
  min-height: 3rem;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  color: inherit;
  text-decoration: none;
}

.admin-brand strong,
.admin-brand small {
  display: block;
}

.admin-brand strong {
  font-size: 0.925rem;
  line-height: 1.2;
}

.admin-brand small {
  margin-top: 0.15rem;
  color: rgb(255 255 255 / 62%);
  font-size: 0.75rem;
}

.brand-mark {
  width: 2.65rem;
  height: 2.65rem;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  border: 1px solid rgb(255 255 255 / 28%);
  border-radius: var(--radius-md);
  color: var(--color-navigation-text);
  background: rgb(255 255 255 / 8%);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.brand-logo {
  width: 2.65rem;
  height: 2.65rem;
  object-fit: contain;
  flex: 0 0 auto;
}

.brand-logo-wide { width: 2.65rem; }

.admin-nav {
  min-height: 0;
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: var(--space-1);
  margin-top: var(--space-8);
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
}

.admin-sidebar-theme:empty { display: none; }
.admin-sidebar-theme { flex: 0 0 auto; padding: var(--space-3) 0; border-top: 1px solid rgb(255 255 255 / 10%); }

.admin-nav-group {
  display: grid;
  gap: var(--space-1);
  margin-top: var(--space-5);
}

.admin-nav-group > p {
  margin: 0;
  padding: 0 var(--space-3);
  color: rgb(255 255 255 / 46%);
  font-size: 0.64rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.admin-nav a {
  position: relative;
  min-height: 2.8rem;
  padding: 0 var(--space-3);
  display: flex;
  align-items: center;
  gap: var(--space-3);
  border: 1px solid transparent;
  border-radius: var(--radius-dashboard-sm);
  color: rgb(255 255 255 / 70%);
  font-size: 0.875rem;
  font-weight: 650;
  text-decoration: none;
  transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease;
}

.coach-shell .admin-nav a:hover {
  color: white;
  background: rgb(255 255 255 / 7%);
}

.coach-shell .admin-nav a:focus-visible,
.admin-session .icon-button:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 2px;
}

.coach-shell .admin-nav a.active {
  color: white;
  border-color: transparent;
  background: rgb(255 255 255 / 9%);
  font-weight: 750;
}

.settings-return { margin: 0 0 var(--space-4); display: flex; align-items: center; gap: var(--space-3); color: var(--color-text-muted); font-size: .78rem; }
.settings-return a { min-height: 2.5rem; display: inline-flex; align-items: center; gap: var(--space-2); color: var(--color-brand-900); font-weight: 750; text-decoration: none; }
.settings-return a:hover { text-decoration: underline; }
.settings-return a:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.settings-return-short { display: none; }
.settings-return > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.structure-settings-form { display: grid; gap: var(--space-5); }
.structure-settings-form > section { padding-top: var(--space-5); border-top: 1px solid var(--color-border); }
.structure-settings-form > section:first-child { padding-top: 0; border-top: 0; }
.structure-settings-form section header h2 { margin: 0; font-size: 1rem; }
.structure-settings-form section header p { margin: var(--space-1) 0 0; color: var(--color-text-muted); font-size: .875rem; }
.settings-field-grid { margin-top: var(--space-4); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); }
.settings-field-wide { grid-column: 1 / -1; }
.structure-settings-planning dl { margin: var(--space-4) 0; display: grid; gap: var(--space-2); }
.structure-settings-planning dl div { display: grid; grid-template-columns: minmax(10rem, .7fr) 1fr; gap: var(--space-3); font-size: .875rem; }
.structure-settings-planning dt { color: var(--color-text-muted); }.structure-settings-planning dd { margin: 0; font-weight: 650; }

.admin-session {
  flex: 0 0 auto;
  padding: var(--space-3);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  border-radius: var(--radius-dashboard-sm);
  background: rgb(255 255 255 / 5%);
}

.session-copy {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.session-copy > span:last-child {
  min-width: 0;
}

.session-copy small,
.session-copy strong {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.session-copy small {
  color: rgb(255 255 255 / 55%);
  font-size: 0.68rem;
}

.session-copy strong {
  max-width: 8rem;
  font-size: 0.78rem;
}

.session-avatar {
  width: 2rem;
  height: 2rem;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  border-radius: 50%;
  color: var(--color-brand-950);
  background: var(--color-accent-100);
  font-size: 0.75rem;
  font-weight: 800;
}

.icon-button {
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: var(--radius-md);
  color: inherit;
  background: transparent;
  cursor: pointer;
}

.icon-button:hover {
  background: rgb(255 255 255 / 9%);
}

.admin-main {
  width: min(100% - var(--sidebar-width), 92rem);
  min-height: 100dvh;
  margin-left: var(--sidebar-width);
  padding: var(--space-10) clamp(2rem, 4vw, 4rem) var(--space-12);
}

.admin-main:not(.admin-main-wide) {
  max-width: calc(var(--sidebar-width) + 70rem);
}

.admin-page-header {
  min-height: 6.5rem;
  margin-bottom: var(--space-8);
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-6);
  border-bottom: 1px solid var(--color-border);
  padding-bottom: var(--space-6);
}

.admin-page-header h1 {
  font-size: clamp(1.65rem, 3vw, 2.2rem);
  letter-spacing: 0.055em;
  text-transform: uppercase;
}

.eyebrow {
  margin: 0 0 var(--space-2);
  color: var(--color-accent-700);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.page-description {
  max-width: 48rem;
  margin: var(--space-2) 0 0;
  color: var(--color-text-muted);
  font-size: 0.925rem;
}

.page-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--space-2);
}

.page-actions:empty {
  display: none;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Core components */
.panel {
  padding: clamp(1.25rem, 3vw, 2rem);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
  box-shadow: var(--shadow-sm);
}

.panel-flat {
  border-radius: var(--radius-md);
  box-shadow: none;
}

.section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-4);
}

.section-heading p:last-child {
  margin-bottom: 0;
  color: var(--color-text-muted);
}

.button {
  box-sizing: border-box;
  height: var(--control-height);
  min-height: var(--control-height);
  padding: 0 var(--control-padding-inline);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--color-brand-900);
  border-radius: var(--control-radius);
  color: white;
  background: var(--color-brand-900);
  cursor: pointer;
  font-size: var(--control-font-size);
  font-weight: 720;
  line-height: var(--control-line-height);
  transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease;
}

.button:hover {
  border-color: var(--color-brand-800);
  background: var(--color-brand-800);
}

.button:active {
  background: var(--color-brand-950);
}

.button:disabled {
  cursor: not-allowed;
  opacity: 0.48;
}

.button-secondary {
  color: var(--color-brand-900);
  border-color: var(--color-border-strong);
  background: var(--color-surface);
}

.button-secondary:hover {
  border-color: var(--color-brand-800);
  color: var(--color-brand-950);
  background: var(--color-surface-subtle);
}

.button-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}

.button-danger {
  border-color: var(--color-danger);
  background: var(--color-danger);
}

.button-danger:hover {
  border-color: #872b23;
  background: #872b23;
}

.form-stack {
  display: grid;
  gap: var(--space-4);
  margin-top: var(--space-6);
}

label {
  display: grid;
  gap: var(--space-2);
  color: var(--color-brand-950);
  font-size: 0.84rem;
  font-weight: 700;
}

.admin-body input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):not(.luminous-control):not(.luminous-field),
.admin-body select,
.admin-body .level-filter-trigger,
.admin-body form .button:not(.icon-button):not(.toolbar-icon):not(.dialog-close):not(.chip-action) {
  box-sizing: border-box;
  height: var(--control-height);
  min-height: var(--control-height);
  padding-block: 0;
  padding-inline: var(--control-padding-inline);
  border-radius: var(--control-radius);
  line-height: var(--control-line-height);
}

input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):not(.luminous-control):not(.luminous-field),
select,
.level-filter-trigger {
  width: 100%;
  border: var(--control-border);
  color: var(--color-text);
  background: var(--color-surface);
  transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.admin-body select {
  padding-right: 2.25rem;
  appearance: none;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--color-text-muted) 50%),
    linear-gradient(135deg, var(--color-text-muted) 50%, transparent 50%);
  background-position:
    calc(100% - 0.95rem) 50%,
    calc(100% - 0.7rem) 50%;
  background-repeat: no-repeat;
  background-size: 0.28rem 0.28rem;
}

input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):hover,
select:hover,
.level-filter-trigger:hover {
  border-color: var(--color-border-strong);
}

input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):focus-visible,
select:focus-visible,
.level-filter-trigger:focus-visible {
  border-color: var(--color-focus);
  box-shadow: 0 0 0 1px var(--color-focus);
}

input:disabled,
select:disabled,
.level-filter-trigger:disabled {
  cursor: not-allowed;
  background: var(--color-surface-subtle);
  opacity: 0.7;
}

textarea {
  width: 100%;
  min-height: 5.5rem;
  padding: 0.6rem var(--control-padding-inline);
  border: var(--control-border);
  border-radius: var(--control-radius);
  color: var(--color-text);
  background: var(--color-surface);
  resize: vertical;
}

textarea:hover { border-color: var(--color-border-strong); }
textarea:disabled { cursor: not-allowed; background: var(--color-surface-subtle); opacity: 0.7; }

.field-hint {
  color: var(--color-text-muted);
  font-size: 0.76rem;
  font-weight: 500;
}

.notice,
.error,
.alert {
  padding: var(--space-3) var(--space-4);
  border: 1px solid;
  border-left-width: 3px;
  border-radius: var(--radius-sm);
  font-size: 0.875rem;
}

.notice {
  border-color: #a8d6c3;
  border-left-color: var(--color-success);
  color: #17553c;
  background: var(--color-success-bg);
}

.error {
  border-color: #edbbb5;
  border-left-color: var(--color-danger);
  color: #7d2820;
  background: var(--color-danger-bg);
}

.status,
.badge {
  width: max-content;
  padding: 0.2rem 0.5rem;
  border-radius:var(--radius-pill);
  color: #1b6146;
  background: var(--color-success-bg);
  font-size: 0.72rem;
  font-weight: 750;
  line-height: 1.5;
}

.status.inactive,
.badge-neutral {
  color: var(--reservation-action-inactive);
  background: var(--color-surface-subtle);
}

.reservation-event-confirmed { --reservation-event-color: var(--reservation-action-confirmed); }
.reservation-event-created { --reservation-event-color: var(--reservation-action-created); }
.reservation-event-waitlisted { --reservation-event-color: var(--reservation-action-waitlisted); }
.reservation-event-transition { --reservation-event-color: var(--reservation-action-transition); }
.reservation-event-cancelled { --reservation-event-color: var(--reservation-action-cancelled); }
.reservation-event-neutral { --reservation-event-color: var(--reservation-action-neutral); }
.reservation-event-inactive { --reservation-event-color: var(--reservation-action-inactive); }
.reservation-event-status { display: inline-flex; align-items: center; gap: .35rem; padding: 0; color: var(--color-text); background: transparent; }
.reservation-event-dot { width: .42rem; height: .42rem; flex: 0 0 auto; border-radius: 50%; background: var(--reservation-event-color, var(--reservation-action-neutral)); }

.empty {
  padding: var(--space-8);
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-md);
  color: var(--color-text-muted);
  background: var(--color-surface-subtle);
  text-align: center;
}

.data-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
}

.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
}

.data-table th,
.data-table td {
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--color-border);
  text-align: left;
}

.data-table th {
  color: var(--color-text-muted);
  background: var(--color-surface-subtle);
  font-size: 0.72rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

/* Reference data */
.section-nav {
  position: sticky;
  z-index: 10;
  top: 0;
  margin: calc(var(--space-2) * -1) 0 var(--space-6);
  padding: var(--space-2);
  display: flex;
  gap: var(--space-1);
  overflow-x: auto;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: rgb(247 245 242 / 96%);
}

.section-nav a {
  min-height: 2.5rem;
  padding: 0 var(--space-3);
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  border-radius: var(--radius-sm);
  color: var(--color-text-muted);
  font-size: 0.82rem;
  font-weight: 700;
  text-decoration: none;
}

.section-nav a:hover {
  color: var(--color-brand-950);
  background: var(--color-surface);
}

.section-nav a[aria-current="page"] {
  color: var(--color-brand-950);
  background: var(--color-accent-100);
}

.reference-section {
  display: grid;
  gap: var(--space-6);
  margin-bottom: var(--space-6);
  scroll-margin-top: 4.5rem;
}

.reference-section h2 {
  margin-bottom: var(--space-1);
}

.reference-section > div:first-child > p {
  color: var(--color-text-muted);
  font-size: 0.875rem;
}

.reference-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: end;
  gap: var(--space-4);
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface-subtle);
}

.reference-form .checkbox {
  min-height: 2.75rem;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.reference-form .checkbox input {
  width: auto;
  min-height: auto;
}

.reference-list {
  display: grid;
  gap: var(--space-2);
}

.reference-item {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

.reference-item summary {
  min-height: 3.4rem;
  padding: var(--space-3) var(--space-4);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 700;
}

.reference-item[open] summary {
  border-bottom: 1px solid var(--color-border);
}

.reference-item .reference-form {
  margin: var(--space-4);
}

/* Course taxonomy and reusable course palettes */
.taxonomy-section {
  display: grid;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.taxonomy-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}

.taxonomy-section-header h2 {
  margin-bottom: var(--space-1);
}

.taxonomy-section-header p:last-child {
  max-width: 46rem;
  color: var(--color-text-muted);
  font-size: 0.875rem;
}

.taxonomy-section-actions {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.taxonomy-count {
  color: var(--color-text-muted);
  font-size: 0.72rem;
  font-weight: 700;
  white-space: nowrap;
}

.taxonomy-create {
  position: relative;
}

.taxonomy-create > summary {
  list-style: none;
  cursor: pointer;
}

.taxonomy-create > summary::-webkit-details-marker,
.taxonomy-card > summary::-webkit-details-marker,
.activity-group > summary::-webkit-details-marker,
.reference-item > summary::-webkit-details-marker { display: none; }

.taxonomy-form {
  padding: var(--space-4);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: end;
  gap: var(--space-3);
}

.taxonomy-form-wide,
.taxonomy-form .palette-preview {
  grid-column: 1 / -1;
}

.taxonomy-form > .button {
  justify-self: start;
}

.taxonomy-create > .taxonomy-form {
  position: absolute;
  z-index: 30;
  top: calc(100% + var(--space-2));
  right: 0;
  width: min(42rem, calc(100vw - 3rem));
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  box-shadow: var(--shadow-md);
}

.category-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
}

.taxonomy-card,
.activity-group {
  border: 1px solid var(--color-border);
  border-left: 5px solid var(--course-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

.taxonomy-card[open] {
  grid-column: 1 / -1;
}

.taxonomy-card,
.activity-group,
.taxonomy-card > summary,
.activity-group > summary {
  transition: border-color 160ms ease;
}

.taxonomy-card:has(> summary:hover),
.taxonomy-card:has(> summary:focus-visible),
.activity-group:has(> summary:hover),
.activity-group:has(> summary:focus-visible) {
  border-color: color-mix(in srgb, var(--course-strong) 32%, var(--color-border));
  border-left-color: var(--course-strong);
}

.taxonomy-card > summary {
  min-height: 3.5rem;
  padding: var(--space-2) var(--space-3);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto auto;
  align-items: center;
  gap: var(--space-3);
  cursor: pointer;
}

.category-palette-preview {
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.category-palette-preview i {
  width: 7px;
  height: 1.4rem;
  border-radius: 1px;
  background: var(--event-color);
}

.taxonomy-card summary strong,
.taxonomy-card summary small,
.level-item summary strong,
.level-item summary small {
  display: block;
}

.taxonomy-card summary small,
.level-item summary small {
  margin-top: 0.15rem;
  color: var(--color-text-muted);
  font-size: 0.7rem;
  font-weight: 600;
}

.taxonomy-card-body {
  padding: var(--space-4);
  display: grid;
  gap: var(--space-3);
  border-top: 1px solid var(--color-border);
  background: color-mix(in srgb, var(--color-surface-subtle) 54%, transparent);
}

.taxonomy-card-body .taxonomy-form {
  padding: 0;
}

.taxonomy-card.archived {
  background: var(--color-surface);
}

.reference-item.archived {
  background: var(--color-surface-subtle);
}

.taxonomy-card > summary > .app-icon {
  color: var(--color-text-muted);
  transition: color 160ms ease, transform 160ms ease;
}
.taxonomy-card > summary:hover > .app-icon,
.taxonomy-card > summary:focus-visible > .app-icon { color: var(--course-strong); }
.taxonomy-card[open] > summary > .app-icon { transform: rotate(90deg); }

.taxonomy-destructive-action {
  padding-top: var(--space-3);
  display: flex;
  justify-content: flex-end;
  border-top: 1px solid var(--color-border);
}

.taxonomy-disclosure-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-1);
}

.taxonomy-disclosure-actions .button {
  min-height: 2rem;
  padding: 0.3rem 0.55rem;
  border-color: transparent;
  color: var(--color-text-muted);
  background: transparent;
  box-shadow: none;
}

.taxonomy-disclosure-actions .button:hover,
.taxonomy-disclosure-actions .button:focus-visible {
  border-color: var(--color-border);
  color: var(--color-text);
  background: var(--color-surface-subtle);
  transform: none;
}

.category-marker {
  width: 0.25rem;
  height: 1.5rem;
  display: inline-block;
  border-radius:var(--radius-pill);
  background: var(--course-strong);
}

.palette-preview {
  display: grid;
  grid-template-columns: repeat(var(--palette-count, 1), minmax(0, 1fr));
  gap: var(--space-1);
}

.palette-swatch {
  min-height: 2.5rem;
  padding: var(--space-2);
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--course-border);
  border-radius:var(--radius-xs);
  color: var(--event-on-strong, var(--course-on-strong));
  background: var(--event-color);
  font-size: 0.68rem;
  font-weight: 800;
  text-align: center;
}

.taxonomy-calendar-sample {
  max-width: 26rem;
  padding: var(--space-3);
  display: grid;
  grid-template-columns: 3.25rem minmax(0, 1fr);
  gap: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

.taxonomy-calendar-sample-date {
  display: grid;
  place-content: center;
  color: var(--color-text-muted);
  text-align: center;
}

.taxonomy-calendar-sample-date span {
  font-size: 0.58rem;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.taxonomy-calendar-sample-date strong {
  color: var(--color-text);
  font-size: 1.2rem;
  font-variant-numeric: tabular-nums;
}

.taxonomy-calendar-event {
  min-width: 0;
  padding: var(--space-2) var(--space-3);
  display: grid;
  gap: 0.08rem;
  border-left: 3px solid var(--event-color);
  border-radius:var(--radius-xs);
  color: var(--color-text);
  background: color-mix(in srgb, var(--event-bg) 60%, var(--color-surface));
}

.taxonomy-calendar-event time,
.taxonomy-calendar-event span {
  color: var(--color-text-muted);
  font-size: 0.65rem;
}

.taxonomy-calendar-event strong {
  overflow: hidden;
  font-size: 0.78rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.activity-groups {
  display: grid;
  gap: var(--space-2);
}

.activity-group > summary {
  min-height: 3rem;
  padding: var(--space-2) var(--space-3);
  display: flex;
  align-items: center;
  gap: var(--space-3);
  cursor: pointer;
}

.activity-group > summary > span:first-child { flex: 1; }
.activity-group > summary strong,
.activity-group > summary small { display: block; }
.activity-group > summary small {
  color: var(--color-text-muted);
  font-size: 0.72rem;
}
.activity-group > summary > .app-icon {
  color: var(--color-text-muted);
  transition: color 160ms ease, transform 160ms ease;
}
.activity-group > summary:hover > .app-icon,
.activity-group > summary:focus-visible > .app-icon { color: var(--course-strong); }
.activity-group[open] > summary > .app-icon { transform: rotate(90deg); }

.activity-group > .reference-list {
  padding: 0 var(--space-3) var(--space-2);
  gap: 0;
  border-top: 1px solid var(--color-border);
}

.activity-group .reference-item {
  border: 0;
  border-bottom: 1px solid var(--color-border);
  border-radius: 0;
}

.activity-group .reference-item:last-child {
  border-bottom: 0;
}

.activity-group .reference-item > summary {
  min-height: 2.9rem;
  padding: var(--space-2);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: var(--space-2);
  font-weight: 700;
}

.activity-group .reference-item > summary > .app-icon,
.level-item > summary > .app-icon {
  color: var(--color-text-muted);
  transition: transform 160ms ease;
}

.activity-group .reference-item[open] > summary > .app-icon,
.level-item[open] > summary > .app-icon {
  transform: rotate(90deg);
}

.level-list {
  display: grid;
  gap: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  overflow: hidden;
}

.level-progression {
  display: grid;
  grid-template-columns: repeat(var(--palette-count, 1), minmax(0, 1fr));
  gap: 2px;
}

.level-progression > span {
  min-width: 0;
  display: grid;
  gap: var(--space-1);
  color: var(--color-text-muted);
  font-size: 0.62rem;
  font-weight: 700;
  text-align: center;
}

.level-progression i {
  height: 0.6rem;
  border-radius:var(--radius-pill);
  background: var(--event-color);
}

.level-list .level-item {
  border: 0;
  border-bottom: 1px solid var(--color-border);
  border-radius: 0;
}

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

.level-item > summary {
  display: grid;
  grid-template-columns: 2rem minmax(0, 1fr) 3rem 1rem;
  align-items: center;
  column-gap: var(--space-3);
  row-gap: 0;
}

.level-item > summary > .level-rank { grid-column: 1; }
.level-item > summary > .level-label { grid-column: 2; min-width: 0; }
.level-item > summary > .level-tone { grid-column: 3; }
.level-item > summary > .app-icon { grid-column: 4; justify-self: end; }

.level-label > strong,
.level-label > small { display: block; }

.level-label > strong {
  overflow-wrap: anywhere;
}

.level-label > .status {
  margin-top: var(--space-1);
}

.level-rank {
  width: 2rem;
  height: 2rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--color-border-strong);
  border-radius: 50%;
  color: var(--color-brand-900);
  background: var(--color-surface-subtle);
  font-size: 0.72rem;
  font-variant-numeric: tabular-nums;
}

.level-tone {
  width: 100%;
  height: 0.65rem;
  justify-self: center;
  border-radius:var(--radius-pill);
  background: var(--event-color);
}

:where([class*="course-palette-"]) {
  --course-strong: #566273;
  --course-soft: color-mix(in srgb, var(--course-strong) 12%, #f7f5f2);
  --course-border: color-mix(in srgb, var(--course-strong) 46%, #f7f5f2);
  --course-on-strong: #ffffff;
}

.course-palette-blue {
  --course-strong: #2c5fb8;
}

.course-palette-violet {
  --course-strong: #6247d7;
}

.course-palette-turquoise {
  --course-strong: #007d8a;
}

.course-palette-green {
  --course-strong: #1c8756;
}

.course-palette-amber {
  --course-strong: #b65f00;
}

.course-palette-coral {
  --course-strong: #b84532;
}

.course-palette-pink {
  --course-strong: #c23870;
}

.course-palette-neutral {
  --course-strong: #566273;
}

.course-tone {
  --event-bg: var(--course-soft);
  --event-color: var(--course-strong);
}

.taxonomy-card > summary:focus-visible,
.activity-group > summary:focus-visible,
.reference-item > summary:focus-visible,
.taxonomy-create > summary:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--color-accent-700) 45%, transparent);
  outline-offset: 2px;
}

/* Weekly series */
.series-section {
  margin-bottom: var(--space-8);
  scroll-margin-top: var(--space-6);
}

.series-form {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  align-items: start;
  gap: var(--space-4);
  margin-top: var(--space-6);
}

.series-batch-form > :is(label, .field-with-help),
.series-batch-form > .series-dates {
  grid-column: span 2;
}

.series-batch-form > :is(label, .field-with-help) {
  min-width: 0;
}

.field-with-help {
  min-width: 0;
  display: grid;
  align-content: start;
  gap: var(--space-2);
}

.series-form-actions {
  display: flex;
  align-items: end;
}

.series-dates {
  min-width: 0;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  gap: var(--space-2) var(--space-3);
  border: 0;
}

.series-dates legend {
  grid-column: 1 / -1;
  padding: 0;
  color: var(--color-brand-950);
  font-size: 0.84rem;
  font-weight: 700;
}

.series-batch-form > :is(.planning-slots, .series-batch-submit) {
  grid-column: 1 / -1;
}

.series-batch-form > .one-off-review {
  grid-column: 1 / -1;
}

.series-batch-submit {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: stretch;
  gap: var(--space-3);
}

.series-batch-submit .series-form-actions {
  display: flex;
  align-items: stretch;
}

.series-feedback:empty {
  display: none;
}

.series-list-heading {
  margin-bottom: var(--space-4);
}

.series-list {
  display: grid;
  gap: var(--space-3);
}

.series-card {
  padding: var(--space-5);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--color-accent-600);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  box-shadow: var(--shadow-sm);
}

.series-card-inactive {
  border-left-color: var(--color-border-strong);
  background: var(--color-surface-subtle);
}

.series-card-header {
  display: flex;
  justify-content: space-between;
  gap: var(--space-4);
}

.series-card-header p {
  margin: var(--space-1) 0 0;
  color: var(--color-text-muted);
  font-size: 0.84rem;
}

.series-summary {
  margin: var(--space-4) 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-block: 1px solid var(--color-border);
}

.series-summary div {
  min-width: 0;
  padding: var(--space-3);
}

.series-summary div + div {
  border-left: 1px solid var(--color-border);
}

.series-summary dt {
  color: var(--color-text-muted);
  font-size: 0.65rem;
  font-weight: 750;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.series-summary dd {
  margin: var(--space-1) 0 0;
  overflow-wrap: anywhere;
  font-size: 0.82rem;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
}

.excluded-dates {
  margin-bottom: var(--space-4);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.date-chip {
  min-height: 2rem;
  padding: 0.25rem 0.35rem 0.25rem 0.6rem;
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  border-radius:var(--radius-pill);
  color: var(--color-brand-900);
  background: var(--color-accent-100);
  font-size: 0.78rem;
  font-variant-numeric: tabular-nums;
}

.chip-action {
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 0;
  border-radius: 50%;
  color: var(--color-accent-700);
  background: transparent;
  cursor: pointer;
  font-size: 1rem;
  font-weight: 800;
}

.chip-action:hover {
  background: rgb(164 78 45 / 10%);
}

.series-card-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: var(--space-2);
}

.exclude-form {
  display: flex;
  align-items: end;
  gap: var(--space-2);
}

.exclude-form input,
.lifecycle-form input {
  min-width: 9.5rem;
}

.lifecycle-form {
  display: flex;
  align-items: end;
  gap: var(--space-2);
}

.lifecycle-form:has(input[type="hidden"]) {
  display: block;
}

.series-delete-action {
  margin-top: var(--space-3);
}

.series-delete-action .field-hint {
  max-width: 52rem;
  margin: var(--space-1) 0 0;
}

.series-impact {
  grid-column: 1 / -1;
  margin: 0;
  padding: var(--space-3);
  border-radius: var(--radius-sm);
  color: var(--color-brand-900);
  background: var(--color-accent-100);
  font-size: 0.84rem;
}

.series-editor {
  margin: 0;
  border: 0;
}

.series-editor summary {
  min-height: 3rem;
  display: flex;
  align-items: center;
  color: var(--color-accent-700);
  cursor: pointer;
  font-size: 0.84rem;
  font-weight: 750;
}

/* Administration calendar */
.calendar-app {
  position: relative;
  min-width: 0;
}

.glass-surface {
  background: var(--color-surface);
}

@supports ((-webkit-backdrop-filter: blur(14px)) or (backdrop-filter: blur(14px))) {
  .glass-surface {
    background: rgb(255 255 255 / 82%);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
  }
}

.calendar-toolbar {
  position: sticky;
  z-index: 12;
  padding: var(--space-3);
  display: grid;
  align-items: center;
  border: 1px solid var(--color-border);
}

.calendar-navigation,
.calendar-date-form {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.view-switcher {
  display: flex;
  align-items: center;
}

.toolbar-icon {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
}

.button-compact {
  text-decoration: none;
}

.calendar-period {
  min-width: 11rem;
  margin: 0 0 0 var(--space-2);
}

.calendar-period strong,
.calendar-period span {
  display: block;
}

.calendar-period strong {
  color: var(--color-brand-950);
  font-size: 0.9rem;
  text-transform: capitalize;
}

.calendar-period span {
  color: var(--color-text-muted);
  font-size: 0.7rem;
}

.calendar-date-form label {
  width: 9.75rem;
}

.view-switcher {
  padding: 0.2rem;
}

.view-switcher a {
  min-height: 2.3rem;
  padding: 0 var(--space-3);
  display: inline-flex;
  align-items: center;
  border-radius: var(--radius-sm);
  color: var(--color-text-muted);
  font-size: 0.76rem;
  font-weight: 750;
  text-decoration: none;
}

.view-switcher a:hover {
  color: var(--color-brand-950);
}

.view-switcher a.active,
.calendar-app[data-effective-view="day"] [data-calendar-view="day"],
.calendar-app[data-effective-view="week"] [data-calendar-view="week"] {
  color: white;
  background: var(--color-brand-900);
}

.filter-reset {
  min-height: var(--control-height);
  display: inline-flex;
  align-items: center;
  color: var(--color-accent-700);
  font-size: 0.78rem;
  font-weight: 700;
}

.calendar-week-view {
  overflow: hidden;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

.calendar-week-header {
  display: grid;
  grid-template-columns: 4rem repeat(7, minmax(0, 1fr));
  border-bottom: 1px solid var(--color-border);
  background: var(--color-surface-subtle);
}

.calendar-week-header span {
  min-height: 3rem;
  padding: var(--space-2);
  display: grid;
  place-items: center;
  border-left: 1px solid var(--color-border);
  color: var(--color-text-muted);
  font-size: 0.72rem;
  font-weight: 750;
  text-transform: capitalize;
}

.calendar-week-header span:first-child {
  border-left: 0;
}

.calendar-week-header span.today {
  color: var(--color-accent-700);
  background: var(--color-accent-100);
}

.calendar-week-header span.selected {
  box-shadow: inset 0 -2px var(--color-accent-600);
}

.calendar-week-grid {
  display: grid;
  grid-template-columns: 4rem repeat(7, minmax(0, 1fr));
  min-width: 0;
  padding-block: 0.75rem;
}

.calendar-week-header.calendar-visible-days-1,
.calendar-week-grid.calendar-visible-days-1 { grid-template-columns: 4rem repeat(1, minmax(0, 1fr)); }
.calendar-week-header.calendar-visible-days-2,
.calendar-week-grid.calendar-visible-days-2 { grid-template-columns: 4rem repeat(2, minmax(0, 1fr)); }
.calendar-week-header.calendar-visible-days-3,
.calendar-week-grid.calendar-visible-days-3 { grid-template-columns: 4rem repeat(3, minmax(0, 1fr)); }
.calendar-week-header.calendar-visible-days-4,
.calendar-week-grid.calendar-visible-days-4 { grid-template-columns: 4rem repeat(4, minmax(0, 1fr)); }
.calendar-week-header.calendar-visible-days-5,
.calendar-week-grid.calendar-visible-days-5 { grid-template-columns: 4rem repeat(5, minmax(0, 1fr)); }
.calendar-week-header.calendar-visible-days-6,
.calendar-week-grid.calendar-visible-days-6 { grid-template-columns: 4rem repeat(6, minmax(0, 1fr)); }
.calendar-week-header.calendar-visible-days-7,
.calendar-week-grid.calendar-visible-days-7 { grid-template-columns: 4rem repeat(7, minmax(0, 1fr)); }

.calendar-time-rail,
.calendar-day-column {
  height: 42rem;
}

.calendar-time-rail {
  position: relative;
  background: var(--color-surface-subtle);
}

.calendar-time-rail span {
  position: absolute;
  right: var(--space-2);
  padding: 0 var(--space-2);
  color: var(--color-text-muted);
  font-size: 0.62rem;
  font-variant-numeric: tabular-nums;
  text-align: right;
  transform: translateY(-50%);
}

.calendar-time-rail span:nth-child(1) { top: 0; }
.calendar-time-rail span:nth-child(2) { top: 3rem; }
.calendar-time-rail span:nth-child(3) { top: 6rem; }
.calendar-time-rail span:nth-child(4) { top: 9rem; }
.calendar-time-rail span:nth-child(5) { top: 12rem; }
.calendar-time-rail span:nth-child(6) { top: 15rem; }
.calendar-time-rail span:nth-child(7) { top: 18rem; }
.calendar-time-rail span:nth-child(8) { top: 21rem; }
.calendar-time-rail span:nth-child(9) { top: 24rem; }
.calendar-time-rail span:nth-child(10) { top: 27rem; }
.calendar-time-rail span:nth-child(11) { top: 30rem; }
.calendar-time-rail span:nth-child(12) { top: 33rem; }
.calendar-time-rail span:nth-child(13) { top: 36rem; }
.calendar-time-rail span:nth-child(14) { top: 39rem; }
.calendar-time-rail span:nth-child(15) { top: 42rem; }

.calendar-day-column {
  min-width: 0;
  padding: 1px;
  display: grid;
  grid-template-rows: repeat(56, minmax(0, 0.75rem));
  grid-template-columns: minmax(0, 1fr);
  border-left: 1px solid var(--color-border);
  background:
    repeating-linear-gradient(
      to bottom,
      transparent 0,
      transparent calc(3rem - 1px),
      var(--color-border) calc(3rem - 1px),
      var(--color-border) 3rem
    );
}

.calendar-day-column.today {
  background-color: color-mix(in srgb, var(--color-surface) 88%, var(--color-accent-100));
}

.calendar-event {
  z-index: 2;
  min-width: 0;
  padding: 0.28rem 0.4rem;
  overflow: hidden;
  border: 1px solid;
  border-left-width: 3px;
  border-radius: var(--radius-sm);
  color: var(--color-brand-950);
  cursor: pointer;
  text-align: left;
  transition: filter 150ms ease, box-shadow 150ms ease;
}

.calendar-event:hover {
  z-index: 3;
  filter: brightness(0.97);
  box-shadow: var(--shadow-md);
}

.calendar-event strong,
.calendar-event span,
.calendar-event small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.calendar-event .event-time-range,
.calendar-event .event-activity,
.calendar-event .event-meta,
.calendar-event .event-badge { display: none; }
.calendar-event .event-compact-line { display: block; }
.calendar-event .event-time-end,
.calendar-event .event-time-range { white-space: nowrap; }
.calendar-event.medium .event-compact-line,
.calendar-event.expanded .event-compact-line { display: none; }
.calendar-event.medium .event-time-range,
.calendar-event.medium .event-activity,
.calendar-event.medium .event-level,
.calendar-event.expanded .event-time-range,
.calendar-event.expanded .event-activity,
.calendar-event.expanded .event-level { display: block; }
.calendar-event.compact .event-level,
.calendar-event.compact .event-time-end { display: none; }
.calendar-event .event-time-range { margin-top: 0; font-weight: 750; }
.calendar-event .event-activity { margin-top: 0.08rem; font-weight: 700; }
.calendar-event.expanded .event-meta { display: flex; align-items: center; gap: 0.3rem; margin-top: 0.12rem; overflow: hidden; }
.calendar-event.expanded .event-meta > span { min-width: 0; margin-top: 0; display: inline-flex; align-items: center; gap: 0.15rem; overflow: hidden; text-overflow: ellipsis; }
.calendar-event.expanded .event-meta-coach { flex: 1 1 auto; }
.calendar-event.expanded .event-meta .app-icon { display: inline-block; color: var(--color-text-muted); }
.calendar-event.event-narrow .event-occupancy { display: none; }
.calendar-event.event-tight .event-meta-room { display: none; }
.calendar-event.expanded .event-badge { width: max-content; max-width: 100%; display: block; margin-top: 0.12rem; padding: 0.05rem 0.25rem; border: 1px solid currentColor; border-radius: var(--radius-sm); font-size: 0.55rem; }

.calendar-event strong {
  font-size: 0.68rem;
}

.calendar-event span,
.calendar-event small {
  font-size: 0.6rem;
}

.calendar-event span {
  margin-top: 0.12rem;
}

.calendar-event small {
  margin-top: 0.14rem;
  color: var(--color-text-muted);
}

.planning-slots {
  min-width: 0;
  padding: var(--space-3);
  display: grid;
  gap: var(--space-3);
  border: 1px solid var(--color-border);
}

.planning-slots legend {
  padding-inline: var(--space-1);
  color: var(--color-text);
  font-size: 0.82rem;
  font-weight: 750;
}

.planning-slot-list {
  display: grid;
  gap: var(--space-2);
}

.planning-slot {
  display: grid;
  grid-template-columns: minmax(8rem, 1fr) minmax(7rem, 0.8fr) minmax(7rem, 0.8fr) auto;
  align-items: start;
  gap: var(--space-2);
  padding: var(--space-3);
  border-left: 3px solid var(--color-accent-600);
  background: var(--color-surface-subtle);
}

.planning-slot.has-error {
  border-left-color: var(--color-danger);
  background: #fff7f6;
}

.planning-slot.has-error input {
  border-color: var(--color-danger);
}

.slot-error {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--color-danger);
  font-size: 0.78rem;
  font-weight: 700;
}

.slot-error:empty {
  display: none;
}

.one-off-review {
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

.one-off-review strong {
  color: var(--color-brand-950);
  font-size: 0.84rem;
}

.one-off-review p {
  margin: var(--space-1) 0 0;
  color: var(--color-text-muted);
  font-size: 0.82rem;
}

.planning-slot-actions {
  display: grid;
  gap: var(--space-2);
  color: var(--color-brand-950);
  font-size: 0.84rem;
  font-weight: 700;
}

.planning-slot-actions > div {
  display: grid;
  grid-template-columns: repeat(2, max-content);
  gap: var(--space-1);
}

.series-batch-summary {
  margin: 0;
  padding: var(--space-3);
  border-left: 3px solid var(--color-brand-700);
  color: var(--color-brand-950);
  background: var(--color-surface-subtle);
  font-size: 0.84rem;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
}

.series-filters {
  margin-bottom: var(--space-4);
  display: grid;
  grid-template-columns: minmax(12rem, 1.5fr) repeat(5, minmax(6.5rem, 1fr));
  gap: var(--space-2);
}

.series-filters label {
  min-width: 0;
  color: var(--color-text-muted);
  font-size: 0.72rem;
  font-weight: 750;
}

.series-filters input,
.series-filters select {
  margin-top: 0.2rem;
}

.student-form,
.student-optional-grid {
  align-items: start;
}

.student-optional,
.student-private-section,
.student-tag-picker {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
}

.student-optional > summary {
  min-height: 44px;
  display: flex;
  align-items: center;
  cursor: pointer;
  font-weight: 700;
}

.student-optional-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
  padding-top: var(--space-3);
}

.student-private-section {
  margin-top: var(--space-4);
}

.student-private-section h3,
.student-private-section p {
  margin-top: 0;
}

.student-private-section address {
  font-style: normal;
}

.student-admin-notes {
  margin-bottom: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.student-tags,
.student-tag-picker {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.student-tag {
  --tag-color: var(--course-strong, var(--color-text-muted));
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  width: fit-content;
  padding: .2rem .55rem;
  border: 1px solid color-mix(in srgb, var(--tag-color) 35%, transparent);
  border-radius:var(--radius-pill);
  background: color-mix(in srgb, var(--tag-color) 10%, var(--color-surface));
  color: var(--color-text);
  font-size: .78rem;
  line-height: 1.3;
}

.student-tag button {
  min-width: 24px;
  min-height: 24px;
  border: 0;
  background: transparent;
  cursor: pointer;
}

.student-tag.inactive {
  opacity: .55;
}

.student-tag-palette {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.student-tag-palette legend {
  margin-bottom: .2rem;
  color: var(--color-text);
  font-size: .88rem;
  font-weight: 700;
}

.student-tag-palette-grid {
  display: flex;
  align-items: center;
}

.student-tag-palette-grid {
  flex-wrap: wrap;
  gap: .4rem;
}

.student-tag-palette-choice {
  --tag-color: var(--course-strong, var(--color-text-muted));
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  min-width: 34px;
  height: 34px;
  min-height: 34px;
  padding: 0;
  border: 2px solid transparent;
  border-radius: 50%;
  background: var(--tag-color);
  cursor: pointer;
}

.student-tag-palette-choice input {
  position: absolute;
  inset: 0;
  appearance: none;
  width: 100%;
  height: 100%;
  min-height: 100%;
  margin: 0;
  border-radius: 50%;
  opacity: 0;
  cursor: pointer;
}

.student-tag-palette-choice:has(input:checked) {
  border-color: var(--color-surface);
  box-shadow: 0 0 0 2px var(--tag-color);
}

.student-tag-palette-choice:has(input:focus-visible) {
  outline: 3px solid var(--color-focus);
  outline-offset: 3px;
}

.student-tag-palette-check {
  opacity: 0;
  color: white;
  font-weight: 900;
  text-shadow: 0 1px 2px rgb(0 0 0 / .7);
}

.student-tag-palette-choice:has(input:checked) .student-tag-palette-check {
  opacity: 1;
}

.student-new {
  background: color-mix(in srgb, var(--color-accent) 12%, var(--color-surface));
}

.student-tag-picker label {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  min-height: 44px;
}

.student-tag-picker input {
  width: 1rem;
  min-height: auto;
}

.student-tag-form {
  display: grid;
  grid-template-columns: minmax(10rem, 1fr) minmax(20rem, 2fr) minmax(5rem, .45fr) auto;
  align-items: end;
  gap: var(--space-3);
  margin: 0;
}

.student-tag-create {
  margin-bottom: var(--space-4);
}

.student-tag-admin-list {
  display: grid;
  gap: var(--space-2);
}

.student-tag-admin-row {
  position: relative;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
}

.student-tag-admin-row > header,
.student-tag-admin-main {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.student-tag-admin-row > header {
  justify-content: space-between;
}

.student-tag-admin-main {
  min-width: 0;
}

.student-tag-admin-main > strong {
  min-width: 8rem;
}

.student-tag-dot {
  --tag-color: var(--course-strong, var(--color-text-muted));
  width: .75rem;
  height: .75rem;
  flex: 0 0 .75rem;
  border-radius: 50%;
  background: var(--tag-color);
}

.student-tag-admin-row small {
  color: var(--color-text-muted);
}

.student-tag-editor[open] {
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border);
}

.student-tag-editor .student-tag-form {
  margin-bottom: 0;
}

.student-creation-dialog .student-creation-content {
  max-height: calc(100dvh - 2rem);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}

.student-creation-dialog .student-creation-form {
  min-height: 0;
  overflow: auto;
  padding: 0 var(--space-6) var(--space-6);
}

.student-creation-notes {
  padding-bottom: var(--space-2);
}

.student-creation-notes textarea {
  box-sizing: border-box;
  display: block;
  border: var(--control-border);
  resize: vertical;
}

.student-creation-footer {
  grid-column: 1 / -1;
  position: sticky;
  z-index: 1;
  bottom: 0;
  display: flex;
  justify-content: flex-end;
  gap: var(--space-2);
  margin: 0 calc(var(--space-6) * -1) calc(var(--space-6) * -1);
  padding: var(--space-3) var(--space-6);
  background: var(--color-surface);
}

.student-record { position: relative; }

.student-record-header .series-card-controls { position: relative; }

.student-actions-menu[open] {
  position: absolute;
  z-index: 5;
  top: calc(100% + var(--space-1));
  right: 0;
  display: grid;
  min-width: 15rem;
  padding: .35rem;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  box-shadow: var(--shadow-md);
}

.student-actions-menu hr {
  width: 100%;
  margin: .2rem 0;
  border: 0;
  border-top: 1px solid var(--color-border);
}

.student-menu-item {
  width: 100%;
  min-height: 2.35rem;
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: .45rem .55rem;
  border: 0;
  border-radius: var(--radius-sm);
  color: var(--color-text);
  background: transparent;
  cursor: pointer;
  font-weight: 650;
  text-align: left;
}

.student-menu-item:hover { background: var(--color-surface-subtle); }

.student-menu-item:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 1px;
}

.student-menu-item-danger { color: var(--color-danger); }

.student-menu-item-danger:hover { background: color-mix(in srgb, var(--color-danger) 8%, var(--color-surface)); }

.student-return-link { text-decoration: none; }

.student-return-link:hover { color: var(--color-accent-700); }

.student-return-link:focus-visible {
  color: var(--color-accent-700);
  text-decoration: none;
}

.student-history-empty {
  margin: 0;
  color: var(--color-text-muted);
  font-size: .9rem;
}

.student-tag-actions[open] {
  position: absolute;
  z-index: 5;
  top: calc(100% - var(--space-1));
  right: var(--space-2);
  display: grid;
  gap: var(--space-2);
  min-width: 13rem;
  padding: var(--space-2);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  box-shadow: var(--shadow-md);
}

.student-history-row {
  min-width: 0;
  align-items: center;
  gap: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
}

.student-history-row {
  display: flex;
  justify-content: space-between;
  padding: var(--space-4);
}

.student-history-row h3,
.student-history-row p {
  margin: 0;
  overflow-wrap: anywhere;
}

.student-history-row p,
.student-history-row small {
  color: var(--color-text-muted);
}

.student-history-row > :last-child {
  display: grid;
  justify-items: end;
  gap: var(--space-1);
  text-align: right;
}

.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-5);
}

.pagination [aria-disabled="true"] {
  pointer-events: none;
  opacity: 0.45;
}

.course-deletion-dialog {
  background: var(--color-surface);
  border: 2px solid var(--color-danger);
  border-radius: var(--radius-lg);
  color: var(--color-text);
  max-height: calc(100dvh - 2rem);
  max-width: 44rem;
  padding: 0;
  width: calc(100% - 2rem);
}

.course-deletion-dialog::backdrop {
  background: rgb(15 23 42 / 60%);
}

.course-deletion-form {
  display: grid;
  gap: var(--space-4);
  padding: clamp(1rem, 4vw, 2rem);
}

.course-deletion-heading {
  border-bottom: 1px solid var(--color-border);
  padding-bottom: var(--space-3);
}

.course-deletion-heading :is(h2, p),
.course-deletion-impact h3 {
  margin: 0;
}

.course-deletion-heading h2 {
  color: var(--color-danger);
}

.student-deletion-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
}

.student-deletion-dialog .course-deletion-impact dl {
  margin-bottom: 0;
}

.student-deletion-dialog [data-impact="reference"],
.student-deletion-dialog [data-impact="authLinked"] {
  font-size: .9rem;
  overflow-wrap: anywhere;
}

.course-deletion-impact {
  background: var(--color-surface-subtle);
  border-radius: var(--radius-md);
  padding: var(--space-3);
}

.course-deletion-impact dl {
  display: grid;
  gap: var(--space-2);
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: var(--space-3) 0;
}

.course-deletion-impact dl div {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: var(--space-2);
}

.course-deletion-impact dt {
  color: var(--color-text-muted);
  font-size: 0.78rem;
}

.course-deletion-impact dd {
  font-size: 1.15rem;
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  margin: 0;
}

.course-deletion-impact ul {
  margin: 0;
  max-height: 8rem;
  overflow: auto;
  padding-left: 1.25rem;
}

.course-deletion-eligibility {
  background: var(--color-surface-subtle);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: var(--space-3);
}

.course-deletion-eligibility.is-blocked { border-color: var(--color-danger); }
.course-deletion-eligibility p { font-weight: 700; margin: 0; }
.course-deletion-eligibility ul { margin: var(--space-2) 0 0; padding-left: 1.25rem; }

.course-deletion-error {
  color: var(--color-danger);
  font-weight: 700;
  margin: 0;
  min-height: 1.5em;
}

.course-deletion-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: flex-end;
}

.course-deletion-actions .button-danger {
  margin-left: var(--space-4);
}

.series-filter-empty {
  margin-bottom: var(--space-3);
}

/* Graphite Glass additions */
.series-creation-panel {
  width: min(72rem, calc(100% - 2rem));
  max-height: calc(100dvh - 2rem);
  padding: 0;
  overflow: auto;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  box-shadow: var(--shadow-md);
}
.series-creation-panel::backdrop { background: rgb(23 32 39 / 42%); }
.series-creation-panel .series-section { margin: 0; }
.series-form-block { grid-column: span 3; min-width: 0; margin: 0; padding: var(--space-4); border: 1px solid var(--color-border); }
.series-form-block legend { padding: 0 var(--space-1); color: var(--color-text-muted); font-size: .72rem; font-weight: 800; text-transform: uppercase; }
.series-form-block-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); }
.series-form-block .series-dates { grid-column: 1 / -1; }
.capacity-override { grid-column: 1 / -1; color: var(--color-text-muted); font-size: .78rem; }
.capacity-override summary { cursor: pointer; font-weight: 750; }
.capacity-override label { margin-top: var(--space-2); }
.planning-slot-actions .icon-button { border: 1px solid var(--color-border); color: var(--color-brand-950); }
.one-off-slots .planning-slot { grid-template-columns: minmax(8rem, 1fr) minmax(7rem, 0.8fr) minmax(7rem, 0.8fr) max-content; align-items: end; }
.one-off-slots .planning-slot-actions { align-self: end; gap: var(--space-2); }
.one-off-slots .planning-slot-actions > span { color: var(--color-brand-950); font-size: 0.84rem; font-weight: 700; }
.one-off-slots .planning-slot-actions > div { grid-template-columns: repeat(2, var(--control-height)); gap: var(--space-1); }
.one-off-slots .planning-slot-actions .icon-button { width: var(--control-height); height: var(--control-height); }
.series-card-controls { display: flex; align-items: center; gap: var(--space-2); }
.series-card-header h3 { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.series-card-header h3 .status { display: inline-flex; }
.series-card { position: relative; }
.series-actions-menu:not([open]) > :not(summary) { display: none; }
.series-editor[open] { margin-top: var(--space-4); border-top: 1px solid var(--color-border); }
.series-card:has(.series-actions-menu:not([open])):not(:has(.series-editor[open])) .series-summary { margin-bottom: 0; border-bottom: 0; }
.series-card:has([data-one-off-menu]:not([open])):not(:has([data-one-off-editor][open])) .series-summary { margin-bottom: 0; border-bottom: 0; }
.series-card-header :is(h3, h4) { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.series-editor-slots { grid-column: 1 / -1; }
.series-editor .series-form { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.series-editor-course { grid-column: span 1; }
.series-editor-slot { grid-column: span 1; min-width: 0; }
.series-editor-help { grid-column: 1 / -1; margin: calc(var(--space-3) * -0.5) 0 0; }
.capacity-field { position: relative; }
.capacity-badge { position: absolute; right: 0; top: 0; color: var(--color-text-muted); font-size: .68rem; font-weight: 650; }
.series-editor [data-editor-slot-list] { display: grid; gap: var(--space-2); }
.series-editor .planning-slot { grid-template-columns: repeat(3, minmax(0, 1fr)) auto; align-items: end; }
.editor-slot-actions { display: flex; align-items: center; gap: var(--space-1); }
.editor-slot-actions .icon-button { border: 1px solid var(--color-border); color: var(--color-brand-950); }
.editor-slot-actions svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.editor-slot-actions [data-editor-slot-remove]:hover, .editor-slot-actions [data-editor-slot-remove]:focus-visible { color: var(--color-danger); border-color: var(--color-danger); background: var(--color-danger-bg); }
@media (max-width: 52rem) { .series-editor .series-form, .one-off-editor { grid-template-columns: repeat(2, minmax(0, 1fr)); } .series-editor-slot, .series-editor-course { grid-column: span 1; } .series-editor .planning-slot { grid-template-columns: 1fr 1fr; } .editor-slot-actions { grid-column: 1 / -1; } }
@media (max-width: 48rem) { .one-off-slots .planning-slot { grid-template-columns: repeat(2, minmax(0, 1fr)); } .one-off-slots .planning-slot-actions { grid-column: 1 / -1; justify-self: end; width: max-content; } }
.series-filter-more { min-width: 9rem; align-self: end; }
.series-filter-more > summary { min-height: var(--control-height); padding: 0 var(--space-3); display: flex; align-items: center; gap: var(--space-2); border: 1px solid var(--color-border-strong); cursor: pointer; font-size: var(--control-font-size); }
.series-filter-more > summary span { color: var(--color-accent-700); }
.series-filter-more > div { position: absolute; z-index: 8; width: min(28rem, calc(100vw - 2rem)); padding: var(--space-3); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2); border: 1px solid var(--color-border); background: var(--color-surface); box-shadow: var(--shadow-md); }
.filter-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: calc(var(--space-4) * -0.5) 0 var(--space-4); }
.filter-chip { min-height: 32px; padding: 0 var(--space-2); border: 1px solid var(--color-border); border-radius:var(--radius-pill); color: var(--color-brand-950); background: var(--color-surface-subtle); cursor: pointer; font-size: .74rem; }
.calendar-week-view { overflow: auto; }
.calendar-week-header { position: sticky; top: 0; z-index: 4; }
.calendar-week-header span.weekend, .calendar-day-column.weekend { background-color: var(--color-surface-subtle); }
.calendar-day-column { position: relative; }
.calendar-now-line { z-index: 4; height: 2px; align-self: start; background: var(--color-accent-600); pointer-events: none; }
.calendar-now-line::before { width: 7px; height: 7px; display: block; border-radius: 50%; background: var(--color-accent-600); content: ''; transform: translate(-4px, -3px); }
.calendar-event small { display: none; }
.calendar-event-popover { position: fixed; z-index: 60; width: max-content; max-width: min(18rem, calc(100vw - 1rem)); padding: var(--space-3); border: 1px solid var(--color-border); border-radius: var(--radius-sm); color: var(--color-text); background: var(--color-surface); box-shadow: var(--shadow-md); font-size: .75rem; line-height: 1.45; white-space: pre-line; pointer-events: none; }
.calendar-event-popover[hidden] { display: none; }

.series-category {
  border: 1px solid var(--color-border);
  background: var(--color-surface);
}

.series-category > summary {
  min-height: 3.25rem;
  padding: var(--space-2) var(--space-3);
  display: flex;
  align-items: center;
  width: 100%;
  justify-content: flex-start;
  gap: var(--space-3);
  cursor: pointer;
  list-style: none;
}

.series-category > summary::-webkit-details-marker { display: none; }
.series-category > summary > span:nth-child(2) { flex: 1; min-width: 0; }
.series-category > summary > .app-icon { transition: transform 160ms ease; }
.series-category[open] > summary > .app-icon { transform: rotate(90deg); }
.series-category > summary strong,
.series-category > summary small { display: block; }
.series-category > summary small { color: var(--color-text-muted); font-size: 0.72rem; }
.series-category-items { padding: 0 var(--space-3) var(--space-3); display: grid; gap: var(--space-2); }

.series-disclosure-actions {
  display: inline-flex;
  gap: var(--space-1);
}

.event-cancelled {
  border-color: var(--color-border-strong);
  border-left-color: var(--color-text-muted);
  color: var(--color-text-muted);
  background:
    repeating-linear-gradient(
      -45deg,
      var(--color-surface-subtle) 0,
      var(--color-surface-subtle) 5px,
      var(--color-border) 5px,
      var(--color-border) 10px
    );
  text-decoration: line-through;
}

.slot-0 { grid-row-start: 1; }
.slot-1 { grid-row-start: 2; }
.slot-2 { grid-row-start: 3; }
.slot-3 { grid-row-start: 4; }
.slot-4 { grid-row-start: 5; }
.slot-5 { grid-row-start: 6; }
.slot-6 { grid-row-start: 7; }
.slot-7 { grid-row-start: 8; }
.slot-8 { grid-row-start: 9; }
.slot-9 { grid-row-start: 10; }
.slot-10 { grid-row-start: 11; }
.slot-11 { grid-row-start: 12; }
.slot-12 { grid-row-start: 13; }
.slot-13 { grid-row-start: 14; }
.slot-14 { grid-row-start: 15; }
.slot-15 { grid-row-start: 16; }
.slot-16 { grid-row-start: 17; }
.slot-17 { grid-row-start: 18; }
.slot-18 { grid-row-start: 19; }
.slot-19 { grid-row-start: 20; }
.slot-20 { grid-row-start: 21; }
.slot-21 { grid-row-start: 22; }
.slot-22 { grid-row-start: 23; }
.slot-23 { grid-row-start: 24; }
.slot-24 { grid-row-start: 25; }
.slot-25 { grid-row-start: 26; }
.slot-26 { grid-row-start: 27; }
.slot-27 { grid-row-start: 28; }
.slot-28 { grid-row-start: 29; }
.slot-29 { grid-row-start: 30; }
.slot-30 { grid-row-start: 31; }
.slot-31 { grid-row-start: 32; }
.slot-32 { grid-row-start: 33; }
.slot-33 { grid-row-start: 34; }
.slot-34 { grid-row-start: 35; }
.slot-35 { grid-row-start: 36; }
.slot-36 { grid-row-start: 37; }
.slot-37 { grid-row-start: 38; }
.slot-38 { grid-row-start: 39; }
.slot-39 { grid-row-start: 40; }
.slot-40 { grid-row-start: 41; }
.slot-41 { grid-row-start: 42; }
.slot-42 { grid-row-start: 43; }
.slot-43 { grid-row-start: 44; }
.slot-44 { grid-row-start: 45; }
.slot-45 { grid-row-start: 46; }
.slot-46 { grid-row-start: 47; }
.slot-47 { grid-row-start: 48; }
.slot-48 { grid-row-start: 49; }
.slot-49 { grid-row-start: 50; }
.slot-50 { grid-row-start: 51; }
.slot-51 { grid-row-start: 52; }
.slot-52 { grid-row-start: 53; }
.slot-53 { grid-row-start: 54; }
.slot-54 { grid-row-start: 55; }
.slot-55 { grid-row-start: 56; }
.duration-2 { grid-row-end: span 2; }
.duration-3 { grid-row-end: span 3; }
.duration-4 { grid-row-end: span 4; }
.duration-5 { grid-row-end: span 5; }
.duration-6 { grid-row-end: span 6; }
.duration-7 { grid-row-end: span 7; }
.duration-8 { grid-row-end: span 8; }
.duration-9 { grid-row-end: span 9; }
.duration-10 { grid-row-end: span 10; }
.duration-11 { grid-row-end: span 11; }
.duration-12 { grid-row-end: span 12; }
.duration-13 { grid-row-end: span 13; }
.duration-14 { grid-row-end: span 14; }
.duration-15 { grid-row-end: span 15; }
.duration-16 { grid-row-end: span 16; }

.calendar-day-view,
.calendar-mobile-week {
  display: none;
}

.calendar-app[data-effective-view="day"] .calendar-week-view {
  display: none;
}

.calendar-app[data-effective-view="day"] .calendar-day-view {
  display: block;
}

.agenda-day-heading {
  padding-bottom: var(--space-4);
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-4);
  border-bottom: 1px solid var(--color-border);
}

.agenda-day-heading h2 {
  text-transform: capitalize;
}

.agenda-day-heading > span {
  color: var(--color-text-muted);
  font-size: 0.78rem;
  font-weight: 700;
}

.agenda-list {
  display: grid;
  gap: var(--space-2);
}

.agenda-day-heading + .agenda-list {
  margin-top: var(--space-3);
}

.agenda-event {
  width: 100%;
  min-height: 4.5rem;
  padding: var(--space-3);
  display: grid;
  grid-template-columns: 4rem minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--space-4);
  border: 1px solid;
  border-left-width: 3px;
  border-radius: var(--radius-sm);
  color: var(--color-text);
  cursor: pointer;
  text-align: left;
}

.agenda-event > time {
  color: var(--color-brand-950);
  font-size: 0.88rem;
  font-variant-numeric: tabular-nums;
  font-weight: 800;
}

.agenda-event > time small,
.agenda-event-main > *,
.agenda-capacity > * {
  display: block;
}

.agenda-event > time small,
.agenda-event-main span,
.agenda-capacity small {
  color: var(--color-text-muted);
  font-size: 0.7rem;
  font-weight: 500;
}

.agenda-event-main strong {
  font-size: 0.88rem;
}

.agenda-capacity {
  min-width: 4rem;
  text-align: right;
}

.calendar-status {
  width: max-content;
  padding: 0.2rem 0.5rem;
  border-radius:var(--radius-pill);
  font-size: 0.68rem;
  font-weight: 800;
  white-space: nowrap;
}

.status-available {
  color: #17553c;
  background: var(--color-success-bg);
}

.status-almost-full {
  color: #744d0c;
  background: #fff2cf;
}

.status-full {
  color: #852a22;
  background: var(--color-danger-bg);
}

.status-cancelled {
  color: #5f585c;
  background: #e9e6e4;
}

.calendar-state {
  min-height: 8rem;
  padding: var(--space-6);
  display: grid;
  place-items: center;
  align-content: center;
  gap: var(--space-2);
  border-radius: var(--radius-sm);
  text-align: center;
}

.calendar-state strong,
.calendar-state span {
  display: block;
}

.calendar-state span {
  color: inherit;
  font-size: 0.82rem;
}

.calendar-filter-empty {
  margin-top: var(--space-4);
}

.mobile-week-day {
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--color-border);
}

.mobile-week-day > header {
  margin-bottom: var(--space-2);
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.mobile-week-day h2 {
  margin: 0;
  font-size: 0.9rem;
  text-transform: capitalize;
}

.mobile-week-day header span {
  width: 1.6rem;
  height: 1.6rem;
  display: grid;
  place-items: center;
  border-radius:var(--radius-pill);
  color: var(--color-text-muted);
  background: var(--color-surface-subtle);
  font-size: 0.68rem;
  font-weight: 750;
}

.mobile-day-empty {
  margin: 0;
  padding: var(--space-3);
  color: var(--color-text-muted);
  background: var(--color-surface-subtle);
  font-size: 0.76rem;
}

.dialog-close {
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  color: var(--color-brand-900);
  background: var(--color-surface);
  cursor: pointer;
}

.student-active-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: end;
  gap: var(--space-2);
}

.student-active-actions :is(button, a) {
  min-height: 2rem;
  padding: 0.2rem 0.42rem;
  border: 0;
  border-radius: var(--radius-sm);
  color: var(--color-accent-700);
  background: var(--color-surface-subtle);
  font: inherit;
  font-size: 0.68rem;
  font-weight: 750;
  text-decoration: none;
  cursor: pointer;
}

.admin-main:has(> .student-profile-page) > .admin-page-header { display: none; }
.student-profile-page { width: min(100%, 76rem); margin-inline: auto; display: grid; gap: var(--space-4); }
.student-profile-page :is(a, button, summary):focus-visible { outline: 3px solid var(--color-focus); outline-offset: 3px; }
.student-return-link { width: max-content; min-height: 2.75rem; padding-inline: var(--space-2); display: inline-flex; align-items: center; gap: .3rem; color: var(--color-text-muted); font-size: .8rem; font-weight: 750; }
.student-return-link:hover { color: var(--color-accent-700); }
.student-identity { min-width: 0; padding: var(--space-5) var(--space-6); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--space-4); border: 1px solid var(--color-border); border-radius: var(--radius-dashboard); background: var(--color-surface); box-shadow: var(--shadow-sm); }
.student-profile-avatar { width: 3.75rem; height: 3.75rem; display: grid; place-items: center; border-radius: 50%; color: var(--color-brand-950); background: var(--color-accent-100); font-size: 1rem; font-weight: 820; letter-spacing: .04em; }
.student-identity-copy { min-width: 0; }
.student-identity-name { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); }
.student-identity-name h1 { margin: 0; font-size: clamp(1.45rem, 3vw, 2rem); line-height: 1.1; }
.student-identity-badges { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1); }
.student-identity-badges .student-tag { padding: .16rem .45rem; font-size: .68rem; }
.student-identity-meta { margin: var(--space-2) 0 0; display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-3); color: var(--color-text-muted); font-size: .72rem; }
.student-identity-meta span + span::before { content: "·"; margin-right: var(--space-3); }
.student-identity-actions { position: relative; display: flex; align-items: center; gap: var(--space-1); }
.student-edit-button { gap: var(--space-2); }
.student-identity-actions > .icon-button:hover { color: var(--color-accent-700); background: var(--color-surface-subtle); }
.student-tabs { min-width: 0; overflow-x: auto; border-bottom: 1px solid var(--color-border); scrollbar-width: thin; }
.student-tabs [role="tablist"] { width: max-content; min-width: 100%; display: flex; align-items: stretch; gap: var(--space-1); }
.student-tabs [role="tab"] { position: relative; min-height: 2.75rem; padding: 0 var(--space-3); display: inline-flex; align-items: center; justify-content: center; gap: .45rem; border: 0; border-radius: 0; color: var(--color-text-muted); background: transparent; font: inherit; font-size: .82rem; font-weight: 750; line-height: 1.2; cursor: pointer; white-space: nowrap; transition: color 120ms ease, background-color 120ms ease; }
.student-tabs [role="tab"]::after { position: absolute; right: var(--space-3); bottom: -1px; left: var(--space-3); height: 2px; content: ""; background: transparent; transform: scaleX(.3); transition: background-color 120ms ease, transform 120ms ease; }
.student-tabs [role="tab"] .app-icon { flex: 0 0 auto; }
.student-tabs [role="tab"]:hover { color: var(--color-brand-950); background: var(--color-surface-subtle); }
.student-tabs [role="tab"][aria-selected="true"] { color: var(--color-brand-950); }
.student-tabs [role="tab"][aria-selected="true"]::after { background: var(--color-accent-600); transform: scaleX(1); }
.student-tabs [role="tab"]:focus-visible { z-index: 1; outline-offset: -3px; }
.student-tab-panel { min-width: 0; }
.student-profile-page .student-record { margin-bottom: 0; padding: var(--space-5) var(--space-6); border: 1px solid var(--color-border); border-radius: var(--radius-dashboard); background: var(--color-surface); }
.student-practical-section > header { margin-bottom: var(--space-4); }
.student-practical-section h2 { margin: var(--space-1) 0 0; font-size: 1.08rem; }
.student-information-list { margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; border-block: 1px solid var(--color-border); }
.student-information-list > div { min-width: 0; padding: var(--space-4); align-self: start; }
.student-information-list > div + div { border-left: 1px solid var(--color-border); }
.student-information-list dt { display: flex; align-items: center; gap: var(--space-2); color: var(--color-text-muted); font-size: .7rem; font-weight: 750; }
.student-information-list dd { margin: var(--space-2) 0 0 2.25rem; overflow-wrap: anywhere; font-size: .86rem; font-weight: 700; }
.student-information-list a { text-underline-offset: .15em; }
.student-info-icon,.student-section-icon { width: 1.75rem; height: 1.75rem; display: grid; place-items: center; flex: 0 0 auto; border-radius: var(--radius-dashboard-sm); color: var(--color-accent-700); background: var(--color-accent-100); }
.student-private-grid { margin-top: var(--space-4); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.student-profile-page .student-private-section { position: relative; min-width: 0; margin: 0; padding: var(--space-5) var(--space-4) var(--space-4) 3.75rem; align-self: start; border: 0; border-top: 1px solid var(--color-border); border-radius: 0; }
.student-profile-page .student-private-section:nth-child(even) { border-left: 1px solid var(--color-border); }
.student-profile-page .student-private-section h3 { margin: 0 0 var(--space-2); font-size: .9rem; }
.student-profile-page .student-private-section address,.student-profile-page .student-private-section p { margin: 0; color: var(--color-text); font-size: .82rem; line-height: 1.65; }
.student-profile-page .student-private-section > .student-section-icon { position: absolute; top: var(--space-4); left: var(--space-4); }
.student-profile-page .student-private-section.student-relations-section { padding-left: var(--space-6); }
.student-relations-heading { min-width: 0; margin-bottom: var(--space-2); display: flex; align-items: center; gap: var(--space-2); }
.student-profile-page .student-relations-heading h3 { min-width: 0; margin: 0; }
.student-relations-section p { margin-left: calc(1.75rem + var(--space-2)); }
.student-relations-section p + p { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--color-border); }
.student-relations-section p strong,.student-relations-section p span { display: block; }
.student-relations-section p span { color: var(--color-text-muted); }
.student-profile-page .student-notes-section { grid-column: 1 / -1; border-left: 0; background: var(--color-surface-subtle); }
.student-profile-page .student-private-section:has(.student-profile-empty) { padding-block: var(--space-3); }
.student-profile-page .student-private-section:has(.student-profile-empty) > .student-section-icon { top: var(--space-3); }
.student-profile-empty { color: var(--color-text-muted); font-weight: 500; }
.student-profile-page .series-editor[open] { margin-top: var(--space-5); padding-top: var(--space-5); }
.student-profile-page > .student-tab-panel:not(.student-record) { padding: var(--space-5); border: 1px solid var(--color-border); border-radius: var(--radius-dashboard); background: var(--color-surface); }
.student-entitlements-heading { align-items: center; margin-bottom: var(--space-4); }
.student-entitlements-heading > div { min-width: 0; }
.student-entitlements-heading .button { flex: 0 0 auto; }
.student-entitlements-secondary { margin-top: var(--space-3); border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface-subtle); }
.student-entitlements-secondary > summary { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: var(--space-3); color: var(--color-text-muted); cursor: pointer; font-size: .82rem; font-weight: 750; }
.student-entitlements-secondary > summary small { color: var(--color-text-muted); }
.student-entitlements-secondary > div { display: grid; gap: var(--space-2); padding: 0 var(--space-3) var(--space-3); }
.entitlement-grant-dialog { border-color: var(--color-border); box-shadow: var(--shadow-md); }
.entitlement-grant-dialog .course-deletion-heading h2 { color: var(--color-text); }
.entitlement-grant-intro { margin: 0; color: var(--color-text-muted); line-height: 1.6; }
.entitlement-grant-form textarea { min-height: 7rem; resize: vertical; }
.entitlement-grant-actions { margin-top: var(--space-1); padding-top: var(--space-3); border-top: 1px solid var(--color-border); }
@media (max-width: 48rem) {
  .student-profile-page { gap: var(--space-3); }
  .student-identity { padding: var(--space-4); grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: var(--space-3); }
  .student-profile-avatar { width: 3rem; height: 3rem; }
  .student-identity-name { display: grid; gap: var(--space-2); }
  .student-identity-name h1 { font-size: 1.35rem; }
  .student-identity-meta { display: grid; gap: .1rem; }
  .student-identity-meta span + span::before { display: none; }
  .student-identity-actions { grid-column: 1 / -1; justify-content: flex-end; }
  .student-tabs [role="tablist"] { min-width: max-content; }
  .student-tabs [role="tab"] { min-height: 3rem; }
  .student-profile-page .student-record,.student-profile-page > .student-tab-panel:not(.student-record) { padding: var(--space-4); }
  .student-information-list { grid-template-columns: minmax(0, 1fr); }
  .student-information-list > div { padding: var(--space-3) 0; }
  .student-information-list > div + div { border-top: 1px solid var(--color-border); border-left: 0; }
  .student-private-grid { grid-template-columns: minmax(0, 1fr); }
  .student-profile-page .student-private-section,.student-profile-page .student-private-section:nth-child(even) { grid-column: auto; padding: var(--space-4) 0 var(--space-4) 2.75rem; border-left: 0; }
  .student-profile-page .student-private-section > .student-section-icon { top: var(--space-3); left: 0; }
  .student-profile-page .student-private-section.student-relations-section { padding-left: var(--space-2); }
  .student-profile-page .student-private-section:has(.student-profile-empty) { padding-block: var(--space-3); }
  .student-entitlements-heading { align-items: flex-start; flex-direction: column; }
  .student-entitlements-heading .button { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .student-tabs [role="tab"],.student-tabs [role="tab"]::after { transition: none; }
}
.student-active-reservations > .section-heading { align-items: center; margin-bottom: var(--space-3); }
.student-active-reservations > .section-heading > div { min-width: 0; }
.student-active-reservations > .section-heading .button { flex: 0 0 auto; }
.student-active-reservations-list { display: grid; gap: var(--space-2); }
.student-active-reservation { padding: var(--space-3); display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--space-3); border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface); }
.student-active-reservation h3,
.student-active-reservation p { margin: 0; }
.student-active-reservation p { margin-top: var(--space-1); color: var(--color-text-muted); font-size: 0.78rem; }
.student-active-main { min-width: 0; }
.student-active-meta { display: grid; justify-items: end; gap: var(--space-2); }
.student-active-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--space-2); }
.student-active-actions :is(a, button) { min-height: 2rem; padding: .28rem .5rem; font-size: .74rem; }
.student-reservation-actions { flex-wrap: nowrap; }
.student-active-actions .student-reservation-session-link {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding-inline: .15rem;
  color: var(--color-accent-700);
  background: transparent;
  font-weight: 700;
}
.student-reservation-session-link:hover { text-decoration: underline; text-underline-offset: .2em; }
.student-reservation-session-link:focus-visible,
.student-active-actions .student-reservation-menu-trigger:focus-visible,
.student-active-actions .student-reservation-menu-item:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 2px;
}
.student-reservation-menu-wrap { position: relative; }
.student-active-actions .student-reservation-menu-trigger {
  width: 2rem;
  padding: 0;
  display: grid;
  place-items: center;
  border: 1px solid transparent;
  color: var(--color-text-muted);
  background: transparent;
}
.student-active-actions .student-reservation-menu-trigger:hover,
.student-active-actions .student-reservation-menu-trigger[aria-expanded="true"] {
  border-color: var(--color-border);
  color: var(--color-text);
  background: var(--color-surface-subtle);
}
.student-reservation-menu {
  position: absolute;
  z-index: 10;
  top: calc(100% + var(--space-1));
  right: 0;
  width: max-content;
  min-width: 10rem;
  padding: .35rem;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  box-shadow: var(--shadow-md);
}
.student-reservation-menu[hidden] { display: none; }
.student-active-actions .student-reservation-menu-item {
  width: 100%;
  min-height: 2.25rem;
  padding: .4rem .55rem;
  display: flex;
  align-items: center;
  border: 0;
  color: var(--color-text);
  background: transparent;
  font-size: .74rem;
  font-weight: 700;
  text-align: left;
}
.student-active-actions .student-reservation-menu-item:hover { background: var(--color-surface-subtle); }
.student-reservation-menu-separator {
  height: 1px;
  margin: .25rem 0;
  background: var(--color-border);
}
.student-active-actions .student-reservation-menu-item-danger { color: var(--color-danger); }
.student-active-actions .student-reservation-menu-item-danger:hover {
  background: color-mix(in srgb, var(--color-danger) 8%, var(--color-surface));
}
.entitlement-status-suspended,
.entitlement-status-expired { color: var(--reservation-action-inactive); background: var(--color-surface-subtle); }
.entitlement-status-revoked { color: #7d2820; background: var(--color-danger-bg); }
.student-active-reservation.is-revoked { border-style: dashed; border-color: #edbbb5; background: var(--color-surface-subtle); }
.student-active-reservation.is-revoked :is(h3, p) { color: var(--color-text-muted); }
.student-history { padding: 0; }
.student-history-summary { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: var(--space-4); cursor: pointer; list-style: none; }
.student-history-summary::-webkit-details-marker { display: none; }
.student-history-summary > span { display: grid; gap: .12rem; }
.student-history-summary .eyebrow { margin: 0; }
.student-history-summary strong { font-size: 1.05rem; }
.student-history-summary small { color: var(--color-text-muted); }
.student-history-summary svg { transition: transform 160ms ease; }
.student-history[open] .student-history-summary svg { transform: rotate(180deg); }
.student-history-summary:focus-visible { outline: 3px solid var(--color-focus); outline-offset: -3px; border-radius: var(--radius-lg); }
.student-history-content { padding: 0 var(--space-4) var(--space-4); }
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

@media (max-width: 70rem) {
  .calendar-toolbar {
    grid-template-columns: 1fr auto;
  }

  .calendar-date-form {
    grid-column: 1;
  }

  .view-switcher {
    grid-column: 2;
    grid-row: 1;
  }

  .calendar-filters {
    grid-template-columns: repeat(2, minmax(8rem, 1fr));
  }

  .series-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .series-form-block {
    grid-column: 1 / -1;
  }

  .series-batch-form > :is(label, .field-with-help),
  .series-batch-form > .series-dates {
    grid-column: span 1;
  }

  .series-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .series-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .series-summary div:nth-child(3) {
    border-left: 0;
  }

  .series-summary div:nth-child(n + 3) {
    border-top: 1px solid var(--color-border);
  }
}

@media (max-width: 52rem) {
  .admin-sidebar {
    display: none;
  }

  .series-creation-panel {
    width: 100dvw;
    max-width: none;
    max-height: 100dvh;
    min-height: 100dvh;
    border: 0;
    border-radius: 0;
  }

  .appearance-layout,
  .appearance-colors {
    grid-template-columns: 1fr;
  }

  .settings-field-grid,
  .closure-layout,
  .closure-form { grid-template-columns: 1fr; }
  .settings-return-full { display: none; }
  .settings-return-short { display: inline; }
  .settings-return > span { display: none; }
  .structure-settings-planning dl div { grid-template-columns: 1fr; gap: var(--space-1); }

  .appearance-preview { position: static; }

  .admin-main,
  .admin-main:not(.admin-main-wide) {
    width: 100%;
    max-width: none;
    min-height: auto;
    margin: 0;
    padding: var(--space-6) var(--space-4) var(--space-10);
  }

  .admin-page-header {
    min-height: 0;
    margin-bottom: var(--space-6);
    padding-bottom: var(--space-5);
    align-items: flex-start;
  }

  .reference-form {
    grid-template-columns: 1fr;
  }

  .taxonomy-section-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .taxonomy-section-actions {
    width: 100%;
    justify-content: space-between;
    flex-wrap: wrap;
  }

  .taxonomy-create[open] {
    width: 100%;
  }

  .taxonomy-create > .taxonomy-form {
    position: static;
    width: 100%;
    margin-top: var(--space-2);
    box-shadow: none;
  }

  .taxonomy-form,
  .category-grid {
    grid-template-columns: 1fr;
  }

  .palette-preview {
    grid-template-columns: repeat(var(--palette-count, 1), minmax(0, 1fr));
  }

  .palette-swatch {
    min-height: 2.25rem;
  }

  .taxonomy-card > summary > .status {
    grid-column: 2;
    justify-self: start;
  }

  .taxonomy-card > summary > .category-palette-preview {
    grid-column: 3;
  }

  .taxonomy-card > summary > .app-icon {
    grid-column: 4;
    grid-row: 1 / span 2;
  }

  .taxonomy-card-body {
    padding: var(--space-3);
  }

  .taxonomy-calendar-sample {
    max-width: none;
  }

  .level-progression > span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .section-nav {
    top: 4.5rem;
  }

  .calendar-toolbar {
    position: static;
    padding: var(--space-3);
    grid-template-columns: 1fr;
    gap: var(--space-3);
  }

  .calendar-navigation {
    display: grid;
    grid-template-columns: auto 1fr auto;
  }

  .calendar-navigation .button {
    justify-self: stretch;
  }

  .calendar-period {
    grid-column: 1 / -1;
    grid-row: 1;
    min-width: 0;
    margin: 0 0 var(--space-1);
    text-align: center;
  }

  .calendar-date-form {
    grid-column: auto;
    grid-row: auto;
    display: grid;
    grid-template-columns: 1fr auto;
  }

  .calendar-date-form label {
    width: auto;
  }

  .view-switcher {
    grid-column: auto;
    grid-row: auto;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
  }

  .view-switcher a {
    justify-content: center;
  }

  .calendar-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .calendar-filter-more-menu {
    left: 0;
    right: auto;
    width: min(22rem, calc(100vw - 2rem));
    grid-template-columns: 1fr;
  }

  .calendar-filter-chips { margin-top: calc(var(--space-4) * -0.5); }

  .calendar-loading {
    inset: 50% auto auto 50%;
  }

  .calendar-week-view {
    display: none;
  }

  .calendar-day-view {
    display: block;
  }

  .calendar-app[data-effective-view="week"] .calendar-day-view {
    display: none;
  }

  .calendar-app[data-effective-view="week"] .calendar-mobile-week {
    display: block;
  }

  .calendar-app[data-effective-view="day"] .calendar-mobile-week {
    display: none;
  }

}

@media (max-width: 40rem) {
  .app-header,
  .session {
    align-items: flex-start;
    flex-direction: column;
  }

  .admin-page-header {
    flex-direction: column;
  }

  .page-actions,
  .page-actions .button {
    width: 100%;
  }

  .panel {
    padding: var(--space-4);
  }

  .calendar-filters {
    grid-template-columns: 1fr;
  }

  .agenda-day-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .agenda-event {
    grid-template-columns: 3.5rem minmax(0, 1fr) auto;
    gap: var(--space-2);
  }

  .agenda-capacity {
    display: none;
  }

  .calendar-status {
    font-size: 0.62rem;
  }

  .student-active-reservation { align-items: stretch; flex-direction: column; }
  .student-active-reservation > div:last-child { justify-items: start; }

  .series-form,
  .series-summary {
    grid-template-columns: 1fr;
  }

  .series-batch-form > :is(label, .field-with-help),
  .series-batch-form > .series-dates {
    grid-column: auto;
  }

  .series-dates {
    grid-template-columns: 1fr;
  }

  .series-batch-submit { grid-template-columns: 1fr; }
  .series-batch-submit .series-form-actions,
  .series-batch-submit .series-form-actions .button { width: 100%; }

  .series-filters,
  .planning-slot {
    grid-template-columns: 1fr;
  }

  .student-row,
  .student-history-row {
    align-items: flex-start;
  }

  .student-toolbar {
    top: calc(4rem + var(--space-2));
    padding: var(--space-2);
    gap: var(--space-2);
  }

  .student-toolbar-primary {
    gap: var(--space-2);
  }

  .student-result-count {
    min-width: 3rem;
    text-align: right;
  }

  .student-result-count strong {
    display: block;
    font-size: 1rem;
  }

  .student-filter-disclosure > summary {
    width: 100%;
    display: flex;
    justify-content: center;
    gap: var(--space-2);
  }

  .student-filter-disclosure:not([open]) > .student-filter-panel {
    display: none;
  }

  .student-filter-panel {
    grid-template-columns: minmax(0, 1fr);
    margin-top: var(--space-2);
    padding-top: var(--space-3);
    border-top: 1px solid var(--color-border);
  }

  .student-filter-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
  }

  .student-filter-actions .button {
    width: 100%;
  }

  .student-filter-active {
    max-height: 5rem;
    overflow-y: auto;
  }

  .student-filter-active > span:first-child {
    width: 100%;
  }

  .student-filter-active .student-filter-reset {
    margin-left: 0;
  }

  .student-list-header {
    display: none;
  }

  .student-row {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "identity status"
      "tags reservations"
      "contact actions";
    gap: var(--space-2) var(--space-3);
    min-height: 0;
    padding: var(--space-3);
  }

  .student-cell-identity { grid-area: identity; }
  .student-cell-contact {
    grid-area: contact;
    display: grid;
    gap: var(--space-1);
    min-width: 0;
  }
  .student-cell-email,
  .student-cell-phone {
    min-height: 0;
  }
  .student-cell-phone:empty { display: none; }
  .student-row .student-tags { grid-area: tags; }
  .student-cell-status { grid-area: status; }
  .student-row-actions { grid-area: actions; align-self: center; opacity: 1; }
  .student-cell-reservations { grid-area: reservations; justify-self: end; }
  .student-cell-identity {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .student-identity-name-line {
    flex-wrap: wrap;
    gap: .15rem .4rem;
  }

  .student-row .student-tag {
    max-width: 8.5rem;
  }

  .student-row .student-tags {
    min-width: 0;
  }

  .student-empty {
    min-height: 15rem;
    padding: var(--space-6);
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
  }

  .student-empty .button {
    grid-column: 1 / -1;
    width: 100%;
  }

  .student-optional-grid,
  .student-tag-form {
    grid-template-columns: minmax(0, 1fr);
  }

  .student-creation-dialog .student-creation-form {
    padding-inline: var(--space-4);
  }

  .student-creation-footer {
    margin-inline: calc(var(--space-4) * -1);
    padding-inline: var(--space-4);
  }

  .student-creation-footer .button { flex: 1; }

  .student-tag-admin-row > header {
    align-items: flex-start;
  }

  .student-tag-admin-main {
    flex-wrap: wrap;
    gap: var(--space-2);
  }

  .student-tag-admin-main > strong {
    min-width: calc(100% - 2rem);
  }

  .student-tag-actions[open] {
    right: 0;
    max-width: calc(100vw - 2rem);
  }

  .student-history-row {
    flex-direction: column;
  }

  .student-history-row > :last-child {
    justify-items: start;
    text-align: left;
  }

  .student-active-reservations > .section-heading { align-items: flex-start; flex-direction: column; gap: var(--space-2); }
  .student-active-reservations > .section-heading .button { width: 100%; }

  .student-active-reservation { grid-template-columns: minmax(0, 1fr); gap: var(--space-2); }
  .student-active-meta { justify-items: start; }
  .student-active-actions { justify-content: flex-start; }

  .student-history-summary,
  .student-history-content { padding-inline: var(--space-3); }

  .planning-view-tabs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .planning-view-tabs a {
    justify-content: space-between;
    padding-inline: var(--space-3);
  }

  .planning-bulk-actions,
  .course-deletion-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .planning-bulk-actions .button,
  .course-deletion-actions .button {
    width: 100%;
  }

  .course-deletion-impact dl {
    grid-template-columns: 1fr;
  }

  .course-deletion-actions .button-danger {
    margin-left: 0;
  }

  .planning-slot-actions,
  .planning-slot-actions .button {
    width: 100%;
  }

  .planning-slot-actions > div {
    grid-template-columns: 1fr;
  }

  .series-summary div + div,
  .series-summary div:nth-child(3) {
    border-left: 0;
    border-top: 1px solid var(--color-border);
  }

  .reference-item summary,
  .series-card-header,
  .exclude-form,
  .lifecycle-form {
    align-items: stretch;
    flex-direction: column;
  }

  .series-card {
    padding: var(--space-4);
  }

  .series-card-actions,
  .series-card-actions > *,
  .series-card-actions .button {
    width: 100%;
  }

  .exclude-form input,
  .lifecycle-form input {
    min-width: 0;
  }
}

.unsubscribe-page {
  max-width: 42rem;
  padding-top: 10vh;
}

/* Calendar premium UI — scoped tokens keep brand styling configurable. */
@media (min-width: 52.0625rem) {
  .admin-main:has(> .calendar-app) {
    width: calc(100% - var(--sidebar-width));
    max-width: none;
    padding-inline: 2rem;
  }
}

.calendar-app {
  --calendar-primary: var(--color-accent-700);
  --calendar-primary-strong: var(--color-brand-900);
  --calendar-primary-soft: var(--color-accent-100);
  --calendar-canvas: var(--color-canvas);
  --calendar-surface: var(--color-surface);
  --calendar-surface-muted: var(--color-surface-subtle);
  --calendar-text: var(--color-text);
  --calendar-text-muted: var(--color-text-muted);
  --calendar-line: var(--color-border);
  --calendar-line-strong: var(--color-border-strong);
  --calendar-focus: var(--color-focus);
  --calendar-success: var(--color-success);
  --calendar-success-bg: var(--color-success-bg);
  --calendar-warning: var(--color-warning);
  --calendar-warning-bg: var(--color-warning-bg);
  --calendar-danger: var(--color-danger);
  --calendar-danger-bg: var(--color-danger-bg);
  --calendar-radius-surface: var(--radius-dashboard);
  --calendar-radius-control: var(--radius-dashboard-sm);
  --calendar-shadow-float: 0 16px 40px rgb(0 0 0 / 12%);
  --calendar-shadow-hover: 0 5px 14px rgb(0 0 0 / 10%);
}

.calendar-toolbar {
  top: var(--space-2);
  grid-template-columns: auto minmax(11rem, 1fr) auto auto auto auto;
  gap: var(--space-2);
  border-color: var(--calendar-line);
  border-radius: var(--calendar-radius-surface);
  background: var(--calendar-surface);
  box-shadow: 0 4px 18px rgb(0 0 0 / 7%);
}

@supports ((-webkit-backdrop-filter: blur(14px)) or (backdrop-filter: blur(14px))) {
  .calendar-toolbar.glass-surface,
  .calendar-filter-more-menu {
    background: color-mix(in srgb, var(--calendar-surface) 91%, transparent);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
  }
}

.calendar-navigation {
  gap: var(--space-1);
}

.toolbar-icon,
.calendar-today,
.calendar-date-submit,
.calendar-filter-trigger {
  min-height: 2.65rem;
  border: 1px solid var(--calendar-line);
  border-radius: var(--calendar-radius-control);
  color: var(--calendar-primary-strong);
  background: var(--calendar-surface);
  font-size: 0.76rem;
  font-weight: 760;
  text-decoration: none;
  transition: border-color 140ms ease, background-color 140ms ease, color 140ms ease;
}

.toolbar-icon {
  width: 2.65rem;
  height: 2.65rem;
}

.calendar-today,
.calendar-date-submit,
.calendar-filter-trigger {
  padding-inline: var(--space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
}

.calendar-date-submit {
  cursor: pointer;
}

.toolbar-icon:hover,
.calendar-today:hover,
.calendar-date-submit:hover,
.calendar-filter-trigger:hover,
.calendar-filter-trigger[aria-expanded="true"] {
  border-color: var(--calendar-primary);
  color: var(--calendar-primary);
  background: var(--calendar-primary-soft);
}

.calendar-period {
  min-width: 0;
  margin: 0 var(--space-2);
}

.calendar-period strong {
  color: var(--calendar-text);
  font-size: clamp(0.82rem, 1.3vw, 0.94rem);
  font-weight: 780;
  text-align: center;
}

.calendar-date-control {
  width: 9.8rem;
}

.calendar-date-control input {
  min-height: 2.65rem;
  border-color: var(--calendar-line);
  border-radius: var(--calendar-radius-control);
  background: var(--calendar-surface);
}

.view-switcher {
  gap: 0;
  border-color: var(--calendar-line);
  border-radius: var(--calendar-radius-control);
  background: var(--calendar-surface-muted);
}

.view-switcher a {
  min-height: 2.25rem;
  border-radius: var(--calendar-radius-control);
}

.view-switcher a.active,
.calendar-app[data-effective-view="day"] [data-calendar-view="day"],
.calendar-app[data-effective-view="week"] [data-calendar-view="week"] {
  color: var(--color-navigation-text);
  background: var(--calendar-primary-strong);
}

.calendar-week-view {
  border-color: var(--calendar-line);
  border-radius: var(--calendar-radius-surface);
  background: var(--calendar-surface);
  box-shadow: var(--shadow-sm);
}

.calendar-week-header {
  background: var(--calendar-surface);
}

.calendar-week-header span {
  min-height: 3.25rem;
  border-left-color: var(--calendar-line);
  color: var(--calendar-text-muted);
  letter-spacing: 0.01em;
}

.calendar-week-header span.today {
  color: var(--calendar-primary);
  background: color-mix(in srgb, var(--calendar-primary-soft) 52%, var(--calendar-surface));
  box-shadow: inset 0 2px var(--calendar-primary);
}

.calendar-week-header span.selected {
  box-shadow: inset 0 -2px var(--calendar-primary);
}

.calendar-week-header span.today.selected {
  box-shadow: inset 0 2px var(--calendar-primary), inset 0 -2px var(--calendar-primary);
}

.calendar-week-header span.weekend,
.calendar-day-column.weekend {
  background-color: var(--calendar-surface-muted);
}

.calendar-time-rail {
  position: sticky;
  z-index: 3;
  left: 0;
  border-right: 1px solid var(--calendar-line);
  background: var(--calendar-surface);
}

.calendar-time-rail span {
  color: var(--calendar-text-muted);
  font-size: 0.64rem;
  font-weight: 650;
}

.calendar-day-column {
  border-left: 0;
  background:
    repeating-linear-gradient(
      to bottom,
      transparent 0,
      transparent calc(3rem - 1px),
      color-mix(in srgb, var(--calendar-line) 68%, transparent) calc(3rem - 1px),
      color-mix(in srgb, var(--calendar-line) 68%, transparent) 3rem
    );
}

.calendar-day-column + .calendar-day-column {
  border-left: 1px solid color-mix(in srgb, var(--calendar-line) 72%, transparent);
}

.calendar-day-column.today {
  background-color: color-mix(in srgb, var(--calendar-primary-soft) 30%, var(--calendar-surface));
  box-shadow: inset 1px 0 color-mix(in srgb, var(--calendar-primary) 35%, transparent);
}

.calendar-now-line {
  z-index: 5;
  height: 1px;
  background: var(--calendar-primary);
}

.calendar-now-line::before {
  width: 7px;
  height: 7px;
  background: var(--calendar-primary);
}

.calendar-event {
  position: relative;
  grid-column: 1;
  padding: 0.3rem 0.4rem;
  border: 0;
  border-left: 3px solid var(--event-color);
  border-radius: var(--calendar-radius-control);
  color: var(--calendar-text);
  background: color-mix(in srgb, var(--event-bg) 48%, var(--calendar-surface));
  box-shadow: 0 1px 2px rgb(0 0 0 / 7%);
  transition: transform 140ms ease, box-shadow 140ms ease, background-color 140ms ease;
}

.calendar-event:hover {
  filter: none;
  background: color-mix(in srgb, var(--event-bg) 62%, var(--calendar-surface));
  box-shadow: var(--calendar-shadow-hover);
  transform: translateY(-1px);
}

.calendar-event:focus-visible {
  z-index: 6;
  outline-color: var(--calendar-focus);
  box-shadow: var(--calendar-shadow-hover);
}

.calendar-event .event-time-range {
  color: var(--calendar-text-muted);
  font-size: 0.59rem;
  font-weight: 700;
}

.calendar-event .event-activity {
  color: var(--calendar-text);
  font-size: 0.7rem;
  font-weight: 750;
}

.calendar-event .event-level {
  color: var(--calendar-text-muted);
  font-size: 0.6rem;
  font-weight: 450;
}

.calendar-event.expanded .event-meta {
  color: var(--calendar-text-muted);
  font-weight: 450;
}

.calendar-event .event-capacity {
  display: none;
}

.calendar-event .event-priority-status {
  display: none;
}

.calendar-event.expanded .event-capacity {
  width: max-content;
  max-width: 100%;
  margin-top: 0.18rem;
  padding: 0.08rem 0.35rem;
  overflow: hidden;
  display: block;
  border-radius:var(--radius-pill);
  font-size: 0.56rem;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.calendar-event.compact .event-capacity:not(.status-available) {
  position: absolute;
  right: 0.25rem;
  bottom: 0.16rem;
  max-width: calc(100% - 0.5rem);
  padding: 0.04rem 0.28rem;
  display: block;
  border-radius:var(--radius-pill);
  font-size: 0.52rem;
  font-weight: 800;
}

.calendar-event.has-priority-status.expanded .event-capacity,
.calendar-event.has-priority-status.compact .event-capacity:not(.status-available) {
  display: none;
}

.event-available,
.event-almost-full,
.event-full {
  border-left-color: var(--event-color);
  background: color-mix(in srgb, var(--event-bg) 48%, var(--calendar-surface));
  box-shadow: 0 1px 2px rgb(0 0 0 / 7%);
}

.event-almost-full,
.event-full {
  box-shadow: 0 1px 2px rgb(0 0 0 / 7%);
}

.event-cancelled {
  border-left-color: var(--calendar-text-muted);
  color: var(--calendar-text-muted);
  background: var(--calendar-surface-muted);
  text-decoration: none;
}

.event-cancelled .event-activity {
  text-decoration: line-through;
}

.status-available {
  color: var(--calendar-success);
  background: var(--calendar-success-bg);
}

.status-almost-full {
  color: var(--calendar-warning);
  background: var(--calendar-warning-bg);
}

.status-full {
  color: var(--calendar-danger);
  background: var(--calendar-danger-bg);
}

.status-cancelled {
  color: var(--calendar-text-muted);
  background: var(--calendar-surface-muted);
}

.agenda-event {
  border: 0;
  border-left: 3px solid var(--event-color);
  border-radius: var(--calendar-radius-control);
  color: var(--calendar-text);
  background: color-mix(in srgb, var(--event-bg) 42%, var(--calendar-surface));
  box-shadow: 0 1px 2px rgb(0 0 0 / 7%);
  transition: transform 140ms ease, box-shadow 140ms ease, background-color 140ms ease;
}

.agenda-event:hover,
.agenda-event:focus-visible {
  background: color-mix(in srgb, var(--event-bg) 58%, var(--calendar-surface));
  box-shadow: var(--calendar-shadow-hover);
  transform: translateY(-1px);
}

.agenda-event > time {
  color: var(--calendar-text);
}

.calendar-event-popover {
  border-color: var(--calendar-line);
  border-radius: var(--calendar-radius-control);
  color: var(--calendar-text);
  background: var(--calendar-surface);
  box-shadow: var(--calendar-shadow-float);
}

@media (max-width: 70rem) {
  .calendar-toolbar {
    grid-template-columns: auto minmax(10rem, 1fr) auto auto;
  }

  .calendar-date-control {
    grid-column: 1 / 3;
    grid-row: 2;
    width: auto;
  }

  .calendar-date-submit {
    grid-column: 3;
    grid-row: 2;
  }

  .view-switcher {
    grid-column: 3;
    grid-row: 1;
  }

  .calendar-filter-more {
    grid-column: 4;
    grid-row: 1 / 3;
    align-self: center;
  }
}

@media (max-width: 52rem) {
  .calendar-toolbar {
    position: static;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--space-2);
  }

  .calendar-toolbar.glass-surface {
    background: var(--calendar-surface);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  .calendar-period {
    grid-column: 1 / -1;
    grid-row: 1;
    margin: 0 0 var(--space-1);
  }

  .calendar-navigation {
    grid-column: 1;
    grid-row: 2;
    display: flex;
  }

  .calendar-today {
    flex: 1 1 auto;
  }

  .calendar-filter-more {
    position: static;
    grid-column: 2;
    grid-row: 2;
  }

  .calendar-date-control {
    grid-column: 1;
    grid-row: 3;
  }

  .calendar-date-submit {
    grid-column: 2;
    grid-row: 3;
  }

  .view-switcher {
    grid-column: 1 / -1;
    grid-row: 4;
  }

  .calendar-filter-more-menu {
    position: fixed;
    z-index: 80;
    inset: auto 0 0;
    width: 100%;
    max-height: min(82dvh, 42rem);
    border-width: 1px 0 0;
    border-radius: var(--calendar-radius-surface) var(--calendar-radius-surface) 0 0;
    background: var(--calendar-surface);
    box-shadow: 0 -18px 48px rgb(0 0 0 / 18%);
  }

  .calendar-filter-fields {
    grid-template-columns: minmax(0, 1fr);
  }

  .calendar-filter-actions {
    position: sticky;
    bottom: 0;
    padding-bottom: calc(var(--space-3) + env(safe-area-inset-bottom));
  }

  .calendar-filter-chips {
    margin-top: var(--space-3);
  }
}

@media (max-width: 40rem) {
  .calendar-toolbar {
    padding: var(--space-2);
  }

  .calendar-filter-trigger {
    min-width: 2.65rem;
    padding-inline: var(--space-2);
  }

  .calendar-filter-trigger > span:not(.badge) {
    display: none;
  }

  .agenda-event {
    min-height: 4.75rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .calendar-toolbar *,
  .calendar-event,
  .agenda-event,
  .student-row,
  .student-row-actions,
  .student-toolbar * {
    transition: none;
  }

  .calendar-event:hover,
  .agenda-event:hover {
    transform: none;
  }
}

/* Shared period toolbar controls: Calendar. */
.admin-period-toolbar {
  --admin-period-control-height: 2.75rem;
  --admin-period-control-radius:var(--radius-lg);
  --admin-period-control-padding: var(--space-3);
  --admin-period-control-border: var(--color-border-strong);
  --admin-period-control-bg: var(--color-surface);
  --admin-period-control-hover: var(--color-surface-subtle);
  --admin-period-control-active: var(--color-brand-900);
  --admin-period-control-active-text: var(--color-navigation-text);
}

.admin-period-toolbar .admin-period-control {
  height: var(--admin-period-control-height);
  min-height: var(--admin-period-control-height);
  padding-inline: var(--admin-period-control-padding);
  border: 1px solid var(--admin-period-control-border);
  border-radius: var(--admin-period-control-radius);
  color: var(--color-text);
  background: var(--admin-period-control-bg);
  line-height: 1;
  text-decoration: none;
}

.admin-body .admin-period-toolbar input.admin-period-control:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]) {
  height: var(--admin-period-control-height);
  min-height: var(--admin-period-control-height);
  padding-inline: var(--admin-period-control-padding);
  border: 1px solid var(--admin-period-control-border);
  border-radius: var(--admin-period-control-radius);
  background: var(--admin-period-control-bg);
  line-height: 1;
}

.admin-period-toolbar .admin-period-control-icon {
  width: var(--admin-period-control-height);
  min-width: var(--admin-period-control-height);
  padding-inline: 0;
}

.admin-period-toolbar .admin-period-control:hover {
  border-color: var(--color-focus);
  color: var(--color-accent-700);
  background: var(--admin-period-control-hover);
}

.admin-period-toolbar .admin-period-control:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 2px;
}

.admin-segmented-control {
  height: var(--admin-period-control-height);
  min-height: var(--admin-period-control-height);
  display: inline-grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  align-items: stretch;
  gap: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--admin-period-control-border);
  border-radius: var(--admin-period-control-radius);
  background: var(--admin-period-control-bg);
}

.admin-segmented-control > .admin-segment {
  height: 100%;
  min-height: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding-inline: var(--admin-period-control-padding);
  border: 0;
  border-radius: 0;
  color: var(--color-text-muted);
  background: transparent;
  box-shadow: none;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
}

.admin-segmented-control > .admin-segment + .admin-segment {
  box-shadow: inset 1px 0 var(--color-border);
}

.admin-segmented-control > .admin-segment:not(.active):hover {
  color: var(--color-text);
  background: var(--admin-period-control-hover);
}

.admin-segmented-control > .admin-segment.active,
.calendar-app[data-effective-view="day"] .admin-segmented-control > [data-calendar-view="day"],
.calendar-app[data-effective-view="week"] .admin-segmented-control > [data-calendar-view="week"] {
  color: var(--admin-period-control-active-text);
  background: var(--admin-period-control-active);
  box-shadow: none;
}

.admin-segmented-control > .admin-segment:focus-visible {
  position: relative;
  z-index: 1;
  outline: 3px solid var(--color-focus);
  outline-offset: -3px;
}

@media (max-width: 40rem) {
  .admin-segmented-control {
    width: 100%;
  }

  .admin-segmented-control > .admin-segment {
    padding-inline: var(--space-2);
  }

}

.settings-actions { display: flex; align-items: center; gap: var(--space-3); }

@media (max-width: 40rem) {
  [data-invoice-settings] { grid-template-columns: 1fr; }
  .coach-payment-settings-grid, .coach-payment-overrides { grid-template-columns: 1fr; }
  .coach-payment-overrides header { grid-column: 1; }
}
