/* ============================================================
   雾光之屿下载站 v2 · 样式层
   设计规格（Daily Grind 复刻）：
   近黑底 #131316 · 珊瑚/长春花/冰蓝/鼠尾草四色 · 左 76px 图标轨
   主网格 1.42fr/1fr · 间距 12 · 卡片圆角 26 · 内边距 20/22 · Archivo 800
   ============================================================ */
:root{
  --bg:#f4f1ea; --surface:#fffdf8; --surface-2:#ebe7db; --line:#d8d2c2;
  --ink:#2b2925; --ink-dim:#6e6a5e; --ink-faint:#969183;
  --cta-bg:#23211d; --cta-ink:#f7f5ef;
  --overlay:rgba(43,38,28,.45);
  --map-land:#eae6da; --map-line:#d6d0be; --map-island:#ddd7c6;
  --map-jd:#a39d8c; --map-city:#6e6a5e; --map-note:#8f8a7c; --map-dot-off:#a39d8c;
  color-scheme:light;
  --coral:#ff7e6b;      --coral-ink:#2b120e;
  --periwinkle:#9ba3eb; --peri-ink:#171a33;
  --ice:#a9dbf2;        --ice-ink:#0e2430;
  --sage:#a6b98f;       --sage-ink:#1b2416;
  /* 实心卡面上的文字色：浅色态用米白（用户要求），深色态回深墨（同 -ink 原值） */
  --coral-on:#fff6ed; --peri-on:#f7f8ff; --ice-on:#f2fafd; --sage-on:#f7faf1;
  --r-card:26px; --pad-x:22px; --pad-y:20px; --gap:12px; --rail-w:76px;
  --ease:cubic-bezier(.16,1,.3,1);
}
[data-theme=dark]{
  --bg:#131316; --surface:#1d1d22; --surface-2:#232329; --line:#2c2c33;
  --ink:#f2f0ec; --ink-dim:#a5a3a0; --ink-faint:#6d6c6a;
  --cta-bg:#191919; --cta-ink:#f2f0ec;
  --overlay:rgba(10,10,12,.62);
  --coral-on:#2b120e; --peri-on:#171a33; --ice-on:#0e2430; --sage-on:#1b2416;
  --map-land:#191920; --map-line:#2a2a32; --map-island:#212128;
  --map-jd:#55555f; --map-city:#a5a3a0; --map-note:#a5a3a0; --map-dot-off:#6d6c6a;
  color-scheme:dark;
}
*{margin:0;padding:0;box-sizing:border-box}
/* 中国地图（tools/gen-china-map.js 生成）：颜色走主题变量，深浅两套 */
.m-land{fill:var(--map-land)} .m-line{stroke:var(--map-line)}
.m-island{fill:var(--map-island)} .m-jd{stroke:var(--map-jd)}
.m-city{fill:var(--map-city)} .m-note{fill:var(--map-note)}
body{
  background:var(--bg); color:var(--ink);
  font-family:"Archivo","PingFang SC","Microsoft YaHei",sans-serif;
  min-height:100vh; display:flex; -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select{font-family:inherit}
:focus-visible{outline:2px solid var(--ice);outline-offset:2px;border-radius:8px}

/* ============ 左侧 76px 图标轨 ============ */
.rail{
  width:var(--rail-w); flex:0 0 var(--rail-w); height:100vh; position:sticky; top:0;
  display:flex; flex-direction:column; align-items:center; gap:6px;
  padding:18px 0 22px; border-right:1px solid var(--line); z-index:10;
}
.rail .logo{
  width:48px;height:48px;border-radius:16px;background:var(--coral);
  display:grid;place-items:center;margin-bottom:18px;
  box-shadow:0 6px 18px rgba(255,126,107,.28);
}
.rail .logo img{display:block;width:34px;height:34px}
/* rail logo：直接白色版，不做主题反色 */
/* 登录卡大 logo */
.login-logo{display:block;width:46px;height:46px;margin-bottom:14px}
[data-theme=dark] .login-logo{filter:invert(1)}
.rail-btn{
  width:48px;height:48px;border-radius:15px;display:grid;place-items:center;
  color:var(--ink-faint);
  transition:color .25s var(--ease),background .25s var(--ease),transform .25s var(--ease);
}
.rail-btn:hover{color:var(--ink);background:var(--surface);transform:translateY(-1px)}
.rail-btn.active{color:var(--bg);background:var(--periwinkle)}
.rail-btn svg{width:21px;height:21px}
.rail .spacer{flex:1}

/* ============ 页面骨架 ============ */
.page{flex:1;min-width:0;padding:26px 26px 40px}
header.top{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}
.top h1{font-weight:800;font-size:clamp(26px,3.2vw,38px);letter-spacing:-.02em;line-height:1.05}
.top h1 em{font-style:normal;color:var(--coral)}
.top .sub{color:var(--ink-dim);font-size:13.5px;margin-top:8px}
.top-tools{display:flex;align-items:center;gap:18px;flex:0 0 auto}
.top-clock{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:118px}
.top-clock b{font-weight:800;font-size:22px;letter-spacing:-.01em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:5px}
.top-clock .sec{font-size:12px;color:var(--coral)}
.top-clock span:last-child{font-size:11.5px;color:var(--ink-faint);font-weight:600;white-space:nowrap}

.home-flow{display:flex;flex-direction:column;gap:var(--gap)}
.home-flow .grid{align-items:stretch}
.grid{display:grid;grid-template-columns:1.42fr 1fr;gap:var(--gap);align-items:start}
.col-main,.col-side{display:flex;flex-direction:column;gap:var(--gap);min-width:0}

.card{
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-card);padding:var(--pad-y) var(--pad-x);
  position:relative;overflow:hidden;
}
.card .eyebrow{
  font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-faint);display:flex;align-items:center;gap:8px;
}
.card .eyebrow::before{content:"";width:7px;height:7px;border-radius:2px;background:currentColor}

