/* Stable visual grouping: the same institution + subject keeps the same tone. */
.course-tone-1 { --course-series-bg: hsl(210 65% 96%); --course-series-accent: hsl(210 55% 40%); --course-series-border: hsl(210 55% 78%); }
.course-tone-2 { --course-series-bg: hsl(145 65% 96%); --course-series-accent: hsl(145 55% 36%); --course-series-border: hsl(145 55% 78%); }
.course-tone-3 { --course-series-bg: hsl(42 70% 96%); --course-series-accent: hsl(42 65% 36%); --course-series-border: hsl(42 60% 76%); }
.course-tone-4 { --course-series-bg: hsl(285 65% 96%); --course-series-accent: hsl(285 50% 42%); --course-series-border: hsl(285 50% 80%); }
.course-tone-5 { --course-series-bg: hsl(175 65% 96%); --course-series-accent: hsl(175 55% 34%); --course-series-border: hsl(175 50% 76%); }
.course-tone-6 { --course-series-bg: hsl(25 70% 96%); --course-series-accent: hsl(25 65% 42%); --course-series-border: hsl(25 60% 78%); }
.course-tone-7 { --course-series-bg: hsl(250 65% 97%); --course-series-accent: hsl(250 52% 48%); --course-series-border: hsl(250 50% 82%); }
.course-tone-8 { --course-series-bg: hsl(95 60% 96%); --course-series-accent: hsl(95 48% 35%); --course-series-border: hsl(95 45% 76%); }
.course-tone-9 { --course-series-bg: hsl(325 65% 97%); --course-series-accent: hsl(325 50% 43%); --course-series-border: hsl(325 50% 82%); }
.course-tone-10 { --course-series-bg: hsl(190 65% 96%); --course-series-accent: hsl(190 58% 36%); --course-series-border: hsl(190 52% 77%); }
.course-tone-11 { --course-series-bg: hsl(55 70% 96%); --course-series-accent: hsl(55 62% 32%); --course-series-border: hsl(55 56% 75%); }
.course-tone-12 { --course-series-bg: hsl(265 65% 97%); --course-series-accent: hsl(265 52% 47%); --course-series-border: hsl(265 50% 82%); }
.course-tone-13 { --course-series-bg: hsl(125 60% 96%); --course-series-accent: hsl(125 46% 36%); --course-series-border: hsl(125 45% 77%); }
.course-tone-14 { --course-series-bg: hsl(15 70% 97%); --course-series-accent: hsl(15 62% 43%); --course-series-border: hsl(15 58% 80%); }
.course-tone-15 { --course-series-bg: hsl(225 65% 97%); --course-series-accent: hsl(225 55% 45%); --course-series-border: hsl(225 52% 81%); }
.course-tone-16 { --course-series-bg: hsl(75 62% 96%); --course-series-accent: hsl(75 52% 33%); --course-series-border: hsl(75 48% 75%); }
.course-tone-17 { --course-series-bg: hsl(300 60% 97%); --course-series-accent: hsl(300 45% 41%); --course-series-border: hsl(300 45% 81%); }
.course-tone-18 { --course-series-bg: hsl(160 62% 96%); --course-series-accent: hsl(160 52% 34%); --course-series-border: hsl(160 48% 76%); }
.course-tone-19 { --course-series-bg: hsl(35 70% 96%); --course-series-accent: hsl(35 62% 37%); --course-series-border: hsl(35 58% 76%); }
.course-tone-20 { --course-series-bg: hsl(240 65% 97%); --course-series-accent: hsl(240 52% 48%); --course-series-border: hsl(240 50% 82%); }
.course-tone-21 { --course-series-bg: hsl(105 60% 96%); --course-series-accent: hsl(105 48% 35%); --course-series-border: hsl(105 44% 76%); }
.course-tone-22 { --course-series-bg: hsl(315 62% 97%); --course-series-accent: hsl(315 48% 42%); --course-series-border: hsl(315 48% 81%); }
.course-tone-23 { --course-series-bg: hsl(185 65% 96%); --course-series-accent: hsl(185 55% 35%); --course-series-border: hsl(185 50% 76%); }
.course-tone-24 { --course-series-bg: hsl(50 70% 96%); --course-series-accent: hsl(50 62% 33%); --course-series-border: hsl(50 56% 75%); }
.course-tone-25 { --course-series-bg: hsl(275 65% 97%); --course-series-accent: hsl(275 50% 44%); --course-series-border: hsl(275 48% 81%); }
.course-tone-26 { --course-series-bg: hsl(135 62% 96%); --course-series-accent: hsl(135 48% 35%); --course-series-border: hsl(135 46% 77%); }
.course-tone-27 { --course-series-bg: hsl(20 70% 97%); --course-series-accent: hsl(20 62% 43%); --course-series-border: hsl(20 58% 80%); }
.course-tone-28 { --course-series-bg: hsl(205 65% 96%); --course-series-accent: hsl(205 55% 40%); --course-series-border: hsl(205 52% 78%); }
.course-tone-29 { --course-series-bg: hsl(85 62% 96%); --course-series-accent: hsl(85 50% 34%); --course-series-border: hsl(85 46% 75%); }
.course-tone-30 { --course-series-bg: hsl(290 62% 97%); --course-series-accent: hsl(290 48% 42%); --course-series-border: hsl(290 46% 81%); }
.course-tone-31 { --course-series-bg: hsl(155 62% 96%); --course-series-accent: hsl(155 50% 34%); --course-series-border: hsl(155 46% 76%); }
.course-tone-32 { --course-series-bg: hsl(65 65% 96%); --course-series-accent: hsl(65 55% 32%); --course-series-border: hsl(65 50% 74%); }

