/* ------- 17 班同学录 · 全局样式（薄荷绿主题） ------- */

:root {
  --c-bg:        #EFF7F3;
  --c-bg-warm:   #E6F0EA;
  --c-primary:   #52B788;
  --c-accent:    #B7E4C7;
  --c-deep:      #2D6A4F;
  --c-ink:       #2B2B2B;
  --c-sub:       #6B7280;
  --c-paper:     #FFFFFF;
  --c-line:      rgba(45, 106, 79, 0.14);

  --font-hand:   "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-body:   "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-display:"Noto Sans SC", sans-serif;

  --r-sm: 8px;
  --r-md: 14px;
  --r-lg: 22px;

  --shadow-soft: 0 8px 24px -8px rgba(45,106,79,0.18), 0 2px 4px rgba(45,106,79,0.06);
  --shadow-card: 0 20px 40px -12px rgba(45,106,79,0.28);
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body {
  margin: 0;
  padding: 0;
  font-family: var(--font-body);
  color: var(--c-ink);
  background: var(--c-bg);
  overscroll-behavior: none;
}
body {
  min-height: 100vh;
  min-height: 100svh;
}
button { font-family: inherit; cursor: pointer; border: none; background: none; color: inherit; }
img { display: block; max-width: 100%; }

#root { min-height: 100vh; min-height: 100svh; }

.h1 { font-family: var(--font-display); font-weight: 400; letter-spacing: 0.02em; }
.handwrite { font-family: var(--font-hand); }

.page {
  max-width: 480px;
  margin: 0 auto;
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  background: var(--c-bg);
}
@media (min-width: 900px) {
  .page {
    max-width: 480px;
    box-shadow: 0 0 80px rgba(45,106,79,0.12);
  }
  body::before {
    content: "";
    position: fixed;
    inset: 0;
    background: radial-gradient(ellipse at top, var(--c-bg-warm), var(--c-bg) 70%);
    z-index: -1;
  }
}

::-webkit-scrollbar { width: 0; height: 0; }

/* ------- 装饰元素 ------- */
.tape {
  position: absolute;
  width: 72px; height: 22px;
  background: rgba(183, 228, 199, 0.7);
  border: 1px dashed rgba(45, 106, 79, 0.25);
  backdrop-filter: blur(2px);
}
.star {
  position: absolute;
  pointer-events: none;
  animation: twinkle 3s infinite ease-in-out;
}
@keyframes twinkle {
  0%,100% { opacity: 0.4; transform: scale(0.9); }
  50%     { opacity: 1;   transform: scale(1.1); }
}

.btn-primary {
  background: var(--c-primary);
  color: #fff;
  padding: 14px 28px;
  border-radius: 999px;
  font-weight: 600;
  font-size: 16px;
  box-shadow: 0 6px 18px -4px rgba(82,183,136,0.45);
  transition: transform .15s ease, box-shadow .15s ease;
}
.btn-primary:active { transform: scale(0.96); }
.btn-ghost {
  padding: 10px 18px;
  border-radius: 999px;
  font-size: 14px;
  background: var(--c-paper);
  border: 1px solid var(--c-line);
}

/* ------- 占位图 ------- */
.placeholder-avatar {
  width: 100%;
  aspect-ratio: 3 / 4;
  border-radius: var(--r-md);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: 48px;
  color: rgba(45,106,79,0.55);
  position: relative;
  overflow: hidden;
}
.placeholder-avatar::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 30% 30%, rgba(255,255,255,0.6), transparent 40%),
    radial-gradient(circle at 70% 80%, rgba(255,255,255,0.3), transparent 40%);
}
.placeholder-avatar img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 2;
}

/* ------- 进场动画 ------- */
.fade-in { animation: fadeIn .5s ease both; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

.pop-in { animation: popIn .45s cubic-bezier(.34,1.56,.64,1) both; }
@keyframes popIn { 0% { opacity: 0; transform: scale(0.88); } 100% { opacity: 1; transform: scale(1); } }