/* ============ 首页：大卡主位 ============ */
.hero{background:var(--coral);color:var(--coral-on);border:none;padding:34px 32px 26px;display:flex;flex-direction:column}
.hero .eyebrow{color:var(--coral-on);opacity:.8}
.hero-inner{position:relative;z-index:1}
.hero h2{font-weight:800;font-size:clamp(28px,3vw,40px);letter-spacing:-.02em;line-height:1.06;margin:14px 0 10px;max-width:15em}
.hero p{font-size:14.5px;line-height:1.6;max-width:34em;opacity:.82;font-weight:500}
.hero .meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.hero .meta span{font-size:12.5px;font-weight:700;background:rgba(43,18,14,.14);padding:6px 12px;border-radius:999px}
.hero .actions{display:flex;align-items:center;gap:14px;margin-top:24px}
/* 主推封面：hero 右侧整高图，出现时装饰退场、文字收窄 */
.hero-cover{display:none;position:absolute;top:0;right:0;bottom:0;width:min(46%,330px);height:100%;object-fit:cover;z-index:1}
.hero.has-cover .hero-cover{display:block}
.hero.has-cover .stripe-deco,.hero.has-cover .arc{display:none}
.hero.has-cover .hero-inner{padding-right:min(46%,330px)}
/* KPI 收进 hero 底缘：一排小数据，coral-ink 语汇 */
.hero-kpis{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:26px;padding-top:16px;border-top:1px solid rgba(43,18,14,.18)}
.hero-kpis .kpi{background:none;border:none;padding:0;border-radius:0;min-height:0}
.hero-kpis .kpi .label{color:var(--coral-on);opacity:.78}
.hero-kpis .kpi .label::before{background:currentColor;opacity:.55}
.hero-kpis .kpi .value{font-size:21px;color:var(--coral-on);margin-top:4px}
.hero-kpis .kpi .value i{color:var(--coral-on);opacity:.78}
.btn-primary{
  background:var(--cta-bg);color:var(--cta-ink);font-weight:800;font-size:15px;
  padding:14px 26px;border-radius:999px;display:inline-flex;align-items:center;gap:10px;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease);
}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(0,0,0,.35)}
.btn-primary svg{width:17px;height:17px}
.ghost{font-weight:700;font-size:13.5px;text-decoration:underline;text-underline-offset:4px;opacity:.8}
.hero .ghost{color:var(--coral-on)}
.stripe-deco{
  position:absolute;right:-70px;top:-70px;width:260px;height:260px;border-radius:50%;
  background:repeating-linear-gradient(-45deg,rgba(43,18,14,.22) 0 9px,transparent 9px 22px);
  pointer-events:none;
}
.hero .arc{position:absolute;left:42%;bottom:-110px;width:220px;height:220px;border-radius:50%;border:26px solid rgba(43,18,14,.14);pointer-events:none}
.sec-badge{
  display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;
  color:var(--sage-ink);background:var(--sage);
  padding:7px 14px;border-radius:999px;
}
.sec-badge svg{width:14px;height:14px}
.hash-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px;font-size:12px;font-weight:700;color:var(--coral-on)}
.hash-row .hl{opacity:.72}
.hash-row code{background:rgba(43,18,14,.13);padding:5px 12px;border-radius:9px;font-family:ui-monospace,Consolas,monospace;font-size:12px;max-width:100%;overflow-wrap:anywhere;word-break:break-all}

/* ============ 通用 KPI（静态） ============ */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--pad-y) var(--pad-x)}
.kpi .label{font-size:12px;color:var(--ink-faint);font-weight:600;display:flex;align-items:center;gap:6px}
.kpi .label::before{content:"";width:7px;height:7px;border-radius:2px;background:var(--kc,var(--coral))}
.kpi:nth-child(1) .label{--kc:var(--coral)}
.kpi:nth-child(2) .label{--kc:var(--periwinkle)}
.kpi:nth-child(3) .label{--kc:var(--ice)}
.kpi:nth-child(4) .label{--kc:var(--sage)}
.kpi .value{font-weight:800;font-size:26px;letter-spacing:-.01em;margin-top:6px;font-variant-numeric:tabular-nums}
.kpi .value i{font-style:normal;font-size:13px;color:var(--ink-dim);font-weight:700;margin-left:4px}
.kpi .kpi-sub{font-size:11.5px;color:var(--ink-faint);margin-top:5px;line-height:1.5}

/* ============ 多彩频道卡（全宽单行 · 实心 / 斜纹两态） ============ */
.cats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}
.cat{
  border-radius:var(--r-card);padding:14px 20px;min-height:0;
  display:flex;align-items:center;gap:14px;
  position:relative;overflow:hidden;text-align:left;width:100%;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease);
}
.cat:hover{transform:translateY(-4px)}
.cat .icon{width:38px;height:38px;flex:0 0 38px;border-radius:12px;display:grid;place-items:center}
.cat .icon svg{width:19px;height:19px}
.cat-tx{min-width:0}
.cat h3{font-weight:800;font-size:17px;letter-spacing:-.01em}
.cat .count{font-size:12px;font-weight:600;opacity:.75;margin-top:2px;white-space:nowrap}
.cat .go{
  position:static;margin-left:auto;flex:0 0 auto;width:30px;height:30px;border-radius:50%;
  display:grid;place-items:center;transition:transform .35s var(--ease);
}
.cat:hover .go{transform:translateX(4px)}
.cat .go svg{width:15px;height:15px}
.cat.solid-peri{background:var(--periwinkle);color:var(--peri-on)}
.cat.solid-sage{background:var(--sage);color:var(--sage-on)}
.cat.solid-coral{background:var(--coral);color:var(--coral-on)}
.cat.solid-ice{background:var(--ice);color:var(--ice-on)}
.cat.solid-peri .icon,.cat.solid-sage .icon,.cat.solid-coral .icon,.cat.solid-ice .icon{background:rgba(0,0,0,.14)}
.cat.striped{background:var(--surface);border:1px solid var(--line);color:var(--ink)}
.cat.striped::before{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(-45deg,var(--c) 0 10px,transparent 10px 24px);
  opacity:.13;pointer-events:none;transition:opacity .35s var(--ease);
}
.cat.striped:hover::before{opacity:.22}
.cat.striped .icon{background:color-mix(in srgb,var(--c) 20%,transparent);color:var(--c)}
.cat.striped .count{color:var(--ink-dim)}
.cat.striped .go{background:color-mix(in srgb,var(--c) 18%,transparent);color:var(--c)}
.cat.striped-coral{--c:var(--coral);border-color:color-mix(in srgb,var(--coral) 35%,var(--line))}
.cat.striped-peri{--c:var(--periwinkle);border-color:color-mix(in srgb,var(--periwinkle) 35%,var(--line))}
.cat.striped-ice{--c:var(--ice);border-color:color-mix(in srgb,var(--ice) 35%,var(--line))}
.cat.striped-sage{--c:var(--sage);border-color:color-mix(in srgb,var(--sage) 35%,var(--line))}

