/* ===== 重置 & 全局 ===== */
* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  min-height: var(--app-height);
  height: var(--app-height);
  overflow: hidden;
  background: var(--bg);
  font-family: 'Segoe UI', sans-serif;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  overflow-x: hidden;
}

.container {
  position: relative;
  width: 100%; max-width: 520px;
  min-height: var(--app-height);
  height: var(--app-height);
  display: flex;
  flex-direction: column;
  overflow-x: hidden;
  overflow-y: visible;
  padding: 60px 20px 0;
}

h1 {
  text-align: left;
  font-size: 2.4rem;
  font-weight: 700;
  background: linear-gradient(90deg, var(--accent), var(--accent2), var(--accent3));
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: gradient-shift 6s ease infinite;
  margin-bottom: 30px;
  letter-spacing: 2px;
}

body.drawer-open {
  overflow: hidden;
}

body.drawer-open .container {
  pointer-events: none;
  user-select: none;
}

body.drawer-open .drawer,
body.drawer-open .drawer-backdrop {
  pointer-events: auto;
}

/* ===== 粒子背景 ===== */
.particles {
  position: fixed; top: 0; left: 0;
  width: 100%; height: 100%;
  pointer-events: none; z-index: 0;
}

.particle {
  position: absolute;
  width: 4px; height: 4px;
  background: var(--particle-color);
  border-radius: 50%;
  animation: float linear infinite;
}

/* 极简主题隐藏粒子 */
[data-theme="minimal"] .particles,
[data-theme="minimal"] .particle {
  display: none;
}

@keyframes float {
  0% { transform: translateY(100vh) scale(0); opacity: 0; }
  10% { opacity: 1; }
  90% { opacity: 1; }
  100% { transform: translateY(-10vh) scale(1); opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  h1,
  .particle,
  .checkbox.checked,
  .todo-item.removing .todo-inner {
    animation: none !important;
  }
}

/* ===== Toast 提示 ===== */
#toast {
  position: fixed;
  bottom: 30px;
  left: 50%;
  transform: translateX(-50%) translateY(20px);
  background: var(--toast-bg);
  color: var(--toast-text);
  padding: 12px 24px;
  border-radius: 30px;
  font-size: 0.9rem;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s, transform 0.3s;
  z-index: 1000;
  white-space: nowrap;
  backdrop-filter: blur(10px);
  border: 1px solid var(--card-border);
}

#toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
