/* 七星云IDC财务系统 - 全局样式（纯白简约商务风） */
:root{
  --primary:#2563eb;--primary-dark:#1d4fd8;--success:#16a34a;--warning:#f59e0b;
  --danger:#dc2626;--info:#0891b2;
  --bg:#f5f7fa;--card:#fff;--border:#e5e7eb;--text:#1f2937;--muted:#6b7280;--radius:8px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Microsoft YaHei","PingFang SC","Helvetica Neue",Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.6}
a{color:var(--primary);text-decoration:none}
a:hover{color:var(--primary-dark)}
ul{list-style:none}
img{max-width:100%}
/* hidden 属性兜底：皮肤与组件会给 .form-item 等元素设置 display，
   作者样式的优先级高于浏览器默认的 [hidden]{display:none}，会导致
   带 hidden 的节点（二次确认弹窗的文本录入框、按类型切换的表单项）仍然显示。 */
[hidden]{display:none!important}

/* ---------- 布局 ---------- */
.layout{display:flex;min-height:100vh}
.sidebar{width:230px;background:#fff;border-right:1px solid var(--border);color:var(--text);flex-shrink:0;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transition:width .2s}
.sidebar .logo{padding:18px 20px;font-size:16px;font-weight:700;color:var(--text);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px}
.sidebar .logo span{font-size:12px;color:var(--muted);font-weight:400}
.menu{padding:6px 0}
.menu-group{padding:4px 0 12px}
.menu-group + .menu-group{border-top:1px solid #f1f5f9}
.menu-title{padding:12px 20px 8px;font-size:12px;color:#94a3b8;font-weight:600;display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none}
.menu-title:hover{color:var(--primary)}
.menu-title .arrow{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;opacity:.5;transition:transform .2s;margin-right:2px}
.menu-group.collapsed .menu-title .arrow{transform:rotate(-90deg)}
.menu-group.collapsed .menu-items{display:none}
.menu a{display:flex;align-items:center;gap:10px;padding:9px 20px;color:#475569;font-size:13.5px;border-left:3px solid transparent}
.menu a:hover{background:#f8fafc;color:var(--primary)}
.menu a.active{background:#eff6ff;color:var(--primary);border-left-color:var(--primary);font-weight:600}
.main{flex:1;margin-left:230px;min-width:0;display:flex;flex-direction:column}
.topbar{height:58px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 20px;position:sticky;top:0;z-index:20}
.topbar .crumb{font-size:14px;color:var(--muted)}
.topbar .right{display:flex;align-items:center;gap:16px}
.topbar .top-link{font-size:13px;color:var(--muted)}
.topbar .top-link:hover{color:var(--primary)}
.user-box{display:flex;align-items:center;gap:8px;font-size:13px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600}
.content{padding:20px;flex:1}

/* ---------- 选项卡 ---------- */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}
.tabs a{padding:9px 16px;font-size:13.5px;color:var(--muted);border-bottom:2px solid transparent;cursor:pointer;text-decoration:none}
.tabs a:hover{color:var(--primary)}
.tabs a.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}
.tab-pane{display:none}
.tab-pane.active{display:block}
.info-table{width:100%}
.info-table td{padding:8px 12px;font-size:13px;border-bottom:1px solid #f1f5f9}
.info-table td:first-child{width:120px;color:var(--muted);background:#fafbfc}

/* ---------- 卡片 ---------- */
.card{background:var(--card);border-radius:var(--radius);border:1px solid var(--border);margin-bottom:18px;overflow:hidden}
.card-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.card-head h3{font-size:15px;font-weight:600}
.card-body{padding:18px}
.card-body.no-pad{padding:0}

/* ---------- 统计卡 ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:18px}
.stat{background:#fff;border-radius:var(--radius);padding:18px;border:1px solid var(--border);display:flex;align-items:center;gap:14px}
.stat .ico{width:46px;height:46px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:600;background:#eff6ff;color:var(--text)}
.stat .num{font-size:22px;font-weight:700;line-height:1.2}
.stat .lbl{font-size:12px;color:var(--muted)}
.stat.green .ico{background:#dcfce7;color:#15803d}.stat.orange .ico{background:#fef3c7;color:#b45309}
.stat.red .ico{background:#fee2e2;color:#b91c1c}.stat.blue .ico{background:#dbeafe;color:#1d4ed8}
.stat.purple .ico{background:#ede9fe;color:#6d28d9}

/* ---------- 表格 ---------- */
table.tb{width:100%;border-collapse:collapse;font-size:13px}
table.tb th{background:#f9fafb;padding:10px 12px;text-align:left;font-weight:600;color:#475569;border-bottom:1px solid var(--border);white-space:nowrap}
table.tb td{padding:10px 12px;border-bottom:1px solid #f3f4f6;vertical-align:middle}
table.tb tr:hover td{background:#fafcff}
table.tb .empty{padding:40px;text-align:center;color:var(--muted)}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:6px;border:1px solid var(--border);background:#fff;color:var(--text);font-size:13px;cursor:pointer;font-family:inherit;transition:.15s}
.btn:hover{border-color:var(--primary);color:var(--primary)}
.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn.primary:hover{background:var(--primary-dark);color:#fff}
.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn.danger:hover{opacity:.9;color:#fff}
.btn.success{background:var(--success);border-color:var(--success);color:#fff}
.btn.sm{padding:4px 9px;font-size:12px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* ---------- 表单 ---------- */
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.form-item{margin-bottom:14px}
.form-item label{display:block;font-size:13px;margin-bottom:6px;color:#334155;font-weight:600}
.form-item label .req{color:var(--danger)}
.form-item input[type=text],.form-item input[type=password],.form-item input[type=number],
.form-item input[type=date],.form-item input[type=email],.form-item select,.form-item textarea{
  width:100%;padding:8px 11px;border:1px solid #d1d5db;border-radius:6px;font-size:13.5px;font-family:inherit;background:#fff}
.form-item input:focus,.form-item select:focus,.form-item textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.form-item .tip{font-size:12px;color:var(--muted);margin-top:4px}
.search-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:14px 18px;background:#f9fafb;border-bottom:1px solid var(--border)}
.search-bar input,.search-bar select{padding:7px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;font-family:inherit}
.checkbox-group{display:flex;flex-wrap:wrap;gap:10px}
.checkbox-group label{font-weight:400;font-size:13px;display:flex;align-items:center;gap:5px}

/* ---------- 标签 ---------- */
.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:12px;line-height:1.8;white-space:nowrap}
.badge-success{background:#dcfce7;color:#15803d}
.badge-warning{background:#fef3c7;color:#b45309}
.badge-danger{background:#fee2e2;color:#b91c1c}
.badge-info{background:#cffafe;color:#0e7490}
.badge-default{background:#f3f4f6;color:#6b7280}
.badge-primary{background:#dbeafe;color:#1d4ed8}

/* ---------- 分页 ---------- */
.pager{display:flex;gap:6px;align-items:center;justify-content:center;padding:16px;flex-wrap:wrap}
.pager a,.pager span{padding:6px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;color:var(--text)}
.pager a:hover{border-color:var(--primary);color:var(--primary)}
.pager .current{background:var(--primary);color:#fff;border-color:var(--primary)}

/* ---------- 提示 ---------- */
.alert{padding:10px 14px;border-radius:6px;font-size:13px;margin-bottom:14px}
.alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d}
.alert-error{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c}
.alert-warning{background:#fffbeb;border:1px solid #fde68a;color:#b45309}
.alert-info{background:#eff6ff;border:1px solid #bfdbfe;color:#1d4ed8}

/* ---------- 模态框 ---------- */
.modal{display:none;position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:100;align-items:center;justify-content:center}
.modal.show{display:flex}
.modal-box{background:#fff;border-radius:10px;width:560px;max-width:94vw;max-height:88vh;overflow:auto}
.modal-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
.modal-head h3{font-size:15px}
.modal-body{padding:18px}
.modal-foot{padding:14px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}
.close{cursor:pointer;font-size:20px;color:var(--muted);background:none;border:none}

/* ---------- 前台用户中心 ---------- */
.home-top{background:#fff;border-bottom:1px solid var(--border);color:var(--text)}
.home-top .inner{max-width:1200px;margin:0 auto;padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.home-top a{color:#475569}
.home-top a:hover{color:var(--primary)}
.home-nav{display:flex;gap:4px;flex-wrap:wrap}
.home-nav a{padding:7px 14px;border-radius:6px;font-size:13.5px}
.home-nav a.active,.home-nav a:hover{background:#eff6ff;color:var(--primary)}
.home-wrap{max-width:1200px;margin:0 auto;padding:20px}
.home-side{width:210px;flex-shrink:0}
.home-main{flex:1;min-width:0}
.home-flex{display:flex;gap:18px;align-items:flex-start}
.side-menu{background:#fff;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}
.side-menu a{display:block;padding:11px 18px;color:var(--text);font-size:13.5px;border-left:3px solid transparent}
.side-menu a:hover{background:#f8fafc}
.side-menu a.active{background:#eff6ff;color:var(--primary);border-left-color:var(--primary);font-weight:600}
.balance-box{background:#f8fafc;border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:20px}
.balance-box .num{font-size:30px;font-weight:700;margin:6px 0;color:var(--primary)}
.balance-box .acts{margin-top:14px;display:flex;gap:8px}
.balance-box .btn{border-color:var(--border)}

/* ---------- 登录页 ---------- */
.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);padding:20px}
.login-box{background:#fff;border-radius:10px;border:1px solid var(--border);box-shadow:0 2px 12px rgba(15,23,42,.06);width:400px;max-width:100%;overflow:hidden}
.login-head{padding:26px 30px 10px;text-align:center}
.login-head h1{font-size:20px}
.login-head p{color:var(--muted);font-size:13px;margin-top:6px}
.login-body{padding:20px 30px 30px}
.login-foot{text-align:center;color:var(--muted);font-size:12px;padding:16px}

/* ---------- 图表 ---------- */
.chart{width:100%;height:260px}
.bar-chart{display:flex;align-items:flex-end;gap:4px;height:200px;padding:10px 0;border-bottom:1px solid var(--border)}
.bar-chart .bar{flex:1;background:#3b82f6;border-radius:3px 3px 0 0;min-height:2px;position:relative}
.bar-chart .bar.neg{background:#ef4444}
.bar-chart .bar span{position:absolute;top:-18px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--muted);white-space:nowrap}
.chart-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);padding-top:6px}

/* ---------- 商店卡片 ---------- */
.store-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.store-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:.15s}
.store-card:hover{border-color:var(--primary);box-shadow:0 4px 14px rgba(37,99,235,.08)}
.store-thumb{height:130px;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:700;background:#f8fafc;border-bottom:1px solid var(--border);color:var(--primary)}
.store-body{padding:14px 16px;flex:1;display:flex;flex-direction:column;gap:8px}
.store-body h4{font-size:14px;font-weight:600}
.store-body .desc{font-size:12px;color:var(--muted);flex:1;min-height:36px}
.store-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted)}
.store-foot{padding:12px 16px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px}
.store-foot .price{font-size:15px;font-weight:700;color:var(--primary)}
.store-foot .price.free{color:var(--success)}

/* ---------- 后台首页 ---------- */
.dash-hero{background:linear-gradient(120deg,#ffffff 0%,#f8fafc 55%,#eff6ff 100%);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:16px}
.dash-hero h2{font-size:19px;font-weight:700;margin-bottom:6px}
.dash-hero .sub{font-size:13px;color:var(--muted)}
.dash-hero .acts{display:flex;gap:8px;flex-wrap:wrap}
.dash-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:16px}
.dash-stat{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:15px 18px;display:flex;align-items:center;gap:14px;transition:.2s}
.dash-stat:hover{border-color:var(--primary);box-shadow:0 6px 18px rgba(37,99,235,.08)}
.dash-stat .ico{width:46px;height:46px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;flex-shrink:0;background:#eff6ff;color:var(--primary)}
.dash-stat.green .ico{background:#dcfce7;color:#15803d}
.dash-stat.red .ico{background:#fee2e2;color:#b91c1c}
.dash-stat.orange .ico{background:#fef3c7;color:#b45309}
.dash-stat.blue .ico{background:#dbeafe;color:#1d4ed8}
.dash-stat.purple .ico{background:#ede9fe;color:#6d28d9}
.dash-stat .num{font-size:21px;font-weight:700;line-height:1.25}
.dash-stat .lbl{font-size:12.5px;color:var(--muted);margin-top:2px}
.dash-stat .tip{font-size:11.5px;color:#94a3b8;margin-top:4px}
.dash-quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(116px,1fr));gap:12px;margin-bottom:16px}
.dash-quick a{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:14px 10px;text-align:center;font-size:13px;color:var(--text);transition:.2s}
.dash-quick a:hover{border-color:var(--primary);color:var(--primary);background:#f8fafc}
.dash-quick a i{display:block;font-style:normal;font-size:15px;font-weight:700;color:var(--primary);margin-bottom:6px}
.bar-chart .bar{background:linear-gradient(180deg,#60a5fa,#2563eb);border-radius:3px 3px 0 0;min-width:6px}

/* ---------- 前台门户首页（产品销售） ---------- */
.portal-page{background:#fff;color:var(--text)}
.p-inner{width:100%;max-width:1200px;margin:0 auto;padding:0 20px}
.p-top{background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}
.p-nav{display:flex;align-items:center;justify-content:space-between;height:64px;gap:20px}
.p-logo{font-size:18px;font-weight:700;color:var(--primary)}
.p-menu{display:flex;gap:24px}
.p-menu a{font-size:14px;color:var(--text)}
.p-menu a:hover{color:var(--primary)}
.p-acts{display:flex;gap:8px;align-items:center}
.p-hero{background:linear-gradient(120deg,#f8fafc 0%,#eff6ff 100%);padding:64px 0 56px;text-align:center;border-bottom:1px solid var(--border)}
.p-hero h1{font-size:32px;font-weight:700;margin-bottom:14px;line-height:1.35}
.p-hero p{font-size:15px;color:var(--muted);max-width:720px;margin:0 auto}
.p-hero-acts{display:flex;gap:12px;justify-content:center;margin-top:24px;flex-wrap:wrap}
.p-hero-stats{display:flex;gap:48px;justify-content:center;margin-top:40px;flex-wrap:wrap}
.p-hero-stats b{display:block;font-size:26px;color:var(--primary);font-weight:700}
.p-hero-stats span{font-size:13px;color:var(--muted)}
.p-section{padding:54px 0}
.p-section-alt{background:#f8fafc}
.p-sec-head{text-align:center;margin-bottom:30px}
.p-sec-head h2{font-size:24px;font-weight:700}
.p-sec-head p{color:var(--muted);font-size:14px;margin-top:6px}
.p-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px}
.p-card{background:#fff;border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;transition:.2s}
.p-card:hover{border-color:var(--primary);box-shadow:0 8px 24px rgba(37,99,235,.10);transform:translateY(-2px)}
.p-card-head{padding:16px 18px 8px}
.p-tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:4px;background:#eff6ff;color:var(--primary);margin-bottom:8px}
.p-card-head h3{font-size:16px;font-weight:600}
.p-card-body{padding:0 18px;flex:1}
.p-desc{font-size:13px;color:var(--muted);line-height:1.7;min-height:44px}
.p-meta{display:flex;gap:14px;font-size:12px;color:#94a3b8;margin-top:10px}
.p-card-foot{padding:14px 18px 18px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #f1f5f9;margin-top:12px}
.p-price{color:#dc2626}
.p-price i{font-style:normal;font-size:13px}
.p-price b{font-size:22px;font-weight:700}
.p-price em{font-style:normal;font-size:12px;color:var(--muted);margin-left:2px}
.p-empty{text-align:center;padding:40px;color:var(--muted);border:1px dashed var(--border);border-radius:10px}
.p-feats{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px}
.p-feat{background:#fff;border:1px solid var(--border);border-radius:10px;padding:22px}
.p-feat-ico{width:42px;height:42px;border-radius:8px;background:#eff6ff;color:var(--primary);display:flex;align-items:center;justify-content:center;font-weight:700;margin-bottom:12px}
.p-feat h4{font-size:15px;font-weight:600;margin-bottom:6px}
.p-feat p{font-size:13px;color:var(--muted);line-height:1.7}
.p-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:18px}
.p-step{text-align:center;padding:20px}
.p-step span{display:inline-flex;width:34px;height:34px;border-radius:50%;background:var(--primary);color:#fff;align-items:center;justify-content:center;font-weight:700;margin-bottom:10px}
.p-step h4{font-size:15px;margin-bottom:6px}
.p-step p{font-size:13px;color:var(--muted)}
.p-foot{background:#0f172a;color:#cbd5e1;padding:44px 0 24px}
.p-foot .p-logo{color:#fff}
.p-foot-main{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:30px}
.p-foot h4{color:#fff;font-size:14px;margin-bottom:12px}
.p-foot a{display:block;color:#94a3b8;font-size:13px;line-height:2}
.p-foot a:hover{color:#fff}
.p-foot-copy{text-align:center;color:#64748b;font-size:12px;margin-top:28px;padding-top:18px;border-top:1px solid #1e293b}
@media(max-width:900px){.p-menu{display:none}.p-hero h1{font-size:24px}.p-foot-main{grid-template-columns:1fr 1fr}.p-hero-stats{gap:24px}}

/* ---------- 应用商店（商用商城卡片式） ---------- */
.store-hero{background:linear-gradient(90deg,#f8fafc,#eff6ff);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.store-hero h3{font-size:17px;font-weight:700;margin-bottom:4px}
.store-hero .sub{font-size:13px;color:var(--muted)}
.store-hero .hero-stats{display:flex;gap:24px}
.store-hero .hero-stats .num{font-size:20px;font-weight:700;line-height:1.2}
.store-hero .hero-stats .lbl{font-size:12px;color:var(--muted)}
.store-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.store-filters .chip{padding:5px 14px;border:1px solid var(--border);border-radius:16px;font-size:13px;color:var(--muted);cursor:pointer;background:#fff;transition:.15s}
.store-filters .chip:hover{color:var(--primary);border-color:var(--primary)}
.store-filters .chip.active{background:var(--primary);border-color:var(--primary);color:#fff}
.store-card{position:relative}
.store-thumb{position:relative;overflow:hidden;background:#f1f5f9}
.store-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.store-thumb.pay-plugin-thumb img{object-fit:contain;padding:18px;box-sizing:border-box;background:#f7f9fc}
.store-thumb .letter{font-size:34px;font-weight:700;color:#fff;letter-spacing:2px}
.store-thumb.t-blue{background:linear-gradient(135deg,#60a5fa,#2563eb)}
.store-thumb.t-green{background:linear-gradient(135deg,#6ee7b7,#059669)}
.store-thumb.t-orange{background:linear-gradient(135deg,#fcd34d,#d97706)}
.store-thumb.t-purple{background:linear-gradient(135deg,#c4b5fd,#7c3aed)}
.store-thumb.t-red{background:linear-gradient(135deg,#fca5a5,#dc2626)}
.store-thumb.t-slate{background:linear-gradient(135deg,#cbd5e1,#475569)}
.store-ribbon{position:absolute;top:10px;right:10px;font-size:11px;padding:2px 9px;border-radius:10px;color:#fff;background:rgba(15,23,42,.55)}
.store-ribbon.on{background:var(--success)}
.store-ribbon.off{background:var(--muted)}
.store-badges{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.store-badge{font-size:11px;padding:1px 7px;border-radius:4px;background:#f1f5f9;color:var(--muted)}
.store-badge.ver{background:#eff6ff;color:var(--primary)}
.store-badge.free{background:#dcfce7;color:#15803d}
.store-price{font-size:16px;font-weight:700;color:var(--primary)}
.store-price .unit{font-size:11px;font-weight:400;color:var(--muted);margin-left:2px}
.store-price.free{color:var(--success)}
.store-actions{display:flex;gap:6px;flex-wrap:wrap}
.store-preview-img{width:100%;max-height:320px;object-fit:contain;background:#f8fafc;border-radius:6px;border:1px solid var(--border)}

/* ---------- 资源池 ---------- */
.pool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.pool-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:16px}
.pool-card .head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.pool-card .head h4{font-size:15px;font-weight:600}
.pool-stat{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.pool-stat .item{background:#f9fafb;border-radius:6px;padding:8px 10px;font-size:12px;color:var(--muted)}
.pool-stat .item b{display:block;font-size:16px;color:var(--text)}
.node-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}
.node-dot.on{background:var(--success)}.node-dot.off{background:var(--danger)}.node-dot.warn{background:var(--warning)}

/* ---------- 其他 ---------- */
.text-right{text-align:right}.text-center{text-align:center}
.muted{color:var(--muted)}
.mono{font-family:Consolas,Monaco,monospace;font-size:12px}
.table-scroll{overflow-x:auto}
.nowrap{white-space:nowrap}
.mb10{margin-bottom:10px}.mb20{margin-bottom:20px}.mt10{margin-top:10px}.mt20{margin-top:20px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.flex{display:flex;gap:10px;align-items:center}
.between{display:flex;justify-content:space-between;align-items:center}
pre.doc{background:#f8fafc;color:var(--text);border:1px solid var(--border);padding:16px;border-radius:8px;overflow:auto;font-size:12.5px;line-height:1.7;max-height:70vh}
.footer{text-align:center;color:var(--muted);font-size:12px;padding:20px}

@media (max-width:1000px){
  .sidebar{width:60px}.sidebar .logo span,.menu-group .menu-title{display:none}
  .menu-group.collapsed .menu-items{display:block}
  .menu a{justify-content:center;padding:12px 8px}
  .main{margin-left:60px}
  .grid2,.grid3,.grid4{grid-template-columns:1fr}
  .home-flex{flex-direction:column}.home-side{width:100%}
}
