/* Stats */
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}
.stat-card{background:var(--card);border-radius:var(--radius);padding:16px;border:1px solid var(--gray-border)}
.stat-card .label{font-size:var(--fs-sm);color:var(--gray-l);margin-bottom:4px}
.stat-card .value{font-size:var(--fs-stat);font-weight:700}
.stat-card .change{font-size:var(--fs-xs);margin-top:4px;color:var(--green)}

/* Activity */
.activity-bar{display:grid;grid-template-columns:3fr 2fr;gap:14px;margin-bottom:28px}
.activity-box{background:var(--card);border-radius:var(--radius);padding:20px 24px;border:1px solid var(--gray-border);box-shadow:var(--shadow)}
.activity-box h3{font-size:var(--fs-base);font-weight:600;margin-bottom:14px}

/* Products */
.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.section-header h3{font-size:var(--fs-base);font-weight:600}
.prod-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.prod-card{background:var(--card);border-radius:var(--radius);overflow:hidden;border:1px solid var(--gray-border);box-shadow:var(--shadow);cursor:pointer;transition:all .25s}
.prod-card:hover{border-color:#a9cdbd}
.prod-card .img{height:120px;display:flex;align-items:center;justify-content:center;font-size:30px;background:#f8f9fb;overflow:hidden}
.prod-card .img img{width:100%;height:100%;object-fit:cover}
.prod-card .info{padding:12px 14px 14px}
.prod-card .title{font-size:var(--fs-base);font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:6px;line-height:1.35}
.prod-card .meta{display:flex;justify-content:space-between;font-size:var(--fs-sm);color:var(--gray-l)}
.prod-card .price{font-weight:700;color:#1a1a2e}
.prod-card .profit{font-weight:600}.profit.g{color:var(--green)}.profit.y{color:var(--orange)}.profit.r{color:var(--red)}
.prod-card .actions{display:flex;gap:6px;margin-top:8px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:6px 14px;border-radius:var(--ui-control-radius);border:1px solid transparent;cursor:pointer;font-family:inherit;font-size:14px;font-weight:600;line-height:1.4;text-decoration:none;transition:background .15s,border-color .15s,color .15s}
.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{opacity:.9}
.btn-success{background:var(--green);color:#fff}.btn-success:hover{opacity:.9}
.btn-outline{background:#fff;border:1px solid var(--ui-border-strong);color:var(--ui-text)}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}
.btn-danger{background:var(--red);color:#fff}.btn-danger:hover{opacity:.9}
.btn-danger-ghost{background:transparent;color:var(--red);border:1px solid transparent}.btn-danger-ghost:hover{background:#fff5f5;border-color:var(--red)}
.btn-sm{padding:4px 10px;font-size:var(--fs-sm)}

/* Filters */
.filters{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.filter-btn{padding:6px 12px;border-radius:6px;border:1px solid var(--ui-border);background:#fff;cursor:pointer;font:inherit;color:var(--ui-muted);transition:background .15s,border-color .15s}
.filter-btn:hover{border-color:var(--primary);color:var(--primary)}
.filter-btn.active{background:var(--primary-bg);color:var(--primary);border-color:#a9cdbd;font-weight:650}

/* Table */
.data-table{width:100%;border-collapse:collapse;font-size:var(--fs-base)}
.data-table th{text-align:left;padding:11px 12px;background:var(--ui-soft);color:#526373;font-weight:600;border-bottom:1px solid var(--ui-border);font-size:13px}
.data-table td{padding:11px 12px;border-bottom:1px solid #edf0f3;vertical-align:middle}
.data-table tr:hover{background:#f8f9fb}
.data-table a{color:var(--primary);text-decoration:none}
/* 主区内表格默认跟正文，减少各页写死 11～12px */
.content table{font-size:var(--fs-base)}
.content th{font-size:var(--fs-sm)}

/* Toast */
.toast{position:fixed;bottom:72px;right:24px;max-width:360px;word-break:break-word;padding:10px 20px;background:var(--ui-text);color:#fff;border-radius:8px;font-size:var(--fs-base);z-index:9100;opacity:0;pointer-events:none;transition:opacity .3s}
.toast.show{opacity:1;pointer-events:auto}.toast.ok,.toast.success{background:var(--green)}.toast.err,.toast.error{background:var(--red)}

/* 统一应用内弹窗（禁止系统 alert/confirm/prompt） */
.ui-dialog-mask{display:none;position:fixed;inset:0;background:rgba(15,26,22,.45);z-index:10000;align-items:center;justify-content:center;padding:16px}
.ui-dialog-mask.show{display:flex}
.ui-dialog{background:#fff;border-radius:8px;padding:0;max-width:420px;width:100%;box-shadow:var(--ui-shadow-dialog);overflow:hidden;border:1px solid var(--gray-border)}
.ui-dialog-body{padding:20px 22px 8px;font-size:var(--fs-base);line-height:1.55;color:#334155;white-space:pre-wrap;word-break:break-word}
.ui-dialog-input{display:none;width:calc(100% - 44px);box-sizing:border-box;margin:8px 22px 12px;padding:9px 12px;border:1px solid var(--ui-border-strong);border-radius:6px;font-size:14px;font-family:inherit}
.ui-dialog-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,110,86,.12)}
.ui-dialog-ft{display:flex;gap:8px;justify-content:flex-end;padding:12px 18px 16px}
.ui-dialog-ft .btn{min-width:72px}
.ui-dialog-ft .btn-danger{background:var(--red);color:#fff}

/* Form */
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:var(--fs-sm);font-weight:600;color:var(--gray-l);margin-bottom:4px}
.form-input{padding:8px 12px;border:1px solid var(--gray-border);border-radius:8px;font-size:var(--fs-base);width:100%;max-width:300px;outline:none}
.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,110,86,.12)}

/* PRD21 · 1688 货源黄标（全站复用） */
.source-alert-chip{display:inline-block;margin:0 4px 0 0;padding:1px 8px;border-radius:12px;font-size:12px;font-weight:600;background:var(--yellow-bg);color:#92400e;border:1px solid var(--yellow-border);cursor:help;vertical-align:middle;white-space:nowrap}

/* Loading placeholders */
@keyframes shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}
.skeleton{background:var(--ui-soft);background-size:800px 100%;animation:shimmer 1.5s infinite;border-radius:6px}
.sk-row{height:14px;margin-bottom:8px;width:80%}
.sk-row.short{width:40%}
.sk-box{height:80px;width:80px;border-radius:8px}
.sk-card{padding:12px 14px;background:#fff;border-radius:10px;border:1px solid #e8e8ec;margin-bottom:8px;display:flex;gap:12px}
.sk-card .sk-body{flex:1}
.sk-bar{height:20px;margin-bottom:6px;border-radius:4px;width:60%}

/* 统一底栏翻页（左：共 N 条 · 右：上下页 + 第 x/y 页 + 跳至） */
.pager-bar{display:none;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;font-size:var(--fs-sm);color:#6b7280}
.pager-bar .pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto}
.pager-bar button{min-width:32px;height:32px;padding:0 10px;border:1px solid #d1d5db;background:#fff;border-radius:6px;cursor:pointer;font-size:var(--fs-sm);color:#374151}
.pager-bar button:disabled{opacity:.4;cursor:not-allowed}
.pager-bar button:not(:disabled):hover{border-color:var(--primary);color:var(--primary)}
.pager-bar .pg-cur{font-weight:600;color:var(--ui-text);font-size:var(--fs-base)}
.pager-bar .jump-inp{width:56px;height:32px;padding:0 6px;border:1px solid #d1d5db;border-radius:6px;font-size:var(--fs-sm);text-align:center;outline:none}
.pager-bar .jump-inp:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,110,86,.12)}

:where(button,input,select,textarea){font-family:var(--ui-font)}
:where(button:disabled,.btn:disabled){cursor:not-allowed;opacity:.5;transform:none}
:where(input,select,textarea){color:var(--ui-text);accent-color:var(--primary)}
:where(input::placeholder,textarea::placeholder){color:var(--ui-muted);opacity:1}
:where(table){font-variant-numeric:tabular-nums}
:where(a){text-underline-offset:3px}
.ui-table-scroll{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
.ui-page-intro{margin:0 0 20px;color:var(--ui-muted);max-width:75ch;font-size:14px}
.ui-section-title{font-size:16px;font-weight:650;line-height:1.4;margin:0 0 12px}
.ui-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.ui-empty{padding:36px 20px;text-align:center;color:var(--ui-muted);background:var(--ui-surface);border:1px dashed var(--ui-border-strong);border-radius:8px;line-height:1.8}
.ui-form-section{background:#fff;border:1px solid var(--ui-border);border-radius:8px;padding:20px;margin-bottom:16px}
.ui-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.skip-link{position:fixed;top:-60px;left:236px;z-index:10001;background:var(--primary);color:#fff;padding:9px 16px;border-radius:6px}
.skip-link:focus{top:8px}
:where([role=status],[role=alert]){overflow-wrap:anywhere}
@media(max-width:768px){.content{padding:20px 16px 32px}.ui-toolbar{gap:8px}.ui-table-scroll table{min-width:720px}.skip-link{left:16px}}

:where(a){color:var(--primary);text-underline-offset:3px}
