:root {
  --bg-deep: #0b0b12;
  --bg-main: #0f1020;
  --bg-card: #151630;
  --bg-elevated: #1d1f40;
  --bg-hover: #262958;
  --border: #2a2a55;
  --border-light: #3a3a7a;
  --text-1: #eaeaf4;
  --text-2: #9898c0;
  --text-3: #6565a0;
  --primary-1: #007bff;
  --primary-1-dim: #007bff22;
  --primary-2: #2b00ff;
  --primary-2-dim: #2b00ff22;
  --primary-3: #00ffbf;
  --primary-3-dim: #00ffbf22;
  --secondary-l1: #739cff;
  --secondary-l1-dim: #739cff22;
  --red: #ff4757;
  --red-dim: #ff475722;
  --orange: #ffa502;
  --orange-dim: #ffa50222;
  --light-orange: #ffc97a;
  --light-orange-dim: #ffc97a22;
  --yellow: #ffdd57;
  --yellow-dim: #ffdd5722;
  --blue: #3b82f6;
  --green: #22c55e;
  --green-dim: #22c55e22;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Microsoft YaHei','PingFang SC',sans-serif;background:var(--bg-main);color:var(--text-1);min-height:100vh;line-height:1.6}
a{color:var(--blue);text-decoration:none}
::-webkit-scrollbar{width:6px}
::-webkit-scrollbar-track{background:var(--bg-main)}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--border-light)}

