html:not([data-theme-dark]) body:before{content:"";position:fixed;inset:0;z-index:-1;background-image:radial-gradient(ellipse 60% 50% at 20% 20%,rgba(127,216,194,.32),transparent 60%),radial-gradient(ellipse 55% 45% at 85% 15%,rgba(245,167,184,.28),transparent 60%),radial-gradient(ellipse 70% 55% at 55% 90%,rgba(240,217,149,.24),transparent 60%);background-color:#f4f7f4;mix-blend-mode:normal;opacity:1;pointer-events:none}html[data-theme-dark] body:before{content:"";position:fixed;inset:0;z-index:-1;background-image:radial-gradient(ellipse 50% 50% at 25% 25%,rgba(127,216,194,.15),transparent 60%),radial-gradient(ellipse 45% 40% at 80% 70%,rgba(180,140,230,.14),transparent 60%);background-color:#0f1218;mix-blend-mode:normal;opacity:1}html:not([data-theme-dark]){--gl-card-bg: rgba(255, 255, 255, .15);--gl-card-stroke: rgba(255, 255, 255, .65);--gl-card-shadow-soft: inset 0 1px 0 rgba(255, 255, 255, .85), inset 0 -1px 0 rgba(0, 0, 0, .05), 0 4px 18px rgba(0, 0, 0, .07), 0 1px 3px rgba(0, 0, 0, .03);--gl-card-shadow-lift: inset 0 1px 0 rgba(255, 255, 255, .9), inset 0 -1px 0 rgba(0, 0, 0, .06), 0 12px 36px rgba(0, 0, 0, .12), 0 2px 6px rgba(0, 0, 0, .04);--gl-blur: blur(12px) saturate(1.25);--gl-radius-lg: 28px;--gl-radius-md: 20px;--gl-radius-sm: 14px;--gl-accent: #7fd8c2;--gl-accent-2: #f5a7b8;--gl-accent-ink: #2d6e62;--rise: #b8563f;--fall: #5b8552;--rise-bg: rgba(184, 86, 63, .1);--fall-bg: rgba(91, 133, 82, .1)}html[data-theme-dark]{--gl-card-bg: rgba(40, 44, 56, .35);--gl-card-stroke: rgba(255, 255, 255, .2);--gl-card-shadow-soft: inset 0 1px 0 rgba(255, 255, 255, .07), inset 0 -1px 0 rgba(0, 0, 0, .25), 0 6px 22px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .15);--gl-card-shadow-lift: inset 0 1px 0 rgba(255, 255, 255, .1), inset 0 -1px 0 rgba(0, 0, 0, .3), 0 16px 48px rgba(0, 0, 0, .5), 0 2px 6px rgba(0, 0, 0, .2);--gl-blur: blur(12px) saturate(1.25);--gl-accent: #7fd8c2;--gl-accent-2: #f5a7b8;--rise: #e07a5f;--fall: #7aa870;--rise-bg: rgba(224, 122, 95, .15);--fall-bg: rgba(122, 168, 112, .15)}.glass-card{background:var(--gl-card-bg)!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft)!important}html body .site-nav{background:#ffffff26!important;border-bottom:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft)}html[data-theme-dark] body .site-nav{background:#1e222e73!important}html body .nav-links a{background:transparent!important;color:var(--ink-soft)!important;border-radius:999px;transition:all .25s var(--ease)}html body .nav-links a:hover{background:#ffffff26!important;-webkit-backdrop-filter:blur(10px) saturate(1.2);backdrop-filter:blur(10px) saturate(1.2);border:1px solid var(--gl-card-stroke);color:var(--ink)}html body .nav-links a.active{background:linear-gradient(160deg,#fffc,#fff6)!important;color:#2f7a68!important;border:1px solid var(--gl-accent)!important;box-shadow:inset 0 1px 1px #fffffff2,0 4px 14px #7fd8c247!important;font-weight:600}html body .nav-search{background:#ffffff26!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:blur(10px) saturate(1.2);backdrop-filter:blur(10px) saturate(1.2)}html body .panel,html body .hl-board,html body .hl-lead-card,html body .shop-card,html body .book-card,html body .market-panel,html body .market-teaser a,html body .review-card,html body .stat,html body .track-card,html body .work-card,html body .post-item,html body .pet-panel,html body .palette,html body .pet-btn,html body .stat-chip,html body .cmt,html body .sticker-bar,html body .type-tabs,html body .hl-boards>*{background:var(--gl-card-bg)!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft)!important;border-radius:var(--gl-radius-lg)!important}html body .panel{padding:24px 28px 26px}html body .hl-board{padding:20px 22px}html body .hl-lead-card{padding:26px 28px}html body .work-card:hover,html body .shop-card:hover,html body .book-card:hover,html body .post-item:hover,html body .track-card:hover,html body .gallery-item:hover,html body .hl-lead-card:hover,html body .hl-board:hover,html body .pet-btn:hover{box-shadow:var(--gl-card-shadow-lift)!important}html body .btn-primary{background:linear-gradient(135deg,var(--gl-accent),var(--gl-accent-2))!important;color:#fff!important;border:1px solid rgba(255,255,255,.55)!important;box-shadow:0 6px 18px #7fd8c259!important}html body .btn-primary:hover{transform:translateY(-3px)!important;box-shadow:0 10px 26px #7fd8c280!important}html body .btn-ghost{background:#ffffff26!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:blur(10px) saturate(1.2);backdrop-filter:blur(10px) saturate(1.2);color:var(--ink)!important}html body .btn-ghost:hover{background:#ffffff4d!important;transform:translateY(-3px)!important;box-shadow:var(--gl-card-shadow-soft)!important}html body .btn,html body .rbtn,html body .pg,html body .chip,html body .like-btn,html body .post-actions .act{background:#ffffff26!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:blur(8px) saturate(1.2);backdrop-filter:blur(8px) saturate(1.2);color:var(--ink-soft)!important;border-radius:999px;transition:all .2s var(--ease)}html body .btn:hover,html body .rbtn:hover,html body .pg:hover:not(:disabled),html body .chip:hover,html body .like-btn:hover,html body .post-actions .act:hover{background:#ffffff4d!important;color:var(--ink)!important;border-color:var(--gl-accent)!important}html body .chip.on,html body .pg.on,html body .like-btn.on,html body .post-actions .act.on{background:var(--gl-accent)!important;color:#fff!important;border-color:#ffffff4d!important;box-shadow:0 4px 14px #7fd8c259!important}html body .cms-toolbar{background:#ffffff26!important;-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);border-bottom:1px solid var(--gl-card-stroke)!important}html body .tabs,html body .type-tabs{border-bottom:1px solid var(--gl-card-stroke)!important;gap:6px}html body .tabs .tab,html body .type-tabs .tab{background:#ffffff26!important;color:var(--ink-soft)!important;border:1px solid var(--gl-card-stroke)!important;border-bottom:1px solid var(--gl-card-stroke)!important;border-radius:999px!important;padding:8px 18px!important;transition:all .2s var(--ease)}html body .tabs .tab.on,html body .type-tabs .tab.on{background:var(--gl-accent)!important;color:#fff!important;border:1px solid rgba(255,255,255,.55)!important;border-bottom:1px solid rgba(255,255,255,.55)!important;box-shadow:0 4px 12px #7fd8c24d!important}html body .input,html body .textarea,html body .select,html body .r-select,html body .shelf-search,html body .search-bar .input,html body .pet-input,html body .gb-input,html body .gb-nick{background:#ffffff26!important;border:1px solid var(--gl-card-stroke)!important;border-radius:18px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}html body .input:focus,html body .textarea:focus,html body .select:focus,html body .r-select:focus,html body .shelf-search:focus,html body .search-bar .input:focus{outline:none;border-color:var(--gl-accent)!important;box-shadow:0 0 0 4px #7fd8c22e}html body input[type=range]{-webkit-appearance:none;appearance:none;height:6px;border-radius:999px;background:#ffffff26;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--gl-card-stroke);outline:none}html body input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--gl-accent);border:2px solid rgba(255,255,255,.7);cursor:pointer;box-shadow:0 2px 8px #7fd8c266}html body .player-bar{background:#ffffff26!important;border-top:1px solid var(--gl-card-stroke)!important;box-shadow:var(--gl-card-shadow-soft)!important}html body .pet-btn{border-radius:50%!important;background:var(--gl-card-bg)!important;border:1px solid var(--gl-card-stroke)!important}html body .pet-bubble,html body .pet-panel,html body .palette{background:var(--gl-card-bg)!important;border:1px solid var(--gl-card-stroke)!important}html body .shop-card,html body .book-card,html body .quote,html body .spark-card,html body .mover-col{background:var(--gl-card-bg)!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:blur(10px) saturate(1.2);backdrop-filter:blur(10px) saturate(1.2)}html body .pg{background:#ffffff26!important}html body .pg.on{background:var(--gl-accent)!important}html body .back-top{background:#ffffff4d!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}html body .toast{background:var(--gl-accent-ink)!important;color:#fff!important;box-shadow:var(--gl-card-shadow-lift)!important}html body .gb-wall .gb-note,html body .gb-wall .gb-c0,html body .gb-wall .gb-c1,html body .gb-wall .gb-c2,html body .gb-wall .gb-c3,html body .gb-wall .gb-c4,html body .gb-wall .gb-c5{background:initial!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-color:initial!important;box-shadow:0 4px 14px #5a4c3712!important}html body .gb-form{background:var(--gl-card-bg)!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft)!important}html body .reader-paper{background:#fdf9f0!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:none!important;box-shadow:0 18px 44px #5a4c3729!important}html[data-theme-dark] body .reader-paper{background:#2a2d34!important}html body .prose pre{background:#332f28!important;color:#f3ede0!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}html body .quote.up .quote-val,html body .quote.up .quote-pct,html body .mover-row.up .mover-nums{color:var(--rise, #b8563f)!important}html body .quote.down .quote-val,html body .quote.down .quote-pct,html body .mover-row.down .mover-nums{color:var(--fall, #5b8552)!important}html body .tally.up{background:#b8563f1a!important;color:var(--rise, #b8563f)!important}html body .tally.down{background:#5b85521f!important;color:var(--fall, #5b8552)!important}html body .footer{background:#3a352d!important;backdrop-filter:none!important}html body .cmt{border-bottom:1px solid rgba(0,0,0,.06)!important;background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}html[data-theme-dark] body .cmt{border-bottom-color:#ffffff1a!important}html body .aplayer.aplayer-fixed .aplayer-body{background:#ffffff26!important;-webkit-backdrop-filter:blur(14px) saturate(1.35)!important;backdrop-filter:blur(14px) saturate(1.35)!important;border-top:1px solid var(--gl-card-stroke)!important}@media(prefers-reduced-transparency:reduce){html body .panel,html body .hl-board,html body .hl-lead-card,html body .shop-card,html body .book-card,html body .market-panel,html body .work-card,html body .post-item,html body .track-card,html body .pet-panel,html body .palette,html body .pet-btn,html body .player-bar,html body .site-nav{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}@media(prefers-reduced-motion:reduce){html body .shop-card,html body .book-card,html body .work-card,html body .post-item,html body .track-card,html body .hl-lead-card,html body .hl-board,html body .pet-btn{transition:none!important}}html body .xx-card,html body .xx-card-head,html body .xx-card-body{background:var(--gl-card-bg)!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:blur(14px) saturate(1.25);backdrop-filter:blur(14px) saturate(1.25)}html body .xx-card{border-radius:20px!important;box-shadow:var(--gl-card-shadow-soft)!important;overflow:hidden}html body .xx-card:hover{box-shadow:var(--gl-card-shadow-lift)!important}html body .xx-card-body{border-top:1px dashed var(--gl-card-stroke)!important}html body .shop-card,html body .book-card,html body .work-card,html body .track-card,html body .hl-board,html body .hl-lead-card,html body .list-item{background:var(--gl-card-bg)!important;border:1px solid var(--gl-card-stroke)!important;-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft)!important}html body .shop-card .shop-body,html body .book-card .book-body,html body .track-card,html body .hl-boards>*,html body .list-item .grow,html body .list-item .notif,html body .list-item .tag,html body .list-item .tag.topic{background:transparent!important;-webkit-backdrop-filter:none;backdrop-filter:none}html body .nav-links a{white-space:nowrap!important;border:1px solid transparent!important;box-sizing:border-box}html body .circle-mark:before{opacity:.35}html:not([data-theme-dark]) body:before{opacity:.8}html body .hero h1{text-shadow:0 1px 2px rgba(255,255,255,.65),0 0 24px rgba(255,255,255,.4)}html body .btn,html body .btn-ghost,html body .rbtn,html body .chip,html body .like-btn,html body .post-actions .act,html body .pg{background:linear-gradient(160deg,#ffffff4d,#ffffff47 42%,#ffffff26)!important;box-shadow:inset 0 1px 1px #fffffff2,inset 0 -2px 5px #7fd8c21f,0 4px 14px #00000012!important;-webkit-tap-highlight-color:transparent;touch-action:manipulation}html body .btn:active,html body .btn-ghost:active,html body .rbtn:active,html body .chip:active,html body .like-btn:active,html body .post-actions .act:active,html body .pg:active{transform:scale(.96)!important;filter:brightness(1.05);transition-duration:.08s!important}html body .btn-primary{background:linear-gradient(160deg,#ffffff26,#fff0 38%),linear-gradient(135deg,var(--gl-accent),var(--gl-accent-2))!important;box-shadow:inset 0 1px 2px #ffffffd9,inset 0 -3px 6px #00000014,0 6px 18px #7fd8c266!important}@media(hover:hover)and (pointer:fine){html body .nav-links a:hover,html body .btn:hover,html body .chip:hover,html body .like-btn:hover,html body .post-actions .act:hover,html body .pg:hover:not(:disabled){transform:translateY(-2px)}}@media(max-width:768px){html:not([data-theme-dark]),html[data-theme-dark]{--gl-blur: blur(9px) saturate(1.15)}html body .site-nav,html body .panel,html body .shop-card,html body .book-card,html body .work-card,html body .list-item,html body .xx-card{-webkit-backdrop-filter:blur(9px) saturate(1.15);backdrop-filter:blur(9px) saturate(1.15)}html body .btn:active,html body .chip:active,html body .nav-links a:active{background:#fffc!important}html body .btn-primary:active{filter:brightness(.92)!important}}html body #post-list.panel{background:transparent!important;border:none!important;box-shadow:none!important;-webkit-backdrop-filter:none;backdrop-filter:none;padding:4px 0!important}html body .list-item{display:flex;align-items:center;gap:14px;padding:18px 20px!important;margin-bottom:14px!important;border-radius:22px!important;border-bottom:none!important;transition:transform .22s var(--ease),box-shadow .22s var(--ease),background .22s var(--ease)!important}@media(hover:hover)and (pointer:fine){html body .list-item:hover{transform:translateY(-2px);box-shadow:var(--gl-card-shadow-lift)!important;background:#ffffff66!important}}html body .list-item .tag{font-size:.68rem;padding:2px 8px;border-radius:999px}html body .list-item .li-title{font-size:1.02rem;font-weight:600;color:var(--ink)!important;line-height:1.5;display:inline;text-decoration:none}html body .list-item a:hover .li-title{text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--gl-accent);text-decoration-thickness:2px}html body .list-item .li-sum{margin-top:6px;color:var(--ink-soft);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}html body .list-item .mini:not(.li-sum){margin-top:8px;opacity:.75;font-size:.74rem}html body .list-item .like-btn{flex:0 0 auto;border-radius:999px!important;padding:6px 12px!important}html body .list-item .thumb,html body .list-item img{flex:0 0 auto;border-radius:14px!important;object-fit:cover}html body .pet-root.dragging .pet-btn{transform:scale(1.04)!important;animation:none!important}html body .pet-btn{touch-action:none!important;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}html body .pet-btn img,html body .pet-avatar-img{-webkit-user-drag:none;pointer-events:none}html body .nav-links{margin-left:auto}html body .nav-user{display:inline-flex;align-items:center;gap:8px;margin-left:12px}html body .nu-login{display:inline-flex;align-items:center;white-space:nowrap;padding:8px 18px;border-radius:999px;font-size:.88rem;font-weight:600;text-decoration:none;color:#2f7a68;background:linear-gradient(160deg,#fffc,#ffffff26);border:1px solid var(--gl-accent);box-shadow:inset 0 1px 1px #fffffff2,0 4px 12px #7fd8c240;transition:transform .15s var(--ease),box-shadow .15s var(--ease)}@media(hover:hover)and (pointer:fine){html body .nu-login:hover{transform:translateY(-1px);box-shadow:inset 0 1px 1px #fffffff2,0 6px 16px #7fd8c266}}html body .nu-me{display:inline-flex;align-items:center;gap:8px;padding:4px 12px 4px 4px;border-radius:999px;text-decoration:none;background:#ffffff26;border:1px solid rgba(255,255,255,.6);box-shadow:inset 0 1px 1px #ffffffe6;transition:background .15s}html body .nu-me:hover{background:#ffffff59}html body .nu-avatar{width:30px;height:30px;border-radius:50%;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--gl-accent),var(--gl-accent-2));flex:0 0 auto}html body .nu-avatar img{width:100%;height:100%;object-fit:cover}html body .nu-fallback{font-size:.82rem;font-weight:700;color:#fff}html body .nu-name{font-size:.85rem;font-weight:600;color:var(--ink);max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html body .nu-logout{padding:7px 12px;border-radius:999px;font-size:.8rem;cursor:pointer;color:var(--ink-soft);background:#ffffff26;border:1px solid rgba(255,255,255,.6);transition:background .15s,color .15s}html body .nu-logout:hover{background:#b8563f1f;color:#b8563f}@media(max-width:720px){html body .nav-user{margin-left:auto;margin-right:8px;gap:6px;order:1}html body .nav-toggle{order:2}html body .nu-name{display:none}html body .nu-me{padding:4px;background:transparent;border:none;box-shadow:none}html body .nu-logout{display:none}html body .nu-login{padding:7px 14px;font-size:.82rem}}

/* ===== 多级导航下拉菜单（玻璃风格） ===== */
.nav-links .has-submenu{position:relative;display:inline-block}
.nav-links .has-submenu > a{position:relative;padding-right:22px!important}
.nav-links .has-submenu > a:after{content:"";position:absolute;right:7px;top:50%;width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-60%) rotate(45deg);opacity:.55;transition:transform .25s}
.nav-links .has-submenu:hover > a:after,.nav-links .has-submenu.open > a:after{transform:translateY(-20%) rotate(225deg)}
.nav-links .submenu{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(-6px);min-width:168px;background:#ffffffb0;border:1px solid var(--gl-card-stroke);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft);border-radius:14px;padding:8px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s var(--ease),transform .22s var(--ease),visibility 0s linear .22s;z-index:50;display:flex;flex-direction:column;gap:2px}
html[data-theme-dark] body .nav-links .submenu{background:#1e222ee0}
/* 透明桥接区：父项与下拉之间有 8px 间隙，鼠标穿过时会误触 mouseleave 导致菜单收起 */
.nav-links .submenu::before{content:"";position:absolute;left:-10px;right:-10px;top:-14px;height:14px}
.nav-links .has-submenu:hover > .submenu,.nav-links .has-submenu:focus-within > .submenu,.nav-links .has-submenu.open > .submenu{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);transition:opacity .22s var(--ease),transform .22s var(--ease)}
.nav-links .submenu a{display:block;padding:9px 14px;border-radius:10px;font-size:.88rem;color:var(--ink-soft)!important;background:transparent!important;white-space:nowrap;transition:background .18s,padding-left .18s}
.nav-links .submenu a:hover{background:#ffffff26!important;color:var(--ink)!important;padding-left:16px}
.nav-links .submenu a.active{background:linear-gradient(160deg,#fffc,#fff6)!important;color:#2f7a68!important;border:1px solid var(--gl-accent)!important;font-weight:600}
.nav-links .has-submenu.current > a{color:#2f7a68!important;font-weight:600}
/* 移动端：submenu 变为静态缩进列表 */
@media(max-width:768px){
  .nav-links .has-submenu > a{padding-right:0!important}
  .nav-links .has-submenu > a:after{display:none}
  .nav-links .submenu{position:static;transform:none;opacity:1;visibility:visible;pointer-events:auto;background:transparent;border:none;box-shadow:none;padding:4px 0 4px 18px;min-width:auto;display:none;gap:0}
  .nav-links .has-submenu.open > .submenu{display:flex}
  .nav-links .submenu a{padding:8px 10px;font-size:.82rem}
  .nav-links .submenu a:hover{padding-left:12px}
}
/* 防止 submenu 被 overflow 裁掉 */
.nav-links .has-submenu{overflow:visible}
/* ===== FAQ 手风琴 ===== */
.faq{display:flex;flex-direction:column;gap:12px}
.faq-item{background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);border-radius:16px;backdrop-filter:var(--gl-blur);-webkit-backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft);overflow:hidden;transition:box-shadow .25s}
.faq-item:hover{box-shadow:var(--gl-card-shadow-lift)}
.faq-q{width:100%;background:transparent;border:none;padding:18px 22px;text-align:left;font-weight:500;font-size:1rem;color:var(--ink);cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;transition:color .2s}
.faq-q:after{content:"+";font-size:1.4rem;color:#2f7a68;transition:transform .35s ease,content .2s;width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.faq-item.on .faq-q:after{content:"−";transform:rotate(90deg)}
.faq-item.on{box-shadow:var(--gl-card-shadow-lift)}
.faq-a{padding:0 22px;font-size:.92rem;color:var(--ink-soft);line-height:1.8}
.faq-item.on .faq-a{padding:0 22px 20px}

/* ===== 团队 / 成员卡片 ===== */
/* 修复：气泡的包含块 .pet-root 只有 60px 宽，导致 shrink-to-fit 把中文压成竖排 */
html body .pet-bubble{width:max-content;max-width:min(220px,62vw);text-align:left;line-height:1.6}

.team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px}
.team-card{background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);border-radius:18px;backdrop-filter:var(--gl-blur);-webkit-backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft);padding:24px;text-align:center;transition:transform .28s,box-shadow .28s}
.team-card:hover{transform:translateY(-4px);box-shadow:var(--gl-card-shadow-lift)}
.team-avatar-wrap{width:80px;height:80px;margin:0 auto 14px;border-radius:50%;overflow:hidden;border:2px solid var(--gl-card-stroke);box-shadow:0 4px 12px rgba(0,0,0,.08);display:flex;align-items:center;justify-content:center;background:var(--gl-card-bg)}
.team-avatar{width:100%;height:100%;object-fit:cover}
.team-avatar-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:600;color:#2f7a68;background:linear-gradient(135deg,#e8f4ed,#fde8e3)}
.team-info h3{margin:0 0 4px;font-size:1.05rem}
.team-role{margin:0 0 8px;color:var(--gl-accent);font-size:.82rem;font-weight:500}
.team-desc{margin:0 0 12px;font-size:.86rem;color:var(--ink-soft);line-height:1.6}
.team-links{display:flex;gap:8px;justify-content:center}
.team-links a{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.6);border:1px solid var(--gl-card-stroke);display:flex;align-items:center;justify-content:center;text-decoration:none;font-size:.85rem;transition:all .2s}
.team-links a:hover{background:rgba(255,255,255,.95);transform:translateY(-2px)}

