* { box-sizing: border-box; margin: 0; padding: 0; -webkit-tap-highlight-color: transparent; }
html { font-size: 16px; }
body {
  font-family: var(--font);
  color: var(--c-ink);
  background: #E9EEEA;
  line-height: 1.6;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; border: none; background: none; cursor: pointer; color: inherit; }
input, textarea, select { font-family: inherit; font-size: 15px; color: var(--c-ink); }
ul, ol { list-style: none; }
[hidden] { display: none !important; }

/* 手机壳布局：移动端全屏，桌面居中模拟手机 */
.phone {
  position: relative;
  max-width: 480px;
  min-height: 100dvh;
  margin: 0 auto;
  background: var(--c-bg-wash);
  overflow-x: hidden;
}
/* 水彩纸纹颗粒：铺在整个手机壳上，极低透明度 */
.phone::before {
  content: "";
  position: fixed;
  top: 0; bottom: 0;
  left: max(0px, calc(50% - 240px));
  width: min(100%, 480px);
  background-image: var(--paper-grain);
  background-repeat: repeat;
  pointer-events: none;
  z-index: 90;
  opacity: .55;
}
@media (min-width: 520px) {
  .phone { min-height: 100vh; box-shadow: 0 0 40px rgba(0,0,0,.12); }
}

.view { min-height: 100dvh; padding-bottom: calc(var(--tabbar-h) + 20px); }
.view.no-tab { padding-bottom: 0; }

/* 页面切换动效：淡入淡出 + 轻微放大（需求：切换模块时放大字体，淡入淡出） */
.page-enter { animation: pageIn .28s ease both; }
@keyframes pageIn {
  from { opacity: 0; transform: scale(.985) translateY(6px); }
  to   { opacity: 1; transform: none; }
}

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