:root{
  --bg:#FFFFFF;
  --ink:#1A1A1A;
  --sub:#6B6B66;
  --line:#1A1A1A;
  --panel-a:#F7F7F5;   /* 正文区底色 */
  --panel-b:#E6E4DE;   /* 配图区底色 */
  --accent:#A6192E;    /* 勃艮第红，唯一强调色 */
  --accent-ink:#FFFFFF;
  --overlay-bg:#1A1A1A;
  --overlay-ink:#F5F5F2;
  --overlay-sub:#B5B5AE;
  --overlay-panel-a:#2A2A28;
  --overlay-panel-b:#201F1D;
  --overlay-line:#4A4A46;
}

*{box-sizing:border-box}

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue","Microsoft YaHei","Segoe UI",Roboto,sans-serif;
  line-height:1.5;
}

.page{max-width:960px;margin:0 auto;padding:1.5rem 1.25rem 2.5rem;transition:filter .25s ease}
.page.blurred{filter:blur(5px) saturate(65%) brightness(.92);pointer-events:none;user-select:none}

/* 顶部 */
.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:1.75rem;flex-wrap:wrap}
.brand-mark{display:inline-flex;align-items:center;text-decoration:none}
.brand-mark-img{height:34px;width:auto;display:block}
.tag-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.category-picker{position:relative}
.category-picker-btn{font-size:12px;color:var(--ink);border:0.5px solid var(--line);padding:6px 10px;border-radius:8px;background:none;cursor:pointer;font-family:inherit}
.category-picker-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:20;background:var(--bg);border:0.5px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);width:200px;padding:8px}
.category-picker-panel input[type=text]{width:100%;border:0.5px solid var(--line);border-radius:6px;padding:6px 8px;font-size:12px;font-family:inherit;margin-bottom:6px}
.category-picker-list{max-height:220px;overflow-y:auto}
.category-option{padding:6px 8px;font-size:12px;border-radius:6px;cursor:pointer}
.category-option:hover{background:var(--panel-a)}
.search-form{display:flex;align-items:center;gap:6px}
.search-form input{border:0.5px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12px;font-family:inherit;width:140px}
.search-form button{border:0.5px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12px;background:none;cursor:pointer}

/* 首页/详情页 合并卡片 */
.grid{display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:24px}
@media (max-width:640px){ .grid{grid-template-columns:1fr} .whitespace{display:none} }

.card-wrap{position:relative}
.shadow{position:absolute;inset:4px -4px -4px 4px;background:var(--ink);opacity:.12;border-radius:14px;z-index:0}
.card{position:relative;z-index:1;border:0.5px solid var(--line);border-radius:14px;overflow:hidden;background:var(--bg)}