/* ===== 文章目录（TOC）===== */
.toc{margin:0 0 24px;background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);border-radius:14px;padding:14px 18px;backdrop-filter:var(--gl-blur);-webkit-backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft);font-size:.84rem}
.toc:empty{display:none}
.toc-title{margin:0 0 8px;font-size:.78rem;color:var(--ink-soft);font-weight:500;text-transform:uppercase;letter-spacing:.06em}
.toc-list{display:flex;flex-direction:column;gap:2px}
.toc-list a{color:var(--ink-soft);text-decoration:none;padding:5px 8px;border-radius:6px;transition:all .2s;border-left:2px solid transparent}
.toc-list a:hover{color:var(--ink);background:#ffffff26}
.toc-list a.toc-l3{padding-left:20px;font-size:.79rem}
.toc-list a.on{color:#2f7a68;border-left-color:#2f7a68;font-weight:500;background:rgba(47,122,104,.08)}

/* ===== 合规页面（隐私政策 / 服务条款 / Cookie 政策）===== */
.legal-page{display:grid;grid-template-columns:220px minmax(0,1fr);gap:40px;align-items:start;max-width:1040px;margin:0 auto}
.legal-toc{position:sticky;top:96px;display:flex;flex-direction:column;gap:2px;padding:18px 16px;border-radius:var(--gl-radius-md);background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft)}
.legal-toc__title{margin:0 0 8px;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);font-weight:600}
.legal-toc a{padding:7px 10px;border-radius:10px;font-size:.83rem;color:var(--ink-soft);text-decoration:none;border-left:2px solid transparent;transition:all .2s var(--ease)}
.legal-toc a:hover{background:#ffffff26;color:var(--ink);border-left-color:var(--gl-accent)}
.legal-body{max-width:760px;font-size:.96rem;line-height:1.85;color:var(--ink)}
.legal-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:.82rem;color:var(--ink-soft)}
.legal-updated{display:inline-flex;align-items:center;padding:4px 12px;border-radius:999px;background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur)}
.legal-intro{margin:0 0 8px;padding:20px 22px;border-radius:var(--gl-radius-md);background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-soft);color:var(--ink-soft)}
.legal-section{margin-top:34px;scroll-margin-top:96px}
.legal-section h2{font-size:1.16rem;margin:0 0 12px;color:var(--ink)}
.legal-section p{margin:0 0 12px;color:var(--ink-soft)}
.legal-section ul{margin:0 0 12px;padding-left:20px;color:var(--ink-soft)}
.legal-section li{margin-bottom:8px}
.legal-section strong{color:var(--ink);font-weight:600}
.legal-section a{color:var(--gl-accent-ink);text-decoration:underline;text-underline-offset:3px}
.legal-note{margin:12px 0;padding:12px 16px;border-radius:var(--gl-radius-sm);border-left:3px solid var(--gl-accent);background:#ffffff33;color:var(--ink-soft);font-size:.9rem}
.legal-table-wrap{overflow-x:auto;margin:12px 0}
.legal-table{width:100%;border-collapse:collapse;font-size:.86rem;min-width:520px}
.legal-table th,.legal-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--gl-card-stroke);vertical-align:top}
.legal-table th{color:var(--ink);font-weight:600;background:#ffffff26}
.legal-table td{color:var(--ink-soft)}
.legal-table code{padding:1px 6px;border-radius:6px;background:#ffffff4d;border:1px solid var(--gl-card-stroke);font-size:.82rem}
html[data-theme-dark] body .legal-toc a:hover,html[data-theme-dark] body .legal-table th{background:#ffffff14}
html[data-theme-dark] body .legal-note{background:#ffffff0f}
html[data-theme-dark] body .legal-table code{background:#ffffff1a}
@media(max-width:900px){.legal-page{grid-template-columns:1fr;gap:22px}.legal-toc{position:static}}

/* ===== Cookie 同意横幅 / 偏好弹窗 ===== */
/* z-index 必须高于 .pet-root(1150)：右下角主按钮与紫微星宠物悬浮钮同位，
   否则「全部接受」在真机上会被宠物钮拦截；弹窗同理（保存偏好按钮也在右下）。 */
.consent-bar{position:fixed;left:0;right:0;bottom:0;z-index:1230;padding:14px 16px calc(14px + env(safe-area-inset-bottom))}
.consent-bar__inner{max-width:1080px;margin:0 auto;display:flex;gap:18px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:16px 20px;border-radius:var(--gl-radius-md);background:rgba(255,255,255,.74);border:1px solid var(--gl-card-stroke);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-lift)}
html[data-theme-dark] body .consent-bar__inner{background:rgba(30,34,46,.84)}
.consent-bar__text{display:flex;flex-direction:column;gap:4px;min-width:240px;flex:1 1 340px;font-size:.86rem;line-height:1.6;color:var(--ink-soft)}
.consent-bar__text strong{color:var(--ink);font-size:.92rem}
.consent-bar__text a{color:var(--gl-accent-ink);text-decoration:underline;text-underline-offset:3px}
.consent-bar__actions{display:flex;gap:8px;flex-wrap:wrap}
.consent-btn{padding:9px 18px;border-radius:999px;font-size:.85rem;font-weight:600;cursor:pointer;font-family:inherit;border:1px solid var(--gl-card-stroke);background:linear-gradient(160deg,#ffffff4d,#ffffff47 42%,#ffffff26);color:var(--ink);box-shadow:inset 0 1px 1px #fffffff2,0 4px 14px #00000012;transition:transform .15s var(--ease),box-shadow .15s var(--ease);-webkit-tap-highlight-color:transparent}
.consent-btn:hover{transform:translateY(-1px);box-shadow:inset 0 1px 1px #fffffff2,0 6px 18px #0000001a}
.consent-btn:active{transform:scale(.97)}
.consent-btn--primary{background:linear-gradient(160deg,#ffffff26,#fff0 38%),linear-gradient(135deg,var(--gl-accent),var(--gl-accent-2));color:#fff;border-color:rgba(255,255,255,.55);box-shadow:inset 0 1px 2px #ffffffd9,0 6px 18px #7fd8c266}
.consent-btn--ghost{background:#ffffff26}
html[data-theme-dark] body .consent-btn--ghost{background:#ffffff14;color:var(--ink)}
.consent-modal{position:fixed;inset:0;z-index:1250;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(28,26,22,.42);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.consent-modal__box{width:100%;max-width:560px;max-height:86vh;overflow:auto;padding:26px 26px 22px;border-radius:var(--gl-radius-lg);background:rgba(255,255,255,.88);border:1px solid var(--gl-card-stroke);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-lift)}
html[data-theme-dark] body .consent-modal__box{background:rgba(28,32,42,.93)}
.consent-modal__title{margin:0 0 8px;font-size:1.16rem;color:var(--ink)}
.consent-modal__desc{margin:0 0 18px;font-size:.86rem;line-height:1.7;color:var(--ink-soft)}
.consent-row{display:flex;align-items:flex-start;gap:16px;padding:14px 0;border-top:1px solid var(--gl-card-stroke)}
.consent-row__info{flex:1;min-width:0}
.consent-row__name{margin:0 0 4px;font-size:.92rem;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px}
.consent-row__desc{margin:0;font-size:.82rem;line-height:1.6;color:var(--ink-soft)}
.consent-lock{font-size:.68rem;font-weight:600;padding:2px 8px;border-radius:999px;background:#ffffff4d;border:1px solid var(--gl-card-stroke);color:var(--ink-soft)}
.consent-switch{position:relative;flex:0 0 auto;cursor:pointer}
.consent-switch input{position:absolute;opacity:0;width:0;height:0}
.consent-switch__track{display:block;width:46px;height:26px;border-radius:999px;background:#ffffff4d;border:1px solid var(--gl-card-stroke);transition:background .2s var(--ease);position:relative}
.consent-switch__dot{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #00000026;transition:transform .2s var(--ease)}
.consent-switch input:checked+.consent-switch__track{background:linear-gradient(135deg,var(--gl-accent),var(--gl-accent-2));border-color:rgba(255,255,255,.55)}
.consent-switch input:checked+.consent-switch__track .consent-switch__dot{transform:translateX(20px)}
.consent-switch input:disabled+.consent-switch__track{opacity:.7;cursor:not-allowed}
.consent-modal__foot{display:flex;gap:10px;justify-content:flex-end;margin-top:20px;padding-top:18px;border-top:1px solid var(--gl-card-stroke)}
/* 移动端紧凑条专用：政策短链桌面端不显示（长说明内已有完整链接） */
.consent-bar__policy{display:none}
/* 移动端（≤640px）：压成单行紧凑条。
   旧版长文案 + 整行按钮使弹条高达 ~300px，会盖住首页 hero 的「进入探索」CTA；
   完整说明收进 cookies.html 与「管理偏好」弹窗，弹条本身只保留一行决策。 */
@media(max-width:640px){
  .consent-bar{padding:8px 10px calc(8px + env(safe-area-inset-bottom))}
  .consent-bar__inner{flex-wrap:nowrap;gap:10px;padding:9px 12px}
  .consent-bar__text{flex:1 1 auto;min-width:0;gap:0}
  .consent-bar__text strong{font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .consent-bar__detail{display:none}
  .consent-bar__policy{display:inline-flex;align-items:center;flex:0 0 auto;font-size:.76rem;
    color:var(--gl-accent-ink);text-decoration:underline;text-underline-offset:2px;padding:0 2px}
  .consent-bar__actions{flex:0 0 auto;width:auto;flex-wrap:nowrap;gap:6px}
  .consent-bar__actions .consent-btn{flex:0 0 auto;padding:7px 11px;font-size:.76rem;white-space:nowrap}
}
@media(prefers-reduced-transparency:reduce){.consent-bar__inner,.consent-modal__box,.legal-toc,.legal-intro{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}

/* ===== 敏感操作二次确认弹窗（safe.js）===== */
.safe-mask{position:fixed;inset:0;z-index:220;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(28,26,22,.42);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.safe-modal{width:100%;max-width:420px;padding:26px 26px 22px;border-radius:var(--gl-radius-lg);background:rgba(255,255,255,.88);border:1px solid var(--gl-card-stroke);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-lift)}
html[data-theme-dark] body .safe-modal{background:rgba(28,32,42,.93)}
.safe-title{margin:0 0 10px;font-size:1.1rem;color:var(--ink)}
.safe-desc{margin:0;font-size:.88rem;line-height:1.75;color:var(--ink-soft);word-break:break-word}
.safe-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:22px;padding-top:18px;border-top:1px solid var(--gl-card-stroke)}
.safe-modal.safe-danger .safe-ok{background:linear-gradient(135deg,#d9694f,#b8563f)!important;box-shadow:0 6px 18px #b8563f59!important}
@media(prefers-reduced-transparency:reduce){.safe-modal{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}
/* ===== 第十七阶段：后台「网站监控」 ===== */
.mon-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:16px 0 4px}
.mon-days{padding:6px 14px!important;font-size:.86rem!important}
.mon-days.on{background:var(--ink)!important;color:var(--paper)!important;border-color:transparent!important}
.mon-card{margin-top:20px;padding:20px 22px;border-radius:20px;background:rgba(255,255,255,.32);border:1px solid rgba(255,255,255,.5);backdrop-filter:blur(12px) saturate(1.25);-webkit-backdrop-filter:blur(12px) saturate(1.25)}
.mon-h4{margin:22px 0 10px;font-size:.95rem;font-weight:600;color:var(--ink-soft)}
.mon-bars{display:flex;align-items:flex-end;gap:6px;height:110px;padding:8px 0 0}
.mon-bar{flex:1;min-width:8px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.mon-bar>i{display:block;width:100%;max-width:34px;border-radius:6px 6px 2px 2px;transition:height .5s var(--ease)}
.mon-bar>span{margin-top:6px;font-size:.68rem;color:var(--ink-faint);white-space:nowrap}
.mon-jobs{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-top:14px}
.mon-job{padding:14px 16px;border-radius:16px;background:var(--paper-2);border-left:3px solid var(--line)}
.mon-job-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mon-job-st{margin:6px 0;font-size:.9rem;font-weight:600}
.mon-dot{width:9px;height:9px;border-radius:50%;background:var(--ink-faint);flex:0 0 auto}
.mon-job-ok{border-left-color:rgb(91,133,82)}
.mon-job-ok .mon-dot,.mon-job-ok .mon-job-st{background:rgb(91,133,82);color:rgb(91,133,82)}
.mon-job-stale,.mon-job-flaky{border-left-color:rgb(196,150,60)}
.mon-job-stale .mon-dot,.mon-job-stale .mon-job-st,.mon-job-flaky .mon-dot,.mon-job-flaky .mon-job-st{background:rgb(196,150,60);color:rgb(196,150,60)}
.mon-job-missing{border-left-color:rgb(184,86,63)}
.mon-job-missing .mon-dot,.mon-job-missing .mon-job-st{background:rgb(184,86,63);color:rgb(184,86,63)}
.mon-lv{display:inline-block;padding:1px 8px;border-radius:999px;font-size:.74rem;background:var(--paper-2);color:var(--ink-soft)}
.mon-lv-error,.mon-lv-csp,.mon-lv-err{background:rgba(184,86,63,.14);color:rgb(184,86,63)}
.mon-lv-audit{background:rgba(196,150,60,.16);color:rgb(150,112,40)}
.mon-lv-ok{background:rgba(91,133,82,.16);color:rgb(91,133,82)}
.mon-series{margin-top:12px}
.mon-series-row{display:flex;align-items:center;gap:14px;padding:8px 0;border-bottom:1px solid var(--line)}
.mon-series-row>span{flex:0 0 74px;font-size:.86rem;color:var(--ink-soft)}
.mon-series-row>b{flex:0 0 72px;text-align:right;font-family:var(--serif);font-size:1.05rem}
.mon-series-row>.spark{flex:1;height:34px;max-width:220px}
@media(max-width:640px){.mon-card{padding:16px}.mon-series-row>span{flex:0 0 56px}.mon-bar>span{display:none}}

/* ===== 第十八阶段 · 后台「数据分析」看板 ===== */
.ana-sub{display:block;margin-top:4px;font-size:.72rem;font-style:normal;color:var(--ink-faint)}
.ana-chart{margin:6px 0 2px;overflow:hidden;border-radius:14px;background:rgba(255,255,255,.28);border:1px solid var(--gl-card-stroke);padding:6px 4px 0}
.ana-chart svg{display:block}
.ana-legend{display:flex;gap:18px;flex-wrap:wrap;margin:8px 0 2px}
.ana-lg{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;color:var(--ink-soft)}
.ana-lg>i{width:10px;height:10px;border-radius:3px;flex:0 0 auto}
.ana-lg>b{font-family:var(--serif);font-size:.95rem;color:var(--ink)}
.ana-rank{margin:6px 0 2px}
.ana-rank-row{display:flex;align-items:center;gap:10px;padding:6px 0}
.ana-rank-label{flex:0 0 168px;font-size:.84rem;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ana-rank-bar{flex:1;height:9px;border-radius:999px;background:rgba(120,110,95,.10);overflow:hidden}
.ana-rank-bar>i{display:block;height:100%;border-radius:999px;transition:width .5s var(--ease)}
.ana-rank-row>b{flex:0 0 62px;text-align:right;font-family:var(--serif);font-size:.95rem;color:var(--ink)}
.ana-rank-row>em.mini{flex:0 0 56px;text-align:right}
.ana-msg{display:inline-block;max-width:280px;font-size:.84rem;color:var(--ink-soft);word-break:break-word}
.ana-funnel{margin:14px 0 4px}
.ana-fn-step{margin-bottom:12px}
.ana-fn-meta{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:5px}
.ana-fn-meta>b{font-size:.9rem;color:var(--ink)}
.ana-fn-meta>span{font-size:.82rem;color:var(--ink-soft)}
.ana-fn-bar{height:26px;border-radius:10px;background:rgba(120,110,95,.09);overflow:hidden}
.ana-fn-bar>i{display:block;height:100%;border-radius:10px;background:linear-gradient(135deg,var(--gl-accent),var(--gl-accent-2));transition:width .6s var(--ease)}
.ana-fn-rate{display:flex;justify-content:space-between;gap:10px;margin-top:4px}
.ana-exp{margin-top:18px;padding:18px 20px;border-radius:18px;background:rgba(255,255,255,.32);border:1px solid var(--gl-card-stroke);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur)}
.ana-exp-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.ana-exp-head>b{font-size:1rem;color:var(--ink)}
.ana-exp-head>code{font-size:.78rem;padding:2px 8px;border-radius:6px;background:rgba(120,110,95,.10);color:var(--ink-soft)}
.ana-ev-btn{margin:0 6px 6px 0;padding:4px 12px!important;font-size:.78rem!important}
html[data-theme-dark] body .ana-chart,html[data-theme-dark] body .ana-exp{background:rgba(255,255,255,.06)}
html[data-theme-dark] body .ana-rank-bar,html[data-theme-dark] body .ana-fn-bar{background:rgba(255,255,255,.10)}
html[data-theme-dark] body .ana-exp-head>code{background:rgba(255,255,255,.10)}
@media(max-width:640px){.ana-rank-label{flex:0 0 104px}.ana-rank-row>em.mini{display:none}.ana-msg{max-width:180px}}

/* ===== 第十八阶段 · 反馈弹窗 + 邮件订阅 ===== */
.fb-fab{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom));z-index:180;display:flex;align-items:center;gap:8px;padding:11px 16px;border-radius:999px;cursor:pointer;font-family:inherit;font-size:.86rem;font-weight:600;color:var(--ink);border:1px solid var(--gl-card-stroke);background:linear-gradient(160deg,#ffffff4d,#ffffff47 42%,#ffffff26);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:inset 0 1px 1px #fffffff2,0 6px 20px #0000001f;transition:transform .18s var(--ease),box-shadow .18s var(--ease);-webkit-tap-highlight-color:transparent}
.fb-fab:hover{transform:translateY(-2px);box-shadow:inset 0 1px 1px #fffffff2,0 10px 26px #00000026}
.fb-fab:active{transform:scale(.97)}
.fb-fab svg{flex:0 0 auto;color:var(--gl-accent-ink)}
.fb-fab-txt{white-space:nowrap}
html[data-theme-dark] body .fb-fab{background:linear-gradient(160deg,#ffffff26,#ffffff0d 42%,#ffffff1a);color:var(--ink)}
.fb-modal{position:fixed;inset:0;z-index:230;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(28,26,22,.42);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.fb-box{position:relative;width:100%;max-width:460px;max-height:88vh;overflow:auto;padding:26px 26px 22px;border-radius:var(--gl-radius-lg);background:rgba(255,255,255,.90);border:1px solid var(--gl-card-stroke);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);box-shadow:var(--gl-card-shadow-lift)}
html[data-theme-dark] body .fb-box{background:rgba(28,32,42,.94)}
.fb-x{position:absolute;top:12px;right:14px;width:32px;height:32px;border:0;border-radius:50%;background:transparent;color:var(--ink-faint);font-size:1.4rem;line-height:1;cursor:pointer;transition:background .15s var(--ease),color .15s var(--ease)}
.fb-x:hover{background:rgba(120,110,95,.10);color:var(--ink)}
.fb-eyebrow{display:block;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gl-accent-ink);opacity:.85}
.fb-title{margin:6px 0 16px;font-family:var(--serif);font-size:1.3rem;color:var(--ink)}
.fb-tabs{display:flex;gap:6px;padding:4px;border-radius:999px;background:rgba(120,110,95,.08);margin-bottom:14px}
.fb-tab{flex:1;padding:8px 10px;border:0;border-radius:999px;background:transparent;font-family:inherit;font-size:.84rem;font-weight:600;color:var(--ink-soft);cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease)}
.fb-tab.on{background:#fff;color:var(--ink);box-shadow:0 2px 8px #00000014}
html[data-theme-dark] body .fb-tab.on{background:rgba(255,255,255,.14)}
.fb-hint{margin:0 0 12px}
.fb-box textarea,.fb-box input[type=email]{width:100%;padding:11px 13px;border-radius:12px;border:1px solid var(--gl-card-stroke);background:rgba(255,255,255,.55);font-family:inherit;font-size:.88rem;color:var(--ink);resize:vertical;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}
.fb-box textarea:focus,.fb-box input[type=email]:focus{outline:0;border-color:var(--gl-accent);box-shadow:0 0 0 3px #7fd8c22e}
html[data-theme-dark] body .fb-box textarea,html[data-theme-dark] body .fb-box input[type=email]{background:rgba(255,255,255,.08)}
.fb-nps-wrap{margin:0 0 12px}
.fb-nps-wrap[hidden]{display:none}
.fb-nps-row{display:flex;gap:5px;flex-wrap:wrap}
.fb-nps{flex:1 1 auto;min-width:32px;padding:8px 0;border-radius:10px;border:1px solid var(--gl-card-stroke);background:rgba(255,255,255,.5);font-family:inherit;font-size:.84rem;font-weight:600;color:var(--ink-soft);cursor:pointer;transition:all .15s var(--ease)}
.fb-nps:hover{border-color:var(--gl-accent)}
.fb-nps.on{background:linear-gradient(135deg,var(--gl-accent),var(--gl-accent-2));color:#fff;border-color:transparent;box-shadow:0 4px 12px #7fd8c240}
.fb-nps-hint{margin:8px 0 0}
.fb-foot{display:flex;gap:10px;align-items:center;margin-top:14px}
.fb-foot input[type=email]{flex:1;min-width:0}
.fb-foot .fb-send{flex:0 0 auto;white-space:nowrap}
.fb-fab,.fb-nps,.fb-tab,.fb-x{-webkit-tap-highlight-color:transparent}
@media(max-width:640px){.fb-fab{right:14px;padding:12px;border-radius:50%}.fb-fab-txt{display:none}.fb-box{padding:22px 18px 18px}.fb-foot{flex-direction:column;align-items:stretch}}
@media(prefers-reduced-transparency:reduce){.fb-box,.fb-fab{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}

/* 邮件订阅表单（footer / 侧栏，任意位置复用） */
.nl-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:10px 0 0}
.nl-form input[type=email]{flex:1 1 200px;min-width:0;padding:11px 14px;border-radius:999px;border:1px solid var(--gl-card-stroke);background:rgba(255,255,255,.55);font-family:inherit;font-size:.86rem;color:var(--ink)}
.nl-form input[type=email]:focus{outline:0;border-color:var(--gl-accent);box-shadow:0 0 0 3px #7fd8c22e}
.nl-form button{flex:0 0 auto;padding:11px 22px;border-radius:999px;border:1px solid rgba(255,255,255,.55);background:linear-gradient(160deg,#ffffff26,#fff0 38%),linear-gradient(135deg,var(--gl-accent),var(--gl-accent-2));color:#fff;font-family:inherit;font-size:.86rem;font-weight:600;cursor:pointer;box-shadow:inset 0 1px 2px #ffffffd9,0 6px 18px #7fd8c266;transition:transform .15s var(--ease)}
.nl-form button:hover{transform:translateY(-1px)}
.nl-form button:active{transform:scale(.97)}
.nl-form .mini{flex:1 1 100%;margin:0}
.nl-form a{color:var(--gl-accent-ink);text-decoration:underline;text-underline-offset:3px}
html[data-theme-dark] body .nl-form input[type=email]{background:rgba(255,255,255,.08)}

/* 文章分享条（post.html，点击由埋点 SDK 委托捕获） */
.post-share{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:38px 0 0;padding-top:20px;border-top:1px solid var(--gl-card-stroke)}
.post-share>span{margin-right:2px}
.post-share-btn{padding:7px 15px;border-radius:999px;border:1px solid var(--gl-card-stroke);background:rgba(255,255,255,.5);font-family:inherit;font-size:.82rem;color:var(--ink-soft);text-decoration:none;cursor:pointer;transition:transform .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease);-webkit-tap-highlight-color:transparent}
.post-share-btn:hover{transform:translateY(-1px);color:var(--ink);border-color:var(--gl-accent)}
html[data-theme-dark] body .post-share-btn{background:rgba(255,255,255,.08)}

/* ============================================================
   第十九阶段：联系区 + 地图嵌入（玻璃卡片）
   ============================================================ */
.contact-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:28px;align-items:stretch}
.contact-info{display:flex;flex-direction:column;justify-content:center;padding:8px 4px}
.contact-info p{margin:0 0 14px;line-height:1.8;color:var(--ink-soft)}
.contact-info .big-mail{font-size:clamp(1.2rem,3.4vw,1.9rem);word-break:break-all}
.map-embed{min-height:240px}
.map-embed[hidden]{display:none}
.map-embed-frame{height:100%;display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:var(--gl-radius-md);background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);box-shadow:var(--gl-card-shadow-soft);backdrop-filter:var(--gl-blur);-webkit-backdrop-filter:var(--gl-blur)}
.map-embed-meta{display:flex;flex-direction:column;gap:2px}
.map-embed-label{font-size:1rem;color:var(--ink)}
.map-embed-address{font-size:.82rem;color:var(--ink-soft)}
.map-embed-canvas{position:relative;flex:1;min-height:220px;border-radius:var(--gl-radius-sm);overflow:hidden;border:1px solid var(--gl-card-stroke);background:rgba(255,255,255,.35)}
.map-embed-canvas iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.map-embed-open{align-self:flex-end;font-size:.82rem;color:var(--gl-accent-ink);text-decoration:none;font-weight:600;transition:opacity .15s var(--ease)}
.map-embed-open:hover{opacity:.72}
html[data-theme-dark] .map-embed-canvas{background:rgba(255,255,255,.06)}
@media(max-width:760px){.contact-grid{grid-template-columns:1fr;gap:18px}.contact-info{padding:0}.map-embed{min-height:0}.map-embed-canvas{aspect-ratio:16/10;min-height:0}}

/* 云存储上传卡片（后台 · 集成中心） */
.uploader-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:30px 20px;text-align:center;border:1.5px dashed var(--gl-card-stroke);border-radius:var(--gl-radius-md);background:var(--gl-card-bg);box-shadow:var(--gl-card-shadow-soft);backdrop-filter:var(--gl-blur);-webkit-backdrop-filter:var(--gl-blur);cursor:pointer;transition:border-color .15s var(--ease),transform .15s var(--ease)}
.uploader-drop:hover,.uploader-drop.dragging{border-color:var(--gl-accent);transform:translateY(-1px)}
.uploader-icon{font-size:1.5rem;line-height:1}
.uploader-list{margin-top:12px;display:flex;flex-direction:column;gap:10px}
.uploader-item{padding:12px 14px;border-radius:var(--gl-radius-sm);background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);box-shadow:var(--gl-card-shadow-soft)}
.uploader-meta{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px}
.uploader-name{font-size:.88rem;word-break:break-all}
.uploader-bar{height:6px;border-radius:99px;background:rgba(127,127,127,.18);overflow:hidden}
.uploader-bar i{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--gl-accent),var(--gl-accent-2));transition:width .2s var(--ease)}
.uploader-state{display:block;margin-top:6px}
.uploader-item.fail .uploader-bar i{background:var(--rise,#b8563f)}

/* SaaS 订阅页（billing.html） */
.pricing-banner{margin:0 0 20px;padding:14px 18px;border-radius:var(--gl-radius-sm);background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);box-shadow:var(--gl-card-shadow-soft);backdrop-filter:var(--gl-blur);-webkit-backdrop-filter:var(--gl-blur);font-size:.9rem;display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.pricing-banner.good{border-color:rgba(127,216,194,.7)}
.pricing-banner.bad{border-color:rgba(184,86,63,.6)}
.pricing-current{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:24px;padding:16px 20px}
.pricing-current .mini{width:100%}
#plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.price-card{position:relative;display:flex;flex-direction:column;padding:30px 26px;border-radius:var(--gl-radius-lg);background:var(--gl-card-bg);border:1px solid var(--gl-card-stroke);box-shadow:var(--gl-card-shadow-soft);backdrop-filter:var(--gl-blur);-webkit-backdrop-filter:var(--gl-blur);transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.price-card:hover{transform:translateY(-3px);box-shadow:var(--gl-card-shadow-lift)}
.price-card.highlight{border-color:var(--gl-accent)}
.price-flag{position:absolute;top:16px;right:16px;font-size:.72rem;font-weight:700;letter-spacing:.05em;padding:4px 11px;border-radius:999px;background:linear-gradient(90deg,var(--gl-accent),var(--gl-accent-2));color:#1d3a35}
.price-card h3{margin:0 0 10px;font-size:1.15rem}
.price-num{font-size:2.1rem;font-weight:800;line-height:1.1;margin-bottom:18px}
.price-num small{font-size:.9rem;font-weight:500;color:var(--ink-soft)}
.price-features{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-direction:column;gap:10px;flex:1}
.price-features li{position:relative;padding-left:24px;font-size:.9rem;color:var(--ink-soft);line-height:1.55}
.price-features li:before{content:"✓";position:absolute;left:0;top:0;color:var(--gl-accent-ink);font-weight:800}
.price-card .btn{width:100%}
.glass-card{border-radius:var(--gl-radius-md)}
@media(max-width:680px){#plans{grid-template-columns:1fr;gap:16px}.price-card{padding:24px 20px}}

/* ===== 第二十一阶段 · FAQ 玻璃手风琴（app.html 等） ===== */
.seo-faq{margin:56px auto 0;max-width:760px}
.seo-faq>h2{font-size:clamp(1.3rem,2.6vw,1.7rem);text-align:center;margin:0 0 6px}
.seo-faq>p{text-align:center;color:var(--ink-soft,#8a8175);font-size:.9rem;margin:0 0 26px}
.seo-faq-item{
  background:rgba(255,255,255,.55);
  border:1px solid rgba(0,0,0,.08);
  border-radius:16px;
  backdrop-filter:blur(12px) saturate(1.25);
  -webkit-backdrop-filter:blur(12px) saturate(1.25);
  margin-bottom:12px;
  overflow:hidden;
  transition:box-shadow .25s ease,border-color .25s ease,transform .25s ease;
}
.seo-faq-item[open]{
  border-color:rgba(47,122,104,.35);
  box-shadow:0 10px 30px -12px rgba(47,122,104,.28);
}
.seo-faq-item summary{
  list-style:none;cursor:pointer;
  display:flex;align-items:center;gap:10px;
  padding:18px 22px;font-weight:600;font-size:.98rem;
  user-select:none;
}
.seo-faq-item summary::-webkit-details-marker{display:none}
.seo-faq-item summary::after{
  content:"+";margin-left:auto;font-size:1.25rem;font-weight:400;
  color:#2f7a68;transition:transform .25s ease;line-height:1;
}
.seo-faq-item[open] summary::after{transform:rotate(45deg)}
.seo-faq-item .seo-faq-a{
  margin:0;padding:0 22px 20px;
  color:var(--ink-soft,#6b6356);font-size:.92rem;line-height:1.85;
}
@media(max-width:640px){.seo-faq-item summary{padding:16px 18px}.seo-faq-item .seo-faq-a{padding:0 18px 18px}}

/* ============================================================
   第二十二阶段 · 渲染性能
   ① 触屏设备（手机为主）：列表里大量重复卡片各自做 blur(18px) 是
      滚动掉帧的头号原因 —— 高斯模糊是最贵的 paint 操作之一。
      触屏端把「重复卡片/按钮/输入框」换成近不透明背景、彻底去掉
      backdrop-filter；导航栏、下拉菜单、模态弹层这些「单个且固定」
      的元素保留毛玻璃，观感几乎无损。
   ② content-visibility: 屏外卡片跳过布局与绘制，长列表页
      （商城 6000px、书架、社区）首屏渲染和滚动都明显减负；
      contain-intrinsic-size 用 auto，真实渲染一次后记住高度，
      滚动条不会反复跳动。
   ============================================================ */
@media (hover: none) and (pointer: coarse) {
  html:not([data-theme-dark]) { --gl-card-bg: rgba(251, 250, 247, .96); }
  html[data-theme-dark]    { --gl-card-bg: rgba(30, 33, 43, .96); }

  html body .post-item,
  html body .list-item,
  html body .shop-card,
  html body .book-card,
  html body .work-card,
  html body .track-card,
  html body .hl-board,
  html body .hl-lead-card,
  html body .hl-boards > *,
  html body .xx-card,
  html body .xx-card-head,
  html body .xx-card-body,
  html body .review-card,
  html body .market-teaser a,
  html body .quote,
  html body .spark-card,
  html body .mover-col,
  html body .panel,
  html body .faq-item,
  html body .team-card,
  html body .toc,
  html body .btn,
  html body .btn-ghost,
  html body .rbtn,
  html body .pg,
  html body .chip,
  html body .like-btn,
  html body .post-actions .act,
  html body .tabs .tab,
  html body .input,
  html body .textarea,
  html body .select,
  html body .nav-search,
  html body .gb-form,
  html body .price-card,
  html body .pricing-banner,
  html body .mon-card,
  html body .ana-exp,
  html body .map-embed-frame,
  html body .uploader-drop,
  html body .shelf-item,
  html body .gallery-item,
  html body .seo-faq-item {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
  /* FAQ 项原本靠 .55 透明白 + 模糊保证可读；去掉模糊后背景必须提到近不透明 */
  html:not([data-theme-dark]) .seo-faq-item { background: rgba(251, 250, 247, .97); }
  html[data-theme-dark] .seo-faq-item { background: rgba(30, 33, 43, .97); }
}

/* 屏外列表项跳过渲染：只在列表容器内生效，不影响弹窗/详情正文 */
html body #post-list .list-item {
  content-visibility: auto;
  contain-intrinsic-size: auto 168px;
}
html body .shop-grid > .shop-card {
  content-visibility: auto;
  contain-intrinsic-size: auto 380px;
}
html body #shelf-grid > .book-card {
  content-visibility: auto;
  contain-intrinsic-size: auto 330px;
}
html body .work-grid > .work-card {
  content-visibility: auto;
  contain-intrinsic-size: auto 300px;
}

/* ============================================================
   第二十二阶段补丁 · 移动端导航抽屉化（修复菜单透出/无遮罩/
   背景可滚/对齐不齐）。仅在 ≤720px 生效，桌面零影响。
   - .site-nav 带 backdrop-filter，会成为绝对定位后代的包含块，
     面板不能用 bottom:0（会按 68px 导航栏高度算），改用 dvh 显式高；
   - 面板背景用不透明 var(--paper)（主题自适应），遮罩纯 rgba
     不加 blur（全屏模糊是手机 GPU 重负担，见坑 36）；
   - 菜单打开时整层 nav 升到 1300，盖过宠物(1150)/播放条(1100)/
     搜索面板(1200)；遮罩 1240 压在这些浮层与页面内容之上。
   ============================================================ */
.nav-scrim{position:fixed;inset:0;z-index:1240;background:rgba(26,21,14,.5);opacity:0;visibility:hidden;touch-action:none;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:opacity .28s var(--ease),visibility 0s linear .28s}
body.nav-open .nav-scrim{opacity:1;visibility:visible;transition:opacity .28s var(--ease)}
@media(min-width:721px){.nav-scrim{display:none!important}}
@media(max-width:720px){
  /* 锁滚动必须落在 documentElement 上：只锁 body 时 viewport 仍由 <html> 滚动（实测 scrollTo 仍生效） */
  html.nav-open,html.nav-open body{overflow:hidden}
  body.nav-open .site-nav{z-index:1300}
  html body .nav-links{
    position:absolute;top:68px;left:0;right:0;margin:0;
    height:calc(100vh - 68px);height:calc(100dvh - 68px);
    flex-direction:column;align-items:stretch;gap:2px;
    padding:12px 16px calc(20px + env(safe-area-inset-bottom,0px));
    background:var(--paper)!important;
    border:none!important;border-radius:0!important;box-shadow:0 24px 60px rgba(40,32,20,.28)!important;
    -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
    overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;
    transform:translateY(-10px);opacity:0;visibility:hidden;pointer-events:none;
    transition:transform .28s var(--ease),opacity .28s var(--ease),visibility 0s linear .28s;
  }
  html body.nav-open .nav-links{
    transform:none;opacity:1;visibility:visible;pointer-events:auto;
    transition:transform .28s var(--ease),opacity .28s var(--ease);
  }
  /* 统一对齐：一级项全部整行 flex、同高同左距，不再有「整行/缩宽」两种形态 */
  html body .nav-links > a,
  html body .nav-links .has-submenu > a{
    display:flex;align-items:center;width:100%;box-sizing:border-box;
    padding:13px 14px;border-radius:14px;
  }
  html body .nav-links .has-submenu{display:block;width:100%;margin:0}
  html body .nav-links .has-submenu > a{padding-right:14px!important}
  /* 二级手风琴：固定缩进、整行对齐 */
  html body .nav-links .submenu{padding:2px 0 8px 16px}
  html body .nav-links .submenu a{
    display:flex;align-items:center;width:100%;box-sizing:border-box;
    padding:9px 12px;font-size:.92rem;border-radius:12px;white-space:normal;
  }
  /* 触屏悬停态不用毛玻璃，用扁平浅色（去重模糊开销，且点击不留玻璃残影） */
  html body .nav-links a:hover,
  html body .nav-links a:focus-visible{
    -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
    background:rgba(127,216,194,.18)!important;
  }
}

/* ============================================================
   第二十三阶段 · 浅色云雾玻璃页脚（全站 .footer 统一重做）
   ────────────────────────────────────────────────────────────
   旧版是深棕大色块（#3a352d），与 mint→rose→cream 的浅色
   渐变站体脱节。本层纯 CSS 覆盖（不动 18 个页面的 HTML）：
   · 面：半透明白 + 顶部 mint/rose 双色微光，桌面端轻模糊，
        触屏设备去模糊、底色近不透明（坑 36 的性能策略）；
   · 顶：双层柔波——薄荷后浪(::before) + 白浪花(::after)，
        浪花向下渐隐，与页脚面无缝衔接，不依赖纯色底；
   · 字：与顶部导航一致的柔和墨色（ink-soft / ink-faint）；
   · 钮：链接全部胶囊化（999 圆角 + 内高光 + 轻投影 + 悬浮上浮），
        邮箱为玻璃药丸按钮（带信封图标），订阅框为一体化胶囊条，
        site-ext.js 注入的「导航/探索/联系」为内嵌玻璃面板；
   · 暗：data-theme-dark 下整套切换为深夜玻璃，结构语言不变。
   ============================================================ */

/* ---------- 面：浅色云雾玻璃 ---------- */
html body .footer{
  position:relative;
  margin-top:64px;
  padding:104px 0 34px;
  overflow:hidden;
  color:var(--ink-soft);
  border-top:1px solid rgba(255,255,255,.7);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 -10px 34px rgba(90,76,55,.06);
  background:
    radial-gradient(460px 240px at 6% -12%,rgba(127,216,194,.22),transparent 70%),
    radial-gradient(500px 260px at 96% -8%,rgba(245,167,184,.20),transparent 70%),
    linear-gradient(180deg,rgba(255,255,255,.36) 0%,rgba(255,255,255,.58) 48%,rgba(248,250,247,.74) 100%)!important;
  -webkit-backdrop-filter:blur(14px) saturate(1.25);
  backdrop-filter:blur(14px) saturate(1.25);
}
html body .footer > .wrap{position:relative;z-index:1}
html body .footer > .wrap ~ .wrap{margin-top:22px}

/* ---------- 顶：双层柔波（后浪薄荷 / 前浪白花，均向下渐隐） ---------- */
html body .footer::before,
html body .footer::after{
  content:"";position:absolute;left:0;right:0;pointer-events:none;z-index:0;
  background-repeat:repeat-x;background-position:bottom center;
}
html body .footer::before{
  top:2px;height:46px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 60' preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient id='bw' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%237fd8c2' stop-opacity='.32'/%3E%3Cstop offset='1' stop-color='%237fd8c2' stop-opacity='.04'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M0 60V44C75 20 165 20 240 44S405 68 480 44S645 20 720 44S885 68 960 44S1125 20 1200 44S1365 68 1440 44V60Z' fill='url(%23bw)'/%3E%3C/svg%3E");
  background-size:1560px 46px;
}
html body .footer::after{
  top:0;height:56px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 60' preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient id='fw' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23ffffff' stop-opacity='.85'/%3E%3Cstop offset='1' stop-color='%23ffffff' stop-opacity='.18'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M0 60V36C60 12 120 12 180 36S300 60 360 36S480 12 540 36S660 60 720 36S840 12 900 36S1020 60 1080 36S1200 12 1260 36S1380 60 1440 36V60Z' fill='url(%23fw)'/%3E%3C/svg%3E");
  background-size:1440px 56px;
}

/* ---------- 字：柔和墨色，与导航一致 ---------- */
html body .footer h2{
  margin:0;color:var(--ink);font-weight:600;letter-spacing:.01em;
  text-shadow:0 1px 0 rgba(255,255,255,.75);
}
html body .footer .wrap > p{margin:0;color:var(--ink-faint);font-size:.88rem}
html body .footer .wrap > p + .footer-links{margin-top:14px}

/* ---------- 大邮箱：玻璃药丸按钮 ---------- */
html body .footer a.big-mail{
  display:inline-flex;align-items:center;gap:10px;
  margin-top:18px;padding:11px 24px;
  font-family:var(--sans);font-size:clamp(.98rem,2vw,1.18rem);letter-spacing:.01em;
  color:var(--gl-accent-ink);word-break:normal;
  border-radius:999px;border:1px solid rgba(255,255,255,.85);
  background:linear-gradient(165deg,rgba(255,255,255,.82),rgba(255,255,255,.44));
  box-shadow:var(--gl-card-shadow-soft);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease);
}
html body .footer a.big-mail::before{
  content:"";flex:0 0 auto;width:18px;height:18px;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='3'/%3E%3Cpath d='m4 7 8 6 8-6'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='3'/%3E%3Cpath d='m4 7 8 6 8-6'/%3E%3C/svg%3E") center/contain no-repeat;
}
html body .footer a.big-mail:hover{
  text-decoration:none;transform:translateY(-2px);
  border-color:rgba(127,216,194,.65);box-shadow:var(--gl-card-shadow-lift);
}
html body .footer a.big-mail:active{transform:scale(.98)}

/* ---------- 版权 + 链接：细分割线 + 胶囊链接 ---------- */
html body .footer-cols{
  margin-top:38px;padding-top:24px;gap:18px;
  border-top:1px solid rgba(58,53,45,.09);
  color:var(--ink-faint);
}
html body .footer-cols > span{font-size:.84rem;display:inline-flex;align-items:center}
html body .footer-links{gap:10px}
html body .footer-links a{
  display:inline-flex;align-items:center;gap:7px;
  padding:8px 16px;border-radius:999px;
  font-size:.85rem;line-height:1.2;white-space:nowrap;
  color:var(--ink-soft);text-decoration:none;
  background:rgba(255,255,255,.52);
  border:1px solid rgba(255,255,255,.78);
  box-shadow:0 2px 10px rgba(90,76,55,.07),inset 0 1px 0 rgba(255,255,255,.85);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease);
}
html body .footer-links a:hover,
html body .footer-links a:focus-visible{
  color:var(--ink);background:rgba(255,255,255,.92);
  border-color:rgba(127,216,194,.6);
  box-shadow:0 8px 20px rgba(90,76,55,.12),inset 0 1px 0 #fff;
  transform:translateY(-2px);
}
html body .footer-links a:active{transform:scale(.97)}
/* 外站链接（Dribbble / Instagram / GitHub）带一枚柔和的右上角小箭头 */
html body .footer-links a[target="_blank"]::after{
  content:"";flex:0 0 auto;width:12px;height:12px;opacity:.5;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7'/%3E%3Cpath d='M8.5 7H17v8.5'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7'/%3E%3Cpath d='M8.5 7H17v8.5'/%3E%3C/svg%3E") center/contain no-repeat;
  transition:opacity .2s;
}
html body .footer-links a[target="_blank"]:hover::after{opacity:.9}

/* ---------- 探索区（site-ext.js 注入的三栏）：内嵌玻璃面板 ---------- */
html body .footer-rich{
  margin:36px 0 0;padding:26px 30px;gap:30px;
  border-radius:24px;
  background:rgba(255,255,255,.42);
  border:1px solid rgba(255,255,255,.7);
  box-shadow:var(--gl-card-shadow-soft);
}
html body .footer-col h4{
  margin:0 0 12px;display:flex;align-items:center;
  font-size:.72rem;font-weight:600;letter-spacing:.14em;
  color:var(--ink-faint);
}
html body .footer-col h4::before{
  content:"";flex:0 0 auto;width:7px;height:7px;border-radius:50%;margin-right:9px;
  background:linear-gradient(135deg,var(--gl-accent),var(--gl-accent-2));
  box-shadow:0 0 8px rgba(127,216,194,.5);
}
html body .footer-col a{
  display:block;width:fit-content;padding:4px 0;
  font-size:.88rem;line-height:1.5;color:var(--ink-soft);
  transition:transform .2s var(--ease),color .2s var(--ease);
}
html body .footer-col a:hover{color:var(--gl-accent-ink);transform:translateX(5px)}

/* ---------- 订阅：一体化胶囊工具条 ---------- */
html body .footer .nl-form{
  max-width:540px;margin:30px auto 0;padding:6px;gap:6px;
  border-radius:999px;
  background:rgba(255,255,255,.52);
  border:1px solid rgba(255,255,255,.8);
  box-shadow:var(--gl-card-shadow-soft);
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease);
}
html body .footer .nl-form:focus-within{
  border-color:rgba(127,216,194,.7);
  box-shadow:0 0 0 3px rgba(127,216,194,.2),var(--gl-card-shadow-soft);
}
html body .footer .nl-form input[type=email]{
  background:transparent;border-color:transparent;box-shadow:none;
  padding:10px 16px;font-size:.9rem;
}
html body .footer .nl-form input[type=email]:focus{outline:0;border-color:transparent;box-shadow:none}
html body .footer .nl-form button{padding:10px 26px}
html body .footer .nl-form .mini{flex:1 1 100%;margin:0;padding:2px 14px 6px;text-align:center}

/* ---------- 移动端：矮波、面板收紧、版权区纵向堆叠 ---------- */
@media (max-width:720px){
  html body .footer{padding:80px 0 28px;margin-top:48px}
  html body .footer::before{height:34px;background-size:1280px 34px}
  html body .footer::after{height:42px;background-size:1200px 42px}
  html body .footer-cols{margin-top:30px;padding-top:20px;flex-direction:column;align-items:flex-start;gap:14px}
  html body .footer-rich{margin-top:28px;padding:20px 22px;border-radius:20px;gap:22px}
  html body .footer-links{gap:8px}
}
@media (max-width:560px){
  html body .footer .nl-form{border-radius:26px;padding:10px;gap:10px}
  html body .footer .nl-form input[type=email]{flex:1 1 100%;background:rgba(255,255,255,.6);border-radius:999px}
  html body .footer .nl-form button{flex:1 1 100%}
}

/* ---------- 触屏设备：去掉所有页脚毛玻璃（坑 36），底色近不透明 ---------- */
@media (hover:none) and (pointer:coarse){
  html body .footer,
  html body .footer-rich,
  html body .footer .nl-form,
  html body .footer-links a,
  html body .footer a.big-mail{
    -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
  }
  html body .footer{
    background:
      radial-gradient(460px 240px at 6% -12%,rgba(127,216,194,.18),transparent 70%),
      radial-gradient(500px 260px at 96% -8%,rgba(245,167,184,.16),transparent 70%),
      linear-gradient(180deg,#f3f8f6 0%,#f7faf8 52%,#f4f7f4 100%)!important;
  }
  html[data-theme-dark] body .footer{
    background:
      radial-gradient(460px 240px at 6% -12%,rgba(127,216,194,.10),transparent 70%),
      radial-gradient(500px 260px at 96% -8%,rgba(180,140,230,.10),transparent 70%),
      linear-gradient(180deg,#202531,#171b26 60%,#12151d)!important;
  }
}

/* ---------- 暗色主题：深夜玻璃，结构语言不变 ---------- */
html[data-theme-dark] body .footer{
  color:rgba(225,228,238,.72);
  border-top-color:rgba(255,255,255,.09);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 -10px 34px rgba(0,0,0,.3);
  background:
    radial-gradient(460px 240px at 6% -12%,rgba(127,216,194,.12),transparent 70%),
    radial-gradient(500px 260px at 96% -8%,rgba(180,140,230,.12),transparent 70%),
    linear-gradient(180deg,rgba(32,37,49,.46) 0%,rgba(26,30,40,.6) 52%,rgba(18,21,30,.72) 100%)!important;
}
html[data-theme-dark] body .footer h2{color:#eef1f7;text-shadow:0 1px 0 rgba(0,0,0,.35)}
html[data-theme-dark] body .footer .wrap > p,
html[data-theme-dark] body .footer-cols,
html[data-theme-dark] body .footer-cols > span{color:rgba(190,196,210,.62)}
html[data-theme-dark] body .footer-cols{border-top-color:rgba(255,255,255,.09)}
html[data-theme-dark] body .footer-links a{
  color:rgba(210,214,226,.8);background:rgba(255,255,255,.06);
  border-color:rgba(255,255,255,.12);
  box-shadow:0 2px 10px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.08);
}
html[data-theme-dark] body .footer-links a:hover,
html[data-theme-dark] body .footer-links a:focus-visible{
  color:#fff;background:rgba(255,255,255,.12);border-color:rgba(127,216,194,.4);
}
html[data-theme-dark] body .footer a.big-mail{
  color:#8fe7d4;
  background:linear-gradient(165deg,rgba(255,255,255,.12),rgba(255,255,255,.05));
  border-color:rgba(255,255,255,.16);
  box-shadow:0 6px 18px rgba(0,0,0,.28);
}
html[data-theme-dark] body .footer-rich{
  background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.1);
  box-shadow:0 8px 26px rgba(0,0,0,.28);
}
html[data-theme-dark] body .footer-col h4{color:rgba(170,176,192,.65)}
html[data-theme-dark] body .footer-col a{color:rgba(210,214,226,.78)}
html[data-theme-dark] body .footer-col a:hover{color:#8fe7d4}
html[data-theme-dark] body .footer .nl-form{
  background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);
  box-shadow:0 8px 22px rgba(0,0,0,.28);
}
html[data-theme-dark] body .footer .nl-form input[type=email]{color:#e6e9f2;background:transparent}
html[data-theme-dark] body .footer::before{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 60' preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient id='bwd' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%237fd8c2' stop-opacity='.16'/%3E%3Cstop offset='1' stop-color='%237fd8c2' stop-opacity='.03'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M0 60V44C75 20 165 20 240 44S405 68 480 44S645 20 720 44S885 68 960 44S1125 20 1200 44S1365 68 1440 44V60Z' fill='url(%23bwd)'/%3E%3C/svg%3E");
}
html[data-theme-dark] body .footer::after{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 60' preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient id='fwd' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23dfe6f2' stop-opacity='.1'/%3E%3Cstop offset='1' stop-color='%23dfe6f2' stop-opacity='.02'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M0 60V36C60 12 120 12 180 36S300 60 360 36S480 12 540 36S660 60 720 36S840 12 900 36S1020 60 1080 36S1200 12 1260 36S1380 60 1440 36V60Z' fill='url(%23fwd)'/%3E%3C/svg%3E");
}

/* ============================================================
   第二十三阶段 · 在线 AI 工具
   ============================================================ */

/* 工具条：分类 chips 一行，搜索 + 管理在右；手机端自动换行 */
.ait-bar{
  display:flex; align-items:center; justify-content:space-between;
  gap:14px; flex-wrap:wrap; margin-top:6px;
}
.ait-side{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.ait-admin-btn{white-space:nowrap}

.ait-chip{
  appearance:none; cursor:pointer;
  display:inline-flex; align-items:center; gap:6px;
  font:inherit; font-size:.88rem; color:var(--ink,#4a463f);
  padding:7px 14px; margin:0 8px 8px 0;
  border-radius:999px;
  background:rgba(255,255,255,.42);
  border:1px solid rgba(255,255,255,.6);
  box-shadow:0 4px 14px rgba(90,100,120,.08);
  backdrop-filter:blur(14px) saturate(1.3);
  -webkit-backdrop-filter:blur(14px) saturate(1.3);
  transition:transform .18s ease, background .18s ease, box-shadow .18s ease;
}
.ait-chip em{font-style:normal; font-size:.78rem; opacity:.62}
.ait-chip:hover{transform:translateY(-1px); background:rgba(255,255,255,.62)}
.ait-chip.active{
  color:#fff;
  background:linear-gradient(135deg,var(--brand,#8ca47e),var(--brand-2,#6f9a8d));
  border-color:transparent;
  box-shadow:0 8px 20px rgba(110,140,120,.35);
}
.ait-chip.active em{color:rgba(255,255,255,.85)}

.ait-meta{font-size:.85rem; color:var(--muted,#9a948a); margin:2px 2px 0}

/* 卡片网格：宽屏 3 列、平板 2 列、手机 1 列 */
.ait-grid{
  display:grid; gap:18px;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
}
.ait-card{
  display:flex; flex-direction:column; gap:12px;
  padding:20px;
  border-radius:20px;
  background:rgba(255,255,255,.34);
  border:1px solid rgba(255,255,255,.62);
  box-shadow:0 12px 32px rgba(80,90,110,.12);
  backdrop-filter:blur(12px) saturate(1.25);
  -webkit-backdrop-filter:blur(12px) saturate(1.25);
  transition:transform .22s cubic-bezier(.2,.7,.3,1), box-shadow .22s ease;
  content-visibility:auto;
  contain-intrinsic-size:auto 320px;
}
.ait-card:hover{
  transform:translateY(-4px);
  box-shadow:0 20px 42px rgba(80,90,110,.18);
}

.ait-card-top{display:flex; align-items:center; gap:12px}
.ait-avatar{
  width:42px; height:42px; border-radius:12px; flex:none;
  border:1px solid rgba(255,255,255,.7);
  box-shadow:0 4px 12px rgba(80,90,110,.12);
  background:#fff;
}
.ait-avatar-fallback{
  display:inline-flex; align-items:center; justify-content:center;
  font-weight:600; color:#8ca47e; background:rgba(255,255,255,.7);
}
.ait-card-head{flex:1; min-width:0}
.ait-name{
  margin:0; font-size:1.06rem; font-weight:650; line-height:1.3;
  display:flex; align-items:center; gap:7px; flex-wrap:wrap;
}
.ait-full{
  margin:2px 0 0; font-size:.78rem; color:var(--muted,#9a948a);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.ait-badge{
  font-size:.66rem; font-weight:600; letter-spacing:.03em;
  padding:2px 7px; border-radius:999px; color:#fff;
  background:linear-gradient(135deg,#e3a94f,#d98b3d);
  box-shadow:0 3px 8px rgba(210,150,70,.35);
}
.ait-badge-manual{
  background:linear-gradient(135deg,#7fa98e,#5f8d7a);
  box-shadow:0 3px 8px rgba(110,140,120,.3);
}
.ait-stars{
  display:inline-flex; align-items:center; gap:4px; flex:none;
  font-size:.9rem; font-weight:600; color:#b07a2e;
}
.ait-stars svg{fill:#e3a94f}

.ait-desc{
  margin:0; font-size:.88rem; line-height:1.65; color:var(--ink,#57514a);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
  min-height:calc(.88rem * 1.65 * 2);
}
.ait-tags{display:flex; align-items:center; gap:6px; flex-wrap:wrap}
.ait-cat{
  font-size:.72rem; font-weight:600; color:#5f7a6b;
  padding:3px 9px; border-radius:999px;
  background:rgba(140,170,150,.16);
  border:1px solid rgba(140,170,150,.28);
}
.ait-tag{
  font-size:.72rem; color:var(--muted,#8d877d);
  padding:3px 8px; border-radius:999px;
  background:rgba(255,255,255,.45);
  border:1px solid rgba(255,255,255,.6);
}
.ait-lang{display:inline-flex; align-items:center; gap:5px; font-size:.76rem; color:var(--muted,#8d877d)}
.ait-lang i{width:9px; height:9px; border-radius:50%; display:inline-block}

.ait-actions{display:flex; gap:9px; margin-top:auto; padding-top:2px}
.ait-actions .btn-primary{padding:9px 18px; font-size:.9rem}
.ait-actions .rbtn{padding:9px 14px; font-size:.86rem}

/* 骨架卡 */
.sk-card .sk-line{margin-bottom:10px}

.ait-empty{
  grid-column:1/-1; text-align:center; padding:60px 20px;
  color:var(--muted,#8d877d); font-size:.95rem;
}

/* 模态 */
html.ait-modal-open, html.ait-modal-open body{overflow:hidden}
.ait-modal{
  position:fixed; inset:0; z-index:1260;
  display:flex; align-items:center; justify-content:center;
  padding:24px;
  background:rgba(60,66,78,.38);
  animation:ait-fade .18s ease;
}
@keyframes ait-fade{from{opacity:0}to{opacity:1}}
.ait-modal-box{
  border-radius:22px; overflow:hidden;
  background:rgba(255,255,255,.72);
  border:1px solid rgba(255,255,255,.7);
  box-shadow:0 26px 70px rgba(40,50,60,.3);
  backdrop-filter:blur(22px) saturate(1.4);
  -webkit-backdrop-filter:blur(22px) saturate(1.4);
  animation:ait-pop .22s cubic-bezier(.2,.8,.3,1);
}
@keyframes ait-pop{from{transform:translateY(14px) scale(.98);opacity:0}to{transform:none;opacity:1}}

/* 体验舱：占满 90vw/86dvh */
.ait-exp-box{width:min(1100px,94vw); height:86dvh; display:flex; flex-direction:column}
.ait-exp-top{
  display:flex; align-items:center; gap:12px;
  padding:12px 16px; flex:none;
  border-bottom:1px solid rgba(120,130,150,.16);
  background:rgba(255,255,255,.5);
}
.ait-exp-title{font-weight:650; font-size:.98rem; flex:1; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.ait-exp-top .rbtn{padding:6px 12px; font-size:.8rem}
.ait-x{
  appearance:none; cursor:pointer; border:0;
  width:34px; height:34px; border-radius:50%;
  font-size:.9rem; color:var(--ink,#57514a);
  background:rgba(255,255,255,.6);
  transition:background .15s ease;
}
.ait-x:hover{background:rgba(255,255,255,.95)}
#ait-exp-frame{flex:1; width:100%; border:0; background:#fff}
.ait-exp-hint{
  position:absolute; left:50%; bottom:26px; transform:translateX(-50%);
  display:flex; gap:10px; align-items:center;
  padding:10px 18px; border-radius:999px;
  background:rgba(45,50,60,.82); color:#fff; font-size:.85rem;
  box-shadow:0 10px 26px rgba(0,0,0,.28);
}
.ait-exp-hint a{color:#ffd98a; white-space:nowrap}
.ait-exp-box{position:relative}

/* 管理面板 */
.ait-admin-box{width:min(620px,94vw); max-height:86dvh; display:flex; flex-direction:column}
.ait-admin-body{padding:20px 22px; overflow-y:auto}
.ait-admin-stats{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:18px}
.ait-admin-stats span{
  font-size:.82rem; color:var(--muted,#7d776e);
  padding:8px 14px; border-radius:14px;
  background:rgba(255,255,255,.5);
  border:1px solid rgba(255,255,255,.65);
}
.ait-admin-stats b{color:var(--ink,#4a463f); margin-left:4px; font-size:.95rem}
.ait-admin-row{display:flex; align-items:center; gap:12px; margin:10px 0; flex-wrap:wrap}
.ait-add-row .shelf-search{flex:1; min-width:200px}
.ait-runs{margin-top:18px}
.ait-runs h3{margin:0 0 8px; font-size:.92rem}
.ait-runs ul{list-style:none; margin:0; padding:0}
.ait-runs li{
  display:flex; gap:10px; align-items:baseline;
  padding:7px 0; font-size:.84rem;
  border-bottom:1px dashed rgba(120,130,150,.2);
}
.ait-runs time{color:var(--muted,#8d877d); font-size:.78rem; white-space:nowrap}
.ait-runs li span{color:var(--ink,#57514a)}

/* 暗色主题 */
html[data-theme-dark] body .ait-chip{
  color:#e6e9f2; background:rgba(255,255,255,.08);
  border-color:rgba(255,255,255,.14);
}
html[data-theme-dark] body .ait-chip:hover{background:rgba(255,255,255,.16)}
html[data-theme-dark] body .ait-card{
  background:rgba(255,255,255,.07);
  border-color:rgba(255,255,255,.13);
  box-shadow:0 14px 34px rgba(0,0,0,.3);
}
html[data-theme-dark] body .ait-name{color:#eef1f7}
html[data-theme-dark] body .ait-desc{color:#c8cdd8}
html[data-theme-dark] body .ait-cat{color:#9fd8bd; background:rgba(159,216,189,.12);
  border-color:rgba(159,216,189,.22)}
html[data-theme-dark] body .ait-tag,
html[data-theme-dark] body .ait-lang{color:#9aa3b2}
html[data-theme-dark] body .ait-full{color:#9aa3b2}
html[data-theme-dark] body .ait-modal-box{
  background:rgba(34,38,48,.82); border-color:rgba(255,255,255,.12);
}
html[data-theme-dark] body .ait-exp-top{background:rgba(255,255,255,.05); border-color:rgba(255,255,255,.1)}
html[data-theme-dark] body .ait-x{background:rgba(255,255,255,.1); color:#e6e9f2}
html[data-theme-dark] body .ait-admin-stats span{background:rgba(255,255,255,.06);
  border-color:rgba(255,255,255,.12); color:#9aa3b2}
html[data-theme-dark] body .ait-admin-stats b{color:#eef1f7}
html[data-theme-dark] body .ait-runs li{border-color:rgba(255,255,255,.1)}
html[data-theme-dark] body .ait-runs time{color:#8b94a3}
html[data-theme-dark] body .ait-runs li span{color:#c8cdd8}

/* 触屏设备：重复卡片去毛玻璃（坑 36），固定模态保留 */
@media (hover:none) and (pointer:coarse){
  body .ait-card{
    backdrop-filter:none; -webkit-backdrop-filter:none;
    background:rgba(255,255,255,.92);
  }
  body .ait-chip{
    backdrop-filter:none; -webkit-backdrop-filter:none;
    background:rgba(255,255,255,.8);
  }
}

/* 手机端微调 */
@media (max-width:640px){
  .ait-grid{gap:14px; grid-template-columns:1fr}
  .ait-card{padding:17px}
  .ait-modal{padding:12px}
  .ait-exp-box{width:100vw; height:100dvh; border-radius:0}
  .ait-admin-box{width:100vw; max-height:92dvh; border-radius:18px}
  .ait-exp-top .rbtn{display:none}
}

/* ============================================================
   第二十五阶段 · 在线工具中心（真正可运行的小工具）
   卡片/模态/chips 复用 .ait-*；以下为工具内部 UI 与小变体
   ============================================================ */

.lt-avatar{
  display:inline-flex; align-items:center; justify-content:center;
  color:#3f7a68;
  background:linear-gradient(150deg,rgba(255,255,255,.85),rgba(220,242,234,.75));
}
.lt-avatar svg{width:21px; height:21px}
.lt-desc{-webkit-line-clamp:2; min-height:calc(.88rem * 1.65 * 2)}

/* 工具弹窗：略矮于体验舱，内部纵向，body 可滚动 */
.lt-box{width:min(960px,94vw); max-height:88dvh; display:flex; flex-direction:column}
.lt-head{
  display:flex; align-items:center; gap:12px;
  padding:15px 20px; flex:none;
  border-bottom:1px solid rgba(120,130,120,.14);
}
.lt-head .ait-exp-title{font-weight:650; font-size:1.02rem; color:var(--ink,#3f3b35)}
.lt-head .ait-x{margin-left:auto}
.lt-body{padding:20px; overflow-y:auto; overscroll-behavior:contain}

/* 工具内部通用结构 */
.lt-grid2{display:grid; grid-template-columns:1fr 1fr; gap:14px}
.lt-col{display:flex; flex-direction:column; gap:10px; min-width:0}
.lt-row{display:flex; gap:10px; flex-wrap:wrap; align-items:center}
.lt-field{display:flex; flex-direction:column; gap:6px; flex:1 1 190px; min-width:0}
.lt-field > label,.lt-label{font-size:.82rem; font-weight:600; color:var(--ink-soft,#6a655c)}
.lt-h{font-size:.92rem; font-weight:650; color:var(--ink,#4a453d); margin:2px 0}
.lt-out{
  background:rgba(255,255,255,.62);
  border:1px solid rgba(255,255,255,.75);
  border-radius:14px; padding:12px 14px;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:.84rem; line-height:1.6; color:#3c443f;
  white-space:pre-wrap; word-break:break-word; min-height:46px;
}
.lt-out.dark{background:#1f2733; color:#d7e4dd; border-color:#35404f}
.lt-msg{font-size:.85rem; line-height:1.6}
.lt-msg.good{color:#2e8159}
.lt-msg.bad{color:#c0473e}
.lt-loading{padding:34px; text-align:center; color:var(--muted,#8d877d); font-size:.9rem}

/* 文本域：工具内统一高度节奏 */
.lt-body textarea{
  width:100%; box-sizing:border-box; resize:vertical;
  min-height:170px; line-height:1.6;
}
.lt-body textarea.tall{min-height:260px}

/* 小按钮（复制/单项操作） */
.lt-mini{
  appearance:none; cursor:pointer; font:inherit; font-size:.8rem; white-space:nowrap;
  padding:6px 13px; border-radius:999px; color:var(--ink,#4c4740);
  background:rgba(255,255,255,.55); border:1px solid rgba(255,255,255,.7);
  box-shadow:0 3px 10px rgba(90,100,120,.08);
  transition:transform .15s, background .15s;
}
.lt-mini:hover{transform:translateY(-1px); background:rgba(255,255,255,.8)}
.lt-mini.primary{
  color:#fff; border-color:transparent;
  background:linear-gradient(135deg,var(--brand,#8ca47e),var(--brand-2,#6f9a8d));
}

/* 开关 / 复选行 */
.lt-checks{display:flex; gap:14px; flex-wrap:wrap}
.lt-checks label{display:inline-flex; gap:6px; align-items:center; font-size:.86rem; cursor:pointer}

/* 统计徽章行 */
.lt-stats{display:flex; gap:10px; flex-wrap:wrap}
.lt-stat{
  display:inline-flex; flex-direction:column; gap:2px; min-width:86px;
  padding:10px 14px; border-radius:14px;
  background:rgba(255,255,255,.55); border:1px solid rgba(255,255,255,.72);
}
.lt-stat b{font-size:1.1rem; color:var(--ink,#3f3b35)}
.lt-stat span{font-size:.72rem; color:var(--muted,#8d877d)}

/* range 行 */
.lt-range{display:flex; align-items:center; gap:12px; flex-wrap:wrap}
.lt-range input[type=range]{flex:1 1 160px; accent-color:var(--brand,#8ca47e)}
.lt-range output{font-variant-numeric:tabular-nums; min-width:52px; font-size:.88rem}

/* 差异行 */
.lt-diff{
  margin:0; border-radius:12px; padding:8px 12px;
  font-family:ui-monospace,Menlo,Consolas,monospace; font-size:.82rem; line-height:1.7;
  white-space:pre-wrap; word-break:break-word;
}
.lt-diff.eq{color:var(--ink-soft,#6a655c)}
.lt-diff.del{background:rgba(224,99,82,.14); color:#b33e33}
.lt-diff.ins{background:rgba(96,180,130,.16); color:#2a7d50}

/* 正则匹配高亮 */
.lt-body mark{background:#ffe08a; color:#5b4a10; border-radius:3px; padding:0 2px}

/* 更多入口：GitHub 精选条 */
.lt-more{
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  margin-top:30px; padding:18px 22px; border-radius:18px;
  background:rgba(255,255,255,.4); border:1px solid rgba(255,255,255,.62);
  box-shadow:0 10px 26px rgba(80,90,110,.1);
  backdrop-filter:blur(16px) saturate(1.3); -webkit-backdrop-filter:blur(16px) saturate(1.3);
}
.lt-more p{margin:0; font-size:.88rem; color:var(--ink-soft,#645f56)}

/* 暗色主题：工具内部 */
html[data-theme-dark] body .lt-out{background:#1d242e; border-color:#32404e; color:#d7e4dd}
html[data-theme-dark] body .lt-stat,
html[data-theme-dark] body .lt-more{background:rgba(255,255,255,.06); border-color:rgba(255,255,255,.12)}
html[data-theme-dark] body .lt-stat b{color:#eef1f7}
html[data-theme-dark] body .lt-mini{background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.14); color:#d6dbe6}

/* 触屏：重复元素去毛玻璃 */
@media (hover:none) and (pointer:coarse){
  body .lt-more{backdrop-filter:none; -webkit-backdrop-filter:none}
}

/* 手机：双列变单列、弹窗全屏、内部紧凑 */
@media (max-width:640px){
  .lt-grid2{grid-template-columns:1fr}
  #lt-modal{padding:0}
  .lt-box{width:100vw; height:100dvh; max-height:none; border-radius:0}
  .lt-body{padding:16px}
  .lt-body textarea{min-height:140px}
}

/* ============================================================
   第三十二阶段 · 爱好文件库 hobby.html + 文件查看页 file.html
   约定：只用站点既有 CSS 变量；卡片不铺 backdrop-filter（触屏长列表性能）
   ============================================================ */

/* 分类 chip 上的数量角标 */
.chip .hb-n{margin-left:6px;font-size:.72rem;opacity:.66}
.chip.on .hb-n{opacity:.9}

/* ---- 照片：瀑布流（pixabay 式自然比例） ---- */
.hb-masonry{column-width:240px;column-gap:16px}
.hb-ph{display:block;position:relative;break-inside:avoid;margin:0 0 16px;
       border-radius:14px;overflow:hidden;background:var(--card);
       border:1px solid var(--line);transition:transform .25s ease,box-shadow .25s ease}
.hb-ph:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(0,0,0,.10)}
.hb-ph img{width:100%;display:block;transition:transform .4s ease}
.hb-ph:hover img{transform:scale(1.03)}
.hb-ph-cap{position:absolute;left:0;right:0;bottom:0;padding:34px 14px 10px;
           display:flex;flex-direction:column;gap:2px;
           background:linear-gradient(to top,rgba(20,19,17,.72),rgba(20,19,17,0));
           color:#f5f1e8;opacity:0;transition:opacity .25s ease}
.hb-ph-t{font-size:.86rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb-ph-m{font-size:.72rem;opacity:.82}

/* ---- 视频 / 课程：影院栅格（16:9 缩略卡） ---- */
.hb-cine{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px 20px}
.hb-vc{display:block;text-decoration:none;color:inherit;
       content-visibility:auto;contain-intrinsic-size:auto 270px}
.hb-vthumb{position:relative;display:block;aspect-ratio:16/9;border-radius:14px;
           overflow:hidden;background:#1c1b19;border:1px solid var(--line)}
.hb-vthumb video{width:100%;height:100%;object-fit:cover;pointer-events:none;
                 transition:transform .35s ease}
.hb-vc:hover .hb-vthumb video{transform:scale(1.04)}
.hb-vplay{position:absolute;inset:0;margin:auto;width:58px;height:58px;border-radius:50%;
          display:flex;align-items:center;justify-content:center;
          background:rgba(20,19,17,.55);color:#fff;font-size:20px;padding-left:4px;
          transition:transform .25s ease,background .25s ease}
.hb-vc:hover .hb-vplay{transform:scale(1.1);background:rgba(140,164,126,.92)}
.hb-vopen{position:absolute;top:10px;right:10px;min-width:26px;height:26px;padding:0 7px;
          display:flex;align-items:center;justify-content:center;border-radius:8px;
          background:rgba(20,19,17,.55);color:#fff;font-size:.82rem;opacity:0;transition:opacity .2s}
.hb-vc:hover .hb-vopen{opacity:1}
.hb-vmeta{display:flex;flex-direction:column;gap:3px;padding:10px 2px 0}
.hb-vt{font-size:.92rem;font-weight:600;color:var(--ink);line-height:1.4;
       display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hb-vs{font-size:.76rem;color:var(--ink-soft)}

/* ---- 混合栅格（玄学/医学/音乐/其他/全部） ---- */
.hb-mix{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.hb-mc{display:flex;text-decoration:none;color:inherit;border-radius:14px;overflow:hidden;
       background:var(--card);border:1px solid var(--line);
       flex-direction:column;transition:transform .25s ease,box-shadow .25s ease;
       content-visibility:auto;contain-intrinsic-size:auto 260px}
.hb-mc:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(0,0,0,.09)}
.hb-mthumb{display:block;aspect-ratio:4/3;overflow:hidden;background:#e9e4d8}
.hb-mthumb-169{aspect-ratio:16/9;background:#1c1b19}
.hb-mthumb img,.hb-mthumb video{width:100%;height:100%;object-fit:cover;pointer-events:none;
                                transition:transform .35s ease}
.hb-mc:hover .hb-mthumb img,.hb-mc:hover .hb-mthumb video{transform:scale(1.04)}
.hb-mthumb .hb-vplay{width:48px;height:48px;font-size:16px}
.hb-mcap{padding:11px 13px;display:flex;flex-direction:column;gap:3px;min-width:0}
.hb-mt{font-size:.88rem;font-weight:600;color:var(--ink);
       overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb-ms{font-size:.75rem;color:var(--ink-soft)}
/* 图标卡：音频 / 书籍 / 文档 / 其他 */
.hb-mc-file{flex-direction:row;align-items:center;gap:13px;padding:15px}
.hb-micon{flex:none;width:56px;height:56px;border-radius:12px;display:flex;
          align-items:center;justify-content:center;font-size:.82rem;font-weight:700;
          letter-spacing:.03em;background:rgba(140,164,126,.16);color:#5c7350}
.hb-mc-audio .hb-micon{background:rgba(201,123,90,.16);color:#a45a3a;font-size:1.5rem;border-radius:50%}
.hb-mc-doc .hb-micon{background:rgba(180,160,110,.18);color:#8a7440}
.hb-mc-other .hb-micon{background:rgba(120,120,120,.16);color:#666}
.hb-mc-file .hb-mcap{padding:0}

/* ---- 书籍 / 资料横向行（ituring 式） ---- */
.hb-rows{display:flex;flex-direction:column;gap:12px}
.hb-row{display:flex;align-items:center;gap:16px;padding:14px 18px;border-radius:14px;
        background:var(--card);border:1px solid var(--line);
        transition:box-shadow .2s ease}
.hb-row:hover{box-shadow:0 8px 22px rgba(0,0,0,.07)}
.hb-rcover{flex:none;width:62px;height:84px;border-radius:8px;overflow:hidden;
           display:flex;align-items:center;justify-content:center;
           background:rgba(140,164,126,.16);color:#5c7350;
           font-size:.72rem;font-weight:700;letter-spacing:.04em}
.hb-rcover img{width:100%;height:100%;object-fit:cover}
.hb-rcover-doc{background:rgba(180,160,110,.18);color:#8a7440}
.hb-rcover-audio{background:rgba(201,123,90,.16);color:#a45a3a}
.hb-rcover-other{background:rgba(120,120,120,.16);color:#666}
.hb-rmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.hb-rtitle{font-size:.95rem;font-weight:600;color:var(--ink);text-decoration:none;
           overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb-rtitle:hover{color:var(--sage,#8ca47e)}
.hb-rmeta{font-size:.76rem;color:var(--ink-soft)}
.hb-rops{flex:none;display:flex;gap:8px}

/* 按钮（爱好页 + 查看页共用） */
.hb-btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;
        padding:8px 18px;border-radius:999px;font-size:.85rem;text-decoration:none;
        background:var(--sage,#8ca47e);color:#fff;border:1px solid transparent;
        transition:opacity .2s ease,transform .15s ease}
.hb-btn:hover{opacity:.9}
.hb-btn:active{transform:scale(.97)}
.hb-btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.hb-btn-ghost:hover{background:var(--card);opacity:1}

.hb-sub{margin:28px 0 14px;font-size:1rem;font-weight:600;color:var(--ink)}
.hb-empty{padding:64px 0;text-align:center}

/* 触屏没有 hover：照片卡片说明常驻、↗ 角标常驻 */
@media (hover:none) and (pointer:coarse){
  .hb-ph-cap{opacity:1}
  .hb-vopen{opacity:1}
}

@media (max-width:640px){
  .hb-cine{grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:14px}
  .hb-vplay{width:44px;height:44px;font-size:15px}
  .hb-row{flex-wrap:wrap;padding:14px}
  .hb-rops{width:100%}
  .hb-rops .hb-btn{flex:1}
}

/* ---- 文件查看页 file.html ---- */
.fv-crumbs{display:flex;gap:8px;align-items:center;font-size:.84rem;color:var(--ink-soft);
           flex-wrap:wrap;margin-bottom:6px}
.fv-crumbs a{color:var(--ink-soft);text-decoration:none}
.fv-crumbs a:hover{color:var(--sage,#8ca47e)}
.fv-crumbs span:last-child{color:var(--ink);max-width:50vw;overflow:hidden;
                           text-overflow:ellipsis;white-space:nowrap}
.fv-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;
         flex-wrap:wrap;margin:14px 0 24px}
.fv-head-t h1{font-size:clamp(1.35rem,3vw,1.9rem);line-height:1.3;word-break:break-word;margin:0}
.fv-head-t p{margin:6px 0 0}
.fv-dl{padding:10px 24px;font-size:.9rem}
.fv-image-wrap{margin:0;text-align:center}
.fv-image{max-width:100%;max-height:76vh;border-radius:12px;border:1px solid var(--line)}
.fv-video-wrap{border-radius:14px;overflow:hidden;background:#000}
.fv-video{width:100%;max-height:78vh;display:block;margin:0 auto}
.fv-audio-wrap{display:flex;flex-direction:column;align-items:center;gap:22px;
               padding:52px 20px;border-radius:16px;background:var(--card);
               border:1px solid var(--line)}
.fv-note{font-size:64px;line-height:1;color:var(--sage,#8ca47e)}
.fv-audio{width:min(560px,92vw)}
.fv-pdf-wrap{border:1px solid var(--line);border-radius:14px;overflow:hidden;
             height:calc(100dvh - 300px);min-height:420px;background:#fff}
.fv-pdf{width:100%;height:100%;border:0;display:block}
.fv-pdf-tip{margin-top:10px;text-align:center;font-size:.85rem}
.fv-text{white-space:pre-wrap;word-break:break-word;background:var(--card);
         border:1px solid var(--line);border-radius:14px;padding:22px;
         font-family:ui-monospace,Consolas,Menlo,monospace;font-size:.88rem;line-height:1.7;
         max-height:calc(100dvh - 280px);overflow:auto;margin:0}
.fv-fallback{display:flex;flex-direction:column;align-items:center;gap:16px;
             padding:56px 20px;border-radius:16px;background:var(--card);
             border:1px solid var(--line);text-align:center}
.fv-fallback-icon{width:96px;height:96px;border-radius:18px;display:flex;
                  align-items:center;justify-content:center;font-size:1.05rem;font-weight:700;
                  background:rgba(140,164,126,.16);color:#5c7350}
.fv-fallback-book{background:rgba(140,164,126,.16);color:#5c7350}
.fv-fallback-doc{background:rgba(180,160,110,.18);color:#8a7440}
.fv-fallback-other{background:rgba(120,120,120,.16);color:#666}
.fv-fallback-note{margin:0;color:var(--ink-soft);font-size:.92rem}

@media (max-width:640px){
  .fv-pdf-wrap{height:calc(100dvh - 340px);min-height:340px}
  .fv-crumbs span:last-child{max-width:70vw}
}

/* ============================================================
   第三十三阶段 · 爱好导航二级分类（.sub-group / .sub-children）
   桌面：hover 右侧浮出；触屏：与一级相同的手风琴；
   结构由 hobby-nav.js 按后台分类树动态重建，这里只管样式。
   ============================================================ */
.nav-links .sub-group{position:relative;display:block}
.nav-links .sub-group > a{position:relative;display:block;padding-right:26px!important}
.nav-links .sub-group .sub-caret{position:absolute;right:12px;top:50%;transform:translateY(-50%);
  font-style:normal;opacity:.55;font-size:.95rem;line-height:1;transition:transform .2s}
.nav-links .sub-children{position:absolute;left:calc(100% + 10px);top:-8px;min-width:168px;
  background:#ffffffb0;border:1px solid var(--gl-card-stroke);
  -webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);
  box-shadow:var(--gl-card-shadow-soft);border-radius:14px;padding:8px;
  display:flex;flex-direction:column;gap:2px;
  opacity:0;visibility:hidden;pointer-events:none;z-index:55;
  transform:translateX(-6px);
  transition:opacity .2s var(--ease),transform .2s var(--ease),visibility 0s linear .2s}
html[data-theme-dark] body .nav-links .sub-children{background:#1e222ee0}
/* 透明桥接：父项与侧出面板之间的间隙，避免鼠标穿过时收起 */
.nav-links .sub-children::before{content:"";position:absolute;left:-12px;top:0;bottom:0;width:14px}
.nav-links .sub-group:hover > .sub-children,
.nav-links .sub-group:focus-within > .sub-children,
.nav-links .sub-group.open > .sub-children{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateX(0);
  transition:opacity .2s var(--ease),transform .2s var(--ease)}
.nav-links .sub-children a{display:block;padding:9px 14px;border-radius:10px;font-size:.86rem;
  color:var(--ink-soft)!important;background:transparent!important;white-space:nowrap;
  transition:background .18s,padding-left .18s}
.nav-links .sub-children a:hover{background:#ffffff26!important;color:var(--ink)!important;padding-left:16px}
.nav-links .sub-children a.active{background:linear-gradient(160deg,#fffc,#fff6)!important;
  color:#2f7a68!important;border:1px solid var(--gl-accent)!important;font-weight:600}
.nav-links .sub-children a.sub-all{font-size:.78rem;color:var(--gl-accent-ink)!important;
  border-bottom:1px dashed var(--gl-card-stroke);border-radius:8px 8px 0 0;margin-bottom:2px}
/* 靠近下拉右缘的项改为向左浮出，防止溢出视口 */
.nav-links .submenu.hobby-dyn .sub-group:last-child > .sub-children{
  left:auto;right:calc(100% + 10px);transform:translateX(6px)}
.nav-links .submenu.hobby-dyn .sub-group:last-child:hover > .sub-children,
.nav-links .submenu.hobby-dyn .sub-group:last-child:focus-within > .sub-children,
.nav-links .submenu.hobby-dyn .sub-group:last-child.open > .sub-children{transform:translateX(0)}
.nav-links .submenu.hobby-dyn .sub-group:last-child > .sub-children::before{left:auto;right:-12px}
.nav-links .sub-group.current > a{color:#2f7a68!important;font-weight:600}

/* 二级 chips（hobby 页子分类过滤条，由 hobby.js 渲染 #hb-subchips） */
.hb-subchips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.hb-subchips .chip{font-size:.8rem;padding:6px 14px}
.hb-subchips .hb-sub-count{opacity:.6;font-size:.78rem;margin-left:3px}
.hb-sub-hint{margin-top:10px;font-size:.82rem;color:var(--ink-faint)}

/* 旧版专页（music/shelf/xuanxue）底部内嵌「我的资料库」分区 */
.hb-embed-title{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:4px}
.hb-embed-empty{padding:34px 20px;text-align:center;color:var(--ink-faint);
  border:1px dashed var(--gl-card-stroke);border-radius:18px;background:rgba(255,255,255,.25);
  font-size:.9rem}

/* 移动端：二级和一级一样变静态缩进手风琴（断点与一级 .submenu 静态化一致） */
@media(max-width:768px){
  html body .nav-links .sub-children{
    position:static;transform:none;opacity:1;visibility:visible;pointer-events:auto;
    background:transparent;border:none;box-shadow:none;
    padding:2px 0 6px 18px;min-width:auto;display:none}
  html body .nav-links .sub-group.open > .sub-children{display:flex}
  html body .nav-links .sub-group > a{padding-right:14px!important}
  html body .nav-links .sub-group.open > a .sub-caret{transform:translateY(-50%) rotate(90deg)}
  html body .nav-links .sub-children a{
    display:flex;align-items:center;width:100%;box-sizing:border-box;
    padding:8px 12px;font-size:.86rem;border-radius:12px;white-space:normal}
  html body .nav-links .sub-children a.sub-all{border-bottom:none;margin-bottom:0}
}

/* ============================================================
   第四十三阶段 · 金融导航三级化（.submenu.finance-nested）
   金融下拉位于导航右侧，三级面板与 hobby 一样统一向左浮出，避免溢出视口；
   仅桌面生效，移动端沿用上面的静态手风琴，不被高特异性规则破坏。
   （music.html 不加载 core.css，故此处与 core.css 同步保留一份）
   ============================================================ */
@media(min-width:769px){
  .nav-links .submenu.finance-nested .sub-group > .sub-children{
    left:auto;right:calc(100% + 10px);top:-8px;transform:translateX(6px)}
  .nav-links .submenu.finance-nested .sub-group:hover > .sub-children,
  .nav-links .submenu.finance-nested .sub-group:focus-within > .sub-children,
  .nav-links .submenu.finance-nested .sub-group.open > .sub-children{transform:translateX(0)}
  .nav-links .submenu.finance-nested .sub-group > .sub-children::before{left:auto;right:-12px}
  .nav-links .submenu.finance-nested .sub-group + .sub-group{border-top:1px solid var(--gl-card-stroke)}
}