/* ============ 图表 / 节点合并卡 ============ */
.chart-card{display:flex;flex-direction:column}
.chart-card .head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.chart-label{font-weight:800;font-size:22px;letter-spacing:-.01em;margin-top:10px}
.chart-label small{display:block;font-size:12.5px;font-weight:600;color:var(--ink-dim);margin-top:4px;letter-spacing:0}
.chart-value{font-weight:800;font-size:30px;font-variant-numeric:tabular-nums;color:var(--chart-c,var(--ice));transition:color .4s var(--ease)}
.bars{display:flex;align-items:flex-end;gap:9px;height:108px;min-height:108px;flex:1;margin-top:20px}
.bar{
  flex:1;border-radius:8px 8px 4px 4px;background:var(--surface-2);border:1px solid var(--line);
  height:calc(var(--h)*1%);
  transition:height .6s var(--ease),background .4s var(--ease),border-color .4s var(--ease),transform .4s var(--ease);
  transform-origin:bottom;
}
.bar.on{background:var(--chart-c,var(--ice));border-color:transparent;transform:scaleY(1.02)}
.day-tabs{display:flex;gap:6px;margin-top:16px}
.day-tab{
  flex:1;padding:8px 0;border-radius:10px;font-size:12px;font-weight:700;
  color:var(--ink-faint);letter-spacing:.04em;
  transition:background .3s var(--ease),color .3s var(--ease);
}
.day-tab:hover{color:var(--ink);background:var(--surface-2)}
.day-tab.on{background:var(--tab-c,var(--ice));color:var(--tab-ink,var(--ice-ink))}
.node-card .node-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}
.cap-summary{font-weight:800;font-size:20px;font-variant-numeric:tabular-nums}
.cap-summary i{font-style:normal;font-size:12px;color:var(--ink-dim);font-weight:600;margin-left:6px}
.node-card .map-legend{margin-top:0}
.map-wrap{margin-top:12px;border-radius:18px;overflow:hidden;border:1px solid var(--line)}
.map-wrap svg{display:block;width:100%;height:auto}
.map-wrap circle{cursor:pointer;transition:opacity .3s var(--ease)}
.map-wrap circle:hover{opacity:.8}
@keyframes pulse{0%{r:5;opacity:.9}100%{r:16;opacity:0}}
.pulse{animation:pulse 2.2s ease-out infinite;pointer-events:none}
.map-legend{display:flex;gap:14px;margin-top:10px;font-size:12px;color:var(--ink-dim);font-weight:600;flex-wrap:wrap}
.map-legend b{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}

/* ============ 资源库页 ============ */
.lib-bar{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);
  padding:var(--pad-y) var(--pad-x);margin-bottom:var(--gap);
  display:flex;flex-direction:column;gap:10px;
}
.chip{
  font-size:12px;font-weight:700;color:var(--ink-faint);border:1px solid var(--line);
  padding:6px 13px;border-radius:999px;
  transition:color .25s var(--ease),border-color .25s var(--ease),background .25s var(--ease);
}
.chip:hover{color:var(--ink);border-color:var(--ink-faint)}
.chip.on{background:var(--ice);color:var(--ice-ink);border-color:transparent}
.bf-chips{display:flex;gap:6px;flex-wrap:wrap}
.bf-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.bf-tools select{
  background:var(--surface-2);border:1px solid var(--line);color:var(--ink);
  font:inherit;font-size:12px;font-weight:600;border-radius:10px;padding:7px 10px;cursor:pointer;
}
.bf-search{
  width:100%;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;
  padding:10px 14px;color:var(--ink);font:inherit;font-size:13px;outline:none;
  transition:border-color .25s var(--ease);
}
.bf-search:focus{border-color:var(--periwinkle)}
.res-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(252px,1fr));gap:var(--gap)}
.res-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);
  padding:var(--pad-y) var(--pad-x);min-height:152px;
  display:flex;flex-direction:column;position:relative;overflow:hidden;cursor:pointer;
  transition:transform .35s var(--ease),border-color .35s var(--ease);
}
.res-card::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--c,var(--periwinkle))}
.res-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--c,var(--periwinkle)) 40%,var(--line))}
.res-card.stripe::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(-45deg,var(--c,var(--periwinkle)) 0 10px,transparent 10px 26px);opacity:.06;
}
.res-card .rt{font-weight:800;font-size:16px;letter-spacing:-.01em;display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-left:8px}
.res-card .rs{font-size:12px;color:var(--ink-faint);margin-top:4px;padding-left:8px}
.res-card .rtags{display:flex;gap:6px;flex-wrap:wrap;padding-left:8px;margin-top:6px}
.res-tag{font-size:10.5px;font-weight:700;color:var(--ink-faint);border:1px solid var(--line);padding:2px 8px;border-radius:999px}
.res-card .rfoot{margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;padding-left:8px;font-size:12px;color:var(--ink-dim);font-weight:600}
.res-card .rfoot b{display:block;font-size:17px;color:var(--ink);font-variant-numeric:tabular-nums}
.res-card .rfoot span{font-size:10.5px;color:var(--ink-faint)}
.res-card .fav{
  position:absolute;top:12px;right:12px;z-index:2;width:32px;height:32px;border-radius:10px;
  display:grid;place-items:center;color:var(--ink-faint);font-size:15px;
  transition:color .2s var(--ease),transform .2s var(--ease);
}
.res-card .fav:hover{transform:scale(1.15)}
.res-card .fav.on{color:var(--coral)}
.res-card .del{
  position:absolute;bottom:12px;right:12px;z-index:2;font-size:11px;font-weight:700;color:var(--coral);
  border:1px solid color-mix(in srgb,var(--coral) 40%,transparent);padding:4px 10px;border-radius:999px;
  transition:background .25s var(--ease);
}
.res-card .del:hover{background:color-mix(in srgb,var(--coral) 14%,transparent)}
.res-card.deleted{opacity:.45}
.bf-count{margin-top:12px;font-size:12px;color:var(--ink-faint);text-align:center}
.empty-hint{text-align:center;color:var(--ink-faint);font-size:13px;padding:30px 0}

