/* ============================================================
   skin-v2 · 活动日历皮肤层（原骨架保留）
   加载顺序：calendar.css → 本层
   ============================================================ */

/* 排印：主标题宋体 */
.campus-calendar h1 {
  font-family: "Nylon Serif", "Noto Serif SC", "Source Han Serif SC", "Songti SC", "SimSun", serif;
  font-weight: 700;
  letter-spacing: -0.01em;
}

/* 日历格子：hover 浮起 */
.calendar-day {
  transition: background 180ms ease, transform 240ms cubic-bezier(0.22, 1, 0.36, 1), border-color 180ms ease;
}
.calendar-day:hover {
  transform: translateY(-2px);
  border-color: rgba(193, 231, 135, 0.4);
}

/* 事件卡：hover 回应 */
.calendar-event {
  transition: background 180ms ease, padding-left 240ms cubic-bezier(0.22, 1, 0.36, 1), border-color 180ms ease;
}
.calendar-event:hover {
  padding-left: 18px;
  border-color: rgba(193, 231, 135, 0.3);
}

/* 按钮呼吸 */
.campus-calendar button, .calendar-button {
  transition: transform 240ms cubic-bezier(0.22, 1, 0.36, 1), background 180ms ease, border-color 180ms ease;
}
.campus-calendar button:hover, .calendar-button:hover { transform: translateY(-1px); }

