/* SiteAnalysis v2 — 自适应统计界面样式
   设计：浅色卡片 + 紧凑数字表格 + 响应式栅格，移动端自动堆叠 */

:root{
  --bg:#f4f6f9; --card:#ffffff; --ink:#1f2328; --ink2:#424a53; --muted:#7a8290;
  --line:#e7eaee; --line2:#eef1f4;
  --accent:#2563eb; --accent-soft:#eaf1ff;
  --ok:#16a34a; --warn:#f59e0b; --danger:#ef4444;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 4px 16px rgba(16,24,40,.05);
  --radius:14px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg); color:var(--ink);
  font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--accent); text-decoration:none;}
a:hover{text-decoration:underline;}
code,kbd,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;}
.muted{color:var(--muted);}
.wrap{max-width:1200px;margin:0 auto;padding:0 18px;}
.nowrap{white-space:nowrap;}
.right{text-align:right;}
.center{text-align:center;}

/* ---------- 顶部 ---------- */
.top{
  background:linear-gradient(120deg,#101828 0%,#1d2a44 55%,#203a63 100%);
  color:#fff; position:sticky; top:0; z-index:30;
  box-shadow:0 1px 0 rgba(255,255,255,.06);
}
.top .wrap{display:flex;align-items:center;gap:14px;height:58px;}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;letter-spacing:.2px;color:#fff;}
.brand:hover{text-decoration:none;}
.brand .dot{width:10px;height:10px;border-radius:50%;background:#38bdf8;box-shadow:0 0 0 4px rgba(56,189,248,.18);}
.top nav{margin-left:auto;display:flex;gap:6px;align-items:center;}
.top nav a{color:#cbd5e1;padding:7px 12px;border-radius:8px;font-size:13px;}
.top nav a:hover{background:rgba(255,255,255,.08);color:#fff;text-decoration:none;}
.top nav a.active{background:rgba(56,189,248,.18);color:#fff;}

/* ---------- 通用 ---------- */
.page{padding:22px 0 60px;}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);}
.card+.card{margin-top:16px;}
.card-h{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line2);}
.card-h h2,.card-h h3{margin:0;font-size:15px;font-weight:600;}
.card-h .sub{color:var(--muted);font-size:12px;font-weight:400;}
.card-b{padding:16px;}
.grid{display:grid;gap:16px;}
.g-2{grid-template-columns:repeat(2,minmax(0,1fr));}
.g-3{grid-template-columns:repeat(3,minmax(0,1fr));}
@media(max-width:900px){.g-2,.g-3{grid-template-columns:1fr;}}

.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--ink2);
  padding:8px 14px;border-radius:10px;font-size:13px;cursor:pointer;transition:.15s;line-height:1.2;}
