/* ==========================================================================
   Research Hub · System 1  WebUI  v2 设计系统
   双主题（light-dark）· 编辑级排版 · 全链路动效
   ========================================================================== */

#rh-app{
  color-scheme:light dark;
  /* ---- 色彩 ---- */
  --rh-accent:light-dark(#5850e4,#9292f6);
  --rh-accent-2:light-dark(#8b5cf6,#a78bfa);
  --rh-accent-grad:linear-gradient(135deg,var(--rh-accent),var(--rh-accent-2));
  --rh-on-accent:light-dark(#ffffff,#111116);
  --rh-accent-soft:light-dark(rgba(88,80,228,.09),rgba(146,146,246,.13));
  --rh-bg:light-dark(#f3f2ee,#0a0a0e);
  --rh-panel:light-dark(#ffffff,#141419);
  --rh-panel-2:light-dark(#f7f6f2,#1b1b22);
  --rh-fg:light-dark(#191920,#f0f0f4);
  --rh-muted:light-dark(#71717c,#9c9ca8);
  --rh-faint:light-dark(#a6a6b0,#5f5f6b);
  --rh-border:light-dark(rgba(25,25,38,.09),rgba(255,255,255,.08));
  --rh-border-strong:light-dark(rgba(25,25,38,.17),rgba(255,255,255,.16));
  --rh-input:light-dark(rgba(25,25,38,.05),rgba(255,255,255,.055));
  --rh-danger:light-dark(#d63a2e,#ff8a7a);
  --rh-danger-bg:light-dark(#fdecea,rgba(255,110,90,.12));
  --rh-ok:light-dark(#12805c,#3ddba4);
  --rh-warn:light-dark(#d97706,#fbbf24);
  --rh-shimmer:light-dark(rgba(255,255,255,.5),rgba(255,255,255,.08));
  /* ---- 阴影 ---- */
  --rh-sh-sm:0 1px 2px light-dark(rgba(22,18,45,.05),rgba(0,0,0,.35));
  --rh-sh-md:0 2px 6px light-dark(rgba(22,18,45,.05),rgba(0,0,0,.3)),0 14px 34px -10px light-dark(rgba(22,18,45,.16),rgba(0,0,0,.5));
  --rh-sh-lg:0 4px 14px light-dark(rgba(22,18,45,.08),rgba(0,0,0,.4)),0 28px 64px -14px light-dark(rgba(22,18,45,.24),rgba(0,0,0,.62));
  --rh-sh-accent:0 6px 20px -4px light-dark(rgba(88,80,228,.42),rgba(120,120,250,.32));
  /* ---- 形状 / 动效 ---- */
  --rh-r-sm:9px;--rh-r-md:13px;--rh-r-lg:18px;
  --rh-gap:16px;
  --rh-sbw:320px;
  --rh-ease:cubic-bezier(.22,.61,.36,1);
  --rh-spring:cubic-bezier(.32,1.28,.5,1);
  position:relative;display:flex;width:100%;height:100vh;
  background:var(--rh-bg);color:var(--rh-fg);
  font-family:ui-sans-serif,-apple-system,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:14px;line-height:1.55;
  border:0;border-radius:0;overflow:hidden;
  text-align:left;
  -webkit-font-smoothing:antialiased;
}
html,body{margin:0;padding:0;height:100%}
#rh-app *,#rh-app *::before,#rh-app *::after{box-sizing:border-box}
#rh-app [hidden]{display:none!important}
#rh-app h1,#rh-app h2,#rh-app h3,#rh-app h4,#rh-app p{margin:0}
:where(#rh-app) button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:left}
#rh-app img{display:block}
#rh-app a{color:var(--rh-accent);text-decoration:none}
#rh-app a:hover{text-decoration:underline}
#rh-app code{font-family:ui-monospace,SFMono-Regular,Consolas,"Courier New",monospace;font-size:12px;background:var(--rh-input);padding:1.5px 7px;border-radius:6px;word-break:break-all}
#rh-app ::-webkit-scrollbar{width:9px;height:9px}
#rh-app ::-webkit-scrollbar-thumb{background:light-dark(rgba(25,25,38,.18),rgba(255,255,255,.14));border-radius:99px;border:2px solid transparent;background-clip:content-box}
#rh-app ::-webkit-scrollbar-thumb:hover{background:light-dark(rgba(25,25,38,.32),rgba(255,255,255,.26));background-clip:content-box;border:2px solid transparent}
#rh-app ::-webkit-scrollbar-track{background:transparent}
#rh-app :focus-visible{outline:2px solid color-mix(in srgb,var(--rh-accent) 65%,transparent);outline-offset:2px;border-radius:6px}

/* ==========================================================================
   主画布 · 氛围光
   ========================================================================== */
#rh-main{flex:1;min-width:0;position:relative;display:flex;flex-direction:column}
#rh-main::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(720px 340px at 22% -8%,light-dark(rgba(88,80,228,.075),rgba(120,120,250,.09)),transparent 70%),
    radial-gradient(560px 300px at 88% -12%,light-dark(rgba(139,92,246,.055),rgba(167,139,250,.06)),transparent 70%);
}
#rh-canvas{flex:1;overflow-y:auto;overflow-x:hidden;overflow-anchor:none;scrollbar-gutter:stable;position:relative;z-index:1}
.rh-view{padding:16px 22px 48px}
.rh-wrap{max-width:920px;margin:0 auto}

/* 顶部加载条 */
#rh-loadbar{position:absolute;top:0;left:0;right:0;height:2px;z-index:35;overflow:hidden;opacity:0;transition:opacity .25s ease;pointer-events:none}
#rh-loadbar.on{opacity:1}
#rh-loadbar::before{content:"";position:absolute;top:0;bottom:0;width:38%;border-radius:99px;background:linear-gradient(90deg,var(--rh-accent),var(--rh-accent-2));animation:rhLoad 1.05s var(--rh-ease) infinite}
@keyframes rhLoad{0%{left:-38%}100%{left:100%}}

/* SMB 异常横幅 */
#rh-banner{display:none;align-items:center;gap:10px;padding:9px 18px;background:var(--rh-danger-bg);color:var(--rh-danger);font-size:12.5px;border-bottom:1px solid color-mix(in srgb,var(--rh-danger) 22%,transparent);animation:rhBannerIn .3s var(--rh-ease);position:relative;z-index:2}
#rh-app.smbdown #rh-banner{display:flex}
#rh-banner svg{width:15px;height:15px;flex:0 0 auto}
.rh-banner-go{margin-left:auto;flex:0 0 auto;border:1px solid currentColor;border-radius:8px;padding:2.5px 11px;font-size:12px;color:var(--rh-danger)}
.rh-banner-go:hover{background:color-mix(in srgb,var(--rh-danger) 12%,transparent)}

/* ==========================================================================
   画廊信息条（sticky 毛玻璃）
   ========================================================================== */
.rh-ginfo{display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  position:sticky;top:0;z-index:12;
  margin:-16px -22px 15px;padding:12px 22px;
  color:var(--rh-muted);font-size:12.5px;min-height:44px;
  background:color-mix(in srgb,var(--rh-bg) 76%,transparent);
  -webkit-backdrop-filter:blur(16px) saturate(1.5);backdrop-filter:blur(16px) saturate(1.5);
  border-bottom:1px solid var(--rh-border);
}
.rh-ginfo .rh-sep{opacity:.4}
.rh-ginfo .rh-info-right{margin-left:auto;font-size:12px;color:var(--rh-faint);font-variant-numeric:tabular-nums}
.rh-ginfo .rh-x{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--rh-input);color:var(--rh-muted);font-size:11px;margin-left:5px;cursor:pointer;transition:background .15s,color .15s,transform .15s}
.rh-ginfo .rh-x:hover{background:var(--rh-accent);color:var(--rh-on-accent);transform:scale(1.1)}

/* ==========================================================================
   瀑布流卡片
   ========================================================================== */
#rh-masonry{position:relative}
.rh-mcol{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--rh-gap)}
.rh-card{
  width:calc((100% - (var(--cols) - 1)*var(--rh-gap))/var(--cols));
  background:var(--rh-panel);border:1px solid var(--rh-border);border-radius:var(--rh-r-lg);
  overflow:hidden;cursor:pointer;
  transition:transform .28s var(--rh-ease),box-shadow .3s var(--rh-ease),border-color .22s ease;
}
.rh-card:hover{transform:translateY(-5px);box-shadow:var(--rh-sh-lg);border-color:color-mix(in srgb,var(--rh-accent) 34%,var(--rh-border))}
.rh-card:active{transform:translateY(-2px) scale(.99);transition-duration:.1s}
.rh-in{position:relative;opacity:0;transform:translateY(22px) scale(.985);transition:opacity .5s var(--rh-ease),transform .5s var(--rh-ease)}
.rh-in.is-in{opacity:1;transform:none}
.rh-pad{display:block;flex:0 0 auto}

/* 封面：shimmer 骨架 + 图片淡入 + 玻璃徽章 */
.rh-cover{width:100%;position:relative;background:var(--rh-input);overflow:hidden}
.rh-cover::before{content:"";position:absolute;inset:0;z-index:0;
  background:linear-gradient(100deg,transparent 32%,var(--rh-shimmer) 50%,transparent 68%);
  transform:translateX(-110%);animation:rhShimmer 1.7s ease-in-out infinite}
.rh-cover.rh-noimg::before{display:none}
@keyframes rhShimmer{55%,100%{transform:translateX(110%)}}
.rh-cover img{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;transition:transform .5s var(--rh-ease),opacity .35s ease;opacity:0}
.rh-cover img.rh-imgok{opacity:1}
.rh-cover img.rh-imgerr{opacity:0}
.rh-card:hover .rh-cover img{transform:scale(1.06)}
/* 无封面占位 */
.rh-cover.rh-nocover{display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,var(--rh-accent-soft),color-mix(in srgb,var(--rh-accent-soft) 40%,var(--rh-panel-2)))}
.rh-cover.rh-nocover::before{display:none}
.rh-cover.rh-nocover>svg{width:34px;height:34px;color:var(--rh-accent);opacity:.6}
/* 玻璃类型徽章 */
.rh-ctype{position:absolute;z-index:2;top:9px;left:9px;display:inline-flex;align-items:center;gap:5px;
  max-width:calc(100% - 18px);padding:3.5px 9px;border-radius:999px;
  background:light-dark(rgba(255,255,255,.78),rgba(16,16,22,.55));
  -webkit-backdrop-filter:blur(10px) saturate(1.4);backdrop-filter:blur(10px) saturate(1.4);
  border:1px solid light-dark(rgba(255,255,255,.6),rgba(255,255,255,.14));
  color:light-dark(#2c2c34,#f2f2f6);font-size:10.5px;font-weight:550;letter-spacing:.02em;line-height:1;
  box-shadow:0 2px 10px rgba(10,10,20,.14);white-space:nowrap;overflow:hidden}
.rh-ctype svg{width:11px;height:11px;flex:0 0 auto;opacity:.85}

/* 卡片信息区 */
.rh-cbody{padding:11px 13px 12px;display:flex;flex-direction:column;gap:5px}
.rh-ctitle{font-size:13.5px;font-weight:550;line-height:1.45;letter-spacing:-.005em;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all}
.rh-csum{font-size:12px;color:var(--rh-muted);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all}
.rh-cmeta{display:flex;align-items:center;gap:7px;min-height:16px;font-size:11px;color:var(--rh-faint);overflow:hidden}
.rh-ccat{flex:0 0 auto;padding:1.5px 8px;border-radius:999px;background:var(--rh-input);color:var(--rh-muted);font-size:10.5px;white-space:nowrap;max-width:45%;overflow:hidden;text-overflow:ellipsis}
.rh-cextra{display:inline-flex;align-items:center;gap:4px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.rh-cextra:empty{display:none}
.rh-cextra svg{width:11.5px;height:11.5px;flex:0 0 auto;opacity:.8}
.rh-cextra s{opacity:.55;margin-left:2px}

/* 底部加载 / 空状态 */
#rh-more{display:none;align-items:center;justify-content:center;gap:9px;padding:28px 0 12px;color:var(--rh-faint);font-size:12.5px}
#rh-more.on{display:flex}
.rh-spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--rh-border-strong);border-top-color:var(--rh-accent);animation:rhSpin .75s linear infinite;display:inline-block}
@keyframes rhSpin{to{transform:rotate(360deg)}}
#rh-empty{display:none;flex-direction:column;align-items:center;gap:9px;padding:84px 0;color:var(--rh-muted)}
#rh-empty svg{width:34px;height:34px;opacity:.5;animation:rhFloat 3.2s ease-in-out infinite}
@keyframes rhFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
.rh-empty-t{font-size:15px;font-weight:550;color:var(--rh-fg)}
.rh-empty-s{font-size:12.5px;color:var(--rh-faint)}
#rh-empty>div{margin-top:6px}

/* ==========================================================================
   右侧边栏
   ========================================================================== */
#rh-sidebar{width:var(--rh-sbw);flex:0 0 auto;background:var(--rh-panel);border-left:1px solid var(--rh-border);display:flex;flex-direction:column;min-width:56px;position:relative;z-index:14;transition:width .34s var(--rh-ease)}
#rh-app.collapsed #rh-sidebar{width:56px}
#rh-app.dragging #rh-sidebar{transition:none}
#rh-app.collapsed #rh-resizer{display:none}
#rh-sb-full{position:absolute;top:0;left:0;bottom:0;width:var(--rh-sbw);min-width:0;display:flex;flex-direction:column;transition:opacity .18s ease .1s,visibility 0s linear 0s}
#rh-app.collapsed #rh-sb-full{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .13s ease,visibility 0s linear .13s}
#rh-sb-rail{position:absolute;top:0;right:0;bottom:0;width:56px;display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:5px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease,visibility 0s linear .15s}
#rh-app.collapsed #rh-sb-rail{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .22s ease .13s,visibility 0s linear .13s}
#rh-app.collapsed #rh-sb-rail .rh-rail-btn{animation:rhRailIn .34s var(--rh-ease) both}
#rh-app.collapsed #rh-sb-rail .rh-rail-btn:nth-child(1){animation-delay:.05s}
#rh-app.collapsed #rh-sb-rail .rh-rail-btn:nth-child(3){animation-delay:.09s}
#rh-app.collapsed #rh-sb-rail .rh-rail-btn:nth-child(4){animation-delay:.13s}
#rh-app.collapsed #rh-sb-rail .rh-rail-btn:nth-child(5){animation-delay:.17s}
#rh-app.collapsed #rh-sb-rail .rh-rail-btn:nth-child(6){animation-delay:.21s}
#rh-app.collapsed #rh-sb-rail .rh-rail-btn:nth-child(8){animation-delay:.25s}
#rh-app.collapsed #rh-sb-rail .rh-rail-btn:nth-child(9){animation-delay:.29s}
#rh-app.collapsed #rh-sb-rail .rh-rail-btn:nth-child(10){animation-delay:.33s}
@keyframes rhRailIn{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}

.rh-sb-head{display:flex;align-items:center;gap:11px;padding:15px 12px 13px 16px;border-bottom:1px solid var(--rh-border)}
.rh-logo{width:33px;height:33px;border-radius:10px;background:var(--rh-accent-grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:650;font-size:12.5px;letter-spacing:.04em;flex:0 0 auto;box-shadow:var(--rh-sh-accent)}
.rh-sb-title{min-width:0;flex:1}
.rh-sb-name{font-weight:600;font-size:13.5px;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rh-sb-sub{font-size:11px;color:var(--rh-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.rh-iconbtn{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--rh-muted);flex:0 0 auto}
.rh-iconbtn:hover{background:var(--rh-input);color:var(--rh-fg)}
.rh-iconbtn:active{transform:scale(.92)}

#rh-sb-body{flex:1;min-height:0;overflow-y:auto;padding:15px 14px 18px;display:flex;flex-direction:column;gap:17px}
.rh-slabel{font-size:10.5px;letter-spacing:.09em;color:var(--rh-faint);margin-bottom:8px;font-weight:600}

/* 搜索 */
.rh-search{position:relative}
.rh-search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--rh-faint);pointer-events:none;transition:color .18s}
.rh-search input{width:100%;height:35px;border-radius:10px;border:1px solid var(--rh-border);background:var(--rh-input);color:var(--rh-fg);padding:0 11px 0 33px;font-size:13px;outline:none;font-family:inherit;transition:border-color .18s,box-shadow .18s,background .18s}
.rh-search input:hover{border-color:var(--rh-border-strong)}
.rh-search input:focus{border-color:var(--rh-accent);background:var(--rh-panel);box-shadow:0 0 0 3.5px color-mix(in srgb,var(--rh-accent) 16%,transparent)}
.rh-search input:focus+svg,.rh-search:focus-within svg{color:var(--rh-accent)}
.rh-search input::-webkit-search-cancel-button{-webkit-appearance:none}

/* 类型 chips */
.rh-types{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.rh-tchip{display:flex;align-items:center;gap:6px;padding:7.5px 9px;border-radius:10px;border:1px solid var(--rh-border);background:var(--rh-panel-2);font-size:12px;color:var(--rh-fg);cursor:pointer;min-width:0;transition:transform .18s var(--rh-ease),border-color .18s,background .18s,box-shadow .18s,color .18s}
.rh-tchip svg{width:13px;height:13px;color:var(--rh-muted);flex:0 0 auto;transition:color .18s}
.rh-tchip .cnt{margin-left:auto;color:var(--rh-faint);font-size:10.5px;font-variant-numeric:tabular-nums}
.rh-tchip span:not(.cnt){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rh-tchip:hover{border-color:color-mix(in srgb,var(--rh-accent) 45%,var(--rh-border));transform:translateY(-1px);box-shadow:var(--rh-sh-sm)}
.rh-tchip:active{transform:scale(.97)}
.rh-tchip.on{background:var(--rh-accent-grad);border-color:transparent;color:#fff;box-shadow:var(--rh-sh-accent)}
.rh-tchip.on svg,.rh-tchip.on .cnt{color:rgba(255,255,255,.92)}

/* 分类 chips */
.rh-cats{display:flex;flex-wrap:wrap;gap:6px}
.rh-pchip{padding:4px 12px;border-radius:999px;border:1px solid var(--rh-border);background:var(--rh-panel-2);font-size:12px;color:var(--rh-fg);cursor:pointer;transition:transform .16s var(--rh-ease),border-color .16s,background .16s,color .16s,box-shadow .16s}
.rh-pchip:hover{border-color:color-mix(in srgb,var(--rh-accent) 45%,var(--rh-border));transform:translateY(-1px)}
.rh-pchip:active{transform:scale(.96)}
.rh-pchip.on{background:var(--rh-accent-grad);border-color:transparent;color:#fff;box-shadow:var(--rh-sh-accent)}
.rh-cathint{font-size:11.5px;color:var(--rh-faint);padding:2px 1px;line-height:1.5}

/* 分段控件 */
.rh-seg{display:flex;background:var(--rh-input);border:1px solid var(--rh-border);border-radius:10px;padding:2.5px;gap:2px}
.rh-seg button{flex:1;padding:5px 4px;border-radius:8px;font-size:12px;color:var(--rh-muted);cursor:pointer;text-align:center;transition:background .18s,color .18s,box-shadow .18s,transform .12s}
.rh-seg button:hover{color:var(--rh-fg)}
.rh-seg button:active{transform:scale(.96)}
.rh-seg button.on{background:var(--rh-panel);color:var(--rh-fg);font-weight:550;box-shadow:var(--rh-sh-sm)}

/* 主按钮 */
.rh-btn-primary{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;height:37px;border-radius:11px;background:var(--rh-accent-grad);color:#fff;font-weight:550;font-size:13px;letter-spacing:.01em;cursor:pointer;box-shadow:var(--rh-sh-accent);transition:filter .18s,transform .18s var(--rh-ease),box-shadow .18s}
.rh-btn-primary:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 10px 26px -6px light-dark(rgba(88,80,228,.5),rgba(120,120,250,.4))}
.rh-btn-primary:active{transform:translateY(0) scale(.975);filter:brightness(.96)}
.rh-btn-primary:disabled{opacity:.45;cursor:not-allowed;filter:none;transform:none;box-shadow:none}
.rh-btn-primary.slim{width:auto;height:32px;padding:0 15px;font-size:12.5px}
.rh-btn-primary.slim svg{width:14px;height:14px}
.rh-btn-primary svg{width:15px;height:15px}

/* 幽灵按钮 / 危险按钮 */
.rh-btn-ghost{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:9px;border:1px solid var(--rh-border);background:var(--rh-panel);font-size:12.5px;color:var(--rh-fg);cursor:pointer;transition:background .16s,border-color .16s,transform .16s var(--rh-ease),box-shadow .16s}
.rh-btn-ghost:hover{background:var(--rh-input);border-color:color-mix(in srgb,var(--rh-accent) 38%,var(--rh-border));transform:translateY(-1px);box-shadow:var(--rh-sh-sm)}
.rh-btn-ghost:active{transform:scale(.97)}
.rh-btn-ghost svg{width:14px;height:14px;color:var(--rh-muted)}
.rh-btn-ghost.sm{padding:4px 10px;font-size:12px}
.rh-btn-danger{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:9px;border:1px solid color-mix(in srgb,var(--rh-danger) 50%,var(--rh-border));background:var(--rh-panel);font-size:12.5px;color:var(--rh-danger);cursor:pointer;transition:background .16s,border-color .16s,transform .16s}
.rh-btn-danger:hover{background:var(--rh-danger-bg);border-color:var(--rh-danger);transform:translateY(-1px)}
.rh-btn-danger:active{transform:scale(.97)}
.rh-btn-danger svg{width:14px;height:14px}
.rh-btn-danger.sm{padding:4px 10px;font-size:12px}
.rh-btn-danger:disabled{opacity:.45;cursor:not-allowed}

/* 底部链接与存储状态 */
.rh-slinks{border-top:1px solid var(--rh-border);padding:8px;display:flex;flex-direction:column;gap:2px}
.rh-slink{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;font-size:13px;cursor:pointer;width:100%;transition:background .16s,color .16s}
.rh-slink:hover{background:var(--rh-input)}
.rh-slink svg{width:15px;height:15px;color:var(--rh-muted);transition:color .16s}
.rh-slink:hover svg{color:var(--rh-accent)}
.rh-slink .chev{margin-left:auto;transition:transform .18s var(--rh-ease)}
.rh-slink:hover .chev{transform:translateX(3px)}
.rh-storage{display:flex;align-items:center;gap:9px;padding:12px 15px;border-top:1px solid var(--rh-border);font-size:12px;color:var(--rh-muted);cursor:pointer;width:100%;transition:background .16s}
.rh-storage:hover{background:var(--rh-input)}
.rh-dot{width:8px;height:8px;border-radius:50%;background:var(--rh-ok);flex:0 0 auto;box-shadow:0 0 0 3px color-mix(in srgb,var(--rh-ok) 20%,transparent);animation:rhDotPulse 2.6s ease-in-out infinite}
.rh-dot.bad{background:var(--rh-danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--rh-danger) 20%,transparent)}
.rh-dot.warn{background:var(--rh-warn);box-shadow:0 0 0 3px color-mix(in srgb,var(--rh-warn) 22%,transparent)}
@keyframes rhDotPulse{0%,100%{box-shadow:0 0 0 3px color-mix(in srgb,currentColor 0%,transparent)}50%{transform:scale(1.15)}}

/* Rail 图标栏 */
.rh-rail-btn{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:var(--rh-muted);cursor:pointer;position:relative;transition:background .16s,color .16s,transform .16s var(--rh-ease)}
.rh-rail-btn:hover{background:var(--rh-input);color:var(--rh-fg);transform:translateY(-1px)}
.rh-rail-btn:active{transform:scale(.9)}
.rh-rail-btn svg{width:18px;height:18px}
.rh-rail-sep{width:26px;height:1px;background:var(--rh-border);margin:4px 0;flex:0 0 auto}
.rh-rail-spacer{flex:1}

/* 分隔拖手 */
#rh-resizer{flex:0 0 5px;cursor:col-resize;background:transparent;position:relative;z-index:15}
#rh-resizer::before{content:"";position:absolute;top:0;bottom:0;left:2px;width:1px;background:transparent;transition:background .15s,box-shadow .15s}
#rh-resizer:hover::before,#rh-resizer.drag::before{background:var(--rh-accent);box-shadow:0 0 8px color-mix(in srgb,var(--rh-accent) 60%,transparent)}

/* ---- Tooltip（统一实现）---- */
[data-tooltip]{position:relative}
[data-tooltip]::after{
  content:attr(data-tooltip);position:absolute;z-index:120;
  background:light-dark(#26262e,#f2f2f5);color:light-dark(#fff,#191920);
  font-size:11.5px;font-weight:500;line-height:1;padding:6px 10px;border-radius:8px;white-space:nowrap;
  box-shadow:var(--rh-sh-md);pointer-events:none;
  opacity:0;transition:opacity .16s ease .28s,transform .16s var(--rh-ease) .28s;
}
/* 主区元素：上方弹出 */
#rh-main [data-tooltip]::after,#rh-fb [data-tooltip]::after{bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px)}
#rh-main [data-tooltip]:hover::after,#rh-fb [data-tooltip]:hover::after{opacity:1;transform:translate(-50%,0)}
/* 边栏与拖手：左侧弹出 */
#rh-sidebar [data-tooltip]::after,#rh-resizer[data-tooltip]::after{right:calc(100% + 10px);top:50%;transform:translate(5px,-50%)}
#rh-sidebar [data-tooltip]:hover::after,#rh-resizer[data-tooltip]:hover::after{opacity:1;transform:translate(0,-50%)}

/* ==========================================================================
   详情 / 文档 / API / 设置
   ========================================================================== */
.rh-dt-top{display:flex;align-items:center;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.rh-crumb{color:var(--rh-faint);font-size:12.5px}
.rh-dt-actions{margin-left:auto;display:flex;gap:7px}
.rh-dt-head h1{font-size:22px;font-weight:650;letter-spacing:-.015em;margin-top:11px;line-height:1.35}
.rh-dt-meta{margin-top:9px;font-size:12.5px;color:var(--rh-muted)}
.rh-ok-t{color:var(--rh-ok);font-weight:550}
.rh-arch-t{color:var(--rh-muted);font-weight:500}
.rh-tag{display:inline-flex;align-items:center;font-size:10.5px;font-weight:550;letter-spacing:.02em;color:var(--rh-accent);background:var(--rh-accent-soft);border:1px solid color-mix(in srgb,var(--rh-accent) 22%,transparent);border-radius:999px;padding:2px 9px;vertical-align:2px}
.rh-tag.big{font-size:12px;padding:3px 11px}
.rh-cat-tag{font-size:11px;color:var(--rh-muted);border:1px solid var(--rh-border);border-radius:999px;padding:2px 10px;margin-left:7px;vertical-align:2px}
.rh-sec{margin-top:24px}
.rh-sec h3{font-size:14.5px;font-weight:600;letter-spacing:-.01em;margin-bottom:11px}
.rh-sec p{font-size:13.5px;color:var(--rh-fg);opacity:.88}
.rh-hero{border:1px solid var(--rh-border);border-radius:var(--rh-r-lg);overflow:hidden;background:var(--rh-input);box-shadow:var(--rh-sh-sm)}
.rh-hero img,.rh-hero video{width:100%;height:100%;object-fit:cover;display:block}
.rh-player{border:1px solid var(--rh-border);border-radius:var(--rh-r-lg);overflow:hidden;background:#000;box-shadow:var(--rh-sh-md)}
.rh-player video{width:100%;max-height:520px;display:block;background:#000}
.rh-pmeta{padding:10px 15px;font-size:11.5px;color:var(--rh-muted);background:var(--rh-panel-2);border-top:1px solid var(--rh-border)}
.rh-kv{margin-top:22px;display:grid;grid-template-columns:1fr 1fr;gap:9px}
.rh-kv-i{background:var(--rh-panel-2);border:1px solid var(--rh-border);border-radius:var(--rh-r-md);padding:9px 13px;min-width:0;transition:border-color .18s,transform .18s}
.rh-kv-i:hover{border-color:var(--rh-border-strong)}
.rh-kv-i span{display:block;font-size:10.5px;letter-spacing:.06em;color:var(--rh-faint);margin-bottom:3px;font-weight:550}
.rh-kv-i b{font-weight:500;font-size:13px;word-break:break-all}
.rh-stats{margin-top:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.rh-stat{background:var(--rh-panel-2);border:1px solid var(--rh-border);border-radius:var(--rh-r-md);padding:14px 12px;text-align:center;transition:transform .2s var(--rh-ease),border-color .18s}
.rh-stat:hover{transform:translateY(-2px);border-color:var(--rh-border-strong)}
.rh-stat b{display:block;font-size:20px;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.rh-stat span{font-size:11.5px;color:var(--rh-faint)}
.rh-vrow{display:flex;align-items:center;gap:11px;padding:9px 11px;border:1px solid var(--rh-border);border-radius:var(--rh-r-md);margin-bottom:8px;background:var(--rh-panel);transition:border-color .18s,transform .18s}
.rh-vrow:hover{border-color:color-mix(in srgb,var(--rh-accent) 32%,var(--rh-border));transform:translateX(2px)}
.rh-vthumb{width:64px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;flex:0 0 auto;background:linear-gradient(135deg,#3a3a48,#22222c)}
.rh-vthumb svg{width:15px;height:15px}
.rh-vname{flex:1;font-size:13px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rh-vdur{font-size:12px;color:var(--rh-faint);font-variant-numeric:tabular-nums}
.rh-thumbgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.rh-thumbgrid img{width:100%;height:118px;object-fit:cover;border-radius:10px;border:1px solid var(--rh-border);cursor:zoom-in;transition:transform .25s var(--rh-ease),box-shadow .25s}
.rh-thumbgrid img:hover{transform:scale(1.03);box-shadow:var(--rh-sh-md)}
.rh-price{margin-top:18px;display:flex;align-items:baseline;gap:11px;flex-wrap:wrap}
.rh-price b{font-size:26px;font-weight:650;letter-spacing:-.02em}
.rh-price s{color:var(--rh-faint);font-size:14px}
.rh-plat{font-size:12px;color:var(--rh-accent);background:var(--rh-accent-soft);border-radius:999px;padding:2.5px 11px}
.rh-table{border:1px solid var(--rh-border);border-radius:var(--rh-r-md);overflow:hidden;font-size:12.5px}
.rh-tr{display:grid;grid-template-columns:repeat(var(--rh-cols,4),1fr);padding:9px 13px;border-top:1px solid var(--rh-border);gap:6px;transition:background .15s}
.rh-tr:first-child{border-top:0}
.rh-tr:not(.rh-th):hover{background:var(--rh-input)}
.rh-tr.rh-th{background:var(--rh-panel-2);color:var(--rh-faint);font-size:11.5px;font-weight:550;letter-spacing:.04em}
.rh-art-src{margin-top:4px;font-size:12.5px;color:var(--rh-faint);padding-bottom:4px}
.rh-article p{margin-bottom:12px}
.rh-itp{margin:12px 0;border:1px solid var(--rh-border);border-radius:var(--rh-r-md)}
.rh-web-url{margin-top:6px;display:flex;align-items:center;gap:9px;padding:12px 14px;border:1px solid var(--rh-border);border-radius:var(--rh-r-md);background:var(--rh-panel-2);font-size:13px;word-break:break-all;transition:border-color .18s}
.rh-web-url:hover{border-color:color-mix(in srgb,var(--rh-accent) 35%,var(--rh-border))}
.rh-web-url svg{width:15px;height:15px;color:var(--rh-muted);flex:0 0 auto}
.rh-web-url .rh-chev{margin-left:auto}
.rh-webdoc{border:1px solid var(--rh-border);border-radius:var(--rh-r-md);background:var(--rh-panel-2);padding:15px 17px}
.rh-webdoc h4{font-size:14px;margin-bottom:8px}
.rh-webdoc p{font-size:13px;color:var(--rh-muted);margin-bottom:8px}

/* 文档 */
.rh-lead{margin-top:10px;font-size:13.5px;color:var(--rh-muted);max-width:680px;line-height:1.7}
.rh-view h1{font-size:22px;font-weight:650;letter-spacing:-.015em}
.rh-doclist{margin:8px 0 0;padding:0;list-style:none}
.rh-doclist li{position:relative;padding:5px 0 5px 19px;font-size:13.5px;opacity:.9;line-height:1.65}
.rh-doclist li::before{content:"";position:absolute;left:2px;top:14px;width:6px;height:6px;border-radius:50%;background:var(--rh-accent);opacity:.75}
.rh-typegrid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:10px}
.rh-tg-row{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--rh-border);border-radius:var(--rh-r-md);padding:10px 12px;background:var(--rh-panel);transition:border-color .18s,transform .2s var(--rh-ease)}
.rh-tg-row:hover{border-color:color-mix(in srgb,var(--rh-accent) 32%,var(--rh-border));transform:translateY(-2px)}
.rh-tg-row svg{width:15px;height:15px;color:var(--rh-accent);flex:0 0 auto;margin-top:2px}
.rh-tg-row b{font-size:13px;font-weight:550;display:block}
.rh-tg-row span{font-size:11.5px;color:var(--rh-muted)}
.rh-steps{margin:8px 0 0;padding:0;list-style:none;counter-reset:rhstep}
.rh-steps li{position:relative;padding:6px 0 6px 33px;font-size:13.5px;counter-increment:rhstep;opacity:.9;line-height:1.6}
.rh-steps li::before{content:counter(rhstep);position:absolute;left:0;top:7px;width:21px;height:21px;border-radius:50%;background:var(--rh-accent-soft);color:var(--rh-accent);font-size:11.5px;display:flex;align-items:center;justify-content:center;font-weight:600}
.rh-mocknote{margin-top:28px;font-size:12px;color:var(--rh-faint);border-top:1px dashed var(--rh-border-strong);padding-top:13px}

/* API 文档 */
.rh-api-list{margin-top:16px;border:1px solid var(--rh-border);border-radius:var(--rh-r-md);overflow:hidden;background:var(--rh-panel)}
.rh-api-row{display:flex;align-items:center;gap:12px;padding:9px 14px;border-top:1px solid var(--rh-border);font-size:12.5px;transition:background .15s}
.rh-api-row:first-child{border-top:0}
.rh-api-row:hover{background:var(--rh-input)}
.rh-api-row code{background:none;padding:0;font-size:12.5px}
.rh-api-desc{margin-left:auto;color:var(--rh-faint);font-size:12px;white-space:nowrap}
.rh-method{font-size:10px;font-weight:650;padding:2.5px 0;border-radius:6px;width:54px;text-align:center;flex:0 0 auto;letter-spacing:.06em}
.rh-method.get{color:light-dark(#027a48,#4ade80);background:light-dark(#e3f3ea,#0d2f21)}
.rh-method.post{color:light-dark(#175cd3,#84b6ff);background:light-dark(#e8f0fd,#152a55)}
.rh-method.patch{color:light-dark(#b54708,#ffb066);background:light-dark(#fcf0e4,#3f2510)}
.rh-method.put{color:light-dark(#6941c6,#c3a9ff);background:light-dark(#efe9fc,#2a1f52)}
.rh-method.delete{color:light-dark(#d92d20,#ff8a80);background:light-dark(#fdecea,#43201b)}

/* 设置 */
.rh-setgroup{margin-top:16px;border:1px solid var(--rh-border);border-radius:var(--rh-r-md);overflow:hidden;background:var(--rh-panel)}
.rh-setrow{display:flex;align-items:center;gap:13px;padding:13px 15px;border-top:1px solid var(--rh-border);transition:background .15s}
.rh-setrow:first-child{border-top:0}
.rh-setrow:hover{background:var(--rh-input)}
.rh-si{width:33px;height:33px;border-radius:10px;background:var(--rh-panel-2);border:1px solid var(--rh-border);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.rh-si svg{width:15px;height:15px;color:var(--rh-muted)}
.rh-set-t{font-size:13px;font-weight:550}
.rh-set-d{font-size:12px;color:var(--rh-muted);margin-top:1px;word-break:break-all}
.rh-drafts{display:flex;flex-direction:column;gap:8px}
.rh-draft-row{display:flex;align-items:center;gap:10px;border:1px solid var(--rh-border);border-radius:var(--rh-r-md);padding:9px 12px;background:var(--rh-panel);transition:border-color .18s}
.rh-draft-row:hover{border-color:var(--rh-border-strong)}
.rh-draft-row .rh-fn{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.rh-draft-row .rh-fm{font-size:11.5px;color:var(--rh-faint);white-space:nowrap}

/* ==========================================================================
   文件浏览器
   ========================================================================== */
#rh-fb{position:absolute;inset:0;z-index:20;background:var(--rh-bg);display:flex;flex-direction:column;animation:rhPanelIn .3s var(--rh-ease)}
.rh-fb-head{display:flex;align-items:center;gap:12px;padding:12px 17px;border-bottom:1px solid var(--rh-border);background:var(--rh-panel)}
.rh-fb-title{font-weight:600;font-size:14px;letter-spacing:-.01em}
.rh-fb-root{margin-left:auto}
.rh-fb-crumb{display:flex;align-items:center;gap:2px;padding:9px 17px;font-size:12.5px;color:var(--rh-muted);border-bottom:1px solid var(--rh-border);flex-wrap:wrap;background:color-mix(in srgb,var(--rh-panel) 55%,transparent)}
.rh-crumb-b{padding:3px 9px;border-radius:7px;color:var(--rh-muted);cursor:pointer;transition:background .15s,color .15s}
.rh-crumb-b:hover{background:var(--rh-input);color:var(--rh-fg)}
.rh-crumb-b.cur{color:var(--rh-fg);background:var(--rh-input);font-weight:550}
.rh-crumb-sep{width:12px;height:12px;opacity:.5}
.rh-fb-body{flex:1;display:flex;min-height:0}
.rh-fb-list{flex:1;min-width:0;overflow-y:auto;padding:14px 17px}
.rh-fb-seclabel{font-size:10.5px;letter-spacing:.09em;color:var(--rh-faint);margin:14px 2px 8px;font-weight:600}
.rh-fb-list .rh-fb-seclabel:first-child{margin-top:0}
.rh-fb-dirs{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}
.rh-fb-dir{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--rh-border);border-radius:var(--rh-r-md);background:var(--rh-panel);font-size:13px;cursor:pointer;min-width:0;transition:border-color .18s,transform .18s var(--rh-ease),box-shadow .18s}
.rh-fb-dir:hover{border-color:color-mix(in srgb,var(--rh-accent) 45%,var(--rh-border));transform:translateY(-1px);box-shadow:var(--rh-sh-sm)}
.rh-fb-dir:active{transform:scale(.98)}
.rh-fb-dir svg{width:15px;height:15px;color:var(--rh-accent);flex:0 0 auto}
.rh-fb-dir span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rh-fb-dir .rh-chev{margin-left:auto;color:var(--rh-faint);transition:transform .18s var(--rh-ease)}
.rh-fb-dir:hover .rh-chev{transform:translateX(2px)}
.rh-fb-dir.up{color:var(--rh-muted)}
.rh-fb-file{display:flex;align-items:center;gap:10px;padding:8px 11px;border:1px solid var(--rh-border);border-radius:var(--rh-r-md);background:var(--rh-panel);margin-bottom:7px;cursor:pointer;transition:border-color .16s,background .16s,transform .16s var(--rh-ease)}
.rh-fb-file:hover{border-color:color-mix(in srgb,var(--rh-accent) 42%,var(--rh-border));transform:translateX(2px)}
.rh-fb-file.on{border-color:var(--rh-accent);background:var(--rh-accent-soft)}
.rh-fb-file input{accent-color:var(--rh-accent);width:15px;height:15px;flex:0 0 auto;cursor:pointer}
.rh-fi{width:30px;height:30px;border-radius:8px;background:var(--rh-panel-2);display:flex;align-items:center;justify-content:center;flex:0 0 auto;overflow:hidden}
.rh-fi svg{width:14px;height:14px;color:var(--rh-muted)}
.rh-fi img{width:100%;height:100%;object-fit:cover}
.rh-fn{font-size:13px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rh-fm{margin-left:auto;font-size:11.5px;color:var(--rh-faint);white-space:nowrap;flex:0 0 auto;font-variant-numeric:tabular-nums}
.rh-feye{width:27px;height:27px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--rh-faint);flex:0 0 auto;transition:background .15s,color .15s}
.rh-feye:hover{background:var(--rh-panel);color:var(--rh-accent)}
.rh-feye svg{width:14px;height:14px}
.rh-fb-empty{color:var(--rh-faint);font-size:12.5px;padding:20px 2px}
.rh-fb-preview{width:300px;flex:0 0 auto;border-left:1px solid var(--rh-border);padding:15px;overflow-y:auto;background:var(--rh-panel)}
.rh-fb-pv-empty{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--rh-faint);font-size:12.5px;text-align:center;padding:48px 10px}
.rh-fb-pv-empty svg{width:22px;height:22px;opacity:.55}
.rh-fb-pv-img{width:100%;border-radius:var(--rh-r-md);border:1px solid var(--rh-border)}
.rh-fb-pv-video{width:100%;border-radius:var(--rh-r-md);overflow:hidden;border:1px solid var(--rh-border);background:#000}
.rh-fb-pv-video video{width:100%;display:block;max-height:220px}
.rh-fb-pv-doc{width:100%;aspect-ratio:16/10;border-radius:var(--rh-r-md);border:1px dashed var(--rh-border-strong);display:flex;align-items:center;justify-content:center;color:var(--rh-faint);background:var(--rh-panel-2)}
.rh-fb-preview .rh-kv{margin-top:12px}
.rh-fb-foot{display:flex;align-items:center;gap:12px;padding:11px 17px;border-top:1px solid var(--rh-border);background:var(--rh-panel)}
.rh-fb-count{font-size:12.5px;color:var(--rh-fg);font-weight:500}
.rh-fb-note{font-size:11.5px;color:var(--rh-faint)}
.rh-up{display:flex;align-items:center;gap:8px;min-width:0}
.rh-upbar{width:140px;height:5px;border-radius:99px;background:var(--rh-input);overflow:hidden;flex:0 0 auto}
.rh-upfill{height:100%;width:0%;border-radius:99px;background:var(--rh-accent-grad);transition:width .2s ease}

/* ==========================================================================
   对话框
   ========================================================================== */
#rh-reg-wrap,#rh-edit-wrap{position:absolute;inset:0;z-index:30;background:light-dark(rgba(28,28,38,.38),rgba(0,0,0,.58));-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);display:flex;align-items:center;justify-content:center;padding:22px;animation:rhFadeIn .2s ease}
.rh-dialog{width:580px;max-width:100%;max-height:100%;overflow-y:auto;background:var(--rh-panel);border:1px solid var(--rh-border-strong);border-radius:20px;box-shadow:var(--rh-sh-lg);padding:20px 22px;animation:rhPop .34s var(--rh-spring)}
.rh-dlg-head{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.rh-dlg-title{font-weight:650;font-size:15.5px;letter-spacing:-.01em}
.rh-dlg-head .rh-fb-note{margin-left:auto}
.rh-fld{margin-bottom:13px}
.rh-flabel{display:block;font-size:12px;color:var(--rh-muted);margin-bottom:6px;font-weight:500}
.rh-input,.rh-select{width:100%;height:35px;border-radius:10px;border:1px solid var(--rh-border);background:var(--rh-input);color:var(--rh-fg);padding:0 11px;font-size:13px;outline:none;font-family:inherit;transition:border-color .18s,box-shadow .18s,background .18s}
textarea.rh-input{height:auto;padding:9px 11px;resize:vertical;line-height:1.6}
.rh-input:hover,.rh-select:hover{border-color:var(--rh-border-strong)}
.rh-input:focus,.rh-select:focus{border-color:var(--rh-accent);background:var(--rh-panel);box-shadow:0 0 0 3.5px color-mix(in srgb,var(--rh-accent) 16%,transparent)}
.rh-fldrow{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rh-covers{display:flex;gap:9px;flex-wrap:wrap}
.rh-cvr{width:104px;border:1.5px solid var(--rh-border);border-radius:var(--rh-r-md);overflow:hidden;cursor:pointer;background:var(--rh-panel-2);position:relative;display:block;transition:border-color .18s,box-shadow .18s,transform .18s var(--rh-ease)}
.rh-cvr:hover{transform:translateY(-2px);border-color:var(--rh-border-strong)}
.rh-cvr img{width:100%;aspect-ratio:1;object-fit:cover}
.rh-cvr span{display:block;font-size:10.5px;color:var(--rh-muted);padding:4px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rh-cvr input{position:absolute;opacity:0;pointer-events:none}
.rh-cvr::after{content:"";position:absolute;top:6px;right:6px;width:18px;height:18px;border-radius:50%;background:var(--rh-accent-grad);
  background-image:linear-gradient(135deg,var(--rh-accent),var(--rh-accent-2)),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  background-size:11px;background-position:center;background-repeat:no-repeat;
  opacity:0;transform:scale(.4);transition:opacity .2s var(--rh-spring),transform .2s var(--rh-spring)}
.rh-cvr.on{border-color:var(--rh-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--rh-accent) 22%,transparent)}
.rh-cvr.on::after{opacity:1;transform:scale(1)}
.rh-dlg-note{font-size:11.5px;color:var(--rh-muted);background:var(--rh-panel-2);border:1px solid var(--rh-border);border-radius:10px;padding:9px 12px;margin:4px 0 15px;line-height:1.6}
.rh-dlg-foot{display:flex;align-items:center;gap:8px}

/* 遮罩 */
#rh-scrim{position:absolute;inset:0;z-index:39;background:rgba(0,0,0,.35);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .24s ease}

/* ==========================================================================
   Toast
   ========================================================================== */
#rh-toast{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:max-content;max-width:90%}
.rh-toast{display:flex;align-items:center;gap:8px;background:light-dark(rgba(28,28,36,.94),rgba(240,240,244,.96));color:light-dark(#fff,#191920);padding:9px 17px;border-radius:999px;font-size:12.5px;font-weight:500;box-shadow:var(--rh-sh-lg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:rhToastIn .3s var(--rh-spring);transition:opacity .3s ease,transform .3s ease}
.rh-toast::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--rh-ok);flex:0 0 auto}
.rh-toast.bad::before{background:var(--rh-danger)}
.rh-toast.out{opacity:0;transform:translateY(8px)}
@keyframes rhToastIn{from{opacity:0;transform:translateY(12px) scale(.92)}to{opacity:1;transform:none}}

/* ==========================================================================
   全局面效
   ========================================================================== */
:where(#rh-app) button{transition-property:background-color,border-color,color,transform,box-shadow,filter;transition-duration:.16s;transition-timing-function:ease}
.rh-selall{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--rh-muted);cursor:pointer;margin-left:10px;font-weight:400;letter-spacing:0}
.rh-selall input{accent-color:var(--rh-accent);width:13px;height:13px;cursor:pointer}
.rh-view.rh-enter{animation:rhViewIn .36s var(--rh-ease) both}
@keyframes rhViewIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes rhPanelIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes rhFadeIn{from{opacity:0}to{opacity:1}}
@keyframes rhPop{from{opacity:0;transform:translateY(16px) scale(.955)}to{opacity:1;transform:none}}
@keyframes rhBannerIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
#rh-masonry.rh-jump .rh-in{transition:none!important}
#rh-masonry.rh-jump .rh-card{animation:none!important}
@media (prefers-reduced-motion:reduce){
  #rh-app *,#rh-app *::before,#rh-app *::after{transition-duration:.01ms!important;animation-duration:.01ms!important;transition-delay:0ms!important}
}

/* ==========================================================================
   沉浸模式（幻灯片）
   ========================================================================== */
#rh-sl{position:fixed;inset:0;z-index:70;background:#000;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  animation:rhFadeIn .22s ease;touch-action:none;overscroll-behavior:contain;
  -webkit-user-select:none;user-select:none;color:#fff}
#rh-sl.ui-off{cursor:none}
.rh-sl-stage{position:absolute;inset:0;will-change:transform}
.rh-sl-slide{position:absolute;top:0;bottom:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}
.rh-sl-slide[data-pos="-1"]{left:-100%}
.rh-sl-slide[data-pos="1"]{left:100%}
.rh-sl-slide img{max-width:100%;max-height:100%;object-fit:contain;opacity:0;transition:opacity .35s ease;pointer-events:none;-webkit-user-drag:none}
.rh-sl-slide img.rh-imgok{opacity:1}
.rh-sl-slide video{width:100%;height:100%;object-fit:contain;outline:none;background:#000}
.rh-sl-vplay{position:absolute;z-index:3;width:76px;height:76px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(22,22,30,.62);border:1px solid rgba(255,255,255,.28);color:#fff;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  transition:transform .18s var(--rh-ease),background .18s}
.rh-sl-vplay:hover{transform:scale(1.08);background:rgba(44,44,58,.78)}
.rh-sl-vplay:active{transform:scale(.96)}
.rh-sl-vplay svg{width:30px;height:30px;margin-left:4px}
/* 自动隐藏的 UI 条 */
.rh-sl-ui{position:absolute;left:0;right:0;z-index:5;display:flex;align-items:center;
  transition:opacity .3s ease,transform .3s var(--rh-ease)}
.rh-sl-top{top:0;gap:12px;padding:13px 15px 26px;background:linear-gradient(rgba(0,0,0,.6),transparent)}
.rh-sl-bot{bottom:0;justify-content:center;padding:26px 15px 15px;background:linear-gradient(transparent,rgba(0,0,0,.6))}
#rh-sl.ui-off .rh-sl-ui{opacity:0;pointer-events:none}
#rh-sl.ui-off .rh-sl-top{transform:translateY(-9px)}
#rh-sl.ui-off .rh-sl-bot{transform:translateY(9px)}
.rh-sl-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:40px;height:40px;padding:0 10px;
  border-radius:12px;color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  transition:background .16s,border-color .16s,transform .16s var(--rh-ease)}
.rh-sl-btn:hover{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.3)}
.rh-sl-btn:active{transform:scale(.92)}
.rh-sl-btn svg{width:19px;height:19px}
.rh-sl-btn.big{width:52px;height:52px;border-radius:50%;flex:0 0 auto}
.rh-sl-btn.big svg{width:23px;height:23px}
.rh-sl-exit{font-size:13px;font-weight:550;flex:0 0 auto}
.rh-sl-exit svg{width:16px;height:16px}
.rh-sl-title{flex:1;min-width:0;text-align:center;color:rgba(255,255,255,.92);font-size:13.5px;font-weight:550;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rh-sl-count{flex:0 0 auto;color:rgba(255,255,255,.65);font-size:12.5px;font-variant-numeric:tabular-nums}
.rh-sl-ctl{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:999px;
  background:rgba(18,18,26,.55);border:1px solid rgba(255,255,255,.13);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3)}
/* 间隔设置弹层 */
.rh-sl-pop{position:absolute;right:16px;bottom:80px;z-index:8;width:272px;max-width:calc(100% - 32px);
  background:rgba(20,20,28,.92);border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:13px 14px;
  -webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 18px 44px rgba(0,0,0,.55);
  animation:rhPop .28s var(--rh-spring);color:#fff}
.rh-sl-pop-t{font-size:11px;color:rgba(255,255,255,.55);margin-bottom:8px;letter-spacing:.06em;font-weight:600}
.rh-sl-pop .rh-seg{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.12)}
.rh-sl-pop .rh-seg button{color:rgba(255,255,255,.62);font-size:11.5px}
.rh-sl-pop .rh-seg button:hover{color:#fff}
.rh-sl-pop .rh-seg button.on{background:rgba(255,255,255,.17);color:#fff;box-shadow:none}
/* 装载中 */
.rh-sl-loading{position:absolute;inset:0;z-index:9;display:none;align-items:center;justify-content:center;gap:10px;
  color:rgba(255,255,255,.78);font-size:13.5px;background:#000}
#rh-sl.loading .rh-sl-loading{display:flex}
.rh-sl-loading .rh-spin{border-color:rgba(255,255,255,.22);border-top-color:#fff}
/* 画廊信息条里的入口按钮 */
.rh-ginfo .rh-sl-open{display:inline-flex;align-items:center;gap:5px;padding:3.5px 11px;border-radius:999px;margin-left:auto;flex:0 0 auto;
  border:1px solid var(--rh-border);background:var(--rh-panel);color:var(--rh-fg);font-size:12px;font-weight:550;
  cursor:pointer;transition:border-color .16s,background .16s,transform .16s var(--rh-ease),box-shadow .16s}
.rh-ginfo .rh-sl-open:hover{border-color:color-mix(in srgb,var(--rh-accent) 45%,var(--rh-border));transform:translateY(-1px);box-shadow:var(--rh-sh-sm)}
.rh-ginfo .rh-sl-open svg{width:12.5px;height:12.5px;color:var(--rh-accent)}
#rh-app.sl-open #rh-toast{z-index:80}

/* ==========================================================================
   响应式
   ========================================================================== */
@media (max-width:900px){.rh-fb-preview{display:none}}
@media (max-width:760px){
  #rh-app:not(.collapsed) #rh-scrim{opacity:1;pointer-events:auto}
  #rh-app:not(.collapsed) #rh-sidebar{position:absolute;top:0;right:0;bottom:0;z-index:40;width:min(var(--rh-sbw),85%)!important;box-shadow:0 0 0 1px var(--rh-border),-18px 0 44px rgba(0,0,0,.32);overflow:hidden}
  #rh-app:not(.collapsed) #rh-sb-full{opacity:1;visibility:visible;pointer-events:auto;transition:none}
  #rh-app:not(.collapsed) #rh-sb-rail{opacity:0;visibility:hidden;pointer-events:none}
  #rh-app.collapsed #rh-sidebar{width:56px}
  #rh-resizer{display:none!important}
  .rh-view{padding:14px 12px 42px}
  .rh-ginfo{margin:-14px -12px 13px;padding:11px 12px}
  .rh-typegrid,.rh-kv{grid-template-columns:1fr}
  .rh-fldrow{grid-template-columns:1fr}
  #rh-sidebar [data-tooltip]::after{display:none}
  /* 沉浸模式移动端 */
  #rh-sl [data-tooltip]::after{display:none}
  .rh-sl-btn{min-width:44px;height:44px;border-radius:13px}
  .rh-sl-btn.big{width:56px;height:56px}
  .rh-sl-exit span{display:none}
  .rh-sl-top{padding:11px 12px 24px}
  .rh-sl-bot{padding-bottom:max(15px,env(safe-area-inset-bottom))}
  .rh-sl-title{font-size:12.5px}
  .rh-sl-pop{right:12px;left:12px;width:auto;bottom:86px}
}