/* 链接滑入下划线 */
.calendar-header nav a:not(.calendar-button), .calendar-event-links a {
  text-decoration: none;
  background-image: linear-gradient(#c1e787, #c1e787);
  background-repeat: no-repeat;
  background-size: 0% 1px;
  background-position: 0 100%;
  padding-bottom: 2px;
  transition: background-size 280ms cubic-bezier(0.22, 1, 0.36, 1), color 180ms ease;
}
.calendar-header nav a:hover, .calendar-event-links a:hover {
  background-size: 100% 1px;
  text-decoration: none;
  color: #dcf0ae;
}

/* 进场：头部 → 控件 → 月历 → 议程 */
.calendar-header, .calendar-controls, .calendar-month-panel,
.calendar-day-details, .calendar-agenda {
  animation: cal-rise 560ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
.calendar-controls { animation-delay: 60ms; }
.calendar-month-panel { animation-delay: 110ms; }
.calendar-day-details { animation-delay: 160ms; }
.calendar-agenda { animation-delay: 200ms; }
@keyframes cal-rise {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .calendar-day, .calendar-event, .campus-calendar button, .calendar-button { transition: none; }
  .calendar-header, .calendar-controls, .calendar-month-panel,
  .calendar-day-details, .calendar-agenda { animation: none; }
}

.campus-calendar {
  --cc-scheme: dark;
  --cc-text: #e8f1f2;
  --cc-muted: #a8bbc2;
  --cc-placeholder: #a8bbc2;
  --cc-link: #72d5df;
  --cc-accent: #c1e787;
  --cc-cyan: var(--cc-link);
  --cc-lime: var(--cc-accent);
  --cc-panel: #101c25;
  --cc-detail: #101c25;
  --cc-field: #14232d;
  --cc-event: #14242e;
  --cc-hover: #1b3038;
  --cc-note: #11272e;
  --cc-review-note: #1e333d;
  --cc-border: #2a404b;
  --cc-control-border: #56717d;
  --cc-day: #13232e;
  --cc-day-outside: #a8bbc2;
  --cc-today: #72d5df;
  --cc-today-bg: #17313a;
  --cc-day-selected: #263b30;
  --cc-day-selected-ink: #c1e787;
  --cc-button: #172b36;
  --cc-button-ink: #e8f1f2;
  --cc-primary: #c1e787;
  --cc-primary-ink: #1a2919;
  --cc-official: #72d5df;
  --cc-community: #c1e787;
  --cc-blog: #bfa0ed;
  --cc-warning: #e1cea2;
  --cc-warning-bg: #28261c;
  --cc-warning-border: #927a4b;
  --cc-error: #f1bbc4;
  --cc-error-bg: #39262b;
  color: var(--cc-text);
  color-scheme: var(--cc-scheme);
}

html[data-theme="light"] .campus-calendar.campus-calendar {
  --cc-scheme: light;
  --cc-text: #243a42;
  --cc-muted: #52646b;
  --cc-placeholder: #5d6b70;
  --cc-link: #176674;
  --cc-accent: #42631c;
  --cc-panel: #ffffff;
  --cc-detail: #f7faf8;
  --cc-field: #ffffff;
  --cc-event: #ffffff;
  --cc-hover: #edf3ef;
  --cc-note: #f2f7f4;
  --cc-review-note: #eaf2ed;
  --cc-border: #c3cfcd;
  --cc-control-border: #76888e;
  --cc-day: #ffffff;
  --cc-day-outside: #647178;
  --cc-today: #176674;
  --cc-today-bg: #e4f1f2;
  --cc-day-selected: #e5efcf;
  --cc-day-selected-ink: #284316;
  --cc-button: #f7faf8;
  --cc-button-ink: #243a42;
  --cc-primary: #d9e8b7;
  --cc-primary-ink: #243a42;
  --cc-official: #176674;
  --cc-community: #42631c;
  --cc-blog: #694394;
  --cc-warning: #76501b;
  --cc-warning-bg: #f6ecd9;
  --cc-warning-border: #92713c;
  --cc-error: #8f2f3b;
  --cc-error-bg: #fae9e7;
}

html body .campus-calendar.campus-calendar { color: var(--cc-text); }
html body .campus-calendar.campus-calendar :is(h1, h2, h3, strong) { color: var(--cc-text); }
html body .campus-calendar.campus-calendar p,
html body .campus-calendar.campus-calendar .calendar-muted,
html body .campus-calendar.campus-calendar .calendar-counts,
html body .campus-calendar.campus-calendar .calendar-section-heading > span,
html body .campus-calendar.campus-calendar .calendar-sources-grid small,
html body .campus-calendar.campus-calendar .calendar-guide details { color: var(--cc-muted); }
html body .campus-calendar.campus-calendar a,
html body .campus-calendar.campus-calendar .calendar-eyebrow,
html body .campus-calendar.campus-calendar .calendar-guide summary { color: var(--cc-link); }
html body .campus-calendar.campus-calendar :is(a, button, input, textarea, select, summary):focus-visible { outline-color: var(--cc-link); }

html body .campus-calendar.campus-calendar button,
html body .campus-calendar.campus-calendar .calendar-button {
  border-color: var(--cc-control-border);
  background: var(--cc-button);
  color: var(--cc-button-ink);
}
html body .campus-calendar.campus-calendar :is(button, .calendar-button):hover { background: var(--cc-hover); }
html body .campus-calendar.campus-calendar .calendar-primary {
  border-color: var(--cc-accent);
  background: var(--cc-primary);
  color: var(--cc-primary-ink);
}
html body .campus-calendar.campus-calendar .calendar-primary:hover {
  border-color: var(--cc-accent);
  background: var(--cc-primary);
  color: var(--cc-primary-ink);
}

html body .campus-calendar.campus-calendar .calendar-source-note,
html body .campus-calendar.campus-calendar .calendar-month-panel,
html body .campus-calendar.campus-calendar .calendar-agenda,
html body .campus-calendar.campus-calendar .calendar-sources,
html body .campus-calendar.campus-calendar .calendar-form,
html body .campus-calendar.campus-calendar .calendar-guide {
  border-color: var(--cc-border);
  background: var(--cc-panel);
}
html body .campus-calendar.campus-calendar .calendar-source-note { background: var(--cc-note); }
html body .campus-calendar.campus-calendar .calendar-source-note strong { color: var(--cc-text); }
html body .campus-calendar.campus-calendar .calendar-day-details {
  border-color: var(--cc-border);
  background: var(--cc-detail);
}
html body .campus-calendar.campus-calendar .calendar-day-details h2 small { color: var(--cc-muted); }

html body .campus-calendar.campus-calendar :is(input:not([type=checkbox]):not([type=hidden]), select, textarea) {
  border-color: var(--cc-control-border);
  background: var(--cc-field);
  color: var(--cc-text);
  color-scheme: var(--cc-scheme);
}
html body .campus-calendar.campus-calendar :is(input, textarea)::placeholder {
  color: var(--cc-placeholder);
  opacity: 1;
}
html body .campus-calendar.campus-calendar select option {
  background: var(--cc-field);
  color: var(--cc-text);
}
html body .campus-calendar.campus-calendar input[type="file"]::file-selector-button {
  border-color: var(--cc-control-border);
  background: var(--cc-button);
  color: var(--cc-button-ink);
}
html body .campus-calendar.campus-calendar input[type="file"]::file-selector-button:hover { background: var(--cc-hover); }
html body .campus-calendar.campus-calendar .calendar-field label { color: var(--cc-text); }
html body .campus-calendar.campus-calendar .calendar-guide :is(ol, ul) { color: var(--cc-text); }
html body .campus-calendar.campus-calendar .errorlist {
  background: var(--cc-error-bg);
  color: var(--cc-error);
}
html body .campus-calendar.campus-calendar .calendar-field:has(.errorlist) :is(input, select, textarea) { border-color: var(--cc-error); }

html body .campus-calendar.campus-calendar .calendar-counts { border-color: var(--cc-border); }
html body .campus-calendar.campus-calendar .calendar-counts strong { color: var(--cc-text); }
html body .campus-calendar.campus-calendar .calendar-controls nav a { border-color: var(--cc-control-border); }
html body .campus-calendar.campus-calendar .calendar-weekdays { color: var(--cc-muted); }
html body .campus-calendar.campus-calendar .calendar-day {
  border-color: transparent;
  background: var(--cc-day);
  color: var(--cc-text) !important;
  opacity: 1;
}
html body .campus-calendar.campus-calendar .calendar-day small { color: var(--cc-muted); }
html body .campus-calendar.campus-calendar .calendar-day.outside {
  background: var(--cc-day);
  color: var(--cc-day-outside) !important;
  opacity: 1;
}
html body .campus-calendar.campus-calendar .calendar-day.outside small { color: var(--cc-day-outside); }
html body .campus-calendar.campus-calendar .calendar-day.today {
  border-color: var(--cc-today);
  background: var(--cc-today-bg);
}
html body .campus-calendar.campus-calendar .calendar-day.today strong { color: var(--cc-today); }
html body .campus-calendar.campus-calendar .calendar-day:hover {
  border-color: var(--cc-accent);
  background: var(--cc-hover);
}
html body .campus-calendar.campus-calendar .calendar-day.selected,
html body .campus-calendar.campus-calendar .calendar-day.selected:hover {
  border-color: var(--cc-accent);
  background: var(--cc-day-selected);
  color: var(--cc-day-selected-ink) !important;
}
html body .campus-calendar.campus-calendar .calendar-day.selected strong { color: var(--cc-day-selected-ink); }
html body .campus-calendar.campus-calendar .calendar-day.selected small { color: var(--cc-day-selected-ink); }

html body .campus-calendar.campus-calendar .source-official { background: var(--cc-official); }
html body .campus-calendar.campus-calendar .source-community { background: var(--cc-community); }
html body .campus-calendar.campus-calendar .source-blog { background: var(--cc-blog); }
html body .campus-calendar.campus-calendar .calendar-event {
  border-color: var(--cc-border);
  background: var(--cc-event);
}
html body .campus-calendar.campus-calendar .calendar-event:hover { border-color: var(--cc-accent); }
html body .campus-calendar.campus-calendar .calendar-event-source { color: var(--cc-official); }
html body .campus-calendar.campus-calendar .calendar-event-source span { border-color: var(--cc-border); }
html body .campus-calendar.campus-calendar .calendar-event-community .calendar-event-source { color: var(--cc-community); }
html body .campus-calendar.campus-calendar .calendar-event-blog .calendar-event-source { color: var(--cc-blog); }
html body .campus-calendar.campus-calendar .calendar-event-time { color: var(--cc-text) !important; }
html body .campus-calendar.campus-calendar .calendar-event-makeup { border-left-color: var(--cc-warning); }
html body .campus-calendar.campus-calendar .calendar-event-holiday { border-left-color: var(--cc-community); }
html body .campus-calendar.campus-calendar .calendar-event-exam { border-left-color: var(--cc-blog); }
html body .campus-calendar.campus-calendar .calendar-header nav a:not(.calendar-button),
html body .campus-calendar.campus-calendar .calendar-event-links a {
  background-image: linear-gradient(var(--cc-accent), var(--cc-accent));
}
html body .campus-calendar.campus-calendar :is(.calendar-header nav a:not(.calendar-button), .calendar-event-links a):hover { color: var(--cc-link); }

html body .campus-calendar.campus-calendar .calendar-empty { color: var(--cc-muted); }
html body .campus-calendar.campus-calendar .calendar-empty > span { color: var(--cc-link); }
html body .campus-calendar.campus-calendar .calendar-empty :is(h2, h3) { color: var(--cc-text); }
html body .campus-calendar.campus-calendar .calendar-empty p { color: var(--cc-muted); }
html body .campus-calendar.campus-calendar .calendar-warning {
  border-color: var(--cc-warning-border);
  background: var(--cc-warning-bg);
  color: var(--cc-warning) !important;
}
html body .campus-calendar.campus-calendar .calendar-review-note { background: var(--cc-review-note); }
html body .campus-calendar.campus-calendar .calendar-evidence { border-color: var(--cc-border); }
html body .campus-calendar.campus-calendar .calendar-pagination span { color: var(--cc-muted); }

@media (forced-colors: active) {
  html body .campus-calendar.campus-calendar {
    --cc-text: CanvasText;
    --cc-muted: CanvasText;
    --cc-placeholder: GrayText;
    --cc-link: LinkText;
    --cc-accent: Highlight;
    --cc-panel: Canvas;
    --cc-detail: Canvas;
    --cc-field: Field;
    --cc-event: Canvas;
    --cc-hover: Canvas;
    --cc-note: Canvas;
    --cc-review-note: Canvas;
    --cc-border: CanvasText;
    --cc-control-border: CanvasText;
    --cc-day: Canvas;
    --cc-day-outside: GrayText;
    --cc-today: Highlight;
    --cc-today-bg: Canvas;
    --cc-day-selected: Highlight;
    --cc-day-selected-ink: HighlightText;
    --cc-button: ButtonFace;
    --cc-button-ink: ButtonText;
    --cc-primary: Highlight;
    --cc-primary-ink: HighlightText;
    --cc-official: Highlight;
    --cc-community: Highlight;
    --cc-blog: Highlight;
    --cc-warning: CanvasText;
    --cc-warning-bg: Canvas;
    --cc-warning-border: CanvasText;
    --cc-error: Mark;
    --cc-error-bg: MarkText;
  }
}
