/* ===== 重置与基础 ===== */
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background:#06080d;color:#e2e8f0;overflow-x:hidden;min-height:100vh;padding-bottom:96px}
body::before{content:'';position:fixed;inset:0;background-image:linear-gradient(rgba(0,255,136,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(0,255,136,.03) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;z-index:0}
/* ===== 工具类（替代 Tailwind） ===== */
.rel{position:relative}.z10{z-index:10}.mxa{margin-left:auto;margin-right:auto}.maxlg{max-width:32rem}
.px3{padding-left:.75rem;padding-right:.75rem}.py4{padding-top:1rem;padding-bottom:1rem}
.mb2{margin-bottom:.5rem}.mb3{margin-bottom:.75rem}.mb4{margin-bottom:1rem}.mt1{margin-top:.25rem}.mt2{margin-top:.5rem}.mt3{margin-top:.75rem}.mt4{margin-top:1rem}
.block{display:block}.hidden{display:none}.flex{display:flex}.grid{display:grid}.iflex{display:inline-flex}
.aic{align-items:center}.jcc{justify-content:center}.jcsb{justify-content:space-between}
.fw{flex-wrap:wrap}.f1{flex:1 1 0%}
.g1{gap:.25rem}.g1h{gap:.375rem}.g2{gap:.5rem}.g3{gap:.75rem}
.gc3{grid-template-columns:repeat(3,minmax(0,1fr))}.gc5{grid-template-columns:repeat(5,minmax(0,1fr))}
.tac{text-align:center}.tal{text-align:left}
.fz10{font-size:.625rem}.fz12{font-size:.75rem}.fz13{font-size:.8125rem}.fz14{font-size:.875rem}.fz16{font-size:1rem}.fz18{font-size:1.125rem}
.fw5{font-weight:500}.fw6{font-weight:600}.fw7{font-weight:700}
.fmono{font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace}
.c300{color:#cbd5e1}.c400{color:#94a3b8}.c500{color:#64748b}.c600{color:#475569}
.cemer{color:#34d399}.ccyan{color:#22d3ee}.cred{color:#f87171}.cpur{color:#c084fc}
.wfull{width:100%}.wsn{white-space:nowrap}
.ova{overflow-y:auto}
.rnd8{border-radius:.5rem}.rnd12{border-radius:.75rem}.rnd16{border-radius:1rem}.rndfull{border-radius:9999px}
.trans{transition:all .2s}.trans3{transition:all .3s}
.ptr{cursor:pointer}.nosel{user-select:none}
/* ===== 组件样式 ===== */
.card{background:rgba(15,23,42,.75);backdrop-filter:blur(12px);border:1px solid rgba(0,255,136,.1);border-radius:12px;overflow:hidden;transition:border-color .3s}
.card.active{border-color:rgba(0,255,136,.3)}
.card-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;cursor:pointer;user-select:none}
.card-body{overflow:hidden;height:0;padding:0 16px;transition:height .3s cubic-bezier(.4,0,.2,1),padding .3s cubic-bezier(.4,0,.2,1)}
.card-body.open{padding:0 16px 16px}
.sw{position:relative;width:40px;height:22px}
.sw input{opacity:0;width:0;height:0}
.sw .sl{position:absolute;inset:0;background:#334155;border-radius:11px;transition:.3s;cursor:pointer}
.sw .sl::before{content:'';position:absolute;width:16px;height:16px;left:3px;top:3px;background:#94a3b8;border-radius:50%;transition:.3s}
.sw input:checked+.sl{background:#059669}
.sw input:checked+.sl::before{transform:translateX(18px);background:#00ff88;box-shadow:0 0 8px #00ff88}
.dbtn{width:40px;height:40px;border-radius:8px;border:1px solid #334155;background:#1e293b;color:#94a3b8;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;justify-content:center}
.dbtn:active{transform:scale(.93)}
.dbtn.on{background:rgba(0,255,136,.15);border-color:#00ff88;color:#00ff88;box-shadow:0 0 10px rgba(0,255,136,.2)}
.rbtn{padding:8px 16px;border-radius:8px;border:1px solid #334155;background:#1e293b;color:#94a3b8;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}
.rbtn:active{transform:scale(.95)}
.rbtn.on{background:rgba(34,211,238,.15);border-color:#22d3ee;color:#22d3ee;box-shadow:0 0 10px rgba(34,211,238,.2)}
.sinp{width:70px;padding:8px;border-radius:8px;border:1px solid #334155;background:#1e293b;color:#e2e8f0;text-align:center;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:14px;outline:none}
.sinp:focus{border-color:#00ff88}
.rchip{padding:4px 8px;border-radius:6px;background:#1e293b;border:1px solid #334155;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:13px;color:#94a3b8;text-align:center}
.chev{transition:transform .3s;font-size:12px;color:#64748b}
.chev.open{transform:rotate(180deg)}
.flbl{font-size:12px;color:#64748b;margin:10px 0 6px}.flbl:first-child{margin-top:0}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.7}}
.stat-pulse{animation:pulse 2s infinite}
.bbar{position:fixed;bottom:0;left:0;right:0;background:rgba(6,8,13,.95);backdrop-filter:blur(12px);border-top:1px solid rgba(0,255,136,.15);padding:12px 16px;z-index:50}
::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#334155;border-radius:2px}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(6px);z-index:100;display:none;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}
.modal-overlay.show{display:flex;opacity:1}
.modal-box{background:rgba(15,23,42,.95);border:1px solid rgba(168,85,247,.3);border-radius:16px;padding:24px;max-width:340px;width:90%;text-align:center;transform:scale(.9);transition:transform .3s;box-shadow:0 0 40px rgba(168,85,247,.15)}
.modal-overlay.show .modal-box{transform:scale(1)}
/* ===== 按钮样式 ===== */
.btn-reset{flex:1;padding:10px 0;border-radius:8px;background:#1e293b;border:1px solid #334155;color:#94a3b8;font-size:14px;cursor:pointer;transition:all .2s}
.btn-reset:hover{border-color:#f87171;color:#f87171}
.btn-copy{flex:1;padding:10px 0;border-radius:8px;background:#1e293b;border:1px solid #334155;color:#94a3b8;font-size:14px;cursor:pointer;transition:all .2s}
.btn-copy:hover{border-color:#34d399;color:#34d399}
.btn-data{display:block;text-align:center;margin-bottom:1rem;padding:10px 12px;border-radius:8px;font-size:14px;font-weight:500;transition:all .3s;text-decoration:none;background:linear-gradient(135deg,rgba(168,85,247,.2),rgba(236,72,153,.2));border:1px solid rgba(168,85,247,.4);color:#c084fc;text-shadow:0 0 8px rgba(168,85,247,.3)}
.btn-data:hover{transform:scale(1.05)}.btn-data:active{transform:scale(.95)}
.btn-more{width:100%;padding:10px 0;margin-top:4px;border-radius:8px;border:1px solid rgba(5,150,105,.3);background:linear-gradient(90deg,rgba(5,150,105,.15),rgba(34,211,238,.15));color:#34d399;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:8px}
.btn-close{margin-top:16px;padding:8px 24px;border-radius:8px;font-size:14px;background:rgba(168,85,247,.15);border:1px solid rgba(168,85,247,.4);color:#c084fc;cursor:pointer;transition:all .2s}
.stat-card{text-align:center;padding:12px 0}
.stat-label{font-size:12px;color:#64748b}
.stat-val{font-size:18px;font-weight:700;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace}
/* ===== 响应式 ===== */
@media(min-width:640px){.gc5{grid-template-columns:repeat(8,minmax(0,1fr))}}
/* 数据建模样式 */
.btn-modeling{width:100%;padding:14px;border-radius:12px;background:linear-gradient(135deg,#0284c7,#2563eb);color:#fff;font-size:16px;font-weight:700;border:none;cursor:pointer;box-shadow:0 0 15px rgba(56,189,248,.5);animation:breatheBlue 2s infinite ease-in-out;display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:16px;transition:transform .2s}
.btn-modeling:active{transform:scale(0.98)}
@keyframes breatheBlue{0%,100%{box-shadow:0 0 10px rgba(56,189,248,.3);transform:scale(1)}50%{box-shadow:0 0 25px rgba(56,189,248,.8);transform:scale(1.02)}}
.modeling-modal{position:fixed;inset:0;background:rgba(0,0,0,.85);backdrop-filter:blur(5px);z-index:999;display:none;flex-direction:column;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}
.modeling-modal.show{display:flex;opacity:1}
.modeling-box{position:relative;width:85%;max-width:340px;background:linear-gradient(135deg,#06080d 0%,#0f172a 100%);border:1px solid rgba(56,189,248,.4);border-radius:12px;padding:28px 20px;box-shadow:0 0 40px rgba(56,189,248,.2),inset 0 0 20px rgba(56,189,248,.1);text-align:center;overflow:hidden}
.modeling-box::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#38bdf8,transparent);opacity:0.8}
.modeling-box::after{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:30px;background:rgba(56,189,248,.1);box-shadow:0 0 20px rgba(56,189,248,.3);transform:rotate(30deg);animation:scan 3s linear infinite;pointer-events:none}
@keyframes scan{0%{transform:translateY(-200px) rotate(30deg)}100%{transform:translateY(500px) rotate(30deg)}}
.modeling-title{color:#38bdf8;font-size:16px;font-weight:600;margin-bottom:20px;display:flex;align-items:center;justify-content:center;gap:8px;position:relative;z-index:2}
.modeling-spin{animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.modeling-progress-bg{width:100%;height:6px;background:#1e293b;border-radius:3px;overflow:hidden;margin-bottom:16px;position:relative;z-index:2}
.modeling-progress-bar{height:100%;width:0%;background:linear-gradient(90deg,#0ea5e9,#38bdf8);transition:width .3s}
.modeling-logs{height:60px;overflow-y:hidden;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:12px;color:#94a3b8;text-align:left;position:relative;z-index:2}
.modeling-log-item{margin-bottom:4px;animation:slideUp .3s ease-out}
@keyframes slideUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.modeling-num-chip{display:inline-block;padding:8px 12px;margin:5px;background:rgba(2,132,199,.15);border:1px solid rgba(56,189,248,.4);border-radius:6px;color:#38bdf8;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:18px;font-weight:700;box-shadow:0 0 10px rgba(56,189,248,.1);text-shadow:0 0 5px rgba(56,189,248,.5);position:relative;z-index:2}
.news-wrap{margin-bottom:16px;border:1px solid rgba(34,211,238,.25);background:rgba(15,23,42,.7);border-radius:10px;padding:8px 0;overflow:hidden}
.news-track{display:inline-block;white-space:nowrap;animation:newsMove 36s linear infinite;color:#67e8f9;font-size:12px;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;padding-left:0}
@keyframes newsMove{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}
.disclaimer{margin:16px 0 8px;padding:10px 12px;border-radius:10px;background:rgba(30,41,59,.65);border:1px solid rgba(148,163,184,.18);font-size:12px;color:#94a3b8;line-height:1.5}
.about-seo{margin:4px 0 4px;border:1px solid rgba(56,189,248,.18);border-radius:8px;background:rgba(15,23,42,.65);overflow:hidden;opacity:1}
.about-seo-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px 6px;user-select:none}
.about-seo-body{padding:0 12px 12px}
.about-seo h2{font-size:14px;color:#cbd5e1;margin:0;font-weight:600}
.about-seo h3{font-size:13px;color:#93c5fd;margin:10px 0 6px;font-weight:600}
.about-seo p{font-size:12px;color:#94a3b8;line-height:1.65;margin:0 0 8px}
.seo-links{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:10px 0 6px;font-size:12px}
.seo-links a{color:#94a3b8;text-decoration:none}
.seo-links a:hover{color:#67e8f9;text-decoration:underline}
.brand-intro{margin-bottom:14px;padding:14px 16px;border:1px solid rgba(56,189,248,.18);border-radius:10px;background:rgba(15,23,42,.68)}
.brand-intro h1{font-size:24px;line-height:1.2;color:#e2e8f0;margin:0 0 6px;font-weight:700}
.brand-intro p{font-size:13px;line-height:1.6;color:#94a3b8;margin:0}

.space-y>*+*{margin-top:12px}