:is(
  .calendar-course,
  .week-course,
  .timeline-item,
  .course-card,
  .institution-course,
  .subject-course,
  .teacher-course,
  .status-course,
  .action-row,
  .ledger-row
)[class*="course-tone-"] {
  background: var(--course-series-bg);
  box-shadow: inset 4px 0 0 var(--course-series-accent), var(--soft-shadow);
}

.calendar-course[class*="course-tone-"],
.week-course[class*="course-tone-"] {
  border-color: var(--course-series-border);
}

/* Institution identity stays visible while course tones identify individual subjects. */
.institution-damei {
  --institution-accent: #15803d;
  --institution-line-style: solid;
}

.institution-xinhangdao {
  --institution-accent: #1d4ed8;
  --institution-line-style: double;
}

.institution-lumi {
  --institution-accent: #b45309;
  --institution-line-style: dashed;
}

:is(
  .calendar-course,
  .week-course,
  .timeline-item,
  .course-card,
  .institution-course,
  .subject-course,
  .teacher-course,
  .status-course,
  .action-row,
  .ledger-row
)[class*="institution-"]:not(.institution-other) {
  border-top: 3px var(--institution-line-style) var(--institution-accent);
}

.institution-xinhangdao:is(
  .calendar-course,
  .week-course,
  .timeline-item,
  .course-card,
  .institution-course,
  .subject-course,
  .teacher-course,
  .status-course,
  .action-row,
  .ledger-row
) {
  border-top-width: 4px;
}

.calendar-course[class*="institution-"]:not(.institution-other),
.week-course[class*="institution-"]:not(.institution-other) {
  border-top-width: 3px;
}

.calendar-block,
.timeline-item.time-block,
.time-block-row {
  border-color: #f1a7a7;
  border-left-color: #991b1b;
  background: #fff1f2;
  box-shadow: inset 4px 0 0 #991b1b, var(--soft-shadow);
}

.calendar-block.exam,
.calendar-block.travel,
.calendar-block.meeting,
.calendar-block.family {
  border-left-color: #991b1b;
  background: #fff1f2;
}

.dot.time-block,
.status-badge.time-block {
  background: #991b1b;
}

.timeline-item.time-block .timeline-time strong,
.timeline-item.time-block .timeline-time span,
.calendar-block .calendar-block-meta {
  color: #991b1b;
}
