::-webkit-scrollbar { height: 10px; width: 10px; }
::-webkit-scrollbar-thumb { background: rgba(125,211,252,.25); border-radius: 999px; }
::-webkit-scrollbar-track { background: rgba(255,255,255,.06); border-radius: 999px; }

.glass {
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.14);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

.hover-glow:hover {
  box-shadow:
    0 0 0 1px rgba(125,211,252,.25),
    0 18px 60px rgba(59,130,246,.18);
  transform: translateY(-1px);
}

.grid-bg {
  background-image:
    linear-gradient(to right, rgba(255,255,255,.08) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,.08) 1px, transparent 1px);
  background-size: 28px 28px;
  opacity: .18;
}

.fade-in { animation: fadeIn .18s ease-out; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(6px);} to { opacity: 1; transform: translateY(0);} }

.course-border {
  position: relative;
  border-radius: 14px;
  overflow: hidden;
}
.course-border::before {
  content: "";
  position: absolute; inset: 0;
  padding: 1px;
  border-radius: 14px;
  background: linear-gradient(135deg,
    rgba(125,211,252,.35),
    rgba(59,130,246,.18),
    rgba(255,255,255,.10)
  );
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
  opacity: .55;
}

.line-clamp-1 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
}

/* 月卡列表区域：固定高度 */
.month-list {
  max-height: 340px;
  overflow: auto;
  padding-right: 2px;
}

.skeleton { position: relative; overflow: hidden; }
.skeleton::after {
  content:"";
  position:absolute; inset:0;
  transform: translateX(-60%);
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.08), transparent);
  animation: shimmer 1.2s infinite;
}
@keyframes shimmer{ 100%{ transform: translateX(120%);} }

/* 表单输入统一风格 */
.inpt {
  width: 100%;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.05);
  padding: 10px 12px;
  font-size: 14px;
  color: rgba(255,255,255,.88);
  outline: none;
}
.inpt:focus { box-shadow: 0 0 0 1px rgba(125,211,252,.25); }
.lbl { font-size: 12px; color: rgba(255,255,255,.60); margin-bottom: 6px; }

/* 下拉框显示白字；展开项黑字 */
select.inpt { color: rgba(255,255,255,.88); }
select.inpt option { color: #111; background: #fff; }

/* 标签色系 */
.tag { font-size: 11px; padding: 2px 8px; border-radius: 999px; border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.08); color: rgba(255,255,255,.88); }
.tag-scope-in  { border-color: rgba(167,139,250,.45); background: rgba(167,139,250,.14); color: rgba(216,180,254,.95); }
.tag-scope-out { border-color: rgba(251,146,60,.45); background: rgba(251,146,60,.14); color: rgba(253,186,116,.95); }

.tag-status-done{
  border-color: rgba(239, 68, 68, .65);
  background:  rgba(239, 68, 68, .18);
  color:       rgba(254, 226, 226, .98);
}
.tag-status-run  { border-color: rgba(74,222,128,.55); background: rgba(74,222,128,.16); color: rgba(187,247,208,.98); }
.tag-status-todo { border-color: rgba(125,211,252,.55); background: rgba(125,211,252,.16); color: rgba(186,230,253,.98); }

.title-done { color: rgba(248, 113, 113, .98); }
.title-run  { color: rgba(187,247,208,.98); }
.title-todo { color: rgba(186,230,253,.98); }