/* ============ 弹窗 ============ */
.overlay{
  position:fixed;inset:0;z-index:100;background:var(--overlay);backdrop-filter:blur(4px);
  display:grid;place-items:center;padding:20px;
  opacity:0;pointer-events:none;transition:opacity .3s var(--ease);
}
.overlay.show{opacity:1;pointer-events:auto}
.modal{
  width:min(480px,100%);max-height:84vh;overflow:auto;
  background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:24px 26px;
  transform:translateY(14px) scale(.98);transition:transform .35s var(--ease);
}
.modal.wide{width:min(940px,100%)}
.overlay.show .modal{transform:none}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.modal-head h3{font-weight:800;font-size:19px;letter-spacing:-.01em}
.modal-x{
  width:32px;height:32px;border-radius:10px;flex:0 0 32px;display:grid;place-items:center;
  color:var(--ink-faint);font-size:18px;transition:background .25s var(--ease),color .25s var(--ease);
}
.modal-x:hover{background:var(--surface-2);color:var(--ink)}
.modal-body{margin-top:14px;font-size:13.5px;line-height:1.75;color:var(--ink-dim)}
.modal-body strong{color:var(--ink)}
.modal-body h4{font-size:13px;color:var(--ink);font-weight:800;margin:14px 0 4px}
.file-box{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-top:4px}
.file-box div{display:flex;justify-content:space-between;gap:14px;padding:4px 0;font-size:13px}
.file-box span:first-child{color:var(--ink-faint);flex:0 0 auto}
.file-box span:last-child{color:var(--ink);font-weight:600;text-align:right;word-break:break-all}
.ok{color:var(--sage);font-weight:700}
.agree-row{display:flex;align-items:flex-start;gap:10px;margin-top:16px;font-size:12.5px;color:var(--ink-dim);cursor:pointer}
.agree-row input{accent-color:var(--ice);width:16px;height:16px;margin-top:2px;cursor:pointer}
.agree-row a,.modal-body a{color:var(--ice);text-decoration:none}
.modal-confirm{
  width:100%;margin-top:16px;background:var(--ice);color:var(--ice-ink);
  font-weight:800;font-size:14.5px;padding:13px;border-radius:14px;
  transition:opacity .3s var(--ease),transform .3s var(--ease);
}
.modal-confirm:disabled{opacity:.35;cursor:not-allowed}
.modal-confirm:not(:disabled):hover{transform:translateY(-1px)}
.ver-row{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:center;padding:11px 14px;border:1px solid var(--line);border-radius:14px;margin-top:10px}
/* 三列网格：版本说明左 · 日期列居中位（1fr 1fr 使其起点每行一致，右对齐）· 按钮右 */
.ver-row .m-right{margin-left:0;text-align:center}
.ver-row b{font-size:13.5px;color:var(--ink)}
.ver-note{display:block;font-size:12px;color:var(--ink-faint);margin-top:2px;white-space:pre-line}
/* 更新日志时间线（资源详情弹窗） */
.log-list{margin-top:10px;padding-left:16px;border-left:2px solid color-mix(in srgb,var(--c,var(--periwinkle)) 30%,transparent);display:flex;flex-direction:column;gap:2px}
.log-item{position:relative;padding:6px 0 10px}
.log-item::before{
  content:"";position:absolute;left:-21px;top:13px;width:8px;height:8px;border-radius:50%;
  background:var(--c,var(--periwinkle));box-shadow:0 0 0 3px color-mix(in srgb,var(--c,var(--periwinkle)) 16%,transparent);
}
.log-head{display:flex;align-items:baseline;gap:8px}
.log-head b{font-size:12.5px;color:var(--ink)}
.log-date{font-size:11px;color:var(--ink-faint);font-variant-numeric:tabular-nums}
.log-note{font-size:12.5px;color:var(--ink-dim);margin-top:3px;line-height:1.65;white-space:pre-line}
.ver-dl{
  margin-left:auto;flex:0 0 auto;background:var(--ice);color:var(--ice-ink);
  font-weight:800;font-size:12px;padding:8px 16px;border-radius:999px;
  transition:transform .25s var(--ease);
}
.ver-dl:hover{transform:translateY(-1px)}
.danger-link{color:var(--coral);font-weight:700;font-size:12.5px;margin-top:12px;display:inline-block}

/* ============ 管理后台 ============ */
.admin-tabs{
  display:flex;align-items:center;gap:6px;margin-bottom:16px;padding-bottom:12px;
  border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;
}
.admin-tabs::-webkit-scrollbar{display:none}
.admin-tabs .chip{flex:0 0 auto;padding:8px 14px;font-size:12.5px}
.admin-tabs .account{display:flex;gap:6px;margin-left:auto;padding-left:12px;flex:0 0 auto}
.admin-tabs .account .chip{border-color:transparent;color:var(--ink-faint)}
.admin-tabs .account .chip:hover{color:var(--ink);border-color:var(--line)}
.admin-tabs .chip.on{background:var(--accent,var(--ice));color:var(--accent-ink,var(--ice-ink));border-color:transparent}
.admin-panel{display:flex;flex-direction:column;gap:var(--gap)}

/* 区块标题：与前台卡片标题同构 */
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.sec-head h2{font-size:21px;font-weight:800;letter-spacing:-.015em;line-height:1.2;display:flex;align-items:center;gap:10px}
.sec-head h2::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--accent,var(--ice));flex:0 0 auto}
.sec-sub{font-size:12.5px;color:var(--ink-faint);margin-top:5px;line-height:1.55}
.sec-actions{display:flex;gap:8px;flex:0 0 auto;align-items:center}

/* 内容卡片 */
.admin-panel .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card)}
.pad-card{padding:var(--pad-y) var(--pad-x)}
.narrow{max-width:780px}
.login-card{max-width:480px;margin:36px auto 0;padding:26px 26px 24px}
.login-card .gate-row{flex-direction:column;gap:10px}
.login-card .ver-dl{margin-left:0;width:100%;padding:12px 18px;font-size:13.5px}
.sec-actions .ver-dl{margin-left:0}

