:root{
  --ink:#15251d;
  --ink-soft:#4f6258;
  --muted:#7d8c83;
  --line:#e5ebe6;
  --paper:#f3f6f2;
  --card:#ffffff;
  --forest:#123c2f;
  --forest-2:#1c5743;
  --lime:#c9ec8d;
  --lime-soft:#eef8dc;
  --amber:#b7791f;
  --red:#b42318;
  --shadow:0 12px 40px rgba(17, 48, 36, .07);
  --radius:14px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;-webkit-font-smoothing:antialiased}
body{font-size:14px;line-height:1.6}
button,input{font:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}
.eyebrow{margin:0 0 6px;font-size:10px;letter-spacing:.16em;font-weight:700;color:var(--muted)}
.muted{color:var(--muted)}
.small{font-size:12px}

/* ---------- login ---------- */
.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);background:radial-gradient(circle at 12% 18%,#1f5b44 0,transparent 35%),linear-gradient(120deg,#0c2c22 0%,#123c2f 52%,#173f31 100%);color:#f5faf6;position:relative;overflow:hidden}
.login-shell:after{content:"";position:absolute;right:-120px;bottom:-180px;width:620px;height:620px;border:1px solid rgba(201,236,141,.22);border-radius:50%;box-shadow:0 0 0 70px rgba(201,236,141,.035),0 0 0 150px rgba(201,236,141,.025)}
.login-brand{position:absolute;top:34px;left:44px;display:flex;align-items:center;gap:12px;z-index:2}
.brand-mark{width:38px;height:38px;border-radius:11px;background:var(--lime);color:var(--forest);display:grid;place-items:center;font-weight:900;font-size:19px;letter-spacing:-.04em}
.brand-mark.small{width:32px;height:32px;border-radius:9px;font-size:16px}
.brand-name{font-weight:800;font-size:15px;letter-spacing:.02em}
.brand-en{font-size:9px;letter-spacing:.22em;color:rgba(255,255,255,.5);margin-top:1px}
.login-copy{align-self:center;padding:120px 7vw 80px 44px;max-width:680px;position:relative;z-index:1}
.login-copy .eyebrow{color:var(--lime)}
.login-copy h1{font-size:clamp(38px,4.4vw,66px);line-height:1.06;letter-spacing:-.045em;margin:0 0 22px;font-weight:800}
.login-copy h1 em{font-style:normal;color:var(--lime)}
.login-desc{max-width:430px;color:rgba(245,250,246,.7);font-size:15px;line-height:1.9}
.login-points{display:flex;gap:8px;flex-wrap:wrap;margin-top:26px}
.login-points span{border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:5px 11px;font-size:11px;color:rgba(255,255,255,.68)}
.login-card{align-self:center;justify-self:end;margin-right:6vw;width:min(390px,calc(100vw - 48px));background:#fff;color:var(--ink);border-radius:20px;padding:32px 30px 24px;box-shadow:0 30px 80px rgba(0,0,0,.3);position:relative;z-index:1}
.login-card-head{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px;letter-spacing:.06em;margin-bottom:18px}
.status-dot{width:6px;height:6px;border-radius:50%;background:#4c9b61;box-shadow:0 0 0 3px #e5f4e9}
.login-card h2{font-size:25px;letter-spacing:-.03em;margin:0 0 4px}
.login-card .muted{margin:0 0 22px;font-size:12px}
.login-card label{display:block;font-size:12px;font-weight:700;color:var(--ink-soft);margin-bottom:14px}
.login-card input{display:block;width:100%;margin-top:6px;border:1px solid #dbe4dd;border-radius:9px;background:#f9fbf9;padding:12px 13px;color:var(--ink);outline:none;transition:.15s}
.login-card input:focus{border-color:var(--forest-2);box-shadow:0 0 0 3px rgba(28,87,67,.1);background:#fff}
.login-card button[type=submit]{width:100%;border:0;border-radius:9px;background:var(--forest);color:#fff;padding:13px 16px;font-weight:800;font-size:14px;display:flex;justify-content:space-between;align-items:center;margin-top:4px;transition:.15s}
.login-card button[type=submit]:hover{background:var(--forest-2);transform:translateY(-1px)}
.login-card button[type=submit]:disabled{opacity:.6;cursor:wait;transform:none}
.form-error{background:#fff1f0;color:#a5281b;border:1px solid #ffd5d1;border-radius:8px;padding:9px 11px;font-size:12px;margin:0 0 12px}
.login-foot{text-align:center;color:#9aa79e;font-size:10px;margin:22px 0 0}

/* ---------- shell ---------- */
.app-shell{min-height:100vh;display:flex}
.sidebar{width:238px;flex:0 0 238px;background:var(--forest);color:#eef6ef;display:flex;flex-direction:column;padding:24px 14px 16px;position:sticky;top:0;height:100vh}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:0 8px 28px}
.sidebar-brand .brand-en{color:rgba(255,255,255,.45)}
.nav{display:flex;flex-direction:column;gap:3px}
.nav-item{display:flex;align-items:center;gap:11px;width:100%;border:0;background:transparent;color:rgba(238,246,239,.68);text-align:left;padding:10px 11px;border-radius:8px;font-size:13px;transition:.15s}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item.active{background:rgba(201,236,141,.13);color:var(--lime)}
.nav-ico{width:18px;text-align:center;font-size:15px;color:inherit;opacity:.85}
.muted-link{font-size:12px;color:rgba(238,246,239,.48)}
.sidebar-bottom{margin-top:auto}
.sidebar-user{display:flex;align-items:center;gap:9px;border-top:1px solid rgba(255,255,255,.1);padding:15px 8px 0;margin-top:15px}
.avatar{width:31px;height:31px;border-radius:50%;background:var(--lime);color:var(--forest);display:grid;place-items:center;font-weight:900;font-size:13px;flex:0 0 31px}
.user-meta{min-width:0;flex:1}
.user-meta strong{display:block;font-size:12px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-meta span{display:block;font-size:10px;color:rgba(255,255,255,.45)}
.icon-btn{border:0;background:transparent;color:rgba(255,255,255,.5);font-size:15px;padding:4px}
.icon-btn:hover{color:var(--lime)}
.main{flex:1;min-width:0;padding:0 32px 40px}
.topbar{height:88px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);margin-bottom:24px}
.topbar-title h1{font-size:22px;letter-spacing:-.03em;margin:0}
.topbar-title .eyebrow{margin-bottom:2px}
.topbar-right{display:flex;align-items:center;gap:16px;color:var(--muted);font-size:12px}
.live-pill{display:inline-flex;align-items:center;gap:6px;background:#eef7e8;color:#3f6f49;border:1px solid #e0edd9;padding:5px 9px;border-radius:999px;font-size:11px}
.live-pill i{width:5px;height:5px;border-radius:50%;background:#62a76a}
.mobile-menu{display:none;border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 9px;font-size:17px}
.view{display:none;animation:fade .25s ease}
.view.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ---------- shared panels ---------- */
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px}
.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}
.panel-head h2{font-size:16px;letter-spacing:-.02em;margin:0}
.panel-sub{color:var(--muted);font-size:12px;margin:5px 0 0}
.panel-note{font-size:11px;color:var(--muted);background:#f4f7f3;border-radius:6px;padding:3px 7px}
.text-btn{border:0;background:transparent;color:var(--forest-2);font-weight:700;font-size:12px;padding:0}
.text-btn:hover{text-decoration:underline}
.filter-row{display:flex;gap:7px;align-items:center}
.filter-row input{border:1px solid var(--line);background:#f9fbf9;border-radius:8px;padding:8px 10px;font-size:12px;outline:none;min-width:190px}
.filter-row input:focus{border-color:#a9c3b2}
.small-btn,.primary-small{border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 11px;font-size:12px;color:var(--ink-soft)}
.small-btn:hover{border-color:#b5c9bb;background:#f8fbf8}
.primary-small{border-color:var(--forest);background:var(--forest);color:#fff}
.primary-small:hover{background:var(--forest-2)}

/* ---------- kpi / dashboard ---------- */
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:17px 18px 16px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi:before{content:"";position:absolute;right:-30px;top:-30px;width:80px;height:80px;border-radius:50%;background:#f1f7ed}
.kpi .kpi-label{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px;margin-bottom:10px}
.kpi .kpi-label i{display:block;width:6px;height:6px;border-radius:2px;background:var(--lime)}
.kpi strong{display:block;font-size:26px;letter-spacing:-.04em;line-height:1.1}
.kpi small{display:block;color:#89978e;font-size:10px;margin-top:6px}
.split-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:16px}
.trend-chart{display:flex;align-items:flex-end;gap:10px;height:190px;padding-top:12px}
.trend-col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:7px;height:100%;min-width:0}
.trend-col b{display:block;width:100%;max-width:34px;min-height:6px;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,var(--lime),#8bbd55);transition:.2s}
.trend-col:hover b{filter:brightness(.94)}
.trend-col span{font-size:10px;color:var(--muted);white-space:nowrap}
.trend-col em{font-style:normal;font-size:10px;color:var(--ink-soft);font-weight:700}
.attention-list{display:flex;flex-direction:column;gap:2px}
.attention-item{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px dashed #e9efe9;font-size:12px}
.attention-item:last-child{border-bottom:0}
.attention-item span{color:var(--ink-soft)}
.attention-item b{font-size:16px;letter-spacing:-.03em}
.attention-item b.warn{color:var(--amber)}
.attention-item b.danger{color:var(--red)}

/* ---------- tables ---------- */
.table-wrap{overflow:auto}
.data-table{width:100%;border-collapse:collapse;min-width:620px}
.data-table th{text-align:left;font-size:10px;letter-spacing:.08em;color:#8b998f;font-weight:700;text-transform:uppercase;padding:0 9px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.data-table td{padding:12px 9px;border-bottom:1px solid #f0f3f0;font-size:12px;vertical-align:middle}
.data-table tr:last-child td{border-bottom:0}
.data-table tbody tr:hover{background:#fbfdfb}
.data-table .strong{font-weight:700;color:var(--ink)}
.data-table .subtle{color:var(--muted);font-size:11px}
.order-items{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.badge{display:inline-flex;align-items:center;padding:3px 7px;border-radius:5px;font-size:10px;font-weight:700;white-space:nowrap}
.badge.green{background:#edf8e9;color:#45734b}
.badge.amber{background:#fff6e6;color:#956116}
.badge.blue{background:#edf4fc;color:#3c679b}
.badge.red{background:#fff0ef;color:#a83e32}
.badge.gray{background:#f2f4f2;color:#68746c}
.stock-low{color:var(--amber);font-weight:700}
.stock-out{color:var(--red);font-weight:700}
.pager{display:flex;justify-content:space-between;align-items:center;padding-top:16px;color:var(--muted);font-size:11px}
.pager div{display:flex;align-items:center;gap:8px}
.page-num{min-width:48px;text-align:center;color:var(--ink-soft)}

/* ---------- market intel ---------- */
.intel-search-panel .panel-head{margin-bottom:4px}
.intel-search-panel .filter-row input{min-width:250px}
.intel-result-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow);margin-bottom:16px}
.intel-product{display:flex;gap:14px;min-width:0}
.intel-product img{width:78px;height:78px;object-fit:cover;border-radius:10px;background:#f2f4f2;border:1px solid var(--line)}
.intel-product h2{font-size:16px;margin:0 0 4px;line-height:1.4}
.intel-product p{margin:2px 0;color:var(--muted);font-size:11px}
.intel-price{text-align:right;flex:0 0 120px}
.intel-price span,.intel-price small{display:block;font-size:11px;color:var(--muted)}
.intel-price strong{display:block;font-size:22px;margin:5px 0}
.intel-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:16px}
.intel-kpis>div{background:#fff;border:1px solid var(--line);border-radius:10px;padding:11px 12px;box-shadow:var(--shadow)}
.intel-kpis span{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}
.intel-kpis b{display:block;font-size:16px;letter-spacing:-.02em}
.intel-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.3fr);gap:16px}
.intel-grid .data-table{min-width:0}
.intel-grid .data-table th,.intel-grid .data-table td{padding:8px 7px;font-size:11px}
.keyword-cell strong{display:block;font-weight:700}
.keyword-cell small{color:var(--muted);font-size:10px}
.notice{padding:12px 14px;border-radius:9px;background:#fff8e9;border:1px solid #f1dfb7;color:#71531d;font-size:12px;margin-bottom:16px}
.notice strong{font-weight:800}
.empty{padding:42px 16px;text-align:center;color:var(--muted);font-size:12px}
.loading{opacity:.45;pointer-events:none}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .intel-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .split-grid{grid-template-columns:1fr}
  .intel-grid{grid-template-columns:1fr}
}
@media (max-width:860px){
  .login-shell{grid-template-columns:1fr;min-height:100svh}
  .login-brand{top:22px;left:22px}
  .login-copy{padding:100px 24px 20px}
  .login-copy h1{font-size:38px}
  .login-desc{font-size:13px}
  .login-card{justify-self:center;margin:0 24px 36px;width:calc(100% - 48px);max-width:420px}
  .sidebar{position:fixed;left:0;top:0;z-index:30;transform:translateX(-100%);transition:transform .22s ease;box-shadow:20px 0 60px rgba(0,0,0,.18)}
  .sidebar.open{transform:none}
  .main{padding:0 16px 30px}
  .topbar{height:76px}
  .mobile-menu{display:block}
  .topbar-right .today{display:none}
  .panel{padding:16px;border-radius:12px}
  .filter-row{width:100%}
  .filter-row input{flex:1;min-width:0}
  .panel-head{flex-wrap:wrap}
  .intel-search-panel .filter-row input{min-width:0}
}
@media (max-width:520px){
  .topbar-right .live-pill{font-size:10px}
  .kpi-grid{gap:8px}
  .kpi{padding:14px}
  .kpi strong{font-size:22px}
  .intel-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .intel-result-head{flex-direction:column}
  .intel-price{text-align:left}
  .data-table{min-width:540px}
}

/* ---------- keyword mining ---------- */
.kw-cost{font-size:11px;color:#6b7d70;background:#f2f7ef;border:1px solid #e1ecdb;border-radius:999px;padding:4px 9px;white-space:nowrap}
.kw-search-panel{padding-bottom:16px}
.kw-search-row{display:flex;align-items:center;gap:9px;margin-top:4px}
.kw-search-row input{flex:1;min-width:0;border:1px solid #dbe4dd;background:#f9fbf9;border-radius:9px;padding:11px 13px;font-size:13px;outline:none}
.kw-search-row input:focus{border-color:#a9c3b2;box-shadow:0 0 0 3px rgba(28,87,67,.08);background:#fff}
.platform-pill{display:inline-flex;align-items:center;gap:6px;border:1px solid #e1e9e2;background:#f5f9f4;color:#3f5b49;border-radius:7px;padding:9px 11px;font-size:12px;font-weight:700;white-space:nowrap}
.platform-pill i{width:8px;height:8px;border-radius:50%;background:#1f6b4a;box-shadow:0 0 0 2px #d6ead9}
.kw-tips{margin-top:18px;padding:13px 15px;background:#f7faf6;border:1px solid #e7efe5;border-radius:9px}
.kw-tips h3{font-size:12px;margin:0 0 6px;color:#395a45}
.kw-tips ol{margin:0;padding-left:18px;color:#708077;font-size:11px;line-height:1.9}
.kw-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}
.kw-summary>div{background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:12px 14px}
.kw-summary span{display:block;color:var(--muted);font-size:10px;margin-bottom:4px}
.kw-summary b{display:block;font-size:18px;letter-spacing:-.02em}
.kw-table-panel{padding-bottom:10px}
.kw-table-panel .data-table{min-width:780px}
.kw-table-panel .data-table th,.kw-table-panel .data-table td{padding:9px 8px;font-size:11px}
.kw-query{font-weight:700;color:var(--ink)}
.kw-query small{display:block;color:var(--muted);font-size:10px;font-weight:400}
.growth-up{color:#2f7a45;font-weight:700}
.growth-down{color:#b44a3c;font-weight:700}
.kw-empty{padding:42px 16px;text-align:center;color:var(--muted);font-size:12px}
@media (max-width:900px){.kw-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.kw-search-row{flex-wrap:wrap}.kw-search-row input{flex-basis:100%;order:2}.kw-search-row .primary-small{order:3;flex:1}.platform-pill{order:1}.kw-cost{font-size:10px}}