/* 前台样式 · 手机桌面风 */
*{margin:0;padding:0;box-sizing:border-box}
:root{
  --primary:#4a90d9;
  --primary-dark:#3a7bc8;
  --page-bg:#ffffff;
  --text:#1c1c1e;
  --text-muted:#6e6e73;
  --clock-color:#1c1c1e;
  --site-title-color:#1c1c1e;
  --nav-title-color:#8e8e93;
  --nav-deco:rgba(0,0,0,.14);
  --icon-plate:rgba(0,0,0,.05);
  --fab-bg:rgba(255,255,255,.88);
  --fab-border:rgba(0,0,0,.06);
  --fab-color:#444;
  --fab-shadow:0 4px 14px rgba(0,0,0,.08);
  --footer-muted:#8e8e93;
  --avatar-border:#fff;
  --avatar-shadow:0 6px 20px rgba(0,0,0,.12);
  --panel-bg:#fff;
  --panel-border:rgba(0,0,0,.06);
  --panel-shadow:0 4px 18px rgba(0,0,0,.06);
  --card-bg:transparent;
  --card-shadow:none;
  --card-hover:none;
  --card-border:transparent;
  --toggle-bg:var(--fab-bg);
  --toggle-color:var(--fab-color);
  --divider:#e8edf3;
  --app-icon-size:64px;
  --dock-icon-size:var(--app-icon-size);
  --tabbar-h:112px;
  --app-shell-max:100%;
  --dock-bg:rgba(255,255,255,.42);
  --dock-border:rgba(255,255,255,.55);
  --dock-shadow:0 10px 40px rgba(0,0,0,.14);
  --tabbar-color:#8e8e93;
  --tabbar-active:var(--primary);
  --tap-overlay:rgba(0,0,0,.08);
  --overlay-mask:rgba(0,0,0,.65);
}
html[data-theme="dark"]{
  --primary:#ff4757;
  --primary-dark:#e84118;
  --page-bg:#000000;
  --text:#ffffff;
  --text-muted:rgba(255,255,255,.72);
  --clock-color:#ffffff;
  --site-title-color:#ffffff;
  --nav-title-color:rgba(255,255,255,.55);
  --nav-deco:rgba(255,255,255,.25);
  --icon-plate:rgba(255,255,255,.08);
  --fab-bg:rgba(255,255,255,.12);
  --fab-border:rgba(255,255,255,.15);
  --fab-color:#fff;
  --fab-shadow:none;
  --footer-muted:rgba(255,255,255,.45);
  --avatar-border:rgba(255,255,255,.2);
  --avatar-shadow:0 4px 20px rgba(0,0,0,.4);
  --panel-bg:#141414;
  --panel-border:#222;
  --panel-shadow:0 4px 20px rgba(0,0,0,.45);
  --divider:#2a2a2a;
  --dock-bg:rgba(40,40,42,.62);
  --dock-border:rgba(255,255,255,.12);
  --dock-shadow:0 10px 40px rgba(0,0,0,.45);
}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  color:var(--text);
  min-height:100vh;
  position:relative;
  overflow-x:hidden;
  background:var(--page-bg);
  transition:background .25s,color .25s;
  touch-action:manipulation;
  -webkit-text-size-adjust:100%;
}
body.has-tabbar{background:#fff}
html[data-theme="dark"] body.has-tabbar{background:#000}

/* 首页固定一屏，禁止上下滑动（仅移动端首页；PC 端允许正常滚动） */
@media (hover: none) and (pointer: coarse), (max-width: 767px){
html.home-screen-root body.home-screen{
  overflow:hidden;height:100%;overscroll-behavior:none;
}
body.home-screen{
  height:100vh;
  height:100dvh;
  height:-webkit-fill-available;
  overscroll-behavior:none;
  touch-action:pan-x;
}
body.home-screen .container{
  position:relative;z-index:1;
  height:calc(100vh - var(--tabbar-h) - env(safe-area-inset-bottom,0px));
  height:calc(100dvh - var(--tabbar-h) - env(safe-area-inset-bottom,0px));
  overflow:hidden;
  display:flex;flex-direction:column;
  padding:max(24px, env(safe-area-inset-top,0px)) 18px 8px;
}
body.home-screen .home-pages-viewport{
  flex:1;min-height:0;width:100%;
  overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  overscroll-behavior-x:contain;
  touch-action:pan-x;
}
body.home-screen .home-pages-viewport::-webkit-scrollbar{display:none}
body.home-screen .home-pages-viewport.is-locked{
  overflow-x:hidden;
  scroll-snap-type:none;
}
body.home-screen .home-pages-track{
  display:flex;height:100%;flex-wrap:nowrap;
}
body.home-screen .home-screen-page{
  flex:none;
  height:100%;
  scroll-snap-align:start;
  scroll-snap-stop:always;
  box-sizing:border-box;
  display:flex;flex-direction:column;
  overflow:hidden;
  position:relative;
  isolation:isolate;
}
body.home-screen .home-screen-page--lead .hero{margin-bottom:8px;flex-shrink:0}
body.home-screen .home-screen-page--lead .widget{padding:12px 14px 4px;margin-bottom:0;flex-shrink:0}
body.home-screen .home-screen-page--lead .nav-section{
  flex:1;min-height:0;margin:8px 0 0;
  display:flex;flex-direction:column;
}
body.home-screen .home-footer{
  flex-shrink:0;margin-top:8px;padding-top:4px;
}
body.home-screen .home-screen-page--icons{
  padding-top:8px;
}
body.home-screen .home-screen-page--icons .nav-page{
  flex:1;min-height:0;
  align-content:start;
}
body.home-screen .home-screen-page--lead .nav-section .nav-page{
  flex:1;min-height:0;
  align-content:start;
}
body.home-screen .nav-page-dots{
  flex-shrink:0;
  display:none;
  justify-content:center;align-items:center;
  gap:7px;
  padding:8px 0 4px;
  min-height:14px;
}
body.home-screen .nav-page-dots.is-visible{display:flex}
body.home-screen .nav-page-dot{
  width:6px;height:6px;border-radius:50%;
  background:rgba(120,120,128,.35);
  transition:transform .2s ease,background .2s ease;
}
body.home-screen .nav-page-dot.is-active{
  background:var(--primary,#007aff);
  transform:scale(1.15);
}
html[data-theme="dark"] body.home-screen .nav-page-dot{background:rgba(235,235,245,.28)}
html[data-theme="dark"] body.home-screen .nav-page-dot.is-active{background:#ff4757}
body.home-screen .dock-wrap{z-index:2}
}

/* PC 桌面：首页正常纵向滚动，不分页 */
@media (min-width: 768px) {
  body.home-screen .container{
    max-width:1200px;
    margin:0 auto;
    height:auto;
    overflow:visible;
    display:block;
    padding:32px 32px calc(var(--tabbar-h) + 28px + env(safe-area-inset-bottom,0px));
  }
  body.home-screen .home-pages-viewport{
    overflow:visible;
    flex:none;
    height:auto;
  }
  body.home-screen .home-pages-track{
    display:block;
    height:auto;
    width:100% !important;
  }
  body.home-screen .home-screen-page{
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    flex:none !important;
    height:auto;
    overflow:visible;
  }
  body.home-screen .home-screen-page--icons{display:none !important}
  body.home-screen .home-screen-page--lead .nav-section{
    flex:none;
    min-height:0;
    margin:18px 0 0;
  }
  body.home-screen .home-screen-page--lead .nav-section .nav-page{
    flex:none;
    min-height:0;
  }
  body.home-screen .nav-page-dots{display:none !important}
  body.home-screen .home-footer{
    margin-top:28px;
    padding-top:12px;
    text-align:center;
  }
}

.nav-card,.dock-item{
  -webkit-touch-callout:none;
  -webkit-user-select:none;
  user-select:none;
  touch-action:manipulation;
}
/* iOS 编辑模式：长按后全部抖动 + 减号 */
.home-edit-mode .home-pages-track.is-edit-mode .nav-card,
.home-edit-mode .nav-pages-track.is-edit-mode .nav-card,
.home-edit-mode .nav-grid.is-edit-mode .nav-card,
.home-edit-mode .dock-bar.is-edit-mode .dock-item{
  animation:appJiggle .22s ease-in-out infinite alternate;
}
.home-edit-mode .home-pages-track.is-edit-mode .nav-card:nth-child(3n+1),
.home-edit-mode .nav-pages-track.is-edit-mode .nav-card:nth-child(3n+1),
.home-edit-mode .nav-grid.is-edit-mode .nav-card:nth-child(3n+1){animation-delay:0s}
.home-edit-mode .home-pages-track.is-edit-mode .nav-card:nth-child(3n+2),
.home-edit-mode .nav-pages-track.is-edit-mode .nav-card:nth-child(3n+2),
.home-edit-mode .nav-grid.is-edit-mode .nav-card:nth-child(3n+2){animation-delay:.04s}
.home-edit-mode .home-pages-track.is-edit-mode .nav-card:nth-child(3n),
.home-edit-mode .nav-pages-track.is-edit-mode .nav-card:nth-child(3n),
.home-edit-mode .nav-grid.is-edit-mode .nav-card:nth-child(3n){animation-delay:.08s}
.home-edit-mode .dock-bar.is-edit-mode .dock-item:nth-child(1){animation-delay:0s}
.home-edit-mode .dock-bar.is-edit-mode .dock-item:nth-child(2){animation-delay:.05s}
.home-edit-mode .dock-bar.is-edit-mode .dock-item:nth-child(3){animation-delay:.1s}
.home-edit-mode .dock-bar.is-edit-mode .dock-item:nth-child(4){animation-delay:.15s}
@keyframes appJiggle{
  0%{transform:rotate(-1.8deg) scale(1)}
  100%{transform:rotate(1.8deg) scale(1)}
}
.app-edit-badge{
  position:absolute;z-index:20;
  width:22px;height:22px;border-radius:50%;
  background:rgba(120,120,128,.92);color:#fff;
  font-size:17px;font-weight:600;line-height:20px;text-align:center;
  box-shadow:0 1px 4px rgba(0,0,0,.28);
  pointer-events:none;
}
.nav-card .app-edit-badge{
  top:2px;
  left:calc(50% - var(--app-icon-size)/2 - 6px);
}
.dock-item .app-edit-badge{
  top:-6px;left:-6px;
}
.dock-item .tab-icon{position:relative}
.home-edit-mode .nav-card-icon{overflow:visible}
.home-edit-done-bar{
  position:fixed;top:0;left:0;right:0;z-index:120;
  display:flex;justify-content:flex-end;
  padding:calc(10px + env(safe-area-inset-top,0px)) 16px 10px;
  pointer-events:none;
  opacity:0;transform:translateY(-8px);
  transition:opacity .22s ease,transform .22s ease;
}
.home-edit-done-bar.is-show{
  opacity:1;transform:translateY(0);pointer-events:auto;
}
.home-edit-done-btn{
  border:none;border-radius:999px;
  padding:8px 18px;
  background:rgba(255,255,255,.92);
  color:var(--primary);
  font-size:16px;font-weight:600;
  box-shadow:0 4px 16px rgba(0,0,0,.12);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
}
html[data-theme="dark"] .home-edit-done-btn{
  background:rgba(44,44,46,.95);color:#ff4757;
}
.home-edit-done-btn:active{opacity:.75}
.home-edit-mode .nav-card.is-dragging,
.home-edit-mode .dock-item.is-dragging{
  animation:none!important;
  opacity:1;transform:scale(1.12)!important;z-index:15;
  transition:none;
  touch-action:none;
}
.nav-card.is-dragging,.dock-item.is-dragging{
  opacity:.85;transform:scale(1.08);z-index:5;
  transition:none;
  touch-action:none;
}
.nav-card-icon .dock-app-icon,
.nav-card-icon .dock-icon-wrap{
  width:100%;height:100%;border-radius:inherit;
  box-shadow:none;
}
.nav-card-action{
  border:none;background:transparent;padding:4px 0;cursor:pointer;
  font:inherit;color:inherit;
}

.theme-toggle{display:none}
.fab-bar{display:none!important}

.container{
  position:relative;z-index:1;
  width:100%;max-width:none;margin:0 auto;
  padding:40px 18px calc(var(--tabbar-h) + 24px + env(safe-area-inset-bottom,0px));
  animation:fadeUp .55s cubic-bezier(.22,1,.36,1);
}
@keyframes fadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

.hero{text-align:center;margin-bottom:18px}
.avatar-wrap{display:inline-block;margin-bottom:12px}
.avatar{
  width:72px;height:72px;border-radius:50%;
  object-fit:cover;
  box-shadow:var(--avatar-shadow);
  border:2px solid var(--avatar-border);
  background:var(--panel-bg);
}
.site-title{
  font-size:22px;font-weight:700;
  color:var(--site-title-color);
  letter-spacing:.5px;margin-bottom:6px;
}
.site-desc{font-size:13px;color:var(--text-muted)}

/* 锁屏时钟区 */
.widget{
  text-align:center;margin-bottom:4px;
  background:transparent;border:none;box-shadow:none;
  padding:24px 14px 8px;
}
.clock{
  font-size:56px;font-weight:300;
  color:var(--clock-color);
  letter-spacing:1px;
  font-variant-numeric:tabular-nums;
  line-height:1.1;
}
.meta{font-size:13px;color:var(--text-muted);margin-top:8px;min-height:20px}
.meta .weather{margin-left:12px}
.weather.weather-locate-ready{
  cursor:pointer;
  text-decoration:underline dotted rgba(120,120,128,.45);
  text-underline-offset:3px;
}
.weather.is-locating{opacity:.65}

/* 应用桌面区 */
.nav-section{margin:18px 0 28px}
.nav-title{
  display:flex;align-items:center;justify-content:center;gap:12px;
  font-size:13px;color:var(--nav-title-color);font-weight:500;
  margin:0 0 14px;
}
.nav-title-text{
  display:inline-block;
  white-space:nowrap;
  font-weight:600;
  letter-spacing:.04em;
  background:linear-gradient(90deg,#ff6b6b 0%,#ffd93d 22%,#6bcb77 44%,#4d96ff 66%,#c56cf0 88%,#ff6b6b 100%);
  background-size:220% auto;
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:transparent;
  animation:navTitleFlow 5s linear infinite,navTitleBounce 2.6s ease-in-out infinite;
  filter:drop-shadow(0 0 8px rgba(255,107,107,.25));
}
.nav-deco{
  position:relative;
  width:36px;
  height:12px;
  flex-shrink:0;
  background:none;
}
.nav-deco::before{
  content:'';
  position:absolute;
  top:50%;left:0;
  width:100%;height:2px;
  transform:translateY(-50%);
  background:linear-gradient(90deg,transparent 0%,#ff6b6b 35%,#4d96ff 65%,transparent 100%);
  border-radius:99px;
  display:block;
}
.nav-deco::after{
  content:'';
  position:absolute;
  top:50%;left:50%;
  width:5px;height:5px;
  transform:translate(-50%,-50%) rotate(45deg);
  background:linear-gradient(135deg,#ffd93d 0%,#4d96ff 100%);
  border-radius:1px;
  display:block;
  box-shadow:0 0 5px rgba(77,150,255,.35);
}
@keyframes navTitleFlow{
  0%{background-position:0% center}
  100%{background-position:220% center}
}
@keyframes navTitleBounce{
  0%,100%{transform:translateY(0)}
  18%{transform:translateY(-4px)}
  36%{transform:translateY(0)}
  48%{transform:translateY(-2px)}
  60%{transform:translateY(0)}
}

.nav-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:22px 8px;
  justify-items:center;
}
.nav-card{
  position:relative;
  display:flex;flex-direction:column;
  align-items:center;justify-content:flex-start;
  width:100%;max-width:calc(var(--app-icon-size) + 8px);
  background:transparent;border:none;box-shadow:none;
  border-radius:12px;padding:4px 0;min-height:auto;
  text-decoration:none;color:inherit;
  -webkit-tap-highlight-color:transparent;
  overflow:visible;
}
.nav-card-icon{
  position:relative;
  width:var(--app-icon-size);height:var(--app-icon-size);margin-bottom:8px;
  border-radius:22.37%;
  overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  background:var(--icon-plate);
  transition:transform .18s cubic-bezier(.22,1,.36,1),opacity .18s ease;
  will-change:transform;
}
.nav-card.is-pressed .nav-card-icon{
  transform:scale(.86);
  opacity:.78;
  box-shadow:0 0 0 8px var(--tap-overlay);
}
.nav-card.is-pressed .nav-card-title{opacity:.7}
@keyframes navTapPop{
  0%{transform:scale(1)}
  35%{transform:scale(.84)}
  100%{transform:scale(1)}
}
.nav-card.tap-animate .nav-card-icon{animation:navTapPop .32s cubic-bezier(.22,1,.36,1)}

.site-badge{
  position:absolute;top:-4px;left:50%;right:auto;
  transform:translateX(-50%);
  font-size:10px;font-weight:700;color:#fff;
  padding:2px 6px;border-radius:999px;
  line-height:1.2;z-index:2;
  max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  box-shadow:0 2px 6px rgba(0,0,0,.2);
}
.nav-card-icon img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.nav-card-icon--brand{background:transparent}
.nav-card-icon--contact .nav-icon,
.nav-card-icon--contact .contact-admin-letter-icon,
.nav-card-icon--contact img{width:100%!important;height:100%!important;border-radius:inherit}
.nav-card-icon--letter .app-letter-icon,
.nav-card-icon--custom .nav-icon,
.nav-card-icon--custom img{width:100%!important;height:100%!important;border-radius:inherit}
.nav-card-icon .app-letter-icon{width:100%!important;height:100%!important;border-radius:inherit;font-size:calc(var(--dock-icon-size, 64px) * 0.42)}
.nav-card-icon .nav-icon{width:100%!important;height:100%!important;border-radius:inherit}
.nav-icon-svg svg,.nav-icon-svg{display:block;width:100%;height:100%}
.nav-card-icon svg{width:58%;height:58%}
.nav-card-glyph{
  width:58%;height:58%;
  display:flex;align-items:center;justify-content:center;
}
.nav-card-glyph svg{width:100%;height:100%;display:block}
.nav-card-title{
  font-size:12px;color:var(--text);
  text-align:center;line-height:1.3;
  word-break:break-all;font-weight:400;
  max-width:100%;
  transition:opacity .15s;
}

/* 页脚信息（桌面端） */
.footer{text-align:center;padding-top:8px}
.footer-info .copyright{font-size:13px;color:var(--footer-muted);margin-bottom:6px}
.footer-info .visits{
  font-size:13px;color:var(--footer-muted);
  display:flex;align-items:center;justify-content:center;gap:6px;
  margin-bottom:12px;
}
.eye-icon{opacity:.7}

/* iOS 浮动 Dock */
.dock-wrap{
  position:fixed;left:0;right:0;bottom:0;z-index:90;
  display:flex;justify-content:center;
  padding:0 8px calc(10px + env(safe-area-inset-bottom,0px));
  pointer-events:none;
}
.dock-bar,.tab-bar.dock-bar{
  pointer-events:auto;
  position:relative;left:auto;right:auto;bottom:auto;
  width:100%;max-width:min(100%, 480px);height:auto;
  display:flex;align-items:center;justify-content:space-between;
  gap:clamp(8px, 3vw, 18px);
  padding:12px clamp(16px, 4vw, 28px);
  border-radius:36px;
  background:var(--dock-bg);
  border:1px solid var(--dock-border);
  box-shadow:var(--dock-shadow);
  backdrop-filter:blur(28px) saturate(1.6);
  -webkit-backdrop-filter:blur(28px) saturate(1.6);
}
.dock-item,.tab-item.dock-item{
  position:relative;
  flex:0 0 auto;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:0;padding:0;min-width:0;
  text-decoration:none;color:inherit;
  -webkit-tap-highlight-color:transparent;
  transition:transform .18s cubic-bezier(.22,1,.36,1);
}
.dock-item .tab-icon{
  position:relative;
  width:var(--dock-icon-size);height:var(--dock-icon-size);
  display:inline-flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.dock-icon-wrap{
  position:relative;display:inline-flex;
  width:var(--dock-icon-size);height:var(--dock-icon-size);
  align-items:center;justify-content:center;
  line-height:0;
}
.dock-bar .dock-app-icon,
.dock-icon-wrap .dock-app-icon{
  width:var(--dock-icon-size);height:var(--dock-icon-size);
  border-radius:22.37%;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 10px rgba(0,0,0,.16);
  overflow:hidden;position:relative;flex-shrink:0;
}
.dock-app-icon--brand{background:transparent;padding:0}
.dock-app-icon--brand img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}
.dock-app-svg{
  position:relative;
  width:52%;height:52%;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.dock-app-svg > svg{
  width:100%;height:100%;display:block;flex-shrink:0;
}
.dock-theme-sun,.dock-theme-moon{
  position:absolute;inset:0;margin:auto;
  width:100%!important;height:100%!important;
  max-width:100%;max-height:100%;
}
html:not([data-theme="dark"]) .dock-theme-sun{display:block!important}
html:not([data-theme="dark"]) .dock-theme-moon{display:none!important}
html[data-theme="dark"] .dock-theme-sun{display:none!important}
html[data-theme="dark"] .dock-theme-moon{display:block!important}
.dock-action{
  border:none;background:transparent;cursor:pointer;
  font:inherit;color:inherit;padding:0;
}
.dock-item.is-active .dock-app-icon{
  box-shadow:0 3px 10px rgba(0,0,0,.16);
}
.dock-badge{
  position:absolute;top:-5px;right:-5px;left:auto;
  min-width:18px;height:18px;padding:0 5px;
  border-radius:99px;background:#ff3b30;color:#fff;
  font-size:11px;font-weight:700;line-height:18px;text-align:center;
  border:none;box-shadow:none;
  z-index:3;pointer-events:none;
}
.dock-item .tab-label{display:none}
.dock-item.is-pressed{transform:scale(.88)}
.dock-item.is-pressed .dock-app-icon{opacity:.82}

/* 添加主屏幕提示 */
.a2hs-banner{
  position:fixed;left:12px;right:12px;
  bottom:calc(8px + env(safe-area-inset-bottom,0px));
  z-index:85;
  animation:fadeUp .35s ease;
  text-decoration:none;
  color:inherit;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.has-tabbar .a2hs-banner{
  bottom:calc(var(--tabbar-h) + 8px + env(safe-area-inset-bottom,0px));
}
.a2hs-banner[hidden]{display:none!important}
.a2hs-inner{
  display:flex;align-items:center;gap:12px;
  padding:12px 14px;border-radius:18px;
  background:rgba(255,255,255,.94);
  color:var(--text);
  border:1px solid rgba(0,0,0,.06);
  box-shadow:0 6px 28px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.8) inset;
  backdrop-filter:saturate(180%) blur(16px);
  -webkit-backdrop-filter:saturate(180%) blur(16px);
  transition:transform .15s ease, box-shadow .15s ease;
}
.a2hs-banner:active .a2hs-inner{
  transform:scale(.985);
  box-shadow:0 3px 16px rgba(0,0,0,.08);
}
html[data-theme="dark"] .a2hs-inner{
  background:rgba(28,28,30,.92);
  color:#fff;
  border-color:rgba(255,255,255,.1);
  box-shadow:0 8px 32px rgba(0,0,0,.35);
}
.a2hs-icon{
  width:44px;height:44px;border-radius:11px;
  object-fit:cover;flex-shrink:0;
  box-shadow:0 2px 8px rgba(0,0,0,.12);
}
.a2hs-text{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
.a2hs-text strong{font-size:14px;font-weight:600}
.a2hs-text span{font-size:12px;color:var(--text-muted);line-height:1.4}
html[data-theme="dark"] .a2hs-text span{color:rgba(255,255,255,.72)}
.a2hs-go{
  flex-shrink:0;
  padding:6px 12px;border-radius:999px;
  background:#007aff;color:#fff;
  font-size:12px;font-weight:600;
  white-space:nowrap;
}
html[data-theme="dark"] .a2hs-go{background:#0a84ff}
.a2hs-close{
  width:28px;height:28px;border:none;border-radius:50%;
  background:rgba(0,0,0,.06);color:var(--text-muted);
  font-size:18px;line-height:1;cursor:pointer;flex-shrink:0;
  position:relative;z-index:2;pointer-events:auto;
}
html[data-theme="dark"] .a2hs-close{background:rgba(255,255,255,.12);color:rgba(255,255,255,.8)}

/* 版本更新弹窗 */
body.app-update-open{overflow:hidden}
.app-update-modal{
  position:fixed;inset:0;z-index:120;
  display:flex;align-items:center;justify-content:center;
  padding:20px 16px;
}
.app-update-modal[hidden]{display:none!important}
.app-update-backdrop{
  position:absolute;inset:0;
  background:var(--overlay-mask,rgba(0,0,0,.65));
  backdrop-filter:blur(3px);
}
.app-update-dialog{
  position:relative;z-index:1;
  width:min(100%, 380px);
  max-height:min(86vh, 640px);
  display:flex;flex-direction:column;
  background:#fff;
  border-radius:20px;
  overflow:hidden;
  box-shadow:0 20px 60px rgba(0,0,0,.22);
  animation:appUpdateIn .28s ease;
}
html[data-theme="dark"] .app-update-dialog{background:#1c1c1e}
@keyframes appUpdateIn{
  from{opacity:0;transform:translateY(16px) scale(.96)}
  to{opacity:1;transform:none}
}

.app-update-head{
  position:relative;
  padding:16px 16px 12px;
  text-align:center;
  background:linear-gradient(160deg,#4a90d9 0%,#5b7cfa 55%,#6c5ce7 100%);
  color:#fff;
}
.app-update-rocket{
  display:block;width:72px;height:48px;margin:0 auto 6px;
}
.app-update-head h2{
  margin:0 0 8px;font-size:18px;font-weight:700;
}
.app-update-version{
  display:inline-block;margin:0;
  padding:4px 14px;font-size:13px;font-weight:600;letter-spacing:.02em;
  border-radius:999px;
  background:rgba(255,255,255,.22);
  border:1px solid rgba(255,255,255,.35);
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
}
.app-update-close{
  position:absolute;top:10px;right:10px;
  width:32px;height:32px;border:none;border-radius:50%;
  background:rgba(255,255,255,.2);color:#fff;
  font-size:20px;line-height:1;cursor:pointer;
}
.app-update-close[hidden]{display:none!important}

.app-update-body{
  flex:1;min-height:0;
  padding:16px 18px 8px;
  overflow:auto;-webkit-overflow-scrolling:touch;
}
.app-update-note{
  font-size:14px;line-height:1.65;color:var(--text);
  word-break:break-word;
}
.app-update-note p{margin:0 0 10px}
.app-update-note p:last-child{margin-bottom:0}
.app-update-note ul,.app-update-note ol{
  margin:0 0 10px;padding-left:20px;
}
.app-update-note li{margin-bottom:6px}
.app-update-note img{max-width:100%;border-radius:8px;margin:6px 0}
.app-update-note strong,.app-update-note b{font-weight:600}

.app-update-progress{padding:8px 0 4px}
.app-update-progress[hidden]{display:none!important}
.app-update-progress-track{
  height:6px;border-radius:999px;
  background:rgba(0,0,0,.08);overflow:hidden;
  margin-bottom:10px;
}
html[data-theme="dark"] .app-update-progress-track{background:rgba(255,255,255,.12)}
.app-update-progress-track i{
  display:block;height:100%;width:0;border-radius:999px;
  background:linear-gradient(90deg,#4a90d9,#6c5ce7);
  transition:width .12s linear;
}
.app-update-progress-text{
  margin:0;text-align:center;font-size:13px;color:var(--text-muted);
}

.app-update-foot{
  padding:12px 18px calc(16px + env(safe-area-inset-bottom,0px));
  border-top:1px solid rgba(0,0,0,.06);
  background:#fff;
}
html[data-theme="dark"] .app-update-foot{
  background:#1c1c1e;border-color:rgba(255,255,255,.08);
}
.app-update-btn{
  display:block;width:100%;
  min-height:48px;border:none;border-radius:999px;
  background:linear-gradient(135deg,#4a90d9 0%,#6c5ce7 100%);
  color:#fff;font-size:16px;font-weight:600;
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  box-shadow:0 8px 20px rgba(74,144,217,.28);
}
.app-update-btn:active{opacity:.9}
.app-update-btn:disabled{opacity:.75;cursor:wait}

.app-update-modal.is-updating .app-update-foot{
  border-top-color:transparent;
}

.content-page{width:100%;max-width:none}
.back-link{
  display:inline-block;margin-bottom:16px;
  color:var(--text-muted);text-decoration:none;font-size:14px;
}
.back-link:hover{color:var(--primary)}
.page-card{
  background:var(--panel-bg);border-radius:18px;
  padding:28px 24px;box-shadow:var(--panel-shadow);
  border:1px solid var(--panel-border);
}
.page-card h1{font-size:22px;color:var(--primary);margin-bottom:16px}
.page-body{font-size:15px;line-height:1.8;color:var(--text)}
.page-body h3{margin:16px 0 8px;font-size:16px}
.page-body p{margin-bottom:12px}
.page-body ul,.page-body ol{padding-left:22px;margin-bottom:12px}
.page-body li{margin-bottom:6px}

.contact-heading{
  text-align:center;font-size:22px;font-weight:800;
  color:var(--primary);margin-bottom:20px;
}
.contact-list{display:flex;flex-direction:column;gap:12px}
.contact-card{
  display:flex;align-items:center;gap:14px;
  background:var(--panel-bg);border-radius:18px;
  padding:16px;text-decoration:none;color:inherit;
  box-shadow:var(--panel-shadow);border:1px solid var(--panel-border);
  transition:transform .15s;
  -webkit-tap-highlight-color:transparent;
}
.contact-card:active{transform:scale(.98)}
.contact-icon{
  width:48px;height:48px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:#fff;flex-shrink:0;
}
.contact-icon svg{width:24px;height:24px}
.contact-info{display:flex;flex-direction:column;gap:4px;min-width:0}
.contact-info strong{font-size:15px;font-weight:700}
.contact-info em{font-style:normal;font-size:13px;color:var(--primary);word-break:break-all}
.empty{text-align:center;padding:28px;color:var(--text-muted)}

@media(max-width:640px){
  .home-footer{display:none}
  .clock{font-size:56px}
  .site-title{font-size:21px}
  .container{padding:24px 12px calc(var(--tabbar-h) + 20px + env(safe-area-inset-bottom,0px))}
  .meta{display:flex;flex-direction:column;gap:4px;align-items:center}
  .meta .weather{margin-left:0}
  .nav-grid{gap:18px 4px}
}
@media(min-width:641px){
  :root{--app-icon-size:68px}
  .nav-grid{grid-template-columns:repeat(5,1fr);gap:18px 12px}
  .dock-item .tab-label{
    display:block;font-size:10px;color:var(--footer-muted);margin-top:6px;
    max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;
  }
}
@media(min-width:768px){
  .container{padding-left:32px;padding-right:32px}
  .nav-grid{grid-template-columns:repeat(6,1fr);gap:24px 16px}
  :root{--app-icon-size:72px}
}
@media(min-width:1024px){
  .container{padding-left:48px;padding-right:48px}
  .nav-grid{grid-template-columns:repeat(8,1fr);gap:28px 20px}
  :root{--app-icon-size:76px}
}
@media(max-width:380px){
  :root{--app-icon-size:60px}
  .nav-grid{gap:16px 2px}
  .nav-card-title{font-size:11px}
  .dock-wrap{padding:0 8px calc(8px + env(safe-area-inset-bottom,0px))}
  .dock-bar{padding:9px 10px;border-radius:30px}
}