/* 表格 */
.tbl-wrap{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:4px 18px 8px;overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13px;min-width:660px}
.tbl th{
  color:var(--ink-faint);font-weight:700;text-align:left;padding:13px 10px 9px;
  font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;
  position:sticky;top:0;background:var(--surface);
}
.tbl td{padding:12px 10px;border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent);vertical-align:middle}
.tbl tbody tr:hover td{background:color-mix(in srgb,var(--surface-2) 60%,transparent)}
.tbl .name{font-weight:700;color:var(--ink);font-size:13.5px}
.tbl .dim{color:var(--ink-faint);font-size:11.5px;margin-top:2px}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.tbl th.num{text-align:right}
.tbl th.ops,.tbl td.ops{text-align:right;white-space:nowrap}
.tbl td.ops .act-btn{margin-left:2px}
.tbl tr.deleted td{opacity:.6}

/* 状态胶囊 */
.pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--ink-dim);white-space:nowrap}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--sage)}
.pill.off{color:var(--ink-faint)}
.pill.off::before{background:var(--ink-faint)}

/* 按钮 */
.act-btn{
  font-size:11.5px;font-weight:700;padding:5px 11px;border-radius:999px;
  border:1px solid transparent;color:var(--ink-dim);background:transparent;
  transition:color .2s var(--ease),background .2s var(--ease),border-color .2s var(--ease);
}
.act-btn:hover{color:var(--ink);background:var(--surface-2);border-color:var(--line)}
.act-btn.danger{color:var(--coral)}
.act-btn.danger:hover{background:color-mix(in srgb,var(--coral) 12%,transparent);border-color:color-mix(in srgb,var(--coral) 35%,transparent)}
.act-btn[disabled]{opacity:.4;cursor:not-allowed}
.ver-dl[disabled]{opacity:.45;cursor:not-allowed;transform:none}

/* 登录 */
.gate-row{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.gate-input{
  flex:1;min-width:150px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;
  padding:11px 14px;color:var(--ink);font:inherit;font-size:13px;outline:none;
  transition:border-color .25s var(--ease);
}
.gate-input:focus{border-color:var(--periwinkle)}

/* 上传向导 */
.steps{display:flex;gap:6px;margin:14px 0 12px;flex-wrap:wrap}
.step{
  font-size:11.5px;font-weight:700;color:var(--ink-faint);border:1px solid var(--line);
  padding:6px 12px;border-radius:999px;display:inline-flex;align-items:center;gap:6px;
  transition:color .3s var(--ease),border-color .3s var(--ease),background .3s var(--ease);
}
.step.doing{color:var(--ice);border-color:var(--ice)}
.step.done{color:var(--sage);border-color:transparent;background:color-mix(in srgb,var(--sage) 12%,transparent)}
.step.err{color:var(--coral);border-color:var(--coral)}
.drop{
  border:2px dashed var(--line);border-radius:18px;padding:30px 18px;text-align:center;
  color:var(--ink-dim);font-size:13px;cursor:pointer;line-height:1.6;
  transition:border-color .25s var(--ease),background .25s var(--ease);
}
.drop:hover,.drop.over{border-color:var(--periwinkle);background:color-mix(in srgb,var(--periwinkle) 6%,transparent)}

/* 表单 */
.up-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.up-meta label{font-size:11px;font-weight:700;color:var(--ink-faint);display:block;margin-bottom:5px;letter-spacing:.02em}
.up-meta input,.up-meta select,.up-meta textarea{
  width:100%;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;
  padding:9px 12px;color:var(--ink);font:inherit;font-size:13px;outline:none;min-height:38px;
  transition:border-color .2s var(--ease);
}
.up-meta textarea{resize:vertical;line-height:1.6;min-height:58px}
.up-meta input:focus,.up-meta select:focus,.up-meta textarea:focus{border-color:var(--periwinkle)}
.up-meta .full{grid-column:1/-1}
.up-meta .agree-row{display:flex;align-items:center;margin-bottom:0}
.up-meta .agree-row input{width:16px;height:16px;min-height:0;margin:0;accent-color:var(--sage)}
.hash-out{font-family:ui-monospace,Consolas,monospace;font-size:11px;color:var(--sage);word-break:break-all;margin-top:8px}
.progress{height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden;margin-top:10px}
.progress i{display:block;height:100%;width:0;background:var(--ice);transition:width .2s var(--ease)}

/* 审计 */
.audit-row{display:flex;gap:12px;padding:11px 2px;border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent);font-size:12.5px;align-items:baseline}
.audit-row:first-of-type{border-top:none}
.audit-row .t{margin-left:auto;color:var(--ink-faint);font-size:11.5px;flex:0 0 auto;font-variant-numeric:tabular-nums}
.audit-row b{color:var(--ink);font-weight:700}
.audit-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--line)}
.audit-filters select,.audit-filters input{
  height:34px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;
  padding:0 11px;color:var(--ink);font:inherit;font-size:12.5px;outline:none;
}
.audit-filters input[type=date]{color-scheme:light}
.audit-filters select:focus,.audit-filters input:focus{border-color:var(--periwinkle)}
.audit-filters .af-date{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-faint)}
.audit-filters .ver-dl{height:34px;padding:0 16px;font-size:12.5px;margin-left:0;display:inline-flex;align-items:center}
.audit-foot{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:12px;color:var(--ink-faint)}
.audit-foot span{margin-right:auto;font-variant-numeric:tabular-nums}

