/* ==========================================================================
   home.css — 简报 BRIEF 极简媒体首页
   设计方向：纯白 + 单主色强调 + 极致简约 + 全屏流式
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. 设计令牌
   -------------------------------------------------------------------------- */
:root{
  --bg:            #ffffff;
  --surface:       #ffffff;
  --surface-soft:  #f6f6f8;
  --cat-veil:      rgba(255,255,255,.84);
  --ink:           #2c2c35;
  --ink-2:         #565662;
  --ink-3:         #a2a2ae;
  --hairline:      #ececef;
  --accent:        #2456f5;
  --accent-deep:   #1a3fcc;
  --accent-soft:   rgba(36, 86, 245, .08);
  --sakura:        #e07a9e; /* 樱花色：子分类标签专用，柔和区分于母分类的强调蓝 */

  --font-serif: "Iowan Old Style", "Noto Serif SC", "Songti SC", "STSong", "SimSun", serif;
  --font-sans:  "PingFang SC", "Avenir Next", "Hiragino Sans GB", "Helvetica Neue", "Microsoft YaHei", sans-serif;
  /* 元信息（日期·阅读时长）专用字体：单点改这里即可整站统一换字 */
  --font-meta: var(--font-serif);

  --wrap:        1180px;
  --gutter:      clamp(16px, 4vw, 40px);
  --title-hero:  clamp(1.9rem, 4.4vw, 3.2rem);
  --ease:        cubic-bezier(.22, .61, .36, 1);
  --ring:        0 0 0 3px rgba(36, 86, 245, .35);
}

/* --------------------------------------------------------------------------
   1b. 黑夜模式 · 主题令牌（html[data-theme="dark"]）
   由顶部导航开关切换，已选偏好存 localStorage('site-theme')，
   未选择时跟随系统 prefers-color-scheme。
   -------------------------------------------------------------------------- */