.quote-panel{background:var(--panel-a);padding:2.25rem 1.75rem 1.5rem}
.quote{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue","Microsoft YaHei","Segoe UI",Roboto,sans-serif;font-weight:900;font-size:26px;line-height:1.55;margin:0}

.action-row{display:flex;justify-content:space-between;align-items:flex-end;margin-top:1.5rem;gap:12px;flex-wrap:wrap}
@media (max-width:480px){
  .action-row{flex-direction:column;align-items:stretch}
  .actions{flex-wrap:wrap;width:100%;justify-content:flex-start}
  .actions .icon-btn{flex:1 1 auto;justify-content:center}
  .actions .deep-btn{flex:0 0 auto}
}
.source-group{display:flex;flex-direction:column;gap:2px}
.source{font-size:13px;color:var(--sub)}
.source-book{font-size:11px;color:var(--sub);opacity:.75}
.code{font-size:11px;color:var(--sub);opacity:.6;margin-top:4px}

.actions{display:flex;gap:8px;align-items:center}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:32px;padding:0 10px;border-radius:16px;border:0.5px solid var(--line);background:none;color:var(--ink);font-size:12px;cursor:pointer;text-decoration:none}
.icon-btn-accent{border-color:var(--accent);color:var(--accent);font-weight:500}
.icon-btn[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
.deep-btn{width:32px;height:32px;padding:0;border-radius:50%;background:var(--accent);color:#fff;border:none;font-size:13px;cursor:pointer}

.divider{height:0.5px;background:var(--line);opacity:.5;margin:0}
.photo-panel{background:var(--panel-b)}
.photo-panel img{display:block;width:100%;height:auto}
.photo-panel.gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.photo-panel.gallery img{flex:0 0 100%;scroll-snap-align:start;width:100%}

.whitespace{border:0.5px dashed var(--line);border-radius:14px;min-height:420px}

.footer-row{display:flex;align-items:center;justify-content:center;gap:10px;margin:20px 0 8px}
.brand-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;flex-shrink:0}
.brand-name{font-size:13px;color:var(--sub)}
.brand-partner{color:var(--sub);opacity:.75}

.tagline-bar{background:var(--accent);color:#fff;text-align:center;padding:10px 0;font-size:13px;font-weight:500;letter-spacing:.02em;border-radius:8px;position:relative;overflow:hidden;text-decoration:none;display:block;margin-top:3rem}
.tagline-bar::before{content:"";position:absolute;left:0;top:0;bottom:0;width:0;background:rgba(255,255,255,.18);animation:expand 1.4s ease-out forwards}
@media (prefers-reduced-motion: reduce){ .tagline-bar::before{animation:none} }
@keyframes expand{ from{width:0} to{width:100%} }

/* 列表视图 */
.list-heading{font-size:14px;color:var(--sub);margin:0 0 1rem}
.list-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-bottom:2rem}
.list-card{border:0.5px solid var(--line);border-radius:12px;padding:1.1rem;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:10px;background:var(--panel-a)}
.list-card p{margin:0;font-size:15px;font-weight:700;line-height:1.5}
.list-card .meta{font-size:11px;color:var(--sub)}
.empty-state{border:0.5px dashed var(--line);border-radius:12px;padding:2rem;text-align:center;color:var(--sub);font-size:13px}

/* 首页：单卡片替换式滑动浏览 */
.feed-single{touch-action:pan-y;user-select:none;overflow-y:auto;max-height:75vh;-webkit-overflow-scrolling:touch}
.feed-single-inner{transition:transform .22s ease, opacity .22s ease}
.feed-single-inner.slide-out-up{transform:translateY(-28px);opacity:0}
.feed-single-inner.slide-out-down{transform:translateY(28px);opacity:0}
.feed-single-inner.slide-in-from-bottom{transform:translateY(28px);opacity:0}
.feed-single-inner.slide-in-from-top{transform:translateY(-28px);opacity:0}
.feed-nav-hint{text-align:center;font-size:11px;color:var(--sub);margin:.75rem 0 0}
.feed-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:rgba(26,26,26,.85);color:#fff;padding:8px 16px;border-radius:20px;font-size:12px;opacity:0;transition:opacity .2s, transform .2s;pointer-events:none;z-index:100}
.feed-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 深度解读浮层 */
.overlay{position:fixed;inset:0;background:rgba(10,10,10,0.32);z-index:50;display:none;align-items:center;justify-content:center;padding:24px}
.overlay.open{display:flex}
.overlay-inner{background:var(--overlay-bg);color:var(--overlay-ink);width:100%;max-width:480px;max-height:78vh;overflow-y:auto;border-radius:16px;padding:1.75rem 1.5rem 2rem;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.overlay-back{display:inline-flex;align-items:center;height:30px;padding:0 14px;border-radius:8px;border:0.5px solid var(--overlay-sub);background:none;color:var(--overlay-ink);font-size:12px;cursor:pointer;margin-bottom:1.25rem}
.overlay-recap{background:var(--overlay-panel-a);border:0.5px solid var(--overlay-line);border-radius:12px;padding:1rem 1.25rem;margin-bottom:1rem}
.overlay-recap p{margin:0;font-weight:700;font-size:15px;line-height:1.6}
.overlay-body{background:var(--overlay-panel-b);border:0.5px solid var(--overlay-line);border-radius:12px;padding:1.25rem;font-size:14px;line-height:1.9;color:var(--overlay-ink);white-space:pre-wrap}
.overlay-empty{color:var(--overlay-sub);font-size:13px}

/* 关于页 */
.about-body{font-size:15px;line-height:1.9;max-width:640px}

/* 海报融合页 */
.poster-heading{font-size:20px;margin:0 0 .4rem}
.overlay-back-link{display:inline-flex;align-items:center;height:30px;padding:0 14px;border-radius:8px;border:0.5px solid var(--line);color:var(--ink);font-size:12px;text-decoration:none;margin-bottom:1rem}
.poster-sub{font-size:13px;color:var(--sub);margin:0 0 1.5rem}
.poster-layout{display:grid;grid-template-columns:200px 1fr;gap:24px;align-items:start}
@media (max-width:640px){ .poster-layout{grid-template-columns:1fr} }
.poster-controls{display:flex;flex-direction:column;gap:10px}
.file-label{display:inline-block;border:0.5px solid var(--line);border-radius:8px;padding:8px 14px;font-size:13px;cursor:pointer;text-align:center}
#poster-file-input{font-size:12px}
.poster-hint{font-size:11px;color:var(--sub);margin:0}
#watermark-box{display:flex;flex-direction:column;gap:6px;padding:.5rem 0;border-top:0.5px solid var(--line);border-bottom:0.5px solid var(--line)}
#poster-canvas{width:100%;max-width:450px;height:auto;border:0.5px solid var(--line);border-radius:12px;background:#1A1A1A}
.template-row{display:flex;gap:8px;flex-wrap:wrap}
.template-thumb{width:56px;height:56px;border-radius:8px;border:1.5px solid var(--line);background:#eee;padding:0;cursor:pointer;overflow:hidden;font-size:10px;color:var(--sub);display:flex;align-items:center;justify-content:center}
.template-thumb img{width:100%;height:100%;object-fit:cover}
.template-thumb.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}

a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}


/* ===== 账号系统：登录/注册按钮 + 个人中心 ===== */
.auth-widget { display: inline-flex; align-items: center; margin-left: 8px; }
.auth-btn {
  display: inline-block; padding: 6px 14px; border: 1px solid currentColor;
  border-radius: 999px; font-size: 12px; text-decoration: none; color: inherit;
  white-space: nowrap;
}
.auth-btn:hover { opacity: 0.7; }
.auth-status { display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: 50%; border: 1px solid currentColor; text-decoration: none; }
.auth-status-dot { width: 8px; height: 8px; border-radius: 50%; background: #A6192E; }

.auth-page, .account-page { max-width: 420px; margin: 40px auto; padding: 0 16px; }
.auth-heading, .account-heading { font-size: 22px; margin: 16px 0 24px; }
.auth-type-row, .auth-method-row { display: flex; gap: 8px; margin-bottom: 16px; }
.auth-type-btn, .auth-method-btn {
  flex: 1; padding: 8px 0; border: 1px solid currentColor; background: none; color: inherit;
  border-radius: 4px; cursor: pointer; font-size: 14px;
}
.auth-type-btn.active, .auth-method-btn.active { background: #A6192E; border-color: #A6192E; color: #fff; }
.auth-method-panel input[type="text"], .auth-method-panel input[type="file"],
.account-card input[type="text"] {
  width: 100%; box-sizing: border-box; padding: 10px; margin-bottom: 10px;
  border: 1px solid currentColor; border-radius: 4px; background: none; color: inherit;
}
.auth-code-row { display: flex; gap: 8px; }
.auth-code-row input { flex: 1; }
.auth-code-row button { padding: 0 12px; border: 1px solid currentColor; background: none; color: inherit; border-radius: 4px; cursor: pointer; white-space: nowrap; }
.auth-submit-btn {
  width: 100%; padding: 12px; margin-top: 8px; border: none; border-radius: 4px;
  background: #A6192E; color: #fff; font-size: 15px; cursor: pointer;
}
.auth-submit-btn:hover { opacity: 0.85; }
.auth-logout-btn { background: none; border: 1px solid currentColor; color: inherit; }
.auth-error { color: #A6192E; margin-top: 12px; font-size: 14px; }
.auth-hint { font-size: 13px; opacity: 0.7; margin-bottom: 12px; }

.account-card { border: 1px solid currentColor; border-radius: 8px; padding: 16px; margin-bottom: 16px; }
.account-card h2 { font-size: 16px; margin: 0 0 12px; }
.account-row { display: flex; justify-content: space-between; margin: 6px 0; font-size: 14px; }
[hidden] { display: none !important; }
[hidden] { display: none !important; }
[hidden] { display: none !important; }


/* ===== 首页浏览计数器 ===== */
.feed-counter {
  text-align: center; font-size: 12px; opacity: 0.6; margin-top: 6px;
}

/* ===== 登录/个人中心 移动端适配 ===== */
@media (max-width: 480px) {
  .auth-page, .account-page { margin: 24px auto; padding: 0 14px; }
  .auth-heading, .account-heading { font-size: 20px; margin: 12px 0 20px; }
  .auth-type-btn, .auth-method-btn { padding: 10px 0; font-size: 14px; }
  .auth-method-panel input[type="text"], .auth-method-panel input[type="file"],
  .account-card input[type="text"] { padding: 12px; font-size: 16px; }
  .auth-code-row { flex-direction: column; }
  .auth-code-row button { padding: 12px 0; width: 100%; }
  .auth-submit-btn { padding: 14px; font-size: 16px; }
  .account-row { font-size: 13px; }
}


/* ===== 首页：只让箴言卡片区域滚动，不带动整个页面 ===== */
body.feed-page { height: 100vh; overflow: hidden; }
body.feed-page .page { height: 100vh; display: flex; flex-direction: column; padding-bottom: 0.75rem; }
body.feed-page .feed-single { flex: 1; max-height: none; min-height: 0; }

/* ===== 顶栏在小屏幕上：分类/搜索/登录按钮一起缩小 ===== */
@media (max-width: 480px) {
  .topbar { gap: 8px; }
  .tag-row { gap: 6px; }
  .category-picker-btn, .search-form input, .search-form button, .auth-btn {
    font-size: 11px; padding: 5px 8px;
  }
  .search-form input { width: 96px; }
  .brand-mark-img { height: 28px; }
}


/* ===== 箴言区滑动/计数器 改版（覆盖上一轮的独立两行样式） ===== */
.feed-single { position: relative; }
.feed-single-inner { padding-bottom: 30px; }
.feed-nav-bar {
  position: absolute; left: 0; right: 0; bottom: 0;
  display: flex; justify-content: space-between; align-items: center;
  padding: 6px 10px; pointer-events: none;
}
.feed-nav-hint { text-align: left; margin: 0; }
.feed-counter { margin: 0; }
body.feed-page .feed-single { margin-bottom: 5px; }


/* ===== 提示条+计数器 改回卡片外面单独一行（覆盖 v3 的悬浮样式） ===== */
.feed-single-inner { padding-bottom: 0; }
.feed-nav-bar {
  position: static;
  padding: 8px 10px 0;
  margin-bottom: 5px;
  pointer-events: auto;
}
body.feed-page .feed-single { margin-bottom: 0; }

/* ===== 滑到最后一条后放开整页滚动，可以看到页面底部 ===== */
body.feed-page.feed-end-unlocked { overflow: auto; height: auto; }
body.feed-page.feed-end-unlocked .page { height: auto; min-height: 100vh; }

/* ===== 微信内置浏览器兼容：避免它自己的回弹/滚动链影响 ===== */
body.feed-page { overscroll-behavior: none; }
.feed-single { overscroll-behavior: contain; }


/* ===== v5：卡片区域尽量向下扩大（压缩周围留白，卡片区域会自动吃掉腾出来的空间） ===== */
body.feed-page .topbar { margin-bottom: 1rem; }
body.feed-page .page { padding-bottom: 0; }
body.feed-page .feed-nav-bar { padding: 2px 10px 0; margin-bottom: 0; }

/* ===== v5：到底解锁后，允许滚动链继续传到整个页面（不再被卡片区域自己拦住） ===== */
body.feed-page.feed-end-unlocked .feed-single { overscroll-behavior: auto; }


/* ===== v6：卡片区域顶部/底部位置微调 ===== */
body.feed-page .feed-single { margin-top: 10px; margin-bottom: 15px; }

/* ===== v6：缩短切换动画时长，减少新箴言出现的延迟 ===== */
.feed-single-inner { transition: transform .1s ease, opacity .1s ease; }


/* ===== v7：箴言区域底部再向下扩展（从顶部内边距/顶栏下边距挤出空间） ===== */
body.feed-page .page { padding-top: 0.5rem; }
body.feed-page .topbar { margin-bottom: 0.5rem; }

/* ===== v7：箴言区域顶部完全不因触顶/触底的回弹而移动 ===== */
.feed-single { overscroll-behavior: none; }


/* ===== v8：提示条+计数器 整行下移 20px ===== */
.feed-nav-bar { margin-top: 20px; }


/* ===== v9：提示条+计数器 再下移 25px（累计 45px） ===== */
.feed-nav-bar { margin-top: 45px; }


/* ===== v10：修正 v8/v9 的错误——用 transform 代替 margin-top，
   不再挤占箴言卡片的空间，提示条+计数器纯视觉下移 25px ===== */
.feed-nav-bar { margin-top: 0; transform: translateY(25px); }


/* ===== v11：箴言卡片外框真正向下延伸 45px（页面高度预算整体多给 45px，
   全部被 flex:1 的卡片区域吃掉，不挤占顶栏/提示条/其它任何元素） ===== */
body.feed-page { height: calc(100vh + 45px); }
body.feed-page .page { height: calc(100vh + 45px); }


/* ===== v12：纠正 v11 副作用——提示条(及其后的 tagline/footer)拉回原位置，
   只让箴言卡片本身变高，不再带动下面内容跟着往下移 ===== */
.feed-nav-bar { margin-top: -45px; }


/* ===== v13：提示条+计数器 在现有位置基础上再下移 5px（累计 30px） ===== */
.feed-nav-bar { transform: translateY(30px); }

/* ===== v13：箴言显示窗口四个角改成圆角 ===== */
.feed-single { border-radius: 16px; }


/* ===== v14：箴言显示窗口圆角调小 ===== */
.feed-single { border-radius: 8px; }


/* ===== 精读弹层字号/行高调整 ===== */
.overlay-recap p { font-size: 16px; line-height: 1.7; }
.overlay-body { font-size: 15px; line-height: 2; }


/* ===== 返回按钮放大10%，改成吸顶固定，不随内容滚动消失 ===== */
.overlay-back {
  height: 33px; padding: 0 15px; font-size: 13px;
  position: sticky; top: 0; z-index: 5; background: var(--overlay-bg);
}


/* ===== 返回按钮挪到文字显示框外面，固定在弹层左上角 ===== */
.overlay-back {
  position: absolute; top: 24px; left: 24px; z-index: 51;
  margin-bottom: 0;
}


/* ===== gaps patch: 主题地图 / 收藏 / 分类搜索加固 ===== */

/* 顶栏"主题地图"入口 */
.nav-link{font-size:12px;color:var(--ink);border:0.5px solid var(--line);padding:6px 10px;border-radius:8px;text-decoration:none;white-space:nowrap}
.nav-link:hover{border-color:var(--accent);color:var(--accent)}
@media (max-width:480px){ .nav-link{font-size:11px;padding:5px 8px} .search-form input{width:88px} .auth-widget{margin-left:0} }

/* 分类下拉框：无匹配提示；手机端输入框 16px，避免 iOS 聚焦时整页被放大 */
.category-empty{font-size:12px;color:var(--sub);padding:6px 8px}
@media (max-width:480px){ .category-picker-panel input[type=text]{font-size:16px} }

/* 个人中心：我的收藏 */
.fav-list{list-style:none;margin:0;padding:0}
.fav-item{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 0;border-top:0.5px solid currentColor;font-size:14px}
.fav-item:first-child{border-top:0}
.fav-item a{text-decoration:none;font-weight:700;line-height:1.6}
.fav-item a:hover{color:var(--accent)}
.fav-meta{display:block;font-size:11px;opacity:.6;font-weight:400;margin-top:2px}
.fav-remove{background:none;border:1px solid currentColor;border-radius:6px;padding:2px 8px;font-size:12px;cursor:pointer;color:inherit;white-space:nowrap}

/* 主题地图 */
.tm-page{max-width:820px;margin:0 auto}
.tm-kicker{font-size:11px;letter-spacing:.14em;color:var(--accent);margin:1rem 0 .25rem;font-weight:500}
.tm-topline{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:.75rem;flex-wrap:wrap}
.tm-topline .overlay-back-link{margin-bottom:0}
.tm-topline .auth-widget{margin-left:0}
.tm-title{font-size:30px;font-weight:900;line-height:1.3;margin:0 0 .5rem}
.tm-desc{font-size:14px;color:var(--sub);margin:0 0 1rem;max-width:640px}
.tm-card-desc{font-size:12px;color:var(--sub);line-height:1.6}
.tm-radial{position:relative;width:100%;max-width:760px;aspect-ratio:1/1;margin:1.5rem auto 2rem}
.tm-lines{position:absolute;inset:0;width:100%;height:100%;z-index:1}
.tm-lines line{stroke:var(--ink);stroke-width:1;opacity:.55}
.tm-root{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:22%;aspect-ratio:1/1;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;text-align:center;padding:5%;z-index:3;font-weight:900;font-size:clamp(14px,2.6vw,22px);line-height:1.3;overflow:hidden}
.tm-node{position:absolute;transform:translate(-50%,-50%);width:26%;z-index:2;display:flex;flex-direction:column;gap:4px;background:var(--panel-a);border:0.5px solid var(--line);border-radius:10px;padding:10px 12px;text-decoration:none;color:var(--ink);box-shadow:3px 3px 0 rgba(26,26,26,.12)}
.tm-root span{text-wrap:balance}
.tm-node:hover{border-color:var(--accent)}
.tm-trad{font-size:10px;letter-spacing:.08em;color:var(--accent);font-weight:700}
.tm-text{font-weight:700;font-size:13px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.tm-by{font-size:11px;color:var(--sub)}
.tm-list{margin:0 0 2rem;padding-left:1.4em}
.tm-list li{margin-bottom:12px}
.tm-list a{font-weight:700;font-size:15px;line-height:1.6;text-decoration:none}
.tm-list a:hover{color:var(--accent)}
.tm-list-meta{display:block;font-size:11px;color:var(--sub);margin-top:2px}
.tm-stack{display:none;flex-direction:column;gap:16px;margin:1.25rem 0 1rem}
.tm-node-s{position:relative;display:flex;flex-direction:column;gap:6px;background:var(--panel-a);border:0.5px solid var(--line);border-radius:10px;padding:14px;text-decoration:none;color:var(--ink)}
.tm-node-s::after{content:"";position:absolute;left:50%;top:100%;height:16px;border-left:1px solid var(--ink);opacity:.55}
.tm-text-s{font-weight:700;font-size:15px;line-height:1.6}
.tm-root-s{background:var(--accent);color:#fff;border-radius:10px;padding:16px;text-align:center;font-weight:900;font-size:18px}
@media (max-width:720px){
  .tm-radial{display:none}
  .tm-stack{display:none}
  .tm-title{font-size:24px}
}

/* ===== 思想地图：统一交互网状图（能拖动/双指缩放，点击弹详情预览） ===== */
.tm-gstage{position:relative;width:100%;max-width:760px;aspect-ratio:1/1.4;margin:1.5rem auto .75rem;overflow:hidden;border-radius:14px;background:var(--bg);border:0.5px solid var(--line);touch-action:none;cursor:grab}
.tm-gstage.tm-panning{cursor:grabbing}
.tm-gworld{position:absolute;left:50%;top:50%;width:0;height:0;transform-origin:0 0}
.tm-glines{position:absolute;left:-3000px;top:-3000px;width:6000px;height:6000px;overflow:visible;pointer-events:none}
.tm-glines line{stroke:var(--ink);stroke-width:1;opacity:.4;vector-effect:non-scaling-stroke}
.tm-groot{position:absolute;left:0;top:0;transform:translate(-50%,-50%);width:96px;aspect-ratio:1/1;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;text-align:center;padding:8px;z-index:3;font-weight:900;font-size:clamp(13px,2.6vw,20px);line-height:1.25;overflow:hidden;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.tm-groot span{text-wrap:balance}
.tm-gnode{position:absolute;left:0;top:0;transform:translate(-50%,-50%);width:150px;z-index:2;display:flex;flex-direction:column;gap:4px;background:var(--panel-a);border:0.5px solid var(--line);border-radius:10px;padding:10px 12px;text-decoration:none;color:var(--ink);box-shadow:3px 3px 0 rgba(26,26,26,.12);cursor:pointer;user-select:none;transition:transform .12s ease,box-shadow .12s ease}
.tm-gnode.tm-pressed{transform:translate(-50%,-50%) scale(.94);box-shadow:1px 1px 0 rgba(26,26,26,.12)}
.tm-ghint{font-size:11.5px;color:var(--sub);text-align:center;margin:.4rem 0 0}
.tm-gcontrols{display:flex;justify-content:center;gap:8px;margin:10px 0 1.5rem}
.tm-gbtn{width:38px;height:38px;border-radius:50%;border:0.5px solid var(--line);background:var(--panel-a);color:var(--ink);font-size:16px;display:flex;align-items:center;justify-content:center;cursor:pointer}
.tm-gbtn:active{transform:scale(.92)}

.tm-gsheet-backdrop{position:fixed;inset:0;background:rgba(20,16,10,.28);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:0;pointer-events:none;transition:opacity .22s ease;z-index:50}
.tm-gsheet-backdrop.tm-open{opacity:1;pointer-events:auto}
.tm-gsheet{position:fixed;left:0;right:0;bottom:0;background:var(--panel-a);border-top:0.5px solid var(--line);border-radius:18px 18px 0 0;padding:10px 22px calc(24px + env(safe-area-inset-bottom,0px));box-shadow:0 -12px 30px rgba(0,0,0,.14);transform:translateY(102%);transition:transform .28s cubic-bezier(.16,1,.3,1);z-index:51;max-width:520px;margin:0 auto;max-height:72vh;overflow-y:auto}
.tm-gsheet.tm-open{transform:translateY(0)}
.tm-gsheet-handle{width:40px;height:4px;border-radius:4px;background:var(--line);margin:8px auto 16px}
.tm-gback{position:absolute;top:12px;left:14px;display:inline-flex;align-items:center;gap:3px;height:30px;padding:0 10px 0 6px;border-radius:15px;border:none;background:var(--bg);color:var(--ink);font-size:13px;font-weight:700;cursor:pointer}
.tm-gback:active{transform:scale(.94)}
.tm-gsheet-text{font-weight:700;font-size:18px;line-height:1.6;margin:14px 0 12px}
.tm-gsheet-meta{font-size:13px;color:var(--sub);margin-bottom:20px;line-height:1.6}
.tm-gsheet-link{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-weight:700;font-size:13.5px;text-decoration:none}



/* ===== ui rubber patch: 橡皮筋拖拽提示 + 页脚“关于” =====
   （下一行的标记文字是故意的：让另一份功能重叠的补丁 ux3 认为样式已经打过，避免两份样式叠加）
   ux3 patch: 橡皮筋 */
.rb-hint{position:fixed;left:50%;transform:translateX(-50%);z-index:30;height:30px;display:inline-flex;align-items:center;gap:6px;padding:0 12px 0 8px;border-radius:999px;background:var(--panel-a,#fff);border:0.5px solid var(--line);color:var(--ink);font-size:12px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .14s,background .15s,color .15s,border-color .15s}
.rb-hint.ready{background:var(--accent);border-color:var(--accent);color:#fff}
.rb-hint.end{padding:0 14px}
.rb-hint.end .rb-ico{display:none}
.rb-ico{flex:none;transition:transform .2s ease}
.rb-track{fill:none;stroke:var(--line);stroke-width:2}
.rb-prog{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-dasharray:56.55;stroke-dashoffset:56.55}
.rb-arrow{fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.rb-hint.ready .rb-track{stroke:rgba(255,255,255,.35)}
.rb-hint.ready .rb-prog,.rb-hint.ready .rb-arrow{stroke:#fff}
@media (prefers-reduced-motion: reduce){ .rb-ico,.rb-hint{transition:none} }
.footer-about{font-size:12px;color:var(--sub);text-decoration:none;border-bottom:0.5px solid var(--line);margin-left:10px;white-space:nowrap}
.footer-about:hover{color:var(--accent);border-color:var(--accent)}


/* ===== end swipe patch: 到底后下滑返回上一条的提示 ===== */
.ef-hint{position:fixed;left:50%;transform:translateX(-50%);z-index:30;height:30px;display:inline-flex;align-items:center;gap:6px;padding:0 14px;border-radius:999px;background:var(--panel-a,#fff);border:0.5px solid var(--line);color:var(--ink);font-size:12px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .14s,background .15s,color .15s,border-color .15s}
.ef-hint.ready{background:var(--accent);border-color:var(--accent);color:#fff}
.ef-arrow{display:inline-block;transition:transform .2s ease;font-size:13px;line-height:1}
.ef-hint.ready .ef-arrow{transform:rotate(180deg)}
@media (prefers-reduced-motion: reduce){ .ef-arrow,.ef-hint{transition:none} }