/* 数据概览 */
.kpi-sub{font-size:11.5px;color:var(--ink-faint);font-weight:600;margin-top:3px}
.ov-grid{display:grid;grid-template-columns:1.42fr 1fr;gap:var(--gap);align-items:stretch}
.ov-grid3{grid-template-columns:repeat(3,1fr)}
/* 网格子项允许收缩：否则 nowrap 长文本（如设备 UA/IP 行）会把 1fr 列撑爆 */
.ov-grid>*,.ov-grid3>*{min-width:0}
/* 拉伸卡内容纵向分布：等高的卡不留底部空洞 */
.ov-col>.ov-card,.ov-grid3>.card{flex:1 1 auto;display:flex;flex-direction:column}
.ov-col>.ov-card:not(.solid){justify-content:space-between}
.ov-grid3>.card{justify-content:space-between}
.ov-grid3>.card:first-child{justify-content:center}
/* 排行两列网格：第 2 列首行不画分隔线 */
.rank-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:26px}
.rank-grid .rank:nth-child(2){border-top:none}
.ov-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--pad-y) var(--pad-x);min-width:0}
.ov-card h4{font-size:11px;font-weight:800;color:var(--ink-faint);letter-spacing:.09em;text-transform:uppercase}
.ov-total{font-weight:800;font-size:23px;margin-top:8px;font-variant-numeric:tabular-nums}
.ov-bars{display:flex;align-items:flex-end;gap:7px;height:108px;margin-top:16px}
.ov-bar{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;gap:4px;min-width:0}
.ov-bar i{display:block;height:calc(var(--h)*1%);border-radius:6px 6px 3px 3px;background:var(--ice);transition:height .5s var(--ease)}
.ov-bar b{font-size:10.5px;font-weight:800;color:var(--ink-dim);text-align:center;height:13px}
.ov-bar span{font-size:10px;color:var(--ink-faint);text-align:center;font-weight:600}
.rank{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent);font-size:12.5px}
.rank:first-of-type{border-top:none}
.rank .no{width:16px;flex:0 0 auto;font-weight:800;color:var(--ink-faint);font-variant-numeric:tabular-nums}
.rank .nm{flex:1;min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank .rank-cat{flex:0 0 auto;font-size:11px;color:var(--ink-faint)}
.rank .num{flex:0 0 auto;font-weight:800;font-variant-numeric:tabular-nums}
.rank .sh{flex:0 0 auto;width:42px;text-align:right;font-size:11px;color:var(--ink-faint);font-variant-numeric:tabular-nums}

/* 数据概览：对外开放接口（Modrinth 兼容 + feed） */
.api-row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent)}
.api-row:first-of-type{border-top:none}
.api-row .act-btn{margin-top:2px;flex:0 0 auto}
.api-main{flex:1;min-width:0}
.api-line{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.api-path{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:3px 9px;overflow-wrap:anywhere;word-break:break-all;user-select:all}
.api-desc{font-size:11.5px;color:var(--ink-faint);margin-top:4px;line-height:1.6}

/* 存储体检 */
.st-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.st-note{flex:1;min-width:260px;font-size:12px;color:var(--ink-faint);line-height:1.65}
.st-note b{color:var(--ink-dim)}
.st{font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap}
.st-orphan{color:var(--coral);background:color-mix(in srgb,var(--coral) 14%,transparent)}
.st-used{color:var(--sage);background:color-mix(in srgb,var(--sage) 14%,transparent)}
.st-missing{color:var(--ice);background:color-mix(in srgb,var(--ice) 14%,transparent)}
.st-neutral{color:var(--ink-dim);background:var(--surface-2)}
@media (max-width:900px){
  .ov-grid,.ov-grid3{grid-template-columns:1fr}
  .up-meta{grid-template-columns:1fr}
}

/* ============ 节点状态弹窗（节点=镜像源） ============ */
.mirror-row{
  display:flex;align-items:center;gap:14px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:14px;
  padding:13px 16px;margin-top:10px;
  transition:border-color .25s var(--ease);
}
.mirror-row.off{opacity:.55}
.m-dot{width:10px;height:10px;border-radius:50%;flex:0 0 10px;background:var(--c,var(--ice))}
.m-name{font-weight:800;font-size:13.5px;color:var(--ink)}
.m-sub{font-size:12px;color:var(--ink-faint);margin-top:2px}
.m-right{margin-left:auto;text-align:right;font-size:12.5px;font-weight:700;color:var(--ink-dim);flex:0 0 auto}
.m-ping{color:var(--ink)}
.m-ping.hi{color:var(--coral)}
.m-check{flex:0 0 auto;font-size:11.5px;font-weight:700;color:var(--sage)}

/* ============ Toast ============ */
.toast{
  position:fixed;left:50%;bottom:30px;z-index:200;transform:translate(-50%,16px);
  background:var(--surface-2);border:1px solid var(--line);color:var(--ink);
  font-size:13.5px;font-weight:600;padding:12px 22px;border-radius:999px;
  box-shadow:0 14px 34px rgba(0,0,0,.45);
  opacity:0;pointer-events:none;
  transition:opacity .35s var(--ease),transform .35s var(--ease);
  max-width:80vw;
}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast b{color:var(--sage)}

/* ============ 页脚 ============ */
footer.site-foot{
  margin-top:24px;padding-top:18px;border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap;
  font-size:12.5px;color:var(--ink-faint);font-weight:500;
}
footer.site-foot a{color:var(--ink-dim);text-decoration:none;transition:color .25s var(--ease)}
footer.site-foot a:hover{color:var(--ice)}
/* 备案号独立一行居中 */
.site-foot .beian-line{flex-basis:100%;text-align:center;margin-top:-4px}

/* ============ 响应式 ============ */
@media (max-width:1100px){
  .grid{grid-template-columns:1fr}
  .kpis{grid-template-columns:repeat(2,1fr)}
  .cats{grid-template-columns:1fr 1fr}
  header.top{flex-direction:column;align-items:flex-start}
  .top-tools{width:100%;justify-content:space-between}
}
@media (max-width:900px){
  .hero.has-cover .hero-inner{padding-right:0}
  .hero.has-cover .hero-cover{position:static;display:block;width:calc(100% + 64px);max-width:none;height:150px;margin:-34px -32px 16px;border-radius:0}
  .hero-kpis{grid-template-columns:1fr 1fr;row-gap:14px}
}
@media (max-width:720px){
  body{flex-direction:column}
  .rail{width:100%;height:auto;position:static;flex-direction:row;padding:12px 16px;border-right:none;border-bottom:1px solid var(--line)}
  .rail .logo{margin-bottom:0}
  .rail .spacer{display:none}
  .cats{grid-template-columns:1fr}
  .kpis{grid-template-columns:1fr 1fr}
}

/* ============ 封面图 ============ */
.res-cover{margin:calc(var(--pad-y) * -1) calc(var(--pad-x) * -1) 14px;height:118px;overflow:hidden;background:var(--surface-2)}
.res-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s var(--ease)}
.res-card:hover .res-cover img{transform:scale(1.04)}
.detail-cover{margin-bottom:14px;border-radius:16px;overflow:hidden;background:var(--surface-2);max-height:240px}
.detail-cover img{width:100%;max-height:240px;object-fit:cover;display:block}
.cover-edit{grid-column:1/-1;display:flex;gap:14px;align-items:center;margin-top:4px}
.cover-edit img,.cover-empty{width:132px;height:74px;border-radius:12px;object-fit:cover;background:var(--surface-2);border:1px solid var(--line);flex:0 0 auto}
.cover-empty{display:grid;place-items:center;font-size:11px;color:var(--ink-faint)}
.cover-ops{display:flex;flex-direction:column;gap:6px;font-size:11.5px;color:var(--ink-faint)}
.cover-ops input[type=file]{font-size:11.5px;color:var(--ink-dim);max-width:220px}