html[data-theme="dark"]{
  --bg:            #101116;
  --surface:       #171820;
  --surface-soft:  #1e2029;
  --cat-veil:      rgba(14,18,27,.8);
  --ink:           #e7e8ee;
  --ink-2:         #a8aab6;
  --ink-3:         #6d6f7c;
  --hairline:      #2a2c38;
  --accent:        #6c8bff;
  --accent-deep:   #5070e8;
  --accent-soft:   rgba(108,143,255,.14);
  --sakura:        #f3a9c4; /* 樱花色（深色下提亮以保证可读性） */
  --ring:          0 0 0 3px rgba(108,143,255,.38);
  /* 深色下的纸感阴影（弱化并偏蓝） */
  --shadow-soft:   0 1px 2px rgba(0,0,0,.3), 0 10px 30px rgba(0,0,0,.28);
}
html[data-theme="dark"] body{ background:var(--bg); color:var(--ink) }
/* 导航毛玻璃：深色玻璃 */
html[data-theme="dark"] .site-header{
  background:rgba(16,17,22,.72);
  border-bottom-color:rgba(42,44,56,.75);
}
/* 搜索框 / 分页 / 常见纯白块 */
html[data-theme="dark"] .search__input{ background:var(--surface-soft); }
html[data-theme="dark"] .search__input:hover{ background:#242632; }
html[data-theme="dark"] .search__input:focus{
  background:var(--surface); box-shadow:0 0 0 1.5px var(--accent), 0 8px 22px rgba(108,143,255,.14);
}

/* 轮播文字阴影：深色下图亮，需更深阴影衬白字 */
html[data-theme="dark"] .hero__title{ text-shadow:0 2px 10px rgba(0,0,0,.45); }
html[data-theme="dark"] .hero__scrim{
  background:linear-gradient(100deg,
    rgba(16,17,22,.86) 0%,
    rgba(16,17,22,.6) 38%,
    rgba(16,17,22,.18) 62%,
    rgba(16,17,22,0) 78%);
}

/* 分页 */
html[data-theme="dark"] .pager__btn{ background:var(--surface); }
html[data-theme="dark"] .pager__num{ background:var(--surface); }

/* 文章正文表格 / 图片阴影 */
html[data-theme="dark"] .article__table td,
html[data-theme="dark"] .article__table th,
html[data-theme="dark"] .article__content th,
html[data-theme="dark"] .article__content td{
  background:var(--surface); border-color:var(--hairline);
}
html[data-theme="dark"] .article__content img,
html[data-theme="dark"] .dapp__content img{ box-shadow:var(--shadow-soft,0 10px 30px rgba(0,0,0,.1)); }

/* 软件商店区（store / dapp 用了大量白卡） */
html[data-theme="dark"] .store__hero{
  background:linear-gradient(180deg, rgba(8,12,28,.4) 42%, rgba(6,10,26,.85) 100%);
}
html[data-theme="dark"] .store__menu,
html[data-theme="dark"] .store__cat,
html[data-theme="dark"] .scar__card,
html[data-theme="dark"] .dapp__about,
html[data-theme="dark"] .dapp__aside,
html[data-theme="dark"] .dapp__gallery,
html[data-theme="dark"] .dapp__log-box{
  background:rgba(23,24,32,.78);
  border-color:rgba(42,44,56,.75);
  box-shadow:var(--shadow-soft,0 18px 44px rgba(0,0,0,.24));
}
html[data-theme="dark"] .dapp__g-nav{ background:var(--surface); color:var(--ink); }
html[data-theme="dark"] .dapp__g-dot{ background:rgba(255,255,255,.35) }
html[data-theme="dark"] .dapp__g-dot.is-active{ background:#fff }
/* 下载悬浮气泡 / 提示浮层 */
html[data-theme="dark"] .dl-tip{ background:rgba(235,236,244,.95); color:#1b1c24 }

/* —— 暗色补充：搜索页 / 404 输入框（原硬编码纯白） —— */
html[data-theme="dark"] .search-page__input,
html[data-theme="dark"] .notfound__input{
  background:var(--surface-soft); color:var(--ink); border-color:var(--hairline);
}
html[data-theme="dark"] .search-page__input::placeholder,
html[data-theme="dark"] .notfound__input::placeholder{ color:var(--ink-3); }
html[data-theme="dark"] .search-page__input:focus,
html[data-theme="dark"] .notfound__input:focus{
  background:var(--surface); border-color:var(--accent); box-shadow:0 0 0 4px rgba(108,143,255,.14);
}
/* 搜索命中关键词高亮：暗色下转低饱和暗红 */
html[data-theme="dark"] .search-hl{ background:rgba(208,48,48,.18); color:#ff9a9a; }

/* —— 暗色补充：软件详情页顶部白色渐隐遮罩 —— */
html[data-theme="dark"] .dapp__bg-shade{
  background:linear-gradient(180deg, rgba(16,17,22,0) 0%, rgba(16,17,22,.16) 28%, rgba(16,17,22,.62) 58%, rgba(16,17,22,.96) 84%, #101116 100%);
}
/* 详情页毛玻璃白卡 / 数据条 / 分享按钮 / 轮播白卡：转深色玻璃 */
html[data-theme="dark"] .dapp__hero,
html[data-theme="dark"] .dapp__main,
html[data-theme="dark"] .dapp__panel{
  background:rgba(23,24,32,.66);
  border-color:rgba(42,44,56,.75);
  box-shadow:0 18px 44px rgba(0,0,0,.3);
}
html[data-theme="dark"] .dapp__stats{ background:rgba(23,24,32,.5); }
html[data-theme="dark"] .dapp__share{ background:rgba(30,32,41,.82); }

/* 回到顶部悬浮按钮 */
html[data-theme="dark"] .back-top{ background:rgba(23,24,32,.9); }

/* 星标底色与分隔点：暗色下加深对比 */
html[data-theme="dark"] .scar__stars,
html[data-theme="dark"] .dapp__stars{ color:#3a3c48; }
html[data-theme="dark"] .dapp__dot{ color:#454752; }

/* 热门索引悬停：暗色下用亮蓝而非深蓝 */
html[data-theme="dark"] .hot-card:hover .hot-card__idx{ color:#93aaff; }

/* 文章封面/页脚细分隔线：暗色下换成发丝色 */
html[data-theme="dark"] .article__cover-ratio{ border-color:var(--hairline); }
html[data-theme="dark"] .article__foot{ border-top-color:var(--hairline); }

/* --------------------------------------------------------------------------
   2. 基础
   -------------------------------------------------------------------------- */
*{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; }
body{
  background:var(--bg); color:var(--ink);
  font-family:var(--font-sans); font-size:16px; font-weight:400;
  line-height:1.78; letter-spacing:.002em;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; }
img{ max-width:100%; display:block; }

.container{ max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gutter); }
.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
:focus-visible{ outline:none; box-shadow:var(--ring); border-radius:4px; }
.skip-link{
  position:absolute; left:16px; top:12px; z-index:1000;
  background:var(--accent); color:#fff; font-size:14px;
  padding:8px 14px; border-radius:6px;
  transform:translateY(-200%); transition:transform .2s var(--ease);
}
.skip-link:focus{ transform:translateY(0); }
button, input{ font:inherit; color:inherit; }
button{ background:none; border:none; cursor:pointer; }

.kicker{
  font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  color:var(--accent);
}

/* --------------------------------------------------------------------------
   3. 顶部导航条 —— 毛玻璃 + 圆胶囊
   -------------------------------------------------------------------------- */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.72);
  -webkit-backdrop-filter:saturate(180%) blur(18px);
  backdrop-filter:saturate(180%) blur(18px);
  border-bottom:1px solid rgba(226,226,230,.75);
  transition:transform .55s cubic-bezier(.25,.8,.3,1);
}
.site-header.is-hidden{ transform:translateY(-100%); }
.site-header__inner{
  display:flex; align-items:center; gap:clamp(18px, 3vw, 34px);
  min-height:66px;
}

.logo{ display:flex; align-items:center; gap:10px; flex:none; }
.logo__dot{
  width:12px; height:12px; flex:none; border-radius:50%;
  background:var(--accent);
}
.logo__word{
  font-family:var(--font-serif); font-weight:620;
  font-size:20px; letter-spacing:.01em;
}

.nav{ margin-left:clamp(6px, .8vw, 14px); }
.nav__list{ display:flex; gap:2px; }
.nav__link{
  display:inline-block; padding:10px 2px; margin:0 12px;
  font-family:var(--font-serif); font-size:18px; font-weight:600; letter-spacing:.01em; color:var(--ink-2);
  line-height:1; transition:color .45s cubic-bezier(.25,.8,.3,1);
}
.nav__link:hover{ color:var(--ink); }
.nav__link.is-active{ color:var(--accent); }

/* 含子分类的导航项：悬停缓慢下滑下拉菜单 */
.nav__item{ position:relative; }
.nav__dropdown{
  position:absolute; top:calc(100% + 8px); left:0;   /* 左端对齐母分类下，不再居中 */
  width:max-content; max-width:260px;  /* 宽度完全贴合子分类文字，左右都不留空白 */
  padding:8px; border-radius:14px;
  background:var(--surface); border:1px solid var(--hairline);
  box-shadow:0 16px 38px rgba(20,22,35,.12);
  display:flex; flex-direction:column; gap:2px;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .5s cubic-bezier(.25,.8,.3,1), transform .5s cubic-bezier(.25,.8,.3,1), visibility .5s;
}
/* 悬停桥：填补母分类到下拉之间 8px 的透明间隙，鼠标横向/斜向移动时不丢失悬停导致下拉消失 */
.nav__dropdown::before{
  content:""; position:absolute; top:-8px; left:-14px; right:-14px; height:8px; z-index:-1;
}
.nav__item:hover .nav__dropdown,
.nav__item:focus-within .nav__dropdown{
  opacity:1; visibility:visible; pointer-events:auto;
  transform:translateY(0);
}
.nav__dropdown-link{
  padding:9px 13px; border-radius:9px;
  font-family:var(--font-serif); font-size:14.5px; font-weight:500; color:var(--ink-2);
  white-space:nowrap;
  transition:background .4s cubic-bezier(.25,.8,.3,1), color .4s cubic-bezier(.25,.8,.3,1);
}
.nav__dropdown-link:hover{ background:var(--surface-soft); color:var(--ink); }
.nav__dropdown-link.is-active{ color:var(--accent); }
html[data-theme="dark"] .nav__dropdown{ border-color:rgba(255,255,255,.09); }

.header-tools{ display:flex; align-items:center; gap:16px; flex:none; margin-left:auto; }

.search{
  position:relative; display:flex; align-items:center;
}
.search__icon{
  position:absolute; left:13px; color:var(--ink-3); pointer-events:none;
  transition:color .3s cubic-bezier(.25,.8,.3,1);
}
.search__input{
  border:none; border-radius:999px;
  background:var(--surface-soft);
  padding:9px 16px 9px 38px;
  width:clamp(118px, 13vw, 176px); font-size:14px; color:var(--ink);
  transition:background .35s cubic-bezier(.25,.8,.3,1), box-shadow .35s cubic-bezier(.25,.8,.3,1), width .4s cubic-bezier(.25,.8,.3,1);
}
.search__input::placeholder{ color:var(--ink-3); }
.search__input:hover{ background:#eaecf0; }
.search__input:focus{
  background:#fff; outline:none;
  box-shadow:0 0 0 1.5px var(--accent), 0 8px 20px rgba(36,86,245,.14);
  width:clamp(168px, 19vw, 232px);
}
.search:focus-within .search__icon{ color:var(--accent); }

/* 主题切换按钮：渐变描边胶囊球，太阳/月亮渐入式旋转过渡 */
.theme-toggle{
  position:relative; display:inline-flex; align-items:center; justify-content:center;
  width:36px; height:36px; flex:none; border-radius:999px;
  background:var(--surface);
  color:var(--ink-2);
  transition:transform .45s cubic-bezier(.25,.8,.3,1), color .45s cubic-bezier(.25,.8,.3,1),
    background .45s cubic-bezier(.25,.8,.3,1);
}
/* 渐变描边的质感圆环 */
.theme-toggle::before{
  content:""; position:absolute; inset:-1px; border-radius:999px; padding:1px;
  background:linear-gradient(135deg, var(--hairline), transparent 40%, var(--hairline), rgba(36,86,245,.18));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  opacity:.9; transition:opacity .45s cubic-bezier(.25,.8,.3,1);
}
.theme-toggle:hover{ color:var(--accent); transform:translateY(-1px); }
.theme-toggle:hover::before{ opacity:1; }

/* 内部球体：太阳/月亮互为叠放，切换时旋转 + 缩放淡入 */
.theme-toggle__orb{
  position:relative; width:22px; height:22px; flex:none;
}
.theme-toggle__icon{
  position:absolute; inset:0; margin:auto;
  will-change:transform, opacity;
  transition:transform .5s cubic-bezier(.25,.8,.3,1), opacity .5s cubic-bezier(.25,.8,.3,1),
    color .5s cubic-bezier(.25,.8,.3,1);
}

/* 太阳：暖金色渐变，带呼吸光晕，配合光照（浅色） */
.theme-toggle__icon--sun{
  color:#f5a623;
  filter:drop-shadow(0 0 4px rgba(245,166,35,.55));
  animation:themeSunGlow 4s ease-in-out infinite;
}
@keyframes themeSunGlow{
  0%,100%{ filter:drop-shadow(0 0 3px rgba(245,166,35,.45)); }
  50%{ filter:drop-shadow(0 0 6px rgba(245,166,35,.75)); }
}
/* 月亮：贴合夜空的柔和青白，带在暗色下可见的微光晕 */
.theme-toggle__icon--moon{
  color:#aeb8ff;
  filter:drop-shadow(0 0 4px rgba(150,168,255,.5));
}

/* 亮色模式（当前浅色）：显示太阳转正、月亮缩隐在下 */
html:not([data-theme="dark"]) .theme-toggle__icon--sun{
  transform:rotate(0deg) scale(1); opacity:1;
}
html:not([data-theme="dark"]) .theme-toggle__icon--moon{
  transform:rotate(-90deg) scale(.4); opacity:0;
}

/* 暗色模式：显示月亮转正、太阳缩隐 */
html[data-theme="dark"] .theme-toggle__icon--sun{
  transform:rotate(140deg) scale(.4); opacity:0;
}
html[data-theme="dark"] .theme-toggle__icon--moon{
  transform:rotate(0deg) scale(1); opacity:1;
}

/* 暗色下按钮底座与描边稍微沉一点 */
html[data-theme="dark"] .theme-toggle{ background:var(--surface); color:var(--ink-2); }
html[data-theme="dark"] .theme-toggle:hover{ color:#b9c4ff; }

/* --------------------------------------------------------------------------
   4. 幻灯片轮播 —— 图文一体、叠在图上
   -------------------------------------------------------------------------- */
.hero{ margin-top:clamp(18px, 3vw, 34px); padding-inline:clamp(12px, 2vw, 24px); }
.hero__viewport{ overflow:hidden; border-radius:26px; }
.hero__track{ display:flex; transition:transform .7s var(--ease); }

.hero__slide{ min-width:100%; padding:2px; }
.hero__card{
  position:relative; overflow:hidden;
  height:clamp(360px, 58vh, 540px);
  border-radius:24px;
}
.hero__img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center;
}
.hero__scrim{
  position:absolute; inset:0;
  background:linear-gradient(100deg,
    rgba(255,255,255,.88) 0%,
    rgba(255,255,255,.72) 34%,
    rgba(255,255,255,.28) 62%,
    rgba(255,255,255,0) 78%);
}

.hero__inner{
  position:absolute; inset:0;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding:clamp(26px, 4vw, 48px) clamp(24px, 5vw, 64px);
}
.hero__num{
  position:absolute; top:clamp(20px, 3vw, 34px); right:clamp(22px, 4vw, 48px);
  font-family:var(--font-serif); font-size:clamp(1.3rem, 2.6vw, 1.9rem);
  font-weight:300; color:var(--accent); letter-spacing:.04em;
}

.hero__body{ display:flex; flex-direction:column; align-items:flex-start; gap:12px; max-width:56ch; }
.hero__title{
  font-family:var(--font-serif); font-size:var(--title-hero);
  line-height:1.18; font-weight:600; letter-spacing:-.01em; text-wrap:balance;
  color:var(--ink); text-shadow:0 1px 0 rgba(255,255,255,.35);
}
.hero__title a{ transition:color .2s var(--ease); }
.hero__title a:hover{ color:var(--accent); }
.hero__summary{ color:var(--ink-2); font-size:clamp(.95rem, 1.4vw, 1.08rem); max-width:44ch; }

.hero__foot{ display:flex; align-items:center; gap:22px; margin-top:2px; }
.link-more{
  display:inline-flex; align-items:center; gap:6px;
  font-size:14px; font-weight:600; color:var(--accent);
}
.link-more__arrow{ transition:transform .2s var(--ease); }
.link-more:hover .link-more__arrow{ transform:translateX(4px); }
.hero__meta{ color:var(--ink-3); font-size:13px; }

/* 控制条 */
.hero__controls{
  display:flex; align-items:center; justify-content:center;
  padding-top:clamp(12px, 2vh, 18px); padding-inline:6px;
}
.hero__dots{ display:flex; align-items:center; gap:8px; }
.hero__dot{
  width:7px; height:7px; border-radius:999px; background:var(--hairline);
  transition:all .25s var(--ease);
}
.hero__dot:hover{ background:var(--ink-3); }
.hero__dot[aria-selected="true"]{ width:24px; background:var(--accent); }

/* --------------------------------------------------------------------------
   5. 文章区 —— 简约单列通栏
   -------------------------------------------------------------------------- */
.cards{
  margin-top:clamp(10px, 2vw, 30px);
  padding:clamp(6px, 1vw, 14px) 0 clamp(60px, 10vw, 110px);
}

.cards__head{
  display:flex; align-items:baseline; gap:12px;
  margin-bottom:clamp(6px, 1.2vw, 12px);
}
.cards__tick{ width:4px; height:16px; border-radius:2px; background:var(--accent); align-self:center; }
.cards__title{ font-family:var(--font-serif); font-size:clamp(1.5rem, 3vw, 1.8rem); font-weight:620; }
.cards__muted{ color:var(--ink-3); font-size:12.5px; letter-spacing:.1em; text-transform:uppercase; }

/* --------------------------------------------------------------------------
   5.0 分类页头 —— 玻璃光晕 + 衬线大标题 + 文章数（无框轻盈风）
   -------------------------------------------------------------------------- */
.cat-hero{
  position:relative; isolation:isolate; overflow:hidden;
  margin-top:clamp(22px, 4vw, 42px);
  border-radius:clamp(20px, 3vw, 30px);
  background:var(--surface-soft);
  padding:clamp(38px, 6vw, 72px) clamp(24px, 4.5vw, 56px);
  border:1px solid transparent;
}
.cat-hero__bg{ position:absolute; inset:0; z-index:-1; pointer-events:none; }
.cat-hero__back{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  filter:blur(30px) saturate(1.05); transform:scale(1.2); }
.cat-hero__veil{ position:absolute; inset:0; background:var(--cat-veil); }
.cat-hero__glow{ position:absolute; border-radius:50%; filter:blur(56px); opacity:.7; }
.cat-hero__glow--1{ width:min(360px,60vw); height:min(360px,60vw); top:-140px; left:-90px;
  background:radial-gradient(circle, var(--accent-soft), transparent 68%); }
.cat-hero__glow--2{ width:min(300px,52vw); height:min(300px,52vw); bottom:-150px; right:-70px;
  background:radial-gradient(circle, var(--accent-soft), transparent 70%); }
.cat-hero__grain{
  position:absolute; inset:0; opacity:.5; mix-blend-mode:soft-light;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
}
.cat-hero__inner{ position:relative; display:flex; flex-direction:column; gap:14px; }
.cat-hero__kicker{
  align-self:flex-start; font-size:11.5px; font-weight:650; letter-spacing:.3em; text-transform:uppercase;
  color:var(--accent);
}
.cat-hero__row{ display:flex; align-items:baseline; gap:16px; flex-wrap:wrap; }
/* 子分类页头层级：母分类 › 子分类（覆盖 kicker 的大字距/大写，适配中文） */
.cat-hero__kicker--crumb{ letter-spacing:.08em; text-transform:none; }
.cat-hero__crumb{ color:var(--accent); text-decoration:none; transition:opacity .3s var(--ease); }
.cat-hero__crumb:hover{ opacity:.72; }
.cat-hero__crumb-sep{ margin:0 8px; color:var(--ink-3); font-weight:400; }
.cat-hero__title{
  font-family:var(--font-serif);
  font-size:clamp(2.1rem, 5vw, 3.4rem); font-weight:650; letter-spacing:-.02em; line-height:1.06;
  color:var(--ink);
}
.cat-hero__count{
  flex:none; font-size:13.5px; font-weight:600; color:var(--ink-2);
  background:var(--surface); border:1px solid var(--hairline);
  padding:7px 14px; border-radius:999px;
}
.cat-hero__sub{
  color:var(--ink-2); font-size:15.5px; line-height:1.75; max-width:56ch; margin:0;
}
@media (max-width:520px){
  .cat-hero{ padding:30px 22px; }
  .cat-hero__row{ gap:12px; }
  .cat-hero__sub{ font-size:14.5px; }
}

/* 暗色主题：柔光更亮、噪声更暗、加发丝描边 */
html[data-theme="dark"] .cat-hero{ border-color:var(--hairline); }
html[data-theme="dark"] .cat-hero__glow{ opacity:.9; }
html[data-theme="dark"] .cat-hero__grain{ opacity:.22; mix-blend-mode:normal; }

/* --------------------------------------------------------------------------
   5.5 轮播下方文字广告位 —— 对外招商：一行 5 列、单行、「广告」标识
    -------------------------------------------------------------------------- */
.adverts{ margin-top:clamp(16px, 2.4vw, 26px); padding-inline:clamp(12px, 2vw, 24px); } /* 与上方图片轮播左右对齐 */
.adverts__grid{
  display:grid;
  grid-template-columns:repeat(5, minmax(0, 1fr));  /* 固定一行 5 条，位置始终不变 */
  gap:clamp(8px, 1.2vw, 14px);
}
.advert{
  display:flex; align-items:center; gap:7px;
  min-width:0;
  padding:10px 12px;
  border-radius:12px;
  background:var(--surface-soft);
  text-decoration:none;
  transition:transform .45s cubic-bezier(.25,.8,.3,1), background .45s cubic-bezier(.25,.8,.3,1), box-shadow .45s cubic-bezier(.25,.8,.3,1);
}
.advert__mark{
  flex:none;
  font-size:10px; font-weight:700; letter-spacing:.04em;
  color:var(--accent);
  background:var(--accent-soft);
  padding:2px 6px; border-radius:6px;
}
.advert__txt{
  flex:1; min-width:0; max-width:100%;
  font-size:14px; font-weight:500; letter-spacing:.01em;
  line-height:1.2;
  color:var(--ink);
  white-space:nowrap; overflow:hidden; text-overflow:clip;  /* 单行显示，超长由脚本缩小字号适配 */
  transition:color .45s cubic-bezier(.25,.8,.3,1);
}
.advert:hover{
  transform:translateY(-1px);   /* 恢复悬浮位移，背景色保持不变 */
  box-shadow:0 10px 26px -18px rgba(36,86,245,.5);
}
.advert:hover .advert__txt{ color:var(--accent); }

/* --------------------------------------------------------------------------
   6. 热门推荐 —— 一行 4 列、无图、文字索引式
    -------------------------------------------------------------------------- */
.hot{
  margin-top:clamp(30px, 5vw, 54px);
  padding-inline:0; /* 覆盖 container 继承的 gutter，使标题与下方「最新」左对齐 */
}
.hot__head{
  display:flex; align-items:baseline; gap:12px;
  margin-bottom:clamp(18px, 2.4vw, 26px);
}
.hot__title{ font-family:var(--font-serif); font-size:clamp(1.5rem, 3vw, 1.8rem); font-weight:620; }
.hot__muted{ color:var(--ink-3); font-size:12.5px; letter-spacing:.1em; text-transform:uppercase; }

.hot-grid{
  display:grid; grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:clamp(14px, 2vw, 22px);
  padding-inline:clamp(12px, 2vw, 24px);
}
.hot-card{
  display:flex; flex-direction:column; gap:14px;
  padding:clamp(16px, 2vw, 24px); border-radius:16px;
  text-decoration:none;
  transition:background .55s cubic-bezier(.25,.8,.3,1);
}
.hot-card:hover{ background:var(--surface-soft); }
.hot-card__idx{
  font-family:var(--font-serif); font-size:16px; font-weight:700;
  color:var(--accent);
  letter-spacing:.02em;
  transition:color .55s cubic-bezier(.25,.8,.3,1), transform .55s cubic-bezier(.25,.8,.3,1);
}
.hot-card:hover .hot-card__idx{ color:#1a46c4; transform:translateY(-2px); }
.hot-card__title{
  font-family:var(--font-serif); font-size:clamp(1.05rem, 1.5vw, 1.28rem);
  font-weight:600; line-height:1.5; letter-spacing:-.006em;
  transition:color .45s cubic-bezier(.25,.8,.3,1);
}
.hot-card:hover .hot-card__title{ color:var(--accent); }

@media (max-width: 1024px){ .hot-grid{ grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width: 560px){ .hot-grid{ grid-template-columns:repeat(1, minmax(0,1fr)); } }

.line-list{ display:flex; flex-direction:column; }
.cards__empty{ padding:32px 4px; color:var(--ink-3); font-size:15px; }

.line-item__link{
  display:flex; align-items:center; gap:clamp(24px, 5vw, 64px);
  padding:clamp(22px, 3vw, 30px) clamp(12px, 2vw, 24px);
  border-radius:16px;
  transition:background .55s cubic-bezier(.25,.8,.3,1), box-shadow .55s cubic-bezier(.25,.8,.3,1);
}
.line-item__link:hover{ background:var(--surface-soft); }
.line-item__body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:10px; }
.line-item__top{
  display:flex; align-items:center; gap:16px;
}
.line-item__tag{
  font-size:12px; font-weight:600; letter-spacing:.1em;
  color:var(--accent);
}
/* 有子分类时，母分类后追加细分隔线，分隔母分类与右侧樱花色子分类 */
.line-item__tag.has-sub::after{
  content:""; display:inline-block; width:1px; height:12px; margin-left:14px;
  background:var(--hairline);
  transform:translateY(0);
}
/* 子分类：樱花色、柔和，显示在母分类右侧 */
.line-item__tag--sub{
  color:var(--sakura); font-weight:550; letter-spacing:.08em;
}
.line-item__meta{ color:var(--ink-3); font-size:13px; font-variant-numeric:tabular-nums; }
.line-item__title{
  font-family:var(--font-serif); font-size:clamp(1.16rem, 1.9vw, 1.5rem);
  line-height:1.55; font-weight:590; letter-spacing:-.006em;
  transition:color .45s cubic-bezier(.25,.8,.3,1);
}
.line-item__link:hover .line-item__title{ color:var(--accent); }
.line-item__summary{
  color:var(--ink-2); font-size:clamp(14px, 1.2vw, 15px); line-height:1.7;
  max-width:62ch;
}

.line-item__tags{ display:flex; flex-wrap:wrap; gap:4px 18px; margin-top:15px; }
.line-item__tag-chip{
  position:relative; padding-left:13px;
  color:var(--ink-2); font-size:13.5px; letter-spacing:.02em;
  transition:color .35s cubic-bezier(.25,.8,.3,1);
}
.line-item__tag-chip::before{
  content:""; position:absolute; left:0; top:50%;
  width:4px; height:4px; border-radius:50%;
  background:var(--accent);
  transform:translateY(-50%);
  opacity:.85;
}
.line-item__link:hover .line-item__tag-chip{ color:var(--accent); }

.line-item__cover{
  flex:none; width:clamp(180px, 26vw, 260px);
  aspect-ratio:16 / 10; border-radius:14px; overflow:hidden;
  background:var(--surface-soft);
  transition:transform .55s cubic-bezier(.25,.8,.3,1);
}
.line-item__link:hover .line-item__cover{ transform:scale(1.02); }
.line-item__cover img{ width:100%; height:100%; object-fit:cover; }

/* --------------------------------------------------------------------------
   5.1 瀑布流加载（最新 · 滚动分批显现）
   -------------------------------------------------------------------------- */
.line-list{ position:relative; }
.line-list__sentinel{ position:absolute; left:0; right:0; bottom:0; height:1px; }

/* 未显现的条目：占位但不可见，显现时才展开 */
.line-item--pending{
  display:none;
}

/* 单条显现动画：缓慢淡入 + 轻微上移 */
.line-item.is-revealing{
  animation:feed-in .62s cubic-bezier(.22, .8, .31, 1) both;
}
@keyframes feed-in{
  from{ opacity:0; transform:translateY(20px); }
  to{ opacity:1; transform:translateY(0); }
}

/* 单条收拢动画（循环重置时使用） */
.line-item.is-hiding{
  animation:feed-out .5s cubic-bezier(.4, 0, .6, 1) both;
}
@keyframes feed-out{
  from{ opacity:1; transform:translateY(0); }
  to{ opacity:0; transform:translateY(-14px); }
}

/* “已展示全部，重启循环” 提示 */
.line-list__status{
  display:flex; align-items:center; justify-content:center; gap:12px;
  padding:40px 0 12px; margin-top:16px;
  color:var(--ink-3); font-size:13.5px; letter-spacing:.06em;
  animation:feed-in .6s cubic-bezier(.22, .8, .31, 1) both;
}
.line-list__ring{
  width:13px; height:13px; border-radius:50%;
  border:2px solid rgba(36,86,245,.18);
  border-top-color:var(--accent);
  animation:ring-spin .85s linear infinite;
}
@keyframes ring-spin{ to{ transform:rotate(360deg); } }

@media (prefers-reduced-motion: reduce){
  .line-item--pending{ display:none; }
  .line-item.is-revealing,
  .line-item.is-hiding,
  .line-list__status{ animation:none !important; opacity:1 !important; transform:none !important; }
}

/* --------------------------------------------------------------------------
   6. 分页
   -------------------------------------------------------------------------- */
.pager{
  display:flex; align-items:center; justify-content:flex-start; gap:20px;
  padding:36px 0 8px;
}
.pager__btn{
  padding:9px 18px; border-radius:999px; border:1px solid var(--line, #e7e7ec);
  font-size:14px; color:var(--ink-2); background:#fff; cursor:pointer;
  transition:color .45s cubic-bezier(.25,.8,.3,1), border-color .45s, background .45s;
}
.pager__btn:hover{ background:var(--surface-2,#f5f5f7); color:var(--ink); }
.pager__btn.is-disabled{ opacity:.38; pointer-events:none; cursor:default; }
.pager__btn.is-empty{ visibility:hidden; pointer-events:none; }
.pager__nums{ display:flex; gap:6px; }
.pager__num{
  min-width:38px; height:38px; padding:0 4px; border-radius:10px;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:14px; color:var(--ink-2); transition:background .45s, color .45s;
}
.pager__num:hover{ background:var(--surface-2,#f5f5f7); }
.pager__num.is-active{ background:var(--accent); color:#fff; }

/* --------------------------------------------------------------------------
   6.1 文章详情页 —— 高端大图编辑部（正文 900px · 标题 3.1rem · 配图 16:9 带细框）
   -------------------------------------------------------------------------- */
.reading-bar{
  position:fixed; top:0; left:0; right:0; height:3px; z-index:120;
  background:var(--accent); transform:scaleX(0); transform-origin:left center;
  pointer-events:none;
}
.article{ max-width:900px; margin:0 auto; padding:clamp(18px, 4.5vw, 48px) 24px clamp(70px, 12vw, 130px); }

/* 顶部栏：左对齐的分类标签 */
.article__bar{ display:flex; align-items:center; justify-content:flex-start; gap:14px; margin-bottom:34px; }
/* 分类标签：缓慢滑入色块 + 微微上浮 + 柔和阴影 + 右侧小箭头 */
.article__bar-type{
  position:relative; isolation:isolate; overflow:hidden;
  padding:6px 18px; border-radius:999px;
  background:rgba(29,78,216,.08); color:var(--accent);
  font-size:12.5px; letter-spacing:.06em; font-weight:600;
  display:inline-flex; align-items:center; gap:6px; backface-visibility:hidden;
  transition:color .5s var(--ease), transform .5s var(--ease), box-shadow .5s var(--ease);
}
/* 铺入的实色块（自左 .5s 缓慢铺入） */
.article__bar-type::before{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  background:var(--accent);
  transform:translateX(-101%); transform-origin:left;
  transition:transform .5s var(--ease), background .5s var(--ease);
}
.article__bar-type:hover{ color:#fff; transform:translateY(-2px);
  box-shadow:0 10px 22px -10px rgba(36,86,245,.55); }
.article__bar-type:hover::before{ transform:translateX(0); }
/* 子分类标签：樱花色胶囊，与母分类的强调蓝区分；hover 铺入樱花色实色块 */
.article__bar-type--sub{ background:rgba(224,122,158,.10); color:var(--sakura); }
.article__bar-type--sub::before{ background:var(--sakura); }
.article__bar-type--sub:hover{ box-shadow:0 10px 22px -10px rgba(224,122,158,.55); }
/* 母分类与子分类之间的细分隔线 */
.article__bar-sep{ width:1px; height:14px; background:var(--hairline); flex:none; }

.article__head{ text-align:left; margin-bottom:36px; }
.article__title{ font-family:var(--font-serif); font-size:clamp(1.7rem, 4vw, 2.25rem); font-weight:640; line-height:1.38; letter-spacing:-.012em; margin-bottom:20px; }
/* 元信息：贴合极简蓝白主题 · 字体经 --font-meta 独立可换 */
.article__meta-rail{
  display:inline-flex; align-items:baseline; flex-wrap:wrap; gap:4px 18px;
  font-family:var(--font-meta); font-weight:500; letter-spacing:.01em;
}
.article__meta-chip{
  display:inline-flex; align-items:baseline; gap:9px;
  font-size:clamp(14px, 1.15vw, 15px); color:var(--ink-3);
  transition:color .45s cubic-bezier(.25,.8,.3,1);
}
.article__meta-chip::before{
  content:''; flex:none; width:5px; height:5px; border-radius:50%;
  background:var(--accent); transform:translateY(-1px);
}
.article__meta-chip:hover{ color:var(--ink-2); }
/* 来源 chip：可跳转时悬停缓慢浮现浅灰圆底 + 文字转主色 */
.article__meta-chip--src{
  position:relative; color:var(--ink-2);
  padding:3px 12px; border-radius:999px; margin:-3px -12px -3px 0;
}
.article__meta-chip--src::before{
  background:var(--accent);
}
.article__meta-chip--src::after{
  content:''; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  background:var(--surface-soft);
  opacity:0; transform:scale(0.9);
  transition:opacity .5s var(--ease), transform .5s var(--ease);
}
.article__meta-chip--src:hover{ color:var(--accent); }
.article__meta-chip--src:hover::after{ opacity:1; transform:scale(1); }

.article__cover{ margin:0 0 30px; }
.article__cover-ratio{ position:relative; display:block; overflow:hidden; border-radius:18px;
  aspect-ratio:16/9; background:var(--ink-3); border:1px solid rgba(226,226,230,.85); }
.article__cover-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }

.article__body{ }
.article__lead{ font-size:clamp(1.2rem, 2.5vw, 1.36rem); line-height:1.85; color:var(--ink); margin-bottom:38px; }
.article__p{ font-size:clamp(17px, 1.7vw, 18.5px); line-height:2; color:var(--ink-2); margin-bottom:28px; }
.article__h2{ display:flex; align-items:flex-start; gap:14px; margin:50px 0 20px;
  font-family:var(--font-serif); font-size:clamp(1.5rem, 2.8vw, 1.78rem); font-weight:660; letter-spacing:-.01em; color:var(--ink); }
.article__h2-rule{ flex:none; width:26px; height:3px; border-radius:3px; margin-top:.74em; background:var(--accent); }
.article__quote{
  position:relative; margin:42px 0; padding:8px 6px 8px 22px; border-left:4px solid var(--accent);
  display:flex; align-items:flex-start; gap:16px;
}
.article__quote .article__quote-mark{
  flex:none; margin-top:-2px; font-size:2.9rem; line-height:1; font-weight:700; color:var(--accent); font-family:Georgia, serif;
}
.article__quote .article__quote-text{ font-family:var(--font-serif); font-size:clamp(1.24rem, 2.5vw, 1.45rem); line-height:1.8; color:var(--ink); }

.article__ul{ margin:0 0 28px; padding-left:8px; list-style:none; }
.article__li{ position:relative; padding:9px 0 9px 26px; font-size:clamp(16px, 1.6vw, 17.5px); line-height:1.85; color:var(--ink-2); }
.article__li::before{ content:''; position:absolute; left:4px; top:50%; transform:translateY(-50%); width:9px; height:9px; border-radius:3px; background:var(--accent); opacity:.85; }
.article__tablewrap{ overflow-x:auto; margin:0 0 30px; }
.article__table{ width:100%; border-collapse:collapse; font-size:15px; line-height:1.7; }
.article__table td,.article__table th{ border:1px solid rgba(226,226,230,.8); padding:11px 14px; color:var(--ink-2); background:#fff; }
.article__table tr:first-child td{ background:var(--surface-soft); font-weight:600; color:var(--ink); }
.article__figure{ margin:42px 0; }
.article__img{ width:100%; border-radius:16px; }
.article__figcap{ text-align:center; color:var(--ink-3); font-size:14px; margin-top:12px; }
.article__hr{ border:0; height:1px; background:linear-gradient(90deg,transparent,var(--line),transparent); margin:44px 0; }

/* TipTap / 兜底正文 HTML 排版 */
.article__content{ display:flow-root; color:var(--ink-2); font-size:clamp(16px, 1.6vw, 17px); line-height:2; }
.article__content > :first-child{ margin-top:0; }
.article__content p{ margin:0 0 24px; color:var(--ink-2); }
.article__content h1{ font-size:clamp(1.45rem,3vw,1.8rem); margin:44px 0 16px; color:var(--ink); }
.article__content h2{ display:flex; align-items:flex-start; gap:14px; font-size:clamp(1.3rem,2.6vw,1.55rem); margin:44px 0 18px; color:var(--ink); }
.article__content h2::before{ content:''; flex:none; width:26px; height:3px; border-radius:3px; margin-top:.74em; background:var(--accent); }
.article__content h3{ font-size:clamp(1.15rem,2vw,1.3rem); margin:36px 0 14px; color:var(--ink); }
.article__content h4{ font-size:clamp(1.05rem,1.7vw,1.15rem); margin:30px 0 12px; color:var(--ink); }
.article__content a{ color:var(--accent); border-bottom:1px solid transparent; transition:border-color .3s; }
.article__content a:hover{ border-color:var(--accent); }
.article__content strong{ color:var(--ink); font-weight:650; }
.article__content ul,.article__content ol{ margin:0 0 26px; padding-left:8px; list-style:none; }
.article__content li{ position:relative; padding:8px 0 8px 26px; font-size:clamp(16px,1.6vw,17.5px); line-height:1.85; color:var(--ink-2); }
.article__content ul>li::before{ content:''; position:absolute; left:4px; top:50%; transform:translateY(-50%); width:9px; height:9px; border-radius:3px; background:var(--accent); opacity:.85; }
.article__content ol{ counter-reset:l; }
.article__content ol>li::before{ counter-increment:l; content:counter(l); position:absolute; left:0; top:2px; width:21px; height:21px; line-height:19px; text-align:center; font-size:12px; font-weight:700; color:var(--accent); background:var(--surface-soft); border:1px solid var(--line); border-radius:6px; }
.article__content blockquote{ margin:30px 0; padding:8px 0 8px 22px; border-left:3px solid var(--accent); color:var(--ink); font-family:var(--font-serif); font-size:clamp(1.16rem,2.3vw,1.34rem); line-height:1.8; }
.article__content blockquote p{ margin:0; color:inherit; }
.article__content img{ display:block; max-width:100%; width:auto; height:auto; max-height:70vh; border-radius:14px; margin:10px auto 24px; box-shadow:var(--shadow-md,0 10px 30px rgba(20,32,60,.1)); cursor:zoom-in; transition:box-shadow .3s,transform .3s; }
.article__content img:hover{ box-shadow:var(--shadow-lg,0 16px 40px rgba(20,32,60,.16)); transform:translateY(-2px); }
.article__content pre{ background:#0f172a; color:#e2e8f0; border-radius:12px; padding:16px 18px; overflow:auto; margin:0 0 24px; line-height:1.7; font-size:13.5px; }
.article__content pre code{ background:none; color:inherit; padding:0; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; }
.article__content code{ background:var(--surface-soft); border-radius:5px; padding:2px 6px; font-size:.92em; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; color:var(--accent); }
.article__content hr{ border:0; height:1px; background:linear-gradient(90deg,transparent,var(--line),transparent); margin:44px 0; }
.article__content table{ width:100%; border-collapse:collapse; overflow:hidden; margin:0 0 26px; font-size:15px; line-height:1.7; }
.article__content th,.article__content td{ border:1px solid rgba(226,226,230,.8); padding:11px 14px; color:var(--ink-2); background:#fff; text-align:left; }
.article__content th,.article__content tr:first-child td{ background:var(--surface-soft); font-weight:600; color:var(--ink); }

.article__tags{ display:flex; justify-content:center; gap:20px; margin:8px 0 0; flex-wrap:wrap; }
.article__tag{ display:inline-flex; align-items:center; font-size:14px; color:var(--ink-3); text-decoration:none; transition:color .5s cubic-bezier(.25,.8,.3,1); }
.article__tag::before{ content:''; display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--accent); margin-right:8px; }
.article__tag:hover{ color:var(--accent); }

.article__foot{
  margin-top:56px; padding-top:30px; border-top:1px solid rgba(226,226,230,.7);
  display:flex; justify-content:space-between; align-items:flex-end; gap:24px; flex-wrap:wrap;
}
.article__nav{ display:flex; flex-direction:column; gap:8px; min-width:0; max-width:340px; }
.article__nav--prev{ text-align:left; margin-right:auto; }
.article__nav--next{ text-align:right; margin-left:auto; }
.article__nav-label{ font-size:13.5px; letter-spacing:.06em; color:var(--ink-3); }
.article__nav-title{ font-family:var(--font-serif); font-size:16px; font-weight:600; color:var(--ink-2); line-height:1.5; transition:color .45s cubic-bezier(.25,.8,.3,1); }
.article__nav:hover .article__nav-title{ color:var(--accent); }

/* --------------------------------------------------------------------------
   5. 软件商店页 —— 谷歌插件商店式：英雄横幅 + 分类胶囊 + 大图卡片网格
   -------------------------------------------------------------------------- */
.store__hero{
  position:relative; height:clamp(300px, 38vw, 420px);
  display:flex; align-items:flex-end; overflow:hidden;
}
.store__hero-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.store__hero-shadow{
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(8,14,36,.02) 42%, rgba(6,12,32,.78) 100%);
}
.store__hero-in{
  position:relative; z-index:1; width:100%;
  padding-bottom:clamp(30px, 5vw, 54px);
  display:flex; flex-direction:column; gap:12px; align-items:flex-start;
}
.store__hero-tag{
  font-size:12px; font-weight:600; letter-spacing:.16em; text-transform:uppercase;
  color:rgba(255,255,255,.86);
}
.store__hero-title{
  font-family:var(--font-serif); font-size:clamp(2.1rem, 5vw, 3.1rem);
  font-weight:650; color:#fff; line-height:1.08; letter-spacing:.01em;
  text-shadow:0 2px 22px rgba(0,0,0,.3); margin:0;
}
.store__hero-sub{ margin:0; font-size:15px; color:rgba(255,255,255,.9); }

.store__inner{ padding-block:clamp(28px, 4vw, 44px) clamp(40px, 6vw, 76px); }
.store__cats{
  display:flex; flex-wrap:wrap; gap:10px; align-items:center;
  margin-bottom:clamp(24px, 3.6vw, 34px);
}
.store__cats-label{ font-size:13px; font-weight:650; color:var(--ink-3); margin-right:6px; letter-spacing:.03em; }
.store__cat{
  display:inline-flex; align-items:center; gap:8px;
  padding:8px 18px; border-radius:999px; border:1px solid var(--hairline);
  background:var(--bg); color:var(--ink-2); font-size:14px; font-weight:500;
  text-decoration:none;
  transition:border-color .45s cubic-bezier(.25,.8,.3,1), background .45s, color .45s, transform .45s;
}
.store__cat-count{ font-size:12px; color:var(--ink-3); font-variant-numeric:tabular-nums; }
.store__cat:hover{ border-color:var(--accent); color:var(--accent); transform:translateY(-1px); }
.store__cat.is-active{ border-color:var(--accent); background:var(--accent); color:#fff; box-shadow:0 8px 18px rgba(36,86,245,.22); }
.store__cat.is-active .store__cat-count{ color:rgba(255,255,255,.85); }

.store__grid{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));
  gap:clamp(18px, 2.6vw, 28px);
}
.scar{
  display:flex; flex-direction:column;
  border:1px solid var(--hairline); border-radius:22px; overflow:hidden;
  background:var(--bg); text-decoration:none;
  transition:border-color .5s cubic-bezier(.25,.8,.3,1), box-shadow .5s cubic-bezier(.25,.8,.3,1), transform .5s cubic-bezier(.25,.8,.3,1);
}
.scar:hover{ border-color:rgba(36,86,245,.4); box-shadow:0 22px 44px rgba(36,86,245,.12); transform:translateY(-5px); }
.scar__shot{ position:relative; display:block; aspect-ratio:16/9; overflow:hidden; background:var(--surface-soft); }
.scar__shot-img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .7s cubic-bezier(.25,.8,.3,1); }
.scar:hover .scar__shot-img{ transform:scale(1.05); }
.scar__shot-cat{
  position:absolute; left:14px; bottom:12px; padding:4px 12px; border-radius:999px;
  background:rgba(255,255,255,.92); color:var(--ink); font-size:12px; font-weight:600;
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  box-shadow:0 2px 10px rgba(0,0,0,.08);
}
.scar__body{ display:flex; flex-direction:column; flex:1; padding:clamp(16px, 2.2vw, 20px); }
.scar__head{ display:flex; align-items:center; gap:12px; }
.scar__logo{
  flex:none; width:46px; height:46px; border-radius:13px;
  display:flex; align-items:center; justify-content:center;
  color:#fff; font-size:20px; font-weight:700; font-family:var(--font-sans);
  box-shadow:0 5px 14px rgba(0,0,0,.14);
}
.scar__id{ flex:1 1 auto; min-width:0; }
.scar__name{ display:flex; align-items:center; gap:8px; font-size:16px; font-weight:650; color:var(--ink); line-height:1.3; white-space:nowrap; }
.scar__hot{ flex:none; padding:1px 8px; border-radius:999px; background:var(--accent-soft); color:var(--accent); font-size:10.5px; font-weight:600; }
.scar__meta{ display:block; margin-top:2px; font-size:12.5px; color:var(--ink-3); }
.scar__go{ flex:none; display:inline-flex; color:var(--ink-3); opacity:0; transform:translateX(-4px); transition:opacity .45s, transform .45s, color .45s; }
.scar:hover .scar__go{ opacity:1; transform:translateX(0); color:var(--accent); }
.scar__desc{
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
  margin-top:12px; font-size:13.5px; line-height:1.65; color:var(--ink-2);
}
.scar__foot{ display:flex; align-items:center; gap:10px; margin-top:16px; padding-top:14px; border-top:1px solid var(--hairline); }
.scar__rating{ display:flex; align-items:center; gap:6px; }
.scar__stars{ position:relative; display:inline-block; line-height:1; font-size:13px; color:#d8d8df; letter-spacing:1px; white-space:nowrap; }
.scar__stars-fill{ position:absolute; left:0; top:0; overflow:hidden; white-space:nowrap; color:var(--accent); }
.scar__rating-num{ font-size:12.5px; font-weight:600; color:var(--ink); font-variant-numeric:tabular-nums; }
.scar__users{ font-size:12px; color:var(--ink-3); }
.scar__btn{ margin-left:auto; padding:7px 16px; border-radius:999px; background:var(--accent); color:#fff; font-size:13px; font-weight:600; transition:background .4s, transform .4s; }
.scar:hover .scar__btn{ background:var(--accent-deep); transform:translateY(-1px); }

/* --------------------------------------------------------------------------
   6. 软件详情页 —— 谷歌插件商店式：信息卡 + 大截图 + 双栏
   -------------------------------------------------------------------------- */
.dapp{ position:relative; isolation:isolate; overflow:hidden; padding-block:clamp(24px, 4vw, 40px) clamp(56px, 8vw, 104px); }
.dapp__inner{ position:relative; z-index:2; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gutter); }
.dapp__bg{ position:absolute; top:0; left:0; right:0; z-index:0; height:min(82vh, 920px); pointer-events:none; overflow:hidden; isolation:isolate; }
.dapp__bg-img{ position:absolute; left:-6%; right:-6%; top:-5%; bottom:-5%; width:112%; height:112%; object-fit:cover; filter:blur(52px) saturate(1.4) brightness(1.02); }
/* 跟随应用主色的极光光晕 —— 让顶部更柔润、色调更贴合应用 */
.dapp__bg::after{
  content:''; position:absolute; inset:-18% -8% auto -8%; height:70%; z-index:1;
  background:
    radial-gradient(60% 55% at 50% 0%, color-mix(in oklab, var(--dapp-accent) 26%, transparent), transparent 68%),
    radial-gradient(46% 42% at 72% 8%, color-mix(in oklab, var(--dapp-accent) 20%, transparent), transparent 62%),
    radial-gradient(40% 40% at 20% 6%, color-mix(in oklab, var(--dapp-accent) 15%, transparent), transparent 58%);
  filter:blur(20px);
}
/* 漂浮光球：缓慢浮动，增强气息感 */
.dapp__bg-orb{ position:absolute; z-index:1; border-radius:50%; background:radial-gradient(circle, color-mix(in oklab, var(--dapp-accent) 55%, transparent) 0%, transparent 62%); filter:blur(30px); animation:dappFloat 13s ease-in-out infinite; }
.dapp__bg-orb--1{ width:min(44vw,380px); height:min(44vw,380px); top:-90px; right:6%; opacity:.5; }
.dapp__bg-orb--2{ width:min(34vw,300px); height:min(34vw,300px); top:10%; left:4%; opacity:.36; animation-delay:-4.2s; }
.dapp__bg-orb--3{ width:min(26vw,240px); height:min(26vw,240px); top:38%; right:20%; opacity:.28; animation-delay:-8.6s; }
@keyframes dappFloat{ 0%,100%{ transform:translateY(0) scale(1);} 50%{ transform:translateY(-20px) scale(1.07);} }
/* 细微颗粒噪点：去塑料感，增加高级质感 */
.dapp__bg-noise{
  position:absolute; inset:0; z-index:2; opacity:.5; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.34'/%3E%3C/svg%3E");
}
.dapp__bg-shade{
  position:absolute; inset:0; z-index:3;
  background:linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.16) 28%, rgba(255,255,255,.62) 58%, rgba(255,255,255,.96) 84%, #ffffff 100%);
}
.dapp__back{ display:inline-flex; align-items:center; gap:8px; color:var(--ink-2); font-size:14px; font-weight:500; text-decoration:none; transition:color .45s cubic-bezier(.25,.8,.3,1); }
.dapp__back svg{ transition:transform .4s; }
.dapp__back:hover{ color:var(--accent); }
.dapp__back:hover svg{ transform:translateX(-3px); }

.dapp__hero{
  display:flex; align-items:center; gap:clamp(18px, 3vw, 26px); flex-wrap:wrap;
  margin-top:clamp(22px, 3.4vw, 30px);
  padding:clamp(20px, 3vw, 28px);
  border:1px solid rgba(255,255,255,.7); border-radius:24px;
  background:rgba(255,255,255,.8);
  -webkit-backdrop-filter:blur(20px) saturate(1.4); backdrop-filter:blur(20px) saturate(1.4);
  box-shadow:0 18px 44px rgba(20,32,60,.08);
}
.dapp__logo{
  flex:none; width:clamp(66px, 8vw, 82px); height:clamp(66px, 8vw, 82px);
  border-radius:24%; display:flex; align-items:center; justify-content:center;
  color:#fff; font-size:clamp(30px, 4vw, 40px); font-weight:700; font-family:var(--font-sans);
  box-shadow:0 10px 24px rgba(0,0,0,.16);
}
.dapp__id{ flex:1 1 auto; min-width:0; }
.dapp__name-row{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.dapp__name{ font-family:var(--font-serif); font-size:clamp(1.8rem, 4vw, 2.3rem); font-weight:620; color:var(--ink); line-height:1.22; }
.dapp__hot{ flex:none; padding:2px 11px; border-radius:999px; background:var(--accent-soft); color:var(--accent); font-size:12px; font-weight:600; }
.dapp__meta{ display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:8px; font-size:13px; color:var(--ink-3); }
.dapp__dot{ color:#c6c6cd; }
.dapp__rating{ display:flex; align-items:center; gap:9px; margin-top:14px; flex-wrap:wrap; }
.dapp__stars{ position:relative; display:inline-block; line-height:1; font-size:15px; color:#d8d8df; letter-spacing:1px; white-space:nowrap; }
.dapp__stars-fill{ position:absolute; left:0; top:0; overflow:hidden; white-space:nowrap; color:var(--accent); }
.dapp__rating-num{ font-size:14px; font-weight:650; color:var(--ink); font-variant-numeric:tabular-nums; }
.dapp__rating-user{ font-size:13px; color:var(--ink-3); }
.dapp__download{
  display:inline-flex; align-items:center; gap:9px;
  padding:14px 30px; border-radius:999px; background:var(--accent);
  color:#fff; font-size:15px; font-weight:600; text-decoration:none; letter-spacing:.02em;
  box-shadow:0 10px 22px rgba(36,86,245,.22);
  transition:background .4s cubic-bezier(.25,.8,.3,1), transform .4s, box-shadow .4s;
}
.dapp__download:hover{ background:var(--accent-deep); transform:translateY(-2px); box-shadow:0 14px 30px rgba(36,86,245,.3); }

/* 复制链接按钮 */
.dapp__share{
  display:inline-flex; align-items:center; gap:7px;
  padding:14px 20px; border-radius:999px; border:1px solid var(--hairline);
  background:rgba(255,255,255,.7); color:var(--ink-2); font-size:14px; font-weight:500; cursor:pointer;
  font-family:inherit; transition:border-color .3s, color .3s, transform .3s, background .3s;
}
.dapp__share:hover{ border-color:var(--accent); color:var(--accent); transform:translateY(-2px); }
.dapp__share.is-copied{ border-color:var(--accent); color:var(--accent); }

/* 数据速览条 */
.dapp__stats{
  display:grid; grid-template-columns:repeat(4, 1fr);
  border:1px solid var(--hairline); border-radius:18px; overflow:hidden;
  margin-bottom:clamp(20px, 3vw, 26px); background:rgba(255,255,255,.55);
}
.dapp__stat{ display:flex; flex-direction:column; align-items:center; gap:4px; padding:16px 10px; text-align:center; }
.dapp__stat + .dapp__stat{ border-left:1px solid var(--hairline); }
.dapp__stat-num{ font-size:clamp(1.05rem, 2vw, 1.3rem); font-weight:650; color:var(--ink); font-variant-numeric:tabular-nums; }
.dapp__stat-label{ font-size:12px; color:var(--ink-3); letter-spacing:.02em; }

/* 侧栏下载卡 */
.dapp__dlcard .dapp__panel-title{ padding-bottom:14px; }
.dapp__dlcard-body{ padding:16px 0 8px; display:flex; flex-direction:column; gap:14px; }
.dapp__dlcard-meta{ display:flex; align-items:baseline; gap:8px; }
.dapp__dlcard-ver{ font-size:15px; font-weight:650; color:var(--ink); }
.dapp__dlcard-spec{ font-size:12px; color:var(--ink-3); }
.dapp__dlcard-btn{
  display:flex; align-items:center; justify-content:center; gap:8px; width:100%;
  padding:13px 0; border:none; border-radius:14px; cursor:pointer;
  background:var(--accent); color:#fff; font-size:15px; font-weight:600; font-family:inherit; letter-spacing:.02em;
  box-shadow:0 10px 22px rgba(36,86,245,.22);
  transition:background .4s, transform .4s, box-shadow .4s;
}
.dapp__dlcard-btn:hover{ background:var(--accent-deep); transform:translateY(-2px); box-shadow:0 14px 30px rgba(36,86,245,.3); }
.dapp__dlcard-os{ display:flex; flex-wrap:wrap; gap:6px; }
.dapp__dlcard-os span{ font-size:11.5px; color:var(--ink-2); background:var(--surface-soft); padding:4px 10px; border-radius:999px; }

.dapp__gallery{ position:relative; margin:clamp(24px, 4vw, 36px) 0 0; border-radius:24px; overflow:hidden; border:1px solid rgba(255,255,255,.7); background:rgba(255,255,255,.35); box-shadow:0 24px 56px rgba(20,32,60,.10); }
.dapp__g-viewport{ overflow:hidden; }
.dapp__g-track{ display:flex; transition:transform .55s cubic-bezier(.25,.8,.3,1); }
.dapp__g-img{ flex:none; width:100%; aspect-ratio:16/9; object-fit:cover; display:block; touch-action:pan-y; user-select:none; -webkit-user-select:none; }
.dapp__g-track.dapp__g-dragging{ cursor:grabbing; transition:none; }
.dapp__g-nav{
  position:absolute; top:50%; transform:translateY(-50%); z-index:2;
  width:42px; height:42px; border-radius:50%;
  background:rgba(255,255,255,.92); color:var(--ink);
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 4px 16px rgba(0,0,0,.16); cursor:pointer; border:none;
  transition:background .3s, color .3s, transform .3s, opacity .3s;
}
.dapp__g-prev{ left:16px; }
.dapp__g-next{ right:16px; }
.dapp__g-nav:hover{ background:#fff; color:var(--accent); }
.dapp__g-prev:hover{ transform:translateY(-50%) translateX(-2px); }
.dapp__g-next:hover{ transform:translateY(-50%) translateX(2px); }
.dapp__g-nav.is-hidden{ opacity:0; pointer-events:none; }
.dapp__g-dots{ position:absolute; left:50%; bottom:16px; transform:translateX(-50%); z-index:2; display:flex; gap:8px; }
.dapp__g-dot{ width:9px; height:9px; border-radius:50%; background:rgba(255,255,255,.6); border:none; padding:0; cursor:pointer; transition:background .3s, width .3s; }
.dapp__g-dot.is-active{ background:#fff; width:22px; border-radius:999px; }

.dapp__log{ display:flex; flex-direction:column; }
.dapp__log-item{ border:1px solid var(--hairline); border-radius:14px; overflow:hidden; background:var(--bg); transition:border-color .4s; }
.dapp__log-item + .dapp__log-item{ margin-top:10px; }
.dapp__log-item.is-open{ border-color:rgba(36,86,245,.4); }
.dapp__log-head{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap; width:100%;
  background:none; border:none; padding:14px 18px; cursor:pointer; text-align:left;
  font:inherit; -webkit-appearance:none;
}
.dapp__log-head:hover .dapp__log-ver{ color:var(--accent); }
.dapp__log-ver{ display:inline-flex; align-items:center; gap:8px; font-size:15px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; transition:color .3s; flex:none; }
.dapp__log-latest{ flex:none; padding:1px 8px; border-radius:999px; background:var(--accent); color:#fff; font-size:10.5px; font-weight:600; line-height:1.5; }
.dapp__log-date{ font-size:12.5px; color:var(--ink-3); }
.dapp__log-arrow{ margin-left:auto; flex:none; display:inline-flex; color:var(--ink-3); transition:transform .4s cubic-bezier(.25,.8,.3,1), color .3s; }
.dapp__log-head:hover .dapp__log-arrow{ color:var(--accent); }
.dapp__log-item.is-open .dapp__log-arrow{ transform:rotate(180deg); }
.dapp__log-notes{ list-style:none; display:none; padding:0 18px 16px; }
.dapp__log-item.is-open .dapp__log-notes{ display:block; }
.dapp__log-note{ position:relative; padding-left:20px; font-size:14px; line-height:1.8; color:var(--ink-2); margin-bottom:6px; }
.dapp__log-note:last-child{ margin-bottom:0; }
.dapp__log-note::before{ content:''; position:absolute; left:0; top:11px; width:5px; height:5px; border-radius:50%; background:var(--accent); opacity:.55; }

.dapp__cols{
  display:grid; grid-template-columns:1fr 320px; gap:clamp(28px, 4.4vw, 48px);
  margin-top:clamp(30px, 4.6vw, 46px); align-items:start;
}
.dapp__main{
  min-width:0;
  padding:clamp(24px, 3vw, 32px);
  border:1px solid rgba(255,255,255,.7); border-radius:24px;
  background:rgba(255,255,255,.8);
  -webkit-backdrop-filter:blur(20px) saturate(1.4); backdrop-filter:blur(20px) saturate(1.4);
  box-shadow:0 18px 44px rgba(20,32,60,.08);
}
.dapp__summ{ padding:clamp(22px, 3vw, 28px); border-radius:18px; background:var(--surface-soft); }
.dapp__kicker{ font-size:13px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--accent); }
.dapp__lead{ margin:12px 0 0; font-size:17px; line-height:1.9; color:var(--ink-2); }
.dapp__h2{
  font-family:var(--font-serif); font-size:clamp(1.35rem, 2.8vw, 1.65rem); font-weight:650;
  color:var(--ink); margin:clamp(32px, 4.2vw, 42px) 0 16px;
  padding-left:12px; border-left:4px solid var(--accent); border-radius:2px;
}
.dapp__h2:first-of-type{ margin-top:clamp(28px, 3.6vw, 36px); }
.dapp__p{ font-size:16px; line-height:1.9; color:var(--ink-2); margin:0 0 18px; }
.dapp__ul{ margin:0 0 20px; padding:0; list-style:none; }
.dapp__li{ position:relative; padding-left:26px; font-size:15.5px; line-height:1.85; color:var(--ink-2); margin-bottom:10px; }
.dapp__li::before{ content:'✓'; position:absolute; left:0; top:0; color:var(--accent); font-weight:700; }
.dapp__table{ border:1px solid var(--hairline); border-radius:14px; overflow:hidden; margin:0 0 20px; }
.dapp__table-row{ display:flex; gap:16px; padding:13px 18px; }
.dapp__table-row:nth-child(odd){ background:var(--surface-soft); }
.dapp__table-key{ width:104px; flex:none; font-size:14.5px; color:var(--ink-3); }
.dapp__table-val{ font-size:14.5px; color:var(--ink); font-weight:500; }
/* 新版编辑器 HTML 正文排版 */
.dapp__content{ display:flow-root; color:var(--ink-2); font-size:16px; line-height:1.9; }
.dapp__content h1,.dapp__content h2,.dapp__content h3,.dapp__content h4{
  font-family:var(--font-serif); font-weight:650; color:var(--ink); margin:clamp(30px,4vw,40px) 0 15px; line-height:1.35;
}
.dapp__content h2{ font-size:clamp(1.35rem,2.8vw,1.65rem); padding-left:12px; border-left:4px solid var(--accent); border-radius:2px; }
.dapp__content h3{ font-size:clamp(1.15rem,2vw,1.35rem); }
.dapp__content h4{ font-size:clamp(1rem,1.6vw,1.15rem); }
.dapp__content h2:first-child,.dapp__content h3:first-child{ margin-top:clamp(24px,3vw,32px); }
.dapp__content p{ font-size:16px; line-height:1.95; color:var(--ink-2); margin:0 0 18px; }
.dapp__content ul,.dapp__content ol{ margin:0 0 20px; padding:0; list-style:none; }
.dapp__content li{ position:relative; padding-left:26px; font-size:15.5px; line-height:1.85; color:var(--ink-2); margin-bottom:10px; }
.dapp__content ul>li::before{ content:'✓'; position:absolute; left:0; top:0; color:var(--accent); font-weight:700; }
.dapp__content ol{counter-reset:l;}
.dapp__content ol>li::before{ counter-increment:l; content:counter(l); position:absolute; left:0; top:2px; width:20px; height:20px; line-height:18px; text-align:center; font-size:12px; font-weight:700; color:var(--accent); background:var(--surface-soft); border:1px solid var(--hairline); border-radius:6px; }
.dapp__content blockquote{ margin:0 0 20px; padding:14px 20px; border-left:4px solid var(--accent); border-radius:0 10px 10px 0; background:var(--surface-soft); color:var(--ink); font-size:16.5px; line-height:1.85; }
.dapp__content a{ color:var(--accent); border-bottom:1px solid transparent; transition:border-color .3s; }
.dapp__content a:hover{ border-color:var(--accent); }
.dapp__content strong{ color:var(--ink); font-weight:650; }
.dapp__content img{ max-width:100%; height:auto; border-radius:14px; margin:8px 0 18px; box-shadow:var(--shadow-md, 0 10px 30px rgba(20,32,60,.1)); }
.dapp__content hr{ border:none; height:1px; background:var(--hairline); margin:28px 0; }
.dapp__content table{ width:100%; max-width:100%; border-collapse:collapse; border:1px solid var(--hairline); border-radius:14px; overflow:hidden; margin:0 0 20px; font-size:14.5px; }
.dapp__content th,.dapp__content td{ padding:12px 16px; text-align:left; line-height:1.65; }
.dapp__content thead th{ background:var(--surface-soft); color:var(--ink); font-weight:600; border-bottom:1px solid var(--hairline); }
.dapp__content tbody tr:nth-child(even){ background:var(--surface-soft); }
.dapp__content td, .dapp__content th{ border-right:1px solid var(--hairline); }
.dapp__content td:last-child, .dapp__content th:last-child{ border-right:none; }
.dapp__content .selectedCell{ background:rgba(36,86,245,.08); }
.dapp__site{ margin-top:28px; display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.dapp__site-label{ font-size:13px; color:var(--ink-3); }
.dapp__site-link{ display:inline-flex; align-items:center; gap:6px; color:var(--accent); font-size:14px; font-weight:500; text-decoration:none; border-bottom:1px solid transparent; transition:border-color .3s; }
.dapp__site-link:hover{ border-color:var(--accent); }

.dapp__side{ display:flex; flex-direction:column; gap:18px; position:sticky; top:88px; }
.dapp__panel{
  border:1px solid rgba(255,255,255,.7); border-radius:18px; padding:20px 20px 8px;
  background:rgba(255,255,255,.8);
  -webkit-backdrop-filter:blur(20px) saturate(1.4); backdrop-filter:blur(20px) saturate(1.4);
  box-shadow:0 14px 32px rgba(20,32,60,.06);
}
.dapp__panel-title{ display:block; font-size:13px; font-weight:650; color:var(--ink); letter-spacing:.02em; padding-bottom:14px; border-bottom:1px solid var(--hairline); }
.dapp__info{ padding:12px 0 8px; }
.dapp__info-row{ display:flex; justify-content:space-between; gap:12px; padding:7px 0; }
.dapp__info-row dt{ font-size:13.5px; color:var(--ink-3); }
.dapp__info-row dd{ font-size:13.5px; color:var(--ink); font-weight:500; text-align:right; }
.dapp__rel-list{ padding:8px 0 12px; }
.dapp__rel{ display:flex; align-items:center; gap:12px; padding:10px 6px; border-radius:12px; text-decoration:none; transition:background .4s; }
.dapp__rel:hover{ background:var(--surface-soft); }
.dapp__rel-logo{ flex:none; width:38px; height:38px; border-radius:11px; display:flex; align-items:center; justify-content:center; color:#fff; font-size:17px; font-weight:700; }
.dapp__rel-id{ min-width:0; flex:1; }
.dapp__rel-name{ display:block; font-size:14px; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dapp__rel-spec{ display:block; font-size:12px; color:var(--ink-3); margin-top:1px; }
.dapp__rel-go{ color:var(--ink-3); flex:none; display:inline-flex; transition:color .4s, transform .4s; }
.dapp__rel:hover .dapp__rel-go{ color:var(--accent); transform:translateX(2px); }

/* 最近更新榜单 */
.dapp__latest{ padding:8px 0 12px; }
.dapp__latest-item{ display:flex; align-items:center; gap:11px; padding:9px 6px; border-radius:12px; text-decoration:none; transition:background .4s; }
.dapp__latest-item:hover{ background:var(--surface-soft); }
.dapp__latest-logo{ flex:none; width:36px; height:36px; border-radius:10px; display:flex; align-items:center; justify-content:center; color:#fff; font-size:15.5px; font-weight:700; }
.dapp__latest-id{ min-width:0; flex:1; }
.dapp__latest-name{ display:block; font-size:14px; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dapp__latest-date{ display:block; font-size:12px; color:var(--ink-3); margin-top:1px; }

/* 图片广告位（预留占位，可替换为真实广告图） */
.dapp__ad{
  position:relative; display:flex; align-items:center; justify-content:center;
  min-height:150px; padding:22px; border-radius:18px; text-decoration:none;
  background:
    radial-gradient(120% 130% at 12% 0%, rgba(255,255,255,.55), transparent 46%),
    linear-gradient(135deg, var(--accent-deep), #4b7bff 55%, #2a5cf0);
  box-shadow:0 14px 30px rgba(30,70,230,.22);
  overflow:hidden; isolation:isolate;
  transition:transform .45s cubic-bezier(.25,.8,.3,1), box-shadow .45s;
}
.dapp__ad::before{
  content:''; position:absolute; z-index:0; width:150px; height:150px; right:-40px; top:-50px;
  background:radial-gradient(circle, rgba(255,255,255,.35), transparent 62%); filter:blur(6px);
}
.dapp__ad::after{
  content:''; position:absolute; z-index:0; width:110px; height:110px; left:-34px; bottom:-46px;
  background:radial-gradient(circle, rgba(255,255,255,.28), transparent 62%); filter:blur(6px);
}
.dapp__ad:hover{ transform:translateY(-2px); box-shadow:0 18px 38px rgba(30,70,230,.30); }
.dapp__ad-badge{
  position:absolute; z-index:2; top:10px; right:10px; font-size:11px; font-weight:600;
  color:#fff; background:rgba(0,0,0,.28); padding:2px 8px; border-radius:20px; letter-spacing:.04em;
}
.dapp__ad-box{ position:relative; z-index:1; text-align:center; color:#fff; }
.dapp__ad-title{ display:block; font-size:19px; font-weight:700; letter-spacing:.02em; }
.dapp__ad-spec{ display:block; font-size:12.5px; opacity:.82; margin-top:6px; letter-spacing:.02em; }

/* --------------------------------------------------------------------------
   7. 页脚 —— 极简蓝白，与全站主题贯通
   -------------------------------------------------------------------------- */
.site-footer{
  margin-top:clamp(56px, 8vw, 92px);
  padding-top:clamp(40px, 5vw, 60px);
  border-top:1px solid var(--hairline);
  background:var(--bg);
}
.site-footer__inner{
  display:flex; justify-content:space-between; align-items:flex-start;
  gap:clamp(28px, 6vw, 72px); padding-bottom:clamp(36px, 5vw, 52px);
}
.site-footer__brand{ max-width:340px; }
.site-footer__logo{ margin-bottom:16px; }
.site-footer__about{
  color:var(--ink-2); font-size:14.5px; line-height:1.8; max-width:30ch;
}
.site-footer__cols{ display:flex; gap:clamp(6px, 0.8vw, 10px); }
.site-footer__col{ min-width:120px; }
.site-footer__title{
  font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase;
  color:var(--accent); margin-bottom:18px;
}
.site-footer__list{ display:flex; flex-direction:column; gap:12px; }
.site-footer__link{
  display:inline-block; font-family:var(--font-serif); font-size:15px; font-weight:500;
  color:var(--ink-2); transition:color .45s cubic-bezier(.25,.8,.3,1), transform .45s cubic-bezier(.25,.8,.3,1);
}
.site-footer__link:hover{ color:var(--accent); transform:translateX(3px); }

.site-footer__bar{ border-top:1px solid var(--hairline); }
.site-footer__bar-inner{
  display:flex; justify-content:space-between; align-items:center; gap:16px;
  min-height:56px; flex-wrap:wrap;
}
.site-footer__copy{ color:var(--ink-3); font-size:13px; letter-spacing:.01em; }

/* 回到顶部：右下角简约圆形悬浮按钮，滚动后淡入 */
.back-top{
  position:fixed; right:24px; bottom:110px; z-index:120;
  display:inline-flex; align-items:center; justify-content:center;
  width:46px; height:46px; border-radius:50%;
  border:1px solid var(--hairline); background:rgba(255,255,255,.82);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  color:var(--ink-2); box-shadow:0 6px 18px rgba(19,19,24,.06);
  text-decoration:none;
  opacity:0; visibility:hidden; transform:translateY(10px);
  transition:opacity .5s cubic-bezier(.25,.8,.3,1), visibility .5s,
             transform .5s cubic-bezier(.25,.8,.3,1),
             color .4s, border-color .4s, box-shadow .4s;
}
.back-top.is-visible{ opacity:1; visibility:visible; transform:translateY(0); }
.back-top:hover{
  color:var(--accent); border-color:var(--accent);
  box-shadow:0 8px 22px rgba(36,86,245,.16);
  transform:translateY(-2px);
}
.back-top__icon{ display:flex; align-items:center; justify-content:center; }
.back-top:hover .back-top__icon svg{ stroke-width:1.9; }
@media (max-width:560px){
  .back-top{ right:16px; bottom:96px; width:42px; height:42px; }
}

/* --------------------------------------------------------------------------
   6. 响应式
   -------------------------------------------------------------------------- */
@media (max-width: 720px){
  .header-tools .search{ display:none; }
  .hero__foot{ flex-direction:column; align-items:flex-start; gap:6px; }
  .line-item__link{ gap:20px; }
  .line-item__cover{ width:130px; }
  .site-footer__inner{ flex-direction:column; align-items:flex-start; gap:34px; }
  .site-footer__cols{ gap:8px; }
  .store__cats-label{ display:none; }
  .dapp__hero{ align-items:flex-start; }
  .dapp__cols{ grid-template-columns:1fr; }
  .dapp__side{ position:static; }
}
@media (max-width: 520px){
  .site-header__inner{ min-height:62px; }
  .nav{ margin-left:6px; }
  .nav__link{ padding:8px 1px; font-size:15px; }
  .line-item__link{ align-items:flex-start; }
  .line-item__cover{ display:none; }
  .store__grid{ grid-template-columns:1fr; }
  .scar__go{ display:none; }
  .dapp__download{ width:100%; justify-content:center; }
  .dapp__hero{ padding:18px; }
  .dapp__share{ padding:13px 16px; }
  .dapp__stats{ grid-template-columns:repeat(2, 1fr); }
  .dapp__stat:nth-child(3){ border-left:none; }
  .dapp__stat:nth-child(n+3){ border-top:1px solid var(--hairline); }
  .dapp__dlcard-os span{ flex:1; text-align:center; }
}

/* --------------------------------------------------------------------------
   7. 减少动效
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce){
  *{ animation:none !important; transition:none !important; }
  html{ scroll-behavior:auto; }
  .hero__track{ transition:none; }
}

/* --------------------------------------------------------------------------
   8. 搜索页
   -------------------------------------------------------------------------- */
/* 结果页顶部当前搜索关键词（醒目的强调色） */
.search-query{ color:var(--accent-deep); font-style:normal; }
html[data-theme="dark"] .search-query{ color:var(--accent); }

.search-empty{
  padding:34px 8px; color:var(--ink-3); font-size:15px; letter-spacing:.01em;
}

/* 搜索命中关键词高亮：浅红底 + 深红字 */
.search-hl{
  background:#fff0f0;
  color:#d03030;
  border-radius:3px;
  padding:.05em .18em;
  box-decoration-break:clone;
  -webkit-box-decoration-break:clone;
}

/* --------------------------------------------------------------------------
   9. 404 页面
   -------------------------------------------------------------------------- */
.notfound{
  text-align:center; padding:64px 16px 72px;
}
.notfound__code{
  font-family:var(--font-serif); font-size:88px; line-height:1;
  font-weight:700; color:var(--accent); opacity:.9; letter-spacing:.02em;
}
.notfound__title{
  font-family:var(--font-serif); font-size:30px; margin:14px 0 8px;
}
.notfound__desc{
  color:var(--ink-3, #878da0); font-size:15px; margin:0 0 26px;
}
.notfound__actions{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; margin-bottom:26px }
.notfound__btn{
  padding:11px 26px; border-radius:12px; background:var(--accent); color:#fff;
  font-size:14px; font-weight:600; text-decoration:none;
  transition:opacity .4s cubic-bezier(.25,.8,.3,1), transform .4s cubic-bezier(.25,.8,.3,1);
}
.notfound__btn:hover{ opacity:.9; transform:translateY(-1px) }
.notfound__btn.is-soft{ background:var(--bg2); color:var(--ink) }
.notfound__search{ display:flex; gap:10px; max-width:460px; margin:0 auto }
.notfound__input{
  flex:1; min-width:0; padding:11px 16px; border-radius:12px;
  border:1px solid var(--hairline, #e5e7ef); background:#fff; color:var(--ink);
  font-size:15px;
}
.notfound__input:focus{ outline:none; border-color:var(--accent); box-shadow:0 0 0 4px rgba(36,86,245,.10) }
.notfound__search-btn{
  padding:0 20px; border-radius:12px; border:none; background:var(--accent); color:#fff;
  font-size:14px; font-weight:600; cursor:pointer;
}