.header{background:linear-gradient(160deg,#0a0a20 0%,#140033 50%,#081830 100%);border-bottom:1px solid var(--border);padding:32px 20px 28px;position:relative;overflow:hidden}
.header::before{content:'';position:absolute;top:-60%;right:-10%;width:400px;height:400px;background:radial-gradient(circle,rgba(0,123,255,0.08) 0%,transparent 70%);pointer-events:none}
.header-inner{max-width:1100px;margin:0 auto;position:relative;z-index:1}
.brand{display:flex;align-items:center;margin-bottom:10px}
.brand-text h1{font-size:2.6rem;font-weight:800;letter-spacing:2px;background:linear-gradient(135deg,var(--primary-1),var(--primary-2),var(--primary-3));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.header-desc{font-size:0.85rem;color:var(--text-2);max-width:640px;line-height:1.7}
.header-update{font-size:0.78rem;color:var(--text-2);margin-top:8px;display:flex;align-items:center;gap:4px}
.header-update #updateDateTime{color:var(--secondary-l1);font-weight:600;font-family:'Cascadia Code','Fira Code','SF Mono',monospace}
.header-disclaimer{font-size:0.72rem;color:var(--orange);background:var(--orange-dim);display:inline-block;padding:4px 12px;border-radius:6px;margin-top:10px;border:1px solid rgba(255,165,2,0.2)}

.container{max-width:1100px;margin:0 auto;padding:24px 20px 60px}

/* Stats */
.stats{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}
.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:14px 18px;flex:1;min-width:110px;transition:border-color .2s}
.stat-card:hover{border-color:var(--border-light)}
.stat-card .stat-val{font-size:1.6rem;font-weight:800;line-height:1}
.stat-card .stat-lbl{font-size:0.72rem;color:var(--text-2);margin-top:5px;letter-spacing:0.5px}
.stat-card.total .stat-val{color:var(--text-1)}
.stat-card.r5 .stat-val{color:var(--red)}
.stat-card.r4 .stat-val{color:var(--orange)}
.stat-card.r3 .stat-val{color:var(--light-orange)}
.stat-card.r2 .stat-val{color:var(--yellow)}
.stat-card.r1 .stat-val{color:var(--green)}

/* Data banner */
.data-banner{background:var(--primary-1-dim);border:1px solid rgba(0,123,255,0.25);border-radius:10px;padding:10px 16px;margin-bottom:16px;font-size:0.8rem;color:var(--primary-1);display:none;align-items:center;gap:8px}
.data-banner.show{display:flex}

/* Controls */
.controls{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:22px}
.search-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.search-wrap{position:relative;flex:1}
.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--text-2);font-size:0.95rem;pointer-events:none}
.search-input{width:100%;padding:11px 14px 11px 40px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;color:var(--text-1);font-size:0.9rem;outline:none;transition:border-color .2s,box-shadow .2s}
.search-input:focus{border-color:var(--primary-1);box-shadow:0 0 0 3px var(--primary-1-dim)}
.search-input::placeholder{color:var(--text-3)}
.search-btn{padding:11px 22px;border-radius:10px;border:1px solid transparent;font-size:.9rem;font-weight:700;cursor:pointer;color:#fff;background:linear-gradient(135deg,var(--primary-1),var(--primary-2));white-space:nowrap;transition:transform .15s ease,box-shadow .2s ease,filter .2s ease;box-shadow:0 4px 14px rgba(0,123,255,0.25)}
.search-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(0,123,255,0.35);filter:brightness(1.08)}
.search-btn:active{transform:translateY(0);filter:brightness(0.95)}
/* Search hint */
.search-hint{margin:4px 2px 14px;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;font-size:.74rem;color:var(--text-2);line-height:1.7}
.search-hint kbd{display:inline-block;padding:1px 7px;border-radius:6px;border:1px solid var(--border-light);background:var(--bg-elevated);color:var(--secondary-l1);font-family:'Cascadia Code','Fira Code','SF Mono',monospace;font-size:.72rem;font-weight:700;margin:0 3px}
.search-hint b{color:var(--text-1);font-weight:700}
.search-hint code{padding:2px 8px;border-radius:6px;background:var(--bg-elevated);color:var(--primary-3);font-family:'Cascadia Code','Fira Code','SF Mono',monospace;font-size:.72rem;border:1px solid var(--border);margin:0 3px}
.search-hint-ex{opacity:.85}
.filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.filter-lbl{font-size:0.8rem;color:var(--text-2);margin-right:2px}
.fbtn{padding:6px 16px;border-radius:20px;border:1px solid transparent;font-size:0.8rem;cursor:pointer;transition:all .2s;white-space:nowrap;font-weight:500}
.fbtn[data-lv="0"]{background:var(--bg-elevated);color:var(--text-2);border-color:var(--border)}
.fbtn[data-lv="0"]:hover{color:var(--text-1);border-color:var(--border-light)}
.fbtn[data-lv="5"]{background:var(--red-dim);color:var(--red);border-color:rgba(255,71,87,0.4)}
.fbtn[data-lv="5"]:hover{background:rgba(255,71,87,0.22)}
.fbtn[data-lv="4"]{background:var(--orange-dim);color:var(--orange);border-color:rgba(255,165,2,0.4)}
.fbtn[data-lv="4"]:hover{background:rgba(255,165,2,0.26)}
.fbtn[data-lv="3"]{background:var(--light-orange-dim);color:var(--light-orange);border-color:rgba(255,201,122,0.4)}
.fbtn[data-lv="3"]:hover{background:rgba(255,201,122,0.26)}
.fbtn[data-lv="2"]{background:var(--yellow-dim);color:var(--yellow);border-color:rgba(255,221,87,0.4)}
.fbtn[data-lv="2"]:hover{background:rgba(255,221,87,0.24)}
.fbtn[data-lv="1"]{background:var(--green-dim);color:var(--green);border-color:rgba(34,197,94,0.4)}
.fbtn[data-lv="1"]:hover{background:rgba(34,197,94,0.22)}
.fbtn.on[data-lv="0"]{background:var(--border-light);border-color:var(--border-light);color:var(--text-1);font-weight:700}
.fbtn.on[data-lv="5"]{background:var(--red);border-color:var(--red);color:#fff;font-weight:700}
.fbtn.on[data-lv="4"]{background:var(--orange);border-color:var(--orange);color:#fff;font-weight:700}
.fbtn.on[data-lv="3"]{background:var(--light-orange);border-color:var(--light-orange);color:#0a0a20;font-weight:700}
.fbtn.on[data-lv="2"]{background:var(--yellow);border-color:var(--yellow);color:#0a0a20;font-weight:700}
.fbtn.on[data-lv="1"]{background:var(--green);border-color:var(--green);color:#0a0a20;font-weight:700}

/* Grid */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}

/* Card */
.card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:20px;cursor:pointer;transition:transform .2s,border-color .2s,box-shadow .2s;position:relative;overflow:hidden}
.card:hover{transform:translateY(-3px);border-color:var(--border-light);box-shadow:0 8px 30px rgba(0,0,0,0.35)}
.card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px}
.card.lv5::before{background:var(--red)}
.card.lv4::before{background:var(--orange)}
.card.lv3::before{background:var(--light-orange)}
.card.lv2::before{background:var(--yellow)}
.card.lv1::before{background:var(--green)}
.card-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}
.card-name{font-size:1.05rem;font-weight:700;color:var(--text-1)}
.badge{padding:3px 10px;border-radius:20px;font-size:0.7rem;font-weight:700;white-space:nowrap;letter-spacing:0.5px}
.badge-5{background:var(--red-dim);color:var(--red);border:1px solid rgba(255,71,87,0.35)}
.badge-4{background:var(--orange-dim);color:var(--orange);border:1px solid rgba(255,165,2,0.35)}
.badge-3{background:var(--light-orange-dim);color:var(--light-orange);border:1px solid rgba(255,201,122,0.35)}
.badge-2{background:var(--yellow-dim);color:var(--yellow);border:1px solid rgba(255,221,87,0.35)}
.badge-1{background:var(--green-dim);color:var(--green);border:1px solid rgba(34,197,94,0.35)}
.card-desc{font-size:0.83rem;color:var(--text-2);line-height:1.7;margin-bottom:14px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.card-meta{display:flex;gap:8px;flex-wrap:wrap}
.mtag{padding:3px 10px;border-radius:6px;font-size:0.72rem;background:var(--bg-elevated);color:var(--text-2);border:1px solid var(--border)}

/* Empty */
.empty{text-align:center;padding:80px 20px;color:var(--text-2)}
.empty-icon{font-size:3rem;margin-bottom:12px;opacity:0.5}
.empty-txt{font-size:0.95rem;margin-bottom:6px}
.empty-sub{font-size:0.8rem;color:var(--text-3)}

/* Modal — 打开放大、关闭缩小动画 */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,0.7);backdrop-filter:blur(5px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;visibility:hidden;transition:opacity .28s ease,visibility .28s ease}
.modal-bg.open{opacity:1;visibility:visible}
.modal-bg.closing{opacity:0;visibility:visible}
.modal{background:var(--bg-main);border:1px solid var(--border);border-radius:18px;max-width:640px;width:100%;max-height:85vh;overflow-y:auto;position:relative;transform:translateY(30px) scale(0.85);opacity:0;transition:transform .32s cubic-bezier(.34,1.56,.64,1),opacity .28s ease}
.modal-bg.open .modal{transform:translateY(0) scale(1);opacity:1}
.modal-bg.closing .modal{transform:translateY(24px) scale(0.82);opacity:0;transition:transform .24s cubic-bezier(.4,0,.6,1),opacity .24s ease}
.modal-close{position:sticky;top:14px;float:right;margin-right:14px;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--bg-card);color:var(--text-2);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;transition:background .2s}
.modal-close:hover{background:var(--bg-hover);color:var(--text-1)}
.mbody{padding:28px 28px 32px}
.mhead{display:flex;align-items:center;gap:14px;margin-bottom:22px}
.mavatar{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:800;color:#fff;flex-shrink:0}
.mavatar.lv5{background:linear-gradient(135deg,var(--red),#ff6b81)}
.mavatar.lv4{background:linear-gradient(135deg,var(--orange),#ffbe56);color:#1a1a1a}
.mavatar.lv3{background:linear-gradient(135deg,var(--light-orange),#ffd9a8);color:#1a1a1a}
.mavatar.lv2{background:linear-gradient(135deg,var(--yellow),#ffe88a);color:#1a1a1a}
.mavatar.lv1{background:linear-gradient(135deg,var(--green),#5ed984)}
.mname{font-size:1.3rem;font-weight:800}

.msec{margin-bottom:22px}
.msec-title{font-size:0.78rem;font-weight:700;color:var(--text-2);text-transform:uppercase;letter-spacing:1px;margin-bottom:10px;display:flex;align-items:center;gap:7px}
.msec-title .cnt{background:var(--bg-elevated);padding:1px 8px;border-radius:10px;font-size:0.7rem}
.risk-box{background:var(--bg-card);border-radius:12px;padding:16px;border-left:3px solid var(--border)}
.risk-box.lv5{border-left-color:var(--red)}
.risk-box.lv4{border-left-color:var(--orange)}
.risk-box.lv3{border-left-color:var(--light-orange)}
.risk-box.lv2{border-left-color:var(--yellow)}
.risk-box.lv1{border-left-color:var(--green)}
.risk-box p{font-size:0.88rem;line-height:1.8;color:var(--text-1)}

/* References */
.ref-list{display:flex;flex-direction:column;gap:8px}
.ref-item{display:flex;align-items:center;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:10px 14px;transition:border-color .2s,background .2s}
.ref-item:hover{border-color:var(--blue);background:var(--bg-hover)}
.ref-item a{font-size:0.85rem;color:var(--blue);word-break:break-all;flex:1;text-decoration:none}
.ref-item a:hover{text-decoration:underline}
.ref-ico{font-size:1rem;flex-shrink:0}

/* Relation item */
.rel-item{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:13px 16px;margin-bottom:8px;transition:border-color .2s}
.rel-item:hover{border-color:var(--border-light)}
.rel-top{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.rel-name{font-weight:700;font-size:0.9rem}
.plat-tag{padding:2px 8px;border-radius:6px;font-size:0.68rem;font-weight:600;letter-spacing:0.3px}
.plat-微信{background:#07c16020;color:#07c160;border:1px solid #07c16033}
.plat-QQ{background:#12b7f520;color:#12b7f5;border:1px solid #12b7f533}
.plat-telegram{background:#0088cc20;color:#0088cc;border:1px solid #0088cc33}
.plat-B站{background:#fb729920;color:#fb7299;border:1px solid #fb729933}
.plat-抖音{background:#16182340;color:#fe2c55;border:1px solid #fe2c5533}
.plat-快手{background:#ff490620;color:#ff4906;border:1px solid #ff490633}
.plat-小红书{background:#ff244220;color:#ff2442;border:1px solid #ff244233}
.plat-邮箱{background:#6366f120;color:#818cf8;border:1px solid #6366f133}
.plat-其他{background:var(--bg-elevated);color:var(--text-2);border:1px solid var(--border)}
.rel-acc{font-size:0.8rem;color:var(--text-2);font-family:'Cascadia Code','Fira Code','SF Mono',monospace;word-break:break-all;background:var(--bg-elevated);padding:4px 8px;border-radius:6px;display:inline-block;margin-top:2px}

.json-sec{margin-top:24px;border-top:1px solid var(--border);padding-top:18px}
.json-toggle-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.json-toggle{font-size:0.78rem;color:var(--text-2);cursor:pointer;display:flex;align-items:center;gap:6px;transition:color .2s;user-select:none}
.json-toggle:hover{color:var(--text-1)}
.json-copy{padding:4px 12px;border-radius:8px;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-2);font-size:0.74rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:5px}
.json-copy:hover{border-color:var(--border-light);color:var(--text-1)}
.json-copy.ok{border-color:var(--green);color:var(--green);background:var(--green-dim)}
.json-box{display:none;margin-top:10px;background:var(--bg-card);border-radius:10px;padding:14px;overflow-x:auto}
.json-box.show{display:block}
.json-box pre{font-size:0.75rem;color:var(--text-2);font-family:'Cascadia Code','Fira Code',monospace;white-space:pre-wrap;word-break:break-all;line-height:1.6}

/* Footer */
.footer{text-align:center;padding:30px 20px;color:var(--text-3);font-size:0.75rem;border-top:1px solid var(--border);margin-top:40px;line-height:1.8}

/* Back to Top Button */
.back-to-top{position:fixed;right:28px;bottom:28px;width:48px;height:48px;border-radius:50%;border:1px solid var(--border);background:var(--bg-card);color:var(--text-2);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(0,0,0,0.4);opacity:0;visibility:hidden;transform:translateY(10px);transition:all .25s ease;z-index:999}
.back-to-top:hover{background:var(--bg-hover);border-color:var(--primary-1);color:var(--primary-1);transform:translateY(-2px);box-shadow:0 6px 24px rgba(0,123,255,0.25)}
.back-to-top.show{opacity:1;visibility:visible;transform:translateY(0)}

/* Responsive */
@media(max-width:680px){
  .header{padding:24px 16px 20px}
  .brand-text h1{font-size:1.9rem}
  .header-desc{font-size:0.8rem}
  .header-update{font-size:0.74rem}
  .container{padding:16px 14px 40px}
  .stats{gap:8px}
  .stat-card{padding:10px 14px;min-width:70px}
  .stat-card .stat-val{font-size:1.3rem}
  .grid{grid-template-columns:1fr;gap:10px}
  .card{padding:16px}
  .mbody{padding:20px 18px 24px}
  .modal{border-radius:14px}
  .controls{padding:12px 14px}
  .search-row{flex-direction:column;align-items:stretch;gap:8px}
  .search-btn{padding:10px 18px}
  .search-hint{gap:4px 12px;font-size:.7rem;margin:0 0 12px}
  .back-to-top{right:16px;bottom:20px;width:42px;height:42px}
}
