:root{
  --paper:#faf9f6;
  --ink:#191713;
  --ink-soft:#5a554b;
  --line:#e4e0d7;
  --go:#2f7d4f;
  --go-soft:#e9f2ec;
  --warn:#b3472f;
  --safe-bottom:env(safe-area-inset-bottom, 0px);
  --tab-height:62px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--paper);
  color:var(--ink);
  font:17px/1.9 "PingFang SC","Hiragino Sans GB","Source Han Sans SC","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit}
button{font:inherit}
.loading-shell{
  background:#fff;border:1px solid var(--line);border-radius:8px;
  padding:18px;
}
.skeleton{display:grid;gap:12px}
.skeleton i{
  display:block;height:14px;border-radius:7px;background:#eee9df;
  animation:skeleton-shimmer 1.1s ease-in-out infinite;
}
.skeleton i:nth-child(2){width:88%}
.skeleton i:nth-child(3){width:64%}
.skeleton i.avatar{width:40px;height:40px;border-radius:50%}
.skeleton i.title{height:20px;width:74%}
.skeleton i.action{height:34px;width:118px;border-radius:999px}
.loading-note{margin-top:12px;font-size:13px;color:var(--ink-soft)}
@keyframes skeleton-shimmer{0%,100%{opacity:.7}50%{opacity:1}}
.app-header{
  position:sticky;top:0;z-index:20;
  background:rgba(250,249,246,.95);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.app-header-inner{
  height:52px;max-width:520px;margin:0 auto;padding:0 20px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
}
.brand{
  font-size:16px;font-weight:700;color:var(--ink);
  text-decoration:none;flex:none;
}
.brand .o{display:inline-block;width:.7em;height:.7em;vertical-align:-.02em;margin:0 1px}
.brand .o circle{stroke:currentColor}
.page-note{font-size:12px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.app-main{
  width:100%;max-width:520px;margin:0 auto;
  padding:22px 20px calc(var(--tab-height) + 36px + var(--safe-bottom));
}
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:30;
  background:rgba(250,249,246,.97);
  backdrop-filter:blur(10px);
  border-top:1px solid var(--line);
  padding-bottom:var(--safe-bottom);
}
.tabbar-inner{
  max-width:520px;margin:0 auto;height:var(--tab-height);
  display:grid;grid-template-columns:repeat(3,1fr);
}
.tab-link{
  position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;font-size:11px;line-height:1;color:var(--ink-soft);text-decoration:none;
}
.tab-link svg{width:22px;height:22px}
.tab-link.active{color:var(--go);font-weight:700}
.nav-badge{
  display:none;position:absolute;top:8px;left:calc(50% + 4px);
  min-width:17px;height:17px;padding:0 4px;border-radius:999px;
  background:var(--warn);color:#fff;font-size:10px;line-height:17px;font-weight:700;text-align:center;
}
@media (max-width:360px){
  .app-header-inner,.app-main{padding-left:16px;padding-right:16px}
  body{font-size:16px}
}
@media (min-width:1024px){
  body{font-size:15px;line-height:1.8}
  .app-header-inner{max-width:1000px}
  .app-main{padding-top:28px;padding-bottom:48px}
  .tabbar{
    position:static;padding-bottom:0;
    background:var(--paper);border-top:0;border-bottom:1px solid var(--line);
  }
  .tabbar-inner{
    max-width:1000px;height:58px;
    display:flex;align-items:center;justify-content:flex-start;gap:6px;
  }
  .tab-link{
    flex-direction:row;gap:8px;height:40px;padding:0 18px;
    font-size:14px;border-radius:8px;
  }
  .tab-link:hover{background:rgba(25,23,19,.04)}
  .tab-link svg{width:18px;height:18px}
  .nav-badge{top:9px;left:auto;right:10px}
}
@media (min-width:1440px){
  .app-header-inner{max-width:1000px}
}