/* ============ 后台：四色统计卡（呼应前台频道卡） ============ */
.admin-panel .kpi{border:none}
.admin-panel .kpi:nth-child(1){background:var(--coral);color:var(--coral-on)}
.admin-panel .kpi:nth-child(2){background:var(--periwinkle);color:var(--peri-on)}
.admin-panel .kpi:nth-child(3){background:var(--ice);color:var(--ice-on)}
.admin-panel .kpi:nth-child(4){background:var(--sage);color:var(--sage-on)}
.admin-panel .kpi .label{color:currentColor;opacity:.72}
.admin-panel .kpi .label::before{background:currentColor;opacity:.5}
.admin-panel .kpi .value{color:currentColor}
.admin-panel .kpi .kpi-sub{color:currentColor;opacity:.6}
/* 后台 KPI 列数自成节奏：≥901px 恒 4 列（覆盖前台 ≤1100 的 2 列规则），窄屏 2 列并收紧字号 */
.admin-panel .kpis{grid-template-columns:repeat(4,1fr)}
@media (max-width:1100px){
  .admin-panel .kpi .value{font-size:22px}
}
@media (max-width:900px){
  .admin-panel .kpis{grid-template-columns:1fr 1fr}
  .admin-panel .kpi{padding:13px 15px}
  .admin-panel .kpi .value{font-size:20px}
  .admin-panel .kpi .kpi-sub{font-size:10.5px;margin-top:3px}
}

/* 概览：主栏 / 侧栏，与门店页同构 */
.ov-col{display:flex;flex-direction:column;gap:var(--gap);min-width:0}
.ops-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent);font-size:12.5px}
.ops-row:first-of-type{border-top:none}
.ops-k{color:var(--ink-faint);white-space:nowrap}
.ops-v{font-weight:700;color:var(--ink-dim);text-align:right}
.ops-v.ok{color:var(--sage)}
.ops-v.warn{color:var(--coral)}

/* 区块卡片回到前台语汇：eyebrow 小标题 / 实心大卡 / 斜纹卡，不再用同色顶边 */
.admin-panel .ov-card,.admin-panel .tbl-wrap,.admin-panel .card{border-top:none}
.admin-panel .ov-card{position:relative;overflow:hidden}
.admin-panel h4{
  font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-faint);display:flex;align-items:center;gap:8px;
}
.admin-panel h4::before{content:"";width:7px;height:7px;border-radius:2px;background:var(--hc,var(--accent,var(--ice)))}
/* 实心大卡（hero 态）：页签主题色铺满，深色 ink 文字 */
.admin-panel .ov-card.solid{background:var(--accent,var(--ice));color:var(--accent-on,var(--ice-on));border:none}
.admin-panel .ov-card.solid h4{color:inherit;opacity:.72}
.admin-panel .ov-card.solid h4::before{background:currentColor;opacity:.55}
.admin-panel .ov-card.solid .ov-total{color:inherit}
.admin-panel .ov-card.solid .ov-bar i{background:var(--accent-on,var(--ice-on))}
.admin-panel .ov-card.solid .ov-bar b{color:currentColor;opacity:.85}
.admin-panel .ov-card.solid .ov-bar span{color:currentColor;opacity:.62}
.admin-panel .ov-card.solid .empty-hint{color:currentColor;opacity:.7}
.admin-panel .ov-card.solid .st-note{color:currentColor;opacity:.75}
/* 斜纹卡（striped 态）：深底 + 页签主题色斜纹 + 彩色小标题 */
.admin-panel .ov-card.striped::before,.admin-panel .card.striped::before{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(-45deg,var(--accent,var(--ice)) 0 10px,transparent 10px 24px);
  opacity:.09;pointer-events:none;
}
.admin-panel .ov-card.striped>*,.admin-panel .card.striped>*{position:relative}
.admin-panel .ov-card.striped h4,.admin-panel .card.striped h4{color:var(--accent,var(--ice));--hc:var(--accent,var(--ice))}

/* ============ 首页：热门下载 TOP5（深色卡 + 彩色序号点） ============ */
.hot-list{margin-top:12px;display:flex;flex-direction:column}
.hot-row{
  display:flex;align-items:center;gap:10px;padding:9px 2px;text-align:left;width:100%;
  border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent);font-size:12.5px;
}
.hot-row:first-child{border-top:none}
.hot-no{
  width:20px;height:20px;flex:0 0 20px;border-radius:7px;display:grid;place-items:center;
  font-size:11px;font-weight:800;
  background:color-mix(in srgb,var(--hc,var(--coral)) 18%,transparent);color:var(--hc,var(--coral));
}
.hot-name{flex:1;min-width:0;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .25s var(--ease)}
.hot-row:hover .hot-name{color:var(--ice)}
.hot-cat{flex:0 0 auto;font-size:11px;color:var(--ink-faint)}
.hot-dl{flex:0 0 auto;font-weight:800;color:var(--ink-dim);font-variant-numeric:tabular-nums}
.hot-empty{text-align:center;color:var(--ink-faint);font-size:12.5px;padding:18px 0 8px}


/* ===== 浅色态可读性：浅底上的四色亮字混墨加深 =====
   判断依据（实测对比度）：
   - 保持不动：实心四色卡内的 -ink 深字（珊瑚/冰蓝/紫/鼠尾草亮面 + 深字 7:1+，Daily Grind 卡面语汇，改浅反而废）
   - 必须加深：四色亮字落在 bg/surface/18% 底上时（白底珊瑚仅 2.2:1、冰蓝 1.9:1）
  深色态同样是亮色原值（深底上 4.5:1+），无需覆盖 */
