:root{
  --brand:#1B88EE;--up:#F53F3F;--down:#00B42A;--brand-bg:#F0F6FF;
  --page-bg:linear-gradient(180deg,#eef5fb 0%,#f9fafb 28%,#f9fafb 100%);
  --card-bg:rgba(255,255,255,.96);--inset-bg:#F7F8FA;
  --text-title:#1D2129;--text-main:#4E5969;--text-sub:#606060;--text-muted:#999;
  --border-color:rgba(216,216,216,.9);--border-light:#F2F3F5;--border-info:rgba(156,203,248,.75);
  --card-border:1px solid rgba(216,216,216,.85);--shadow:0 10px 28px rgba(27,136,238,.08);
  --c1:#69B1F4;--c2:#F88D72;--c3:#FBCA74;--c4:#7DD4C4;--c5:#68E0F3;--c6:#ADAFE8;
}
[data-theme="dark"]{
  --page-bg:linear-gradient(180deg,#0d0d0f 0%,#000 42%,#000 100%);
  --card-bg:rgba(28,28,30,.92);--inset-bg:#2C2C2E;
  --text-title:#FFF;--text-main:#EBEBF5;--text-sub:#8E8E93;--text-muted:#636366;
  --border-color:#38383A;--border-light:#2C2C2E;--border-info:rgba(147,197,253,.35);
  --card-border:1px solid rgba(56,56,58,.95);--shadow:0 10px 28px rgba(0,0,0,.45);
  --brand:#4DA3F5;--brand-bg:rgba(27,136,238,.18);
}
*{box-sizing:border-box;margin:0}
body{min-height:100vh;color:var(--text-main);font-family:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;line-height:1.7;background:var(--page-bg)}
.hidden{display:none!important}
.container{max-width:920px;margin:0 auto;padding:20px 24px 48px}

/* 密码门 */
.gate{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--page-bg);z-index:50}
.gate-card{background:var(--card-bg);border:var(--card-border);border-radius:20px;padding:40px 36px;box-shadow:var(--shadow);text-align:center;max-width:360px;width:90%}
.gate-logo{font-size:46px}
.gate-card h1{font-size:26px;font-weight:800;color:var(--text-title);margin:6px 0 2px}
.gate-sub{font-size:13px;color:var(--text-sub);margin-bottom:22px}
.gate-card input{width:100%;padding:12px 14px;border:1px solid var(--border-color);border-radius:10px;font-size:15px;margin-bottom:12px;background:var(--inset-bg);color:var(--text-title)}
.gate-card button{width:100%;padding:12px;border:none;border-radius:10px;background:var(--brand);color:#fff;font-size:15px;font-weight:700;cursor:pointer;transition:.18s}
.gate-card button:hover{opacity:.92}
.pw-err{color:var(--up);font-size:13px;min-height:18px;margin-top:8px}
.gate-tip{font-size:11px;color:var(--text-muted);margin-top:14px;line-height:1.6}
.gate-tip code{background:var(--inset-bg);padding:1px 5px;border-radius:4px}

/* 头部 */
.report-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:8px 0 12px;flex-wrap:wrap}
.brand-lockup{display:flex;align-items:center;gap:12px;min-width:0;flex:1}
.brand-icon{font-size:30px}
.brand-text{min-width:0}
.brand-heading{font-size:24px;font-weight:800;color:var(--text-title);margin:0 0 2px}
.brand-sub{font-size:13px;color:var(--text-sub);margin:0}
.theme-btn{background:linear-gradient(180deg,#fffaf2,#fff4e8);border:1px solid #f5c08a;padding:6px 14px;min-height:34px;border-radius:999px;cursor:pointer;font-size:13px;font-weight:600;color:#8a4b12;display:flex;align-items:center;gap:6px;box-shadow:0 4px 12px rgba(245,158,11,.18)}

/* 卡片 */
.card{background:var(--card-bg);border:var(--card-border);border-radius:20px;padding:26px 30px;margin-bottom:22px;box-shadow:var(--shadow)}
.hero-card{background:var(--card-bg);border:var(--card-border);border-radius:20px;padding:30px;margin-bottom:22px;box-shadow:var(--shadow)}
.hero-title{font-size:18px;font-weight:800;color:var(--text-title);margin-bottom:4px}
.hero-sub{font-size:13px;color:var(--text-sub);margin-bottom:14px}
.progress-wrap{margin-bottom:18px}
.progress-bar{height:14px;background:var(--inset-bg);border-radius:999px;overflow:hidden;border:1px solid var(--border-light)}
.progress-fill{height:100%;width:0;background:linear-gradient(90deg,var(--brand),#69B1F4);border-radius:999px;transition:width .8s ease}
.progress-label{font-size:13px;font-weight:700;color:var(--brand);margin-top:6px}
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.kpi{background:var(--brand-bg);border:1px solid var(--border-info);border-radius:14px;padding:14px}
.kpi .label{font-size:12px;color:var(--text-sub);margin-bottom:2px}
.kpi .val{font-size:23px;font-weight:800;color:var(--text-title)}
.kpi .val small{font-size:12px;font-weight:600}

.section-title{font-size:18px;font-weight:800;color:var(--text-title);margin-bottom:18px;display:flex;align-items:center;gap:8px}
.section-title::before{content:'';display:block;width:4px;height:18px;background:var(--brand);border-radius:4px}
.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.chart-box{background:var(--inset-bg);border-radius:14px;padding:14px}
.chart-full{background:var(--inset-bg);border-radius:14px;padding:14px;margin-bottom:8px}
.chart-title{font-size:14px;font-weight:600;color:var(--text-title);text-align:center;margin-bottom:6px}
.hint{font-size:12px;color:var(--text-sub);margin-top:10px}

table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;padding:11px 10px;font-size:13px;color:var(--text-sub);border-bottom:1px solid var(--border-color);font-weight:600}
td{padding:12px 10px;border-bottom:1px solid var(--border-light);color:var(--text-title);font-weight:500}
.badge{padding:3px 8px;border-radius:6px;font-size:12px;font-weight:600}
.badge-warn{background:rgba(255,125,0,.1);color:#ff7d00}
.badge-ok{background:rgba(0,180,42,.1);color:#00b42a}
.badge-danger{background:rgba(245,63,63,.1);color:#f53f3f}
.badge-muted{background:rgba(150,150,150,.12);color:#888}

.ai-list{list-style:none;padding:0;margin:0}
.ai-list li{position:relative;padding:6px 0 6px 22px;font-size:14px;color:var(--text-main)}
.ai-list li::before{content:'•';position:absolute;left:6px;color:var(--brand);font-weight:700}

.disclaimer{background:rgba(252,253,255,.96);border:1px dashed var(--border-info);border-radius:14px;padding:14px 18px;margin-bottom:20px}
.disclaimer p{font-size:12px;color:var(--text-muted);line-height:1.8}
.footer{text-align:center;color:var(--text-muted);font-size:12px;margin-bottom:14px}

@media(max-width:768px){
  .kpi-grid,.charts-grid{grid-template-columns:1fr}
  .brand-heading{font-size:20px}
  .container{padding:16px 14px 40px}
  .card,.hero-card{padding:20px}
}

/* 页签导航 */
.tabs{display:flex;gap:8px;margin:6px 0 22px;position:sticky;top:0;z-index:10;background:var(--page-bg);padding:8px 0;flex-wrap:wrap}
.tab{border:1px solid var(--border-color);background:var(--card-bg);color:var(--text-main);padding:9px 16px;border-radius:999px;font-size:14px;font-weight:600;cursor:pointer;transition:.15s}
.tab:hover{border-color:var(--brand)}
.tab.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.tab-panel{display:none}
.tab-panel.active{display:block;animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.doc-frame{width:100%;height:calc(100vh - 168px);border:0;border-radius:20px;background:var(--card-bg);box-shadow:var(--shadow)}

/* FIRE 逻辑格 */
.logic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}
.logic-item{background:var(--brand-bg);border:1px solid var(--border-info);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.li-label{font-size:12px;color:var(--text-sub)}
.li-val{font-size:19px;font-weight:800;color:var(--text-title)}

/* 指标表小字 */
.muted{color:var(--text-muted);font-size:12px;font-weight:500}

@media(max-width:768px){
  .logic-grid{grid-template-columns:repeat(2,1fr)}
  .doc-frame{height:calc(100vh - 150px)}
}

/* 数据页 CSV */
.data-block{margin-bottom:18px}
.data-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.csv-pre{background:var(--inset-bg);border:1px solid var(--border-light);border-radius:10px;padding:14px;font-size:12px;line-height:1.6;white-space:pre;color:var(--text-main);max-height:380px;overflow:auto}
.dl{font-size:13px;font-weight:600;color:var(--brand);text-decoration:none;border:1px solid var(--border-info);padding:4px 12px;border-radius:8px;background:var(--brand-bg)}
.dl:hover{opacity:.85}