.btn:hover{border-color:#cfd6de;background:#fafbfc;text-decoration:none;}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.btn.primary:hover{background:#1d4ed8;}
.btn.ghost{background:transparent;border-color:rgba(255,255,255,.25);color:#dbe4f0;}
.btn.ghost:hover{background:rgba(255,255,255,.1);}
.btn.sm{padding:5px 10px;font-size:12px;border-radius:8px;}
.btn[disabled]{opacity:.55;cursor:not-allowed;}

input[type=text],input[type=password],select{
  width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;background:#fff;color:var(--ink);outline:none;transition:.15s;}
input[type=text]:focus,input[type=password]:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
label.fld{display:block;font-size:12px;color:var(--muted);margin:0 0 6px;}

/* ---------- 首页搜索 ---------- */
.hero{padding:42px 0 8px;text-align:center;}
.hero h1{margin:0 0 8px;font-size:26px;letter-spacing:.3px;}
.hero p{margin:0 0 22px;color:var(--muted);}
.search{display:flex;gap:10px;max-width:560px;margin:0 auto;}
.search input{flex:1;}
@media(max-width:560px){.search{flex-direction:column;}}

/* ---------- 概览卡片 ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;}
.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 15px;}
.stat .k{font-size:12px;color:var(--muted);margin-bottom:6px;display:flex;align-items:center;gap:6px;}
.stat .v{font-size:24px;font-weight:700;letter-spacing:.4px;font-variant-numeric:tabular-nums;}
.stat .u{font-size:12px;color:var(--muted);font-weight:400;margin-left:4px;}
.stat.accent{border-color:#d7e3ff;background:linear-gradient(180deg,#f7faff,#fff);}

/* ---------- 时段/视图切换 ---------- */
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:16px 0;}
.seg{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px;flex-wrap:wrap;}
.seg a,.seg button{border:0;background:transparent;color:var(--ink2);padding:6px 12px;border-radius:8px;font-size:13px;cursor:pointer;}
.seg a.active,.seg button.active{background:var(--accent);color:#fff;}
.seg a:hover,.seg button:hover{text-decoration:none;}

/* ---------- 排行榜 ---------- */
.rank{list-style:none;margin:0;padding:0;}
.rank li{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px dashed var(--line2);}
.rank li:last-child{border-bottom:0;}
.rk-name{flex:0 0 34%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2);}
.rk-bar{flex:1;height:8px;background:var(--line2);border-radius:6px;overflow:hidden;}
.rk-bar i{display:block;height:100%;background:linear-gradient(90deg,#60a5fa,#2563eb);border-radius:6px;}
.rk-val{flex:0 0 96px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600;}
.rk-val em{font-style:normal;color:var(--muted);font-weight:400;font-size:12px;margin-left:6px;}

.bars{display:flex;flex-direction:column;gap:9px;}
.bar-row{display:flex;align-items:center;gap:10px;font-size:13px;}
.bar-label{flex:0 0 30%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2);}
.bar-track{flex:1;height:10px;background:var(--line2);border-radius:6px;overflow:hidden;}
.bar-track i{display:block;height:100%;background:linear-gradient(90deg,#34d399,#0ea5e9);}
.bar-val{flex:0 0 62px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600;}

/* ---------- 表格 ---------- */
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
table.tbl{width:100%;border-collapse:collapse;font-size:13px;min-width:640px;}
table.tbl th,table.tbl td{padding:9px 12px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:top;}
table.tbl th{color:var(--muted);font-weight:600;font-size:12px;background:#fafbfc;position:sticky;top:0;white-space:nowrap;}
table.tbl tr:hover td{background:#fbfcfe;}
table.tbl td.num{text-align:right;font-variant-numeric:tabular-nums;}
.tag{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--accent-soft);color:#1d4ed8;font-size:12px;line-height:1.7;}
.tag.gray{background:#f1f3f6;color:#59616d;}
.tag.ok{background:#e8f7ee;color:#15803d;}
.tag.warn{background:#fff5e6;color:#b45309;}

/* ---------- 趋势图 ---------- */
.chart{padding:6px 4px 0;}
.chart-empty{padding:40px;text-align:center;color:var(--muted);}
.chart-legend{display:flex;gap:16px;justify-content:center;margin:6px 0 0;font-size:12px;color:var(--muted);}
.chart-legend i{display:inline-block;width:16px;height:3px;border-radius:2px;vertical-align:middle;margin-right:5px;}
.chart-legend .l-pv i{background:#111;}
.chart-legend .l-uv i{background:#b0bec5;}
svg .pt{cursor:pointer;}

/* ---------- 轨迹 ---------- */
.trail{display:flex;flex-direction:column;gap:14px;}
.trail-item{border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.trail-hd{display:flex;flex-wrap:wrap;gap:10px;align-items:center;background:#fafbfc;padding:10px 14px;border-bottom:1px solid var(--line2);}
.trail-hd .sid{font-weight:600;}
.trail-hd .meta{color:var(--muted);font-size:12px;}
.trail-hd .pill{background:#fff;border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:12px;color:var(--ink2);}
.steps{padding:10px 14px 14px;position:relative;}
.step{display:flex;gap:12px;padding:7px 0;position:relative;}
.step .time{flex:0 0 58px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;}
.step .ic{flex:0 0 22px;text-align:center;position:relative;}
.step .ic b{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--accent);margin-top:5px;}
.step.k-dur .ic b{background:#f59e0b;}
.step.k-click .ic b{background:#10b981;}
.step.k-scroll .ic b{background:#8b5cf6;}
.step .body{flex:1;min-width:0;}
.step .url{word-break:break-all;color:var(--ink2);}
.step .small{color:var(--muted);font-size:12px;margin-top:2px;}

/* ---------- 热力图 ---------- */
.heat-wrap{overflow:auto;}
.heat{display:grid;gap:2px;background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:2px;min-width:520px;}
.heat .cell{aspect-ratio:1/1;border-radius:2px;background:#eef1f5;}
.heat .cell[data-n]{cursor:pointer;}
.heat-scale{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin-top:10px;}
.heat-scale .grad{width:180px;height:10px;border-radius:6px;background:linear-gradient(90deg,#eef1f5,#93c5fd,#2563eb,#1e3a8a);}

/* ---------- 提示 ---------- */
.tip{position:fixed;z-index:60;pointer-events:none;background:#111827;color:#fff;padding:6px 10px;border-radius:8px;
  font-size:12px;box-shadow:0 6px 20px rgba(0,0,0,.2);opacity:0;transition:opacity .12s;max-width:280px;}
.tip.on{opacity:1;}

/* ---------- 提示条 ---------- */
.flash{padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:14px;}
.flash.ok{background:#e8f7ee;color:#15803d;border:1px solid #c6ecd4;}
.flash.err{background:#fdecec;color:#b91c1c;border:1px solid #f7cccc;}
.flash.info{background:#eaf1ff;color:#1d4ed8;border:1px solid #d3e0ff;}

/* ---------- 代码块 ---------- */
.code{position:relative;background:#0f172a;color:#d6e2f5;border-radius:10px;padding:14px 14px;overflow:auto;font-size:12.5px;line-height:1.7;}
.code pre{margin:0;white-space:pre;}
.code .cp{position:absolute;top:8px;right:8px;}
.code .cp .btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#e2e8f0;}

/* ---------- 首页功能块 ---------- */
.feat{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;}
.feat .card-b h3{margin:0 0 6px;font-size:14px;}
.feat .card-b p{margin:0;color:var(--muted);font-size:13px;}

/* ---------- 空状态 ---------- */
.empty{padding:44px 20px;text-align:center;color:var(--muted);}
.empty .big{font-size:34px;margin-bottom:8px;opacity:.6;}

/* ---------- 页脚 ---------- */
.foot{color:var(--muted);font-size:12px;text-align:center;padding:26px 0 10px;}

/* ---------- 管理后台 ---------- */
.admin-head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;}
.login-box{max-width:380px;margin:60px auto;}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;}
.kv .item{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fbfcfe;}
.kv .item .k{font-size:12px;color:var(--muted);}
.kv .item .v{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;}

/* 密码门 */
.gate{max-width:420px;margin:56px auto;}
.steps-guide{counter-reset:g;list-style:none;padding:0;margin:0;}
.steps-guide li{position:relative;padding:0 0 14px 34px;}
.steps-guide li:before{counter-increment:g;content:counter(g);position:absolute;left:0;top:0;width:22px;height:22px;border-radius:50%;
  background:var(--accent);color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;}
.token{font-size:13px;word-break:break-all;background:#f6f8fb;border:1px dashed var(--line);border-radius:10px;padding:10px 12px;}
.countdown{font-variant-numeric:tabular-nums;font-weight:600;color:var(--warn);}

@media(max-width:600px){
  .hero h1{font-size:21px;}
  .stat .v{font-size:20px;}
  .rk-name{flex-basis:40%;}
  .rk-val{flex-basis:78px;}
}