[data-theme=light] .modal-body a{color:color-mix(in srgb,var(--ice) 40%,var(--ink))}
[data-theme=light] .modal-body a.danger-link{color:color-mix(in srgb,var(--coral) 48%,var(--ink))}
[data-theme=light] .hot-no{color:color-mix(in srgb,var(--hc,var(--coral)) 48%,var(--ink))}
[data-theme=light] .hot-row:hover .hot-name{color:color-mix(in srgb,var(--ice) 40%,var(--ink))}
[data-theme=light] .chart-value{color:color-mix(in srgb,var(--chart-c,var(--ice)) 48%,var(--ink))}
[data-theme=light] .st-missing{color:color-mix(in srgb,var(--ice) 40%,var(--ink))}
[data-theme=light] .step.doing{color:color-mix(in srgb,var(--ice) 40%,var(--ink))}
[data-theme=light] footer.site-foot a:hover{color:color-mix(in srgb,var(--ice) 40%,var(--ink))}
[data-theme=light] .ov-card.striped h4,[data-theme=light] .card.striped h4{color:color-mix(in srgb,var(--accent,var(--ice)) 40%,var(--ink))}
[data-theme=light] .ops-v.ok{color:color-mix(in srgb,var(--sage) 48%,var(--ink))}
[data-theme=light] .ops-v.warn{color:color-mix(in srgb,var(--coral) 48%,var(--ink))}

/* 浅色态：实心大卡面压深 8%，配米白字达到 large-text 3:1 线 */
[data-theme=light] .hero{background:color-mix(in srgb,var(--coral) 88%,#1a0906)}
[data-theme=light] .hero.hero-ice{background:color-mix(in srgb,var(--ice) 88%,#06161f)}
[data-theme=light] .cat.solid-coral{background:color-mix(in srgb,var(--coral) 90%,#1a0906)}
[data-theme=light] .cat.solid-ice{background:color-mix(in srgb,var(--ice) 90%,#06161f)}
[data-theme=light] .cat.solid-peri{background:color-mix(in srgb,var(--periwinkle) 90%,#0d0e1c)}
[data-theme=light] .cat.solid-sage{background:color-mix(in srgb,var(--sage) 90%,#0d1409)}
[data-theme=light] .admin-panel .kpi:nth-child(1){background:color-mix(in srgb,var(--coral) 90%,#1a0906)}
[data-theme=light] .admin-panel .kpi:nth-child(2){background:color-mix(in srgb,var(--periwinkle) 90%,#0d0e1c)}
[data-theme=light] .admin-panel .kpi:nth-child(3){background:color-mix(in srgb,var(--ice) 90%,#06161f)}
[data-theme=light] .admin-panel .kpi:nth-child(4){background:color-mix(in srgb,var(--sage) 90%,#0d1409)}
[data-theme=light] .admin-panel .ov-card.solid{background:color-mix(in srgb,var(--accent,var(--ice)) 90%,#06161f)}
[data-theme=light] .rail .logo{background:color-mix(in srgb,var(--coral) 90%,#1a0906)}

/* ============ 资源库：标签筛选条（资源页签主题色 = 长春花） ============ */
.tag-chip.on{background:var(--periwinkle);color:var(--peri-ink)}

/* 订阅页：等高端正（右栏末卡拉伸填满）+ 冰蓝 hero + 步骤行 */
.sub-grid{align-items:stretch}
.sub-grid .col-side>.card:last-child{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center}
/* 订阅页：冰蓝 hero（主卡换色）+ 步骤行 */
.hero.hero-ice{background:var(--ice);color:var(--ice-on)}
.hero.hero-ice .eyebrow{color:var(--ice-on);opacity:.8}
.hero.hero-ice .meta span{background:rgba(14,36,48,.14)}
.hero.hero-ice .stripe-deco{background:repeating-linear-gradient(-45deg,rgba(14,36,48,.22) 0 9px,transparent 9px 22px)}
.hero.hero-ice .arc{border-color:rgba(14,36,48,.14)}
.hero.hero-ice .feed-url-input{background:rgba(14,36,48,.13);color:var(--ice-on)}
.hero.hero-ice .feed-url-input::placeholder{color:rgba(255,255,255,.66)}
.sub-steps{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.sub-step{display:flex;align-items:center;gap:8px;background:rgba(14,36,48,.10);border-radius:999px;padding:7px 14px;font-size:12.5px;font-weight:700}
.sub-step i{font-style:normal;width:18px;height:18px;border-radius:50%;background:var(--ice-ink);color:var(--ice);display:grid;place-items:center;font-size:11px;font-weight:800}

/* ============ 后台排版精修（v48） ============ */
/* 页头一行化：标题 + 页签条 + 账户操作同排 */
.admin-top{align-items:center;flex-wrap:wrap;gap:10px 18px;margin-bottom:12px}
.admin-top h1{font-size:21px}
.admin-top .sub{margin-top:3px;font-size:11.5px}
.admin-top .admin-tabs{flex:1;min-width:260px;justify-content:flex-end;border-bottom:none;padding-bottom:0;margin-bottom:0}
/* 资源管理 3 卡 KPI 节奏 */
.admin-panel .kpis.k3{grid-template-columns:repeat(3,1fr)}
/* 开放接口：一行一接口，说明收进 title 悬浮 */
.api-row{align-items:center;padding:7px 0;gap:10px}
.api-row b{flex:0 0 auto;font-size:12px;color:var(--ink);font-weight:700}
.api-row .api-path{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 备份表紧凑行高；恢复前快照 = 缩进子行 */
.tbl-compact td{padding:7px 10px}
.bk-sub .name{font-size:11.5px;color:var(--ink-dim);font-weight:600}
/* 侧栏紧凑列表（安全中心：设备 / 账号） */
.side-row{display:flex;align-items:center;gap:10px;padding:10px 2px;border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent)}
.side-row:first-child{border-top:none}
.side-row .side-main{flex:1;min-width:0}
.side-row .side-main .dim{font-size:11px;color:var(--ink-faint);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side-row .name{font-size:12.5px}
/* 设备列表限高滚动：会话多时不把三卡带撑高 */
.dev-scroll{max-height:264px;overflow-y:auto;scrollbar-width:thin}
.dev-scroll .side-row{padding:9px 2px}
/* 审计动作分类色点 */
.audit-row .adot{width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:var(--dc,var(--ice));align-self:center}
/* 窄屏：侧栏列表与页签条回落 */
@media (max-width:1100px){
  .admin-top{align-items:flex-start;flex-direction:column}
  .admin-top .admin-tabs{justify-content:flex-start;width:100%}
}
