/* ========== 基础变量（默认：绿色小清新） ========== */
:root,[data-theme="green"]{
  --c1:#4CAF50;--c2:#8BC34A;--c3:#388E3C;--cbg:#E8F5E9;
  --soft:#C8E6C9;--pale:#F1F8E9;--mid:#A5D6A7;
  --ora:#FFD54F;--grn:#4CAF50;--red:#ef4444;
  --t1:#333;--t2:#666;--t3:#999;
  --bg:#F9FBF8;--card:#fff;--bd:#E8F5E9;
  --r:12px;--rl:16px;--rf:999px;
  --sh:0 2px 12px rgba(0,0,0,.03);
  --c1-25:rgba(76,175,80,.25);--c1-20:rgba(76,175,80,.2);--c1-15:rgba(76,175,80,.15);
  --c1-12:rgba(76,175,80,.12);--c1-10:rgba(76,175,80,.1);--c1-08:rgba(76,175,80,.08);
  --c1-06:rgba(76,175,80,.06);--c1-04:rgba(76,175,80,.04);--c1-03:rgba(76,175,80,.03);
  --c2-25:rgba(139,195,74,.25);--c2-20:rgba(139,195,74,.2);
  --c3-03:rgba(56,142,60,.03);--c3-05:rgba(56,142,60,.05);--c3-06:rgba(56,142,60,.06);
  --c1-30:rgba(76,175,80,.3);--c1-40:rgba(76,175,80,.4);
  --hero-txt:#2E7D32;--fmz-txt:#1B5E20;--fmz-soft:#C8F5D9;
}
/* 淡奶油黄 */
[data-theme="cream"]{
  --c1:#D4A24E;--c2:#E8C87A;--c3:#B8862D;--cbg:#FFF8E7;
  --soft:#FAECD4;--pale:#FFFDF5;--mid:#F0D9A8;
  --ora:#FFD54F;--grn:#66BB6A;--red:#ef4444;
  --t1:#3D3225;--t2:#7A6B5D;--t3:#A89888;
  --bg:#FDFBF6;--card:#fff;--bd:#F5ECDB;
  --sh:0 2px 12px rgba(180,140,60,.04);
  --c1-25:rgba(212,162,78,.25);--c1-20:rgba(212,162,78,.2);--c1-15:rgba(212,162,78,.15);
  --c1-12:rgba(212,162,78,.12);--c1-10:rgba(212,162,78,.1);--c1-08:rgba(212,162,78,.08);
  --c1-06:rgba(212,162,78,.06);--c1-04:rgba(212,162,78,.04);--c1-03:rgba(212,162,78,.03);
  --c2-25:rgba(232,200,122,.25);--c2-20:rgba(232,200,122,.2);
  --c3-03:rgba(184,134,45,.03);--c3-05:rgba(184,134,45,.05);--c3-06:rgba(184,134,45,.06);
  --c1-30:rgba(212,162,78,.3);--c1-40:rgba(212,162,78,.4);
  --hero-txt:#8B6914;--fmz-txt:#6B4F0A;--fmz-soft:#FFF0CC;
}
/* 浅芋紫 */
[data-theme="purple"]{
  --c1:#9575CD;--c2:#B39DDB;--c3:#7E57C2;--cbg:#EDE7F6;
  --soft:#D1C4E9;--pale:#F3EFFA;--mid:#B8A5D6;
  --ora:#FFD54F;--grn:#66BB6A;--red:#ef4444;
  --t1:#2D2440;--t2:#6B5F7A;--t3:#9E93AD;
  --bg:#FAF8FD;--card:#fff;--bd:#E8E0F0;
  --sh:0 2px 12px rgba(120,80,180,.04);
  --c1-25:rgba(149,117,205,.25);--c1-20:rgba(149,117,205,.2);--c1-15:rgba(149,117,205,.15);
  --c1-12:rgba(149,117,205,.12);--c1-10:rgba(149,117,205,.1);--c1-08:rgba(149,117,205,.08);
  --c1-06:rgba(149,117,205,.06);--c1-04:rgba(149,117,205,.04);--c1-03:rgba(149,117,205,.03);
  --c2-25:rgba(179,157,219,.25);--c2-20:rgba(179,157,219,.2);
  --c3-03:rgba(126,87,194,.03);--c3-05:rgba(126,87,194,.05);--c3-06:rgba(126,87,194,.06);
  --c1-30:rgba(149,117,205,.3);--c1-40:rgba(149,117,205,.4);
  --hero-txt:#5E35B1;--fmz-txt:#4527A0;--fmz-soft:#E8DCFA;
}
/* 嫩青色 */
[data-theme="teal"]{
  --c1:#26A69A;--c2:#4DB6AC;--c3:#00897B;--cbg:#E0F2F1;
  --soft:#B2DFDB;--pale:#F0FAFA;--mid:#80CBC4;
  --ora:#FFD54F;--grn:#26A69A;--red:#ef4444;
  --t1:#1A3030;--t2:#557070;--t3:#8AA0A0;
  --bg:#F6FBFB;--card:#fff;--bd:#D5EDEB;
  --sh:0 2px 12px rgba(0,120,110,.04);
  --c1-25:rgba(38,166,154,.25);--c1-20:rgba(38,166,154,.2);--c1-15:rgba(38,166,154,.15);
  --c1-12:rgba(38,166,154,.12);--c1-10:rgba(38,166,154,.1);--c1-08:rgba(38,166,154,.08);
  --c1-06:rgba(38,166,154,.06);--c1-04:rgba(38,166,154,.04);--c1-03:rgba(38,166,154,.03);
  --c2-25:rgba(77,182,172,.25);--c2-20:rgba(77,182,172,.2);
  --c3-03:rgba(0,137,123,.03);--c3-05:rgba(0,137,123,.05);--c3-06:rgba(0,137,123,.06);
  --c1-30:rgba(38,166,154,.3);--c1-40:rgba(38,166,154,.4);
  --hero-txt:#00695C;--fmz-txt:#004D40;--fmz-soft:#C8F0ED;
}
/* 明黄色 */
[data-theme="yellow"]{
  --c1:#F9A825;--c2:#FDD835;--c3:#F57F17;--cbg:#FFFDE7;
  --soft:#FFF9C4;--pale:#FFFEF5;--mid:#FFE082;
  --ora:#FFD54F;--grn:#66BB6A;--red:#ef4444;
  --t1:#3E2C00;--t2:#7A6530;--t3:#A69060;
  --bg:#FEFDF6;--card:#fff;--bd:#FFF3C4;
  --sh:0 2px 12px rgba(249,168,37,.04);
  --c1-25:rgba(249,168,37,.25);--c1-20:rgba(249,168,37,.2);--c1-15:rgba(249,168,37,.15);
  --c1-12:rgba(249,168,37,.12);--c1-10:rgba(249,168,37,.1);--c1-08:rgba(249,168,37,.08);
  --c1-06:rgba(249,168,37,.06);--c1-04:rgba(249,168,37,.04);--c1-03:rgba(249,168,37,.03);
  --c2-25:rgba(253,216,53,.25);--c2-20:rgba(253,216,53,.2);
  --c3-03:rgba(245,127,23,.03);--c3-05:rgba(245,127,23,.05);--c3-06:rgba(245,127,23,.06);
  --c1-30:rgba(249,168,37,.3);--c1-40:rgba(249,168,37,.4);
  --hero-txt:#E65100;--fmz-txt:#BF360C;--fmz-soft:#FFF8E1;
}
/* 珊瑚橙 */
[data-theme="coral"]{
  --c1:#FF7043;--c2:#FF8A65;--c3:#E64A19;--cbg:#FBE9E7;
  --soft:#FFCCBC;--pale:#FFF5F2;--mid:#FFAB91;
  --ora:#FFD54F;--grn:#66BB6A;--red:#ef4444;
  --t1:#3E1A0A;--t2:#7A5040;--t3:#A08070;
  --bg:#FEFAF8;--card:#fff;--bd:#FFE0D6;
  --sh:0 2px 12px rgba(255,112,67,.04);
  --c1-25:rgba(255,112,67,.25);--c1-20:rgba(255,112,67,.2);--c1-15:rgba(255,112,67,.15);
  --c1-12:rgba(255,112,67,.12);--c1-10:rgba(255,112,67,.1);--c1-08:rgba(255,112,67,.08);
  --c1-06:rgba(255,112,67,.06);--c1-04:rgba(255,112,67,.04);--c1-03:rgba(255,112,67,.03);
  --c2-25:rgba(255,138,101,.25);--c2-20:rgba(255,138,101,.2);
  --c3-03:rgba(230,74,25,.03);--c3-05:rgba(230,74,25,.05);--c3-06:rgba(230,74,25,.06);
  --c1-30:rgba(255,112,67,.3);--c1-40:rgba(255,112,67,.4);
  --hero-txt:#BF360C;--fmz-txt:#8D1B00;--fmz-soft:#FFE8DD;
}
/* 天蓝色 */
[data-theme="blue"]{
  --c1:#42A5F5;--c2:#64B5F6;--c3:#1E88E5;--cbg:#E3F2FD;
  --soft:#BBDEFB;--pale:#F0F7FF;--mid:#90CAF9;
  --ora:#FFD54F;--grn:#66BB6A;--red:#ef4444;
  --t1:#0D2744;--t2:#456080;--t3:#7A98B0;
  --bg:#F6FAFF;--card:#fff;--bd:#D6EAFB;
  --sh:0 2px 12px rgba(66,165,245,.04);
  --c1-25:rgba(66,165,245,.25);--c1-20:rgba(66,165,245,.2);--c1-15:rgba(66,165,245,.15);
  --c1-12:rgba(66,165,245,.12);--c1-10:rgba(66,165,245,.1);--c1-08:rgba(66,165,245,.08);
  --c1-06:rgba(66,165,245,.06);--c1-04:rgba(66,165,245,.04);--c1-03:rgba(66,165,245,.03);
  --c2-25:rgba(100,181,246,.25);--c2-20:rgba(100,181,246,.2);
  --c3-03:rgba(30,136,229,.03);--c3-05:rgba(30,136,229,.05);--c3-06:rgba(30,136,229,.06);
  --c1-30:rgba(66,165,245,.3);--c1-40:rgba(66,165,245,.4);
  --hero-txt:#1565C0;--fmz-txt:#0D47A1;--fmz-soft:#D0E8FF;
}
/* 燕麦色 */
[data-theme="oat"]{
  --c1:#A1887F;--c2:#BCAAA4;--c3:#8D6E63;--cbg:#EFEBE9;
  --soft:#D7CCC8;--pale:#FAF6F4;--mid:#C8B8AE;
  --ora:#FFD54F;--grn:#66BB6A;--red:#ef4444;
  --t1:#3E2723;--t2:#6D4C41;--t3:#9E8E85;
  --bg:#FBF9F7;--card:#fff;--bd:#E8DDD6;
  --sh:0 2px 12px rgba(161,136,127,.04);
  --c1-25:rgba(161,136,127,.25);--c1-20:rgba(161,136,127,.2);--c1-15:rgba(161,136,127,.15);
  --c1-12:rgba(161,136,127,.12);--c1-10:rgba(161,136,127,.1);--c1-08:rgba(161,136,127,.08);
  --c1-06:rgba(161,136,127,.06);--c1-04:rgba(161,136,127,.04);--c1-03:rgba(161,136,127,.03);
  --c2-25:rgba(188,170,164,.25);--c2-20:rgba(188,170,164,.2);
  --c3-03:rgba(141,110,99,.03);--c3-05:rgba(141,110,99,.05);--c3-06:rgba(141,110,99,.06);
  --c1-30:rgba(161,136,127,.3);--c1-40:rgba(161,136,127,.4);
  --hero-txt:#5D4037;--fmz-txt:#4E342E;--fmz-soft:#F0E6DE;
}
/* 天空蓝 */
[data-theme="sky"]{
  --c1:#29B6F6;--c2:#4FC3F7;--c3:#0288D1;--cbg:#E1F5FE;
  --soft:#B3E5FC;--pale:#F0FBFF;--mid:#81D4FA;
  --ora:#FFD54F;--grn:#66BB6A;--red:#ef4444;
  --t1:#01354D;--t2:#2E6E8A;--t3:#6AA0B5;
  --bg:#F5FBFE;--card:#fff;--bd:#CCE9F8;
  --sh:0 2px 12px rgba(41,182,246,.04);
  --c1-25:rgba(41,182,246,.25);--c1-20:rgba(41,182,246,.2);--c1-15:rgba(41,182,246,.15);
  --c1-12:rgba(41,182,246,.12);--c1-10:rgba(41,182,246,.1);--c1-08:rgba(41,182,246,.08);
  --c1-06:rgba(41,182,246,.06);--c1-04:rgba(41,182,246,.04);--c1-03:rgba(41,182,246,.03);
  --c2-25:rgba(79,195,247,.25);--c2-20:rgba(79,195,247,.2);
  --c3-03:rgba(2,136,209,.03);--c3-05:rgba(2,136,209,.05);--c3-06:rgba(2,136,209,.06);
  --c1-30:rgba(41,182,246,.3);--c1-40:rgba(41,182,246,.4);
  --hero-txt:#01579B;--fmz-txt:#004C8C;--fmz-soft:#CCE9FA;
}
:root {
  --safe-b: env(safe-area-inset-bottom, 20px);
}
*{margin:0;padding:0;box-sizing:border-box}
html{height:100%;overscroll-behavior-y:none}
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Helvetica Neue','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--t1);max-width:100%;margin:0 auto;min-height:100%;-webkit-font-smoothing:antialiased}
a{color:var(--c1);text-decoration:none}
button{cursor:pointer;border:none;outline:none;font-family:inherit;border-radius:var(--rf)}
input{font-family:inherit;outline:none}
.hide{display:none!important}

/* ========== 页面 ========== */
.page{display:none}
.page.active{display:block;padding-bottom:calc(70px + var(--safe-b))}
.page.sub{padding-bottom:calc(90px + var(--safe-b));background:var(--bg)}

/* ========== 骨架屏 Loading ========== */
.skeleton {
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: skeleton-loading 1.5s infinite;
    border-radius: 4px;
    display: inline-block;
    width: 100%;
}
.skeleton-text { height: 1em; margin-bottom: 0.5em; width: 80%; }
.skeleton-rect { height: 100px; width: 100%; border-radius: 8px; }
.skeleton-circle { width: 40px; height: 40px; border-radius: 50%; }
@keyframes skeleton-loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* ========== 空状态 Empty State ========== */
.empty-state { padding: 60px 20px; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--t3); }
.empty-icon { font-size: 48px; margin-bottom: 12px; opacity: 0.5; filter: grayscale(1); }
.empty-text { font-size: 14px; font-weight: 500; opacity: 0.8; }
.empty-sub { font-size: 12px; margin-top: 4px; opacity: 0.6; }
.empty-btn { margin-top: 16px; padding: 8px 20px; border-radius: 20px; border: 1px solid var(--bd); background: var(--card); color: var(--t2); font-size: 13px; font-weight: 500; }

/* ========== 增强点击反馈 ========== */
.clickable:active, .sr-item:active, .news-item:active, .gf-item:active, .rank-card:active, .mi:active, .sp-row:active, .faq-q:active, .strat-card:active, .fmz-card:active {
    background-color: rgba(0,0,0,0.03);
    transform: scale(0.995);
    transition: transform 0.1s;
}

/* ========== 底部 Tab ========== */
.tab-bar{position:fixed;bottom:0;left:0;right:0;width:100%;height:calc(56px + var(--safe-b));padding-bottom:var(--safe-b);background:#fff;display:flex;justify-content:space-around;align-items:center;border-top:1px solid #f0f0f0;z-index:100;box-shadow:0 -2px 10px rgba(0,0,0,.04)}

#pg-login{padding-bottom:0}
.login-bg{height:220px;background:linear-gradient(180deg,var(--soft) 0%,var(--mid) 60%,var(--cbg) 100%)}
.login-body{margin-top:-100px;padding:0 28px;display:flex;flex-direction:column;align-items:center}
.login-logo{width:76px;height:76px;border-radius:20px;background:linear-gradient(135deg,var(--c1),var(--c2));display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px var(--c1-25)}
.login-logo svg{width:42px;height:42px}
.login-title{margin-top:16px;font-size:21px;font-weight:600;color:var(--t1)}
.login-form{width:100%;margin-top:36px}
.field-label{display:block;font-size:14px;font-weight:500;margin-bottom:6px;margin-top:18px;color:var(--t1)}
.field-input{width:100%;height:48px;background:#fff;border:1.5px solid #e0e0e0;border-radius:var(--r);padding:0 14px;font-size:15px;box-sizing:border-box;color:var(--t1);transition:border-color .2s,box-shadow .2s}
.field-input::placeholder{color:#bbb}
.field-input:focus{border-color:var(--c1);box-shadow:0 0 0 3px var(--c1-10);outline:none;background:#fff}
.forgot-row{text-align:right;margin-top:8px;font-size:13px}
.forgot-row a{color:var(--t2)}
.btn-login{width:100%;height:48px;border-radius:var(--rf);background:linear-gradient(135deg,var(--c1),var(--c2));color:#fff;font-size:16px;font-weight:600;margin-top:30px;box-shadow:0 4px 16px var(--c1-25);transition:transform .15s,box-shadow .15s}
.btn-login:active{transform:scale(.98);box-shadow:0 2px 8px var(--c1-20)}
.reg-row{text-align:center;margin-top:16px;font-size:14px;color:var(--t2)}
.reg-row a{font-weight:600;color:var(--c1)}

/* ========== 注册页 ========== */
.reg-body{padding-bottom:40px}
.code-row{display:flex;gap:10px;align-items:center}
.code-row .code-inp{flex:1}
.code-btn{flex-shrink:0;height:48px;padding:0 16px;border:none;border-radius:var(--rf);background:var(--cbg);color:var(--c1);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
.code-btn:disabled{color:var(--t3);cursor:not-allowed;background:#f5f5f5}
.captcha-row{display:flex;gap:8px;align-items:center}
.captcha-row .captcha-inp{flex:1;min-width:0}
.captcha-box{position:relative;width:96px;height:40px;border-radius:8px;background:linear-gradient(135deg,#f0f4ff,#e8ecf4);cursor:pointer;overflow:hidden;flex-shrink:0;border:1px solid #d0d5dd}
.captcha-refresh{flex-shrink:0;width:36px;height:40px;border:1px solid #d0d5dd;border-radius:8px;background:#fff;color:var(--c1);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .3s}
.captcha-refresh:active{transform:rotate(180deg)}
.agree-row{display:flex;align-items:center;gap:6px;margin-top:18px;font-size:13px;color:var(--t2)}
.agree-row a{color:var(--c1);font-weight:500}
.agree-check{width:18px;height:18px;border-radius:50%;border:2px solid #d0d0d0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:all .2s}
.agree-check.on{background:var(--c1);border-color:var(--c1)}
.agree-check.on::after{content:'✓';color:#fff;font-size:11px}

/* ========== 底部 Tab ========== */
.tab-bar{position:fixed;bottom:0;left:0;right:0;width:100%;height:calc(56px + var(--safe-b));padding-bottom:var(--safe-b);background:#fff;display:flex;justify-content:space-around;align-items:center;border-top:1px solid #f0f0f0;z-index:100;box-shadow:0 -2px 10px rgba(0,0,0,.04)}
.tb{display:flex;flex-direction:column;align-items:center;gap:2px;color:#B0BEC5;font-size:11px;padding:6px 0;transition:color .2s}
.tb.on{color:var(--c1)}
.tb svg{display:block}

/* ========== 首页 ========== */
.home-top{background:linear-gradient(to bottom,var(--soft),var(--bg));padding:0 16px 8px;border-radius:0}
.banner-carousel{position:relative;border-radius:var(--r);overflow:hidden;margin-top:12px}
.banner-track{display:flex;transition:transform .5s ease}
.banner{min-width:100%;border-radius:var(--r);padding:20px;color:#fff;position:relative;overflow:hidden;box-sizing:border-box;box-shadow:0 4px 12px rgba(0,0,0,.08)}
.banner::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,255,255,.2) 0%,rgba(255,255,255,0) 70%);transform:rotate(30deg)}
.banner::after{display:none}
.banner-1{background:linear-gradient(135deg,var(--c1),var(--c2))}
.banner-2{background:linear-gradient(135deg,#29B6F6,#26C6DA)}
.banner-3{background:linear-gradient(135deg,#FF8A65,#FFB74D)}
.banner-t1{font-size:18px;font-weight:600;line-height:1.4;position:relative;text-shadow:0 1px 2px rgba(0,0,0,.2)}
.banner-t2{font-size:18px;font-weight:600;line-height:1.4;position:relative;text-shadow:0 1px 2px rgba(0,0,0,.2)}
.banner-sub{font-size:14px;margin-top:8px;opacity:.9;position:relative}
.banner-dots{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);display:flex;gap:6px}
.b-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.4);transition:all .3s}
.b-dot.active{width:18px;border-radius:3px;background:#fff}

/* 公告栏 */
.notice-bar{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--bd);border-radius:8px;padding:12px 16px;margin:12px 16px;box-shadow:var(--sh);overflow:hidden}
.nb-icon{font-size:16px;flex-shrink:0}
.nb-marquee{flex:1;overflow:hidden;position:relative;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.nb-scroll{display:inline-block;white-space:nowrap;font-size:13px;color:var(--c3);font-weight:500;animation:nbScroll 16s linear infinite;padding-left:100%}
.nb-scroll:hover{animation-play-state:paused}
@keyframes nbScroll{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}
.nb-arrow{color:var(--c1);flex-shrink:0;font-weight:bold}

/* 实时行情条 */
.ticker-bar{display:flex;gap:8px;padding:6px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x}
.ticker-bar::-webkit-scrollbar{display:none}
.ticker-bar:empty{display:none}
.tk-item{flex-shrink:0;background:#fff;border-radius:8px;padding:10px 14px;min-width:105px;box-shadow:var(--sh);border:1px solid var(--bd)}
.tk-sym{font-size:11px;font-weight:600;color:var(--t1)}
.tk-price{font-size:15px;font-weight:700;margin-top:2px}
.tk-chg{font-size:11px;margin-top:1px}
.tk-price.up,.tk-chg.up{color:var(--grn)}
.tk-price.down,.tk-chg.down{color:var(--red)}

/* 策略页实时价格 */
.sh-live{display:flex;gap:8px;margin-top:8px;margin-bottom:4px;overflow-x:auto;padding-bottom:2px;-webkit-overflow-scrolling:touch;touch-action:pan-x;position:relative;z-index:1}
.sh-live::-webkit-scrollbar{display:none}
.sh-live:empty{display:none}
.lp-item{flex-shrink:0;background:rgba(255,255,255,.12);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.15);border-radius:10px;padding:8px 12px;min-width:90px}
.lp-sym{font-size:10px;color:rgba(255,255,255,.65)}
.lp-val{font-size:14px;font-weight:700;color:#fff;margin-top:1px}
.lp-chg{font-size:10px}
.lp-chg.up{color:var(--mid)}
.lp-chg.down{color:#fca5a5}

/* 功能入口 8 宫格 */
.grid-features{display:grid;grid-template-columns:repeat(4,1fr);gap:16px 0;padding:8px 16px 0}
.gf-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0;cursor:pointer}
.gf-icon{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:24px;border:1px solid var(--bd);box-shadow:0 2px 6px rgba(0,0,0,.04);transition:transform .15s,box-shadow .15s}
.gf-icon:active{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.08)}
.gf-icon.pur{background:linear-gradient(135deg,var(--soft),#fff);color:var(--c1)}
.gf-icon.ora{background:linear-gradient(135deg,#FFF9C4,#fff);color:#FF8F00}
.gf-icon.grn{background:linear-gradient(135deg,var(--soft),#fff);color:var(--c1)}
.gf-icon.blu{background:linear-gradient(135deg,#B3E5FC,#fff);color:#29B6F6}
.gf-name{font-size:12px;color:var(--t2);font-weight:400;text-align:center}

/* 小节标题 */
.sec-head{display:flex;justify-content:space-between;align-items:center;padding:20px 16px 10px}
.sec-title{font-size:16px;font-weight:600;color:var(--t1)}
.sec-more{font-size:20px;color:var(--t3);cursor:pointer}

/* 收益排行 横向滚动 */
.rank-scroll{display:flex;gap:12px;padding:0 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x}
.rank-scroll::-webkit-scrollbar{display:none}
.rank-card{flex-shrink:0;width:120px;background:#fff;border-radius:8px;padding:14px 10px;text-align:center;box-shadow:var(--sh);position:relative;border:1px solid var(--bd)}
.rc-badge{position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:50%;font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;color:#fff}
.rc-badge.g1{background:linear-gradient(135deg,#FFD54F,#FFB300)}
.rc-badge.g2{background:linear-gradient(135deg,#B0BEC5,#78909C)}
.rc-badge.g3{background:linear-gradient(135deg,#FFAB91,#FF7043)}
.rc-name{font-size:11px;color:var(--t2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rc-val{font-size:20px;font-weight:700;color:var(--c1);margin-top:2px}
.rc-lab{font-size:10px;color:var(--t3)}

/* 日志 Banner */
.log-banner{margin:16px;background:linear-gradient(135deg,var(--c1),var(--c2));border-radius:var(--r);padding:20px;color:#fff;display:flex;align-items:center;justify-content:space-between;cursor:pointer;box-shadow:0 4px 16px var(--c1-12);position:relative;overflow:hidden}
.log-banner::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="none"><path d="M0,0 Q50,20 100,0 L100,100 Q50,80 0,100 Z" fill="rgba(255,255,255,0.08)"/></svg>');background-size:cover}
.lb-t{font-size:18px;font-weight:700;position:relative}
.lb-s{font-size:11px;opacity:.8;margin-top:2px;position:relative}
.lb-go{width:40px;height:40px;background:rgba(255,255,255,.2);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;position:relative}

/* 资讯 */
.news-list{padding:0 16px 16px}
.news-item{padding:12px 0;border-bottom:1px solid #f0f0f0;font-size:14px;line-height:1.6}
.news-item:last-child{border-bottom:none}
.news-meta{font-size:11px;color:var(--t3);margin-top:3px}

/* 币种列表 */
.coin-table{padding:0 16px 16px}
.ct-hd{display:flex;padding:10px 0;font-size:11px;color:var(--t3);border-bottom:1px solid #f0f0f0}
.ct-hd .ct-c1{flex:1}.ct-hd .ct-c2{width:100px;text-align:right}.ct-hd .ct-c3{width:80px;text-align:right}
.ct-row{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid #f5f5f5}
.ct-row .ct-c1{flex:1;display:flex;align-items:center;gap:8px}
.ct-sym{font-size:13px;font-weight:600}.ct-pair{font-size:10px;color:var(--t3)}
.ct-row .ct-c2{width:100px;text-align:right;font-size:13px;font-weight:600}
.ct-row .ct-c3{width:80px;text-align:right}
.ct-chg{display:inline-block;padding:4px 10px;border-radius:4px;font-size:11px;font-weight:600;color:#fff;min-width:60px;text-align:center}
.ct-chg.up{background:var(--grn)}.ct-chg.down{background:var(--red)}

/* ========== 策略页 ========== */
.strat-head{background:linear-gradient(135deg,var(--c3),var(--c1),var(--c2));padding:16px 16px 24px;border-radius:0 0 16px 16px;color:#fff;position:relative;overflow:visible}
.strat-head::before,.strat-head::after{clip-path:inset(0 0 0 0 round 0 0 16px 16px)}
.strat-head::before{content:'';position:absolute;top:-40%;right:-15%;width:300px;height:300px;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 60%);pointer-events:none}
.strat-head::after{content:'';position:absolute;bottom:-25%;left:-10%;width:250px;height:250px;background:radial-gradient(circle,rgba(255,255,255,.06) 0%,transparent 55%);pointer-events:none}
.strat-head .sh-tech-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:32px 32px;pointer-events:none;z-index:0;border-radius:0 0 16px 16px}
.strat-head .sh-tech-orb{position:absolute;width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.2);box-shadow:0 0 10px var(--c2-20);pointer-events:none;z-index:0;animation:orbFloat 4s ease-in-out infinite}
.strat-head .sh-tech-orb:nth-child(2){width:4px;height:4px;top:20%;right:15%;background:rgba(255,255,255,.15);animation-delay:-1.5s;animation-duration:5s}
.strat-head .sh-tech-orb:nth-child(3){width:5px;height:5px;top:65%;right:30%;background:rgba(255,255,255,.12);animation-delay:-3s;animation-duration:6s}
.strat-head .sh-tech-orb:nth-child(4){width:3px;height:3px;top:40%;left:20%;background:rgba(255,255,255,.1);animation-delay:-2s;animation-duration:4.5s}
.strat-head .sh-tech-line{position:absolute;top:50%;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06) 30%,rgba(255,255,255,.04) 70%,transparent);pointer-events:none;z-index:0}
@keyframes shGlow{0%{opacity:.5;transform:scale(1)}100%{opacity:.8;transform:scale(1.05)}}
@keyframes orbFloat{0%,100%{transform:translateY(0) scale(1);opacity:.3}50%{transform:translateY(-6px) scale(1.2);opacity:.6}}
.sh-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;position:relative;z-index:10}
.sh-title{font-size:20px;font-weight:700;letter-spacing:.3px}
.sh-ex{position:relative;background:#fff;border:none;border-radius:20px;padding:7px 16px;font-size:13px;font-weight:500;color:var(--t1);cursor:pointer;display:flex;align-items:center;gap:6px;box-shadow:0 2px 8px rgba(0,0,0,.08);user-select:none;z-index:100}
.sh-ex:active{opacity:.85}
.ex-cur-icon{display:flex;align-items:center}
.ex-cur-name{font-weight:600}
.ex-arrow{font-size:10px;color:var(--t3);transition:transform .2s}
.ex-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:#fff;border-radius:var(--r);box-shadow:0 4px 20px rgba(0,0,0,.12);padding:6px 0;min-width:140px;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-6px);transition:all .2s ease;z-index:200}
.ex-dropdown.open{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}
.ex-opt{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;transition:background .15s;font-size:14px;font-weight:500;color:var(--t1);white-space:nowrap}
.ex-opt:hover{background:#f8f8f8}
.ex-opt:active{background:#f0f0f0}
.ex-opt svg{flex-shrink:0}
.sh-row-inline{display:flex;align-items:baseline;gap:8px;padding:4px 0 6px;position:relative;z-index:1}
.sh-row-inline .sh-label{font-size:12px;color:rgba(255,255,255,.65)}
.sh-row-inline .sh-val{font-size:16px;font-weight:700}
.sh-row-inline .sh-val.big{font-size:22px;font-weight:700}
.sh-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 0;position:relative;z-index:1}
.sh-item{padding:7px 0}
.sh-item .sh-label{font-size:12px;color:rgba(255,255,255,.65)}
.sh-item .sh-val{font-size:16px;font-weight:700;margin-top:2px}
.sh-item .sh-val.big{font-size:22px;font-weight:700}

/* AI 功能卡片 */
.ai-sec-title{padding:18px 16px 10px;font-size:16px;font-weight:600;color:var(--t1)}
.ai-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 16px}
.ai-card{border-radius:var(--r);padding:18px 16px;min-height:100px;box-shadow:var(--sh);cursor:pointer;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;transition:transform .15s,box-shadow .15s}
.ai-card:active{transform:scale(.97);box-shadow:0 2px 8px rgba(0,0,0,.06)}
.ai-card-text{position:relative;z-index:2}
.ai-card-text b{font-size:16px;display:block;margin-bottom:4px;font-weight:600}
.ai-card-sub{font-size:12px;opacity:.75;display:block;line-height:1.4}
.ai-card-deco{position:absolute;right:8px;bottom:8px;font-size:42px;opacity:.15;z-index:1;filter:blur(0.5px)}
.ai-td9{background:linear-gradient(135deg,#1a237e,#283593);color:#fff}
.ai-spot{background:#FFF2CC;color:#92400e}
.ai-contract{background:linear-gradient(135deg,var(--c1),#66BB6A);color:#fff}
.ai-nebula,.ai-nova{background:linear-gradient(135deg,#ede9fe,#c4b5fd);color:#4c1d95}
.ai-fmz{background:linear-gradient(135deg,var(--fmz-soft),var(--mid));color:var(--fmz-txt)}
.ai-dragon{background:linear-gradient(135deg,#e91e63,#f06292);color:#fff;position:relative}
.ai-deco-td9{opacity:.15}
.ai-deco-spot{opacity:.12}
.ai-deco-contract{opacity:.15}
.ai-deco-nova{opacity:.12}
.ai-deco-fmz{opacity:.12}
.ai-deco-dragon{opacity:.1}
.ai-card-badge{position:absolute;top:10px;right:10px;background:rgba(0,0,0,.12);color:#616161;font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;z-index:2}
.fmz-batch-chk input[type="checkbox"]{width:20px;height:20px;accent-color:var(--c1);cursor:pointer;border-radius:4px}
.ai-protect{grid-column:1/-1;background:#fff;padding:16px;border-radius:var(--r);box-shadow:var(--sh)}
.ap-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:14px;color:var(--t2)}
.ap-row:first-child{padding-bottom:10px;border-bottom:1px solid #f0f0f0;margin-bottom:6px;color:var(--t1);font-weight:500}

/* ========== 广场页 ========== */
.plaza-head{background:var(--c1);padding:16px 16px 0;border-radius:0 0 var(--r) var(--r);box-shadow:0 2px 4px rgba(0,0,0,.08)}
.ph-ex{color:#fff;background:rgba(255,255,255,.2);display:inline-block;border-radius:var(--rf);padding:5px 12px;font-size:13px;margin-bottom:12px}
.ph-tabs{display:flex}
.pt{flex:1;text-align:center;padding:10px 0;font-size:13px;color:rgba(255,255,255,.6);position:relative;cursor:pointer}
.pt.active{color:#fff;font-weight:600}
.pt.active::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:20px;height:3px;background:#fff;border-radius:2px}
.plaza-tag{display:inline-block;padding:6px 14px;border-radius:var(--rf);font-size:13px;cursor:pointer;background:var(--card);color:var(--t1);border:1px solid #e5e5e5;transition:all .2s;flex-shrink:0}
.plaza-tag.active{background:#E6F7F5;color:var(--c1);border-color:var(--c1);font-weight:600}
.trader-list{padding:12px 16px}
.tc{background:#fff;border-radius:8px;padding:16px;margin-bottom:12px;box-shadow:var(--sh);border:1px solid #e5e5e5}
.tc-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.tc-info{display:flex;align-items:center;gap:10px}
.tc-av{width:38px;height:38px;border-radius:50%;background:var(--cbg);display:flex;align-items:center;justify-content:center;font-size:16px}
.tc-name{font-size:14px;font-weight:600;color:var(--t1)}
.tc-fol{font-size:11px;color:var(--t3)}
.tc-fol b{color:var(--c1)}
.btn-follow{background:var(--c1);color:#fff;border:none;border-radius:var(--rf);padding:7px 14px;font-size:12px;font-weight:500;transition:opacity .15s}
.btn-follow:active{opacity:.85}
.tc-stats{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;margin-top:12px;padding-top:12px;border-top:1px solid #f0f0f0}
.tc-stats .sl{font-size:12px;color:var(--t3);margin-bottom:4px}
.tc-stats .sv{font-size:14px;font-weight:600;margin-top:1px}
.tc-stats .sv.grn{color:var(--grn)}

/* ========== 我的页面 ========== */
.prof-head{background:linear-gradient(to bottom,var(--soft),var(--cbg));padding:24px 16px 20px;border-radius:0 0 20px 20px;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.prof-info{display:flex;align-items:center;gap:14px}
.prof-avatar{width:64px;height:64px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;flex-shrink:0;border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.prof-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.prof-txt{flex:1}
.prof-nickname{font-size:18px;font-weight:700;color:#000;cursor:pointer;display:flex;align-items:center;gap:6px}
.prof-email{font-size:13px;color:var(--t2);margin-top:3px}
.prof-uid{font-size:13px;color:var(--t2);margin-top:1px}
.prof-exp{font-size:12px;color:var(--t3);margin-top:1px}
.prof-edit{color:var(--t1);font-size:18px;background:none;border:none;cursor:pointer}
.flow-bar{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:var(--rl);margin:16px 16px 0;padding:16px 12px;box-shadow:var(--sh)}
.flow-step{display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;flex:1}
.fs-icon{width:44px;height:44px;border-radius:var(--r);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 2px 6px var(--c1-15)}
.fs-icon.purple{background:#66BB6A;color:#fff}
.fs-icon.orange{background:#66BB6A;color:#fff}
.fs-icon.green{background:#66BB6A;color:#fff}
.fs-icon.blue{background:#66BB6A;color:#fff}
.fs-name{font-size:13px;color:var(--t1);white-space:nowrap;font-weight:500}
.flow-arr{color:var(--c1);font-weight:700;font-size:14px}
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:16px}
.qg-item{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:13px;color:var(--t1);font-weight:500;cursor:pointer}
.qg-icon{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 2px 6px rgba(0,0,0,.05)}
.qg-icon.purple{background:var(--cbg);color:var(--c1)}
.qg-icon.orange{background:var(--cbg);color:var(--c1)}
.qg-icon.green{background:var(--cbg);color:var(--c1)}
.qg-icon.blue{background:var(--cbg);color:var(--c1)}
.menu-card{background:#fff;border-radius:var(--rl);margin:0 16px;box-shadow:var(--sh);overflow:hidden}
.mi{display:flex;align-items:center;padding:14px 16px;border-bottom:1px solid #f0f0f0;cursor:pointer;font-size:16px;font-weight:400;transition:background .15s}
.mi:last-child{border-bottom:none}
.mi:hover,.mi:active{background:#fafafa}
.mi-i{width:28px;height:28px;margin-right:12px;text-align:center;font-size:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;background:var(--cbg);flex-shrink:0;color:var(--c1)}
.mi-a{margin-left:auto;color:#BDBDBD;font-size:14px}

/* ========== 子页面 / 策略详情 ========== */
.sub-header{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#fff;border-bottom:1px solid #f0f0f0;position:sticky;top:0;z-index:10}
.back{width:48px;height:48px;min-width:48px;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:700;background:none;color:var(--t1);border:none;border-radius:14px;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;padding:0;margin:-2px 0 -2px -2px;position:relative}.back::after{content:'';position:absolute;inset:-10px;border-radius:14px}
.sub-header span{font-size:16px;font-weight:600}
.sub-body,.detail-body{padding:16px}
.btn-save{position:fixed;bottom:75px;left:50%;transform:translateX(-50%);width:calc(100% - 32px);max-width:402px;height:48px;border-radius:24px;background:linear-gradient(135deg,var(--c1),var(--c2));color:#fff;font-size:16px;font-weight:600;box-shadow:0 4px 16px var(--c1-20);z-index:50;border:none;letter-spacing:.3px}

/* 策略预设选择 */
.preset-sec{background:var(--cbg);border-radius:var(--r);padding:14px!important;margin-bottom:4px}
.preset-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.preset-tag{padding:6px 14px;border-radius:var(--rf);font-size:12px;background:#fff;color:var(--t2);cursor:pointer;border:1.5px solid transparent;transition:all .15s}
.preset-tag.on{background:var(--c1);color:#fff;border-color:var(--c1)}
.preset-tag:not(.on):hover{border-color:var(--c2)}

/* 币种选择器 */
.sym-picker{cursor:pointer}
.sym-pick-val{color:var(--t2);display:flex;align-items:center;gap:4px;cursor:pointer}
.sym-arrow{font-size:16px;color:var(--t3)}

/* 选择币种全屏页面 */
#pg-symbol{padding-bottom:80px}
.sym-search-bar{margin:10px 16px;display:flex;align-items:center;background:#f5f5f5;border-radius:var(--rf);padding:0 14px;height:42px}
.sym-search-icon{font-size:16px;margin-right:8px;color:var(--t3)}
.sym-search-inp{flex:1;border:none;background:none;font-size:14px;outline:none}
.sym-table-hd{display:flex;padding:8px 16px;font-size:12px;color:var(--t3);border-bottom:1px solid #f0f0f0}
.sth-c1{flex:1}.sth-c2{width:100px;text-align:center}.sth-c3{width:70px;text-align:center}
.sym-table-body{overflow-y:auto;max-height:calc(100vh - 230px)}
.sym-row{display:flex;align-items:center;padding:14px 16px;border-bottom:1px solid #f5f5f5;cursor:pointer;transition:background .12s}
.sym-row:active{background:var(--cbg)}
.sym-row.selected{background:var(--cbg)}
.sym-check{width:20px;height:20px;border-radius:4px;border:2px solid #d1d5db;margin-right:12px;flex-shrink:0;position:relative;transition:all .15s}
.sym-row.selected .sym-check{background:var(--c1);border-color:var(--c1)}
.sym-row.selected .sym-check::after{content:'✓';position:absolute;top:-1px;left:2px;color:#fff;font-size:14px;font-weight:700}
.sym-row .sr-name{flex:1;font-size:14px;font-weight:500}
.sym-row .sr-amount{width:100px;text-align:center;font-size:14px;color:var(--t1)}
.sym-row .sr-indicator{width:70px;text-align:center;font-size:13px;color:var(--t2)}
.sym-confirm-btn{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);width:calc(100% - 32px);max-width:402px;height:48px;border-radius:var(--rf);background:var(--c1);color:#fff;font-size:16px;font-weight:600;box-shadow:0 4px 16px var(--c1-20);z-index:50;border:none;cursor:pointer}

/* 设置行 */
.s-sec{padding:12px 0;border-bottom:1px solid #f0f0f0}
.s-sec-t{font-size:14px;font-weight:600;color:var(--c3);margin-bottom:8px;padding:4px 0}
.s-row{display:flex;align-items:flex-start;justify-content:space-between;padding:8px 0;min-height:38px;font-size:13px;gap:8px}
.s-row .label{color:var(--t1);flex-shrink:0;padding-top:4px;min-width:90px}
.s-row .val{display:flex;align-items:center;gap:6px;color:var(--t2);flex-wrap:wrap;justify-content:flex-end}

/* 开关 */
.sw{width:44px;height:24px;border-radius:12px;background:#ccc;position:relative;cursor:pointer;transition:background .2s;flex-shrink:0}
.sw::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.sw.on{background:var(--c1)}
.sw.on::after{left:22px}

/* 间隔按钮 */
.itv{display:flex;flex-wrap:wrap;gap:4px}
.itv span{padding:4px 8px;border-radius:6px;font-size:11px;background:#f3f4f6;color:var(--t2);cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}
.itv span:hover{background:#e5e7eb}
.itv span.on{background:var(--c1);color:#fff}
.itv-scroll-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x;max-width:60vw}
.itv-scroll-wrap .itv{flex-wrap:nowrap}

/* 单选 */
.rg{display:flex;gap:10px}
.ri{display:flex;align-items:center;gap:3px;cursor:pointer;font-size:12px;color:var(--t2)}
.rd{width:16px;height:16px;border-radius:50%;border:2px solid #d0d0d0;position:relative}
.ri.on .rd{border-color:var(--c1)}
.ri.on .rd::after{content:'';position:absolute;top:3px;left:3px;width:6px;height:6px;border-radius:50%;background:var(--c1)}

/* 数字输入 */
.ninp{width:70px;height:28px;border:1px solid #e0e0e0;border-radius:6px;text-align:center;font-size:13px}
.ninp:focus{border-color:var(--c1)}

/* ========== 子页面内容 ========== */
.sp-card{background:#fff;border-radius:var(--rl);padding:18px;box-shadow:var(--sh);margin-bottom:10px}
.sp-big{font-size:28px;font-weight:700;color:var(--c1)}
.sp-unit{font-size:13px;font-weight:400;color:var(--t2)}
.sp-title{font-size:13px;color:var(--t2);margin-bottom:6px}
.sp-empty{text-align:center;padding:40px 0;color:var(--t3);font-size:13px}
.sp-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid #f0f0f0;font-size:13px}
.sp-row:last-child{border-bottom:none}
.sp-btn{width:100%;height:44px;border-radius:var(--rf);background:var(--c1);color:#fff;font-size:14px;font-weight:600;border:none;margin-top:10px;cursor:pointer;transition:opacity .15s}
.sp-btn:active{opacity:.85}
.sp-btn.danger{background:#fff;color:var(--red);border:1px solid var(--red)}
.sp-li{padding:12px;background:#fff;border-radius:var(--r);margin-bottom:8px;box-shadow:var(--sh)}
.sp-steps .step{display:flex;gap:10px;padding:8px 0}
.step-n{width:28px;height:28px;border-radius:50%;background:var(--c1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}
.step-t{font-size:13px;padding-top:4px;line-height:1.5}
.lang-item{display:flex;align-items:center;gap:10px;padding:12px;background:#fff;border-radius:var(--r);margin-bottom:6px;box-shadow:var(--sh);cursor:pointer;font-size:14px}
.lang-item.on{border:2px solid var(--c1)}
.lang-item .ck{margin-left:auto;color:var(--c1);font-weight:700}
.theme-item{display:flex;align-items:center;gap:12px;padding:14px 16px;background:#fff;border-radius:var(--r);margin-bottom:8px;box-shadow:var(--sh);cursor:pointer;font-size:14px;border:2px solid transparent;transition:border-color .2s,box-shadow .2s}
.theme-item.on{border-color:var(--c1);box-shadow:0 2px 12px var(--c1-15)}
.theme-dot{width:32px;height:32px;border-radius:50%;flex-shrink:0;box-shadow:inset 0 -3px 6px rgba(0,0,0,.1)}
.theme-info{flex:1;display:flex;flex-direction:column;gap:2px}
.theme-name{font-weight:600;color:var(--t1);font-size:15px}
.theme-desc{font-size:12px;color:var(--t3)}
.theme-item .ck{margin-left:auto;color:var(--c1);font-weight:700;font-size:18px}
.faq-item{background:#fff;border-radius:var(--r);margin-bottom:6px;box-shadow:var(--sh);overflow:hidden}
.faq-q{padding:12px;font-size:13px;font-weight:500;cursor:pointer;display:flex;justify-content:space-between}
.faq-a{max-height:0;overflow:hidden;padding:0 12px;font-size:12px;color:var(--t2);line-height:1.6;transition:max-height .3s,padding .3s}
.faq-item.open .faq-a{max-height:200px;padding:0 12px 12px}

/* ========== 弹窗 ========== */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.2);display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px;backdrop-filter:blur(2px)}
.modal-box{background:#fff;border-radius:var(--rl);padding:24px;width:100%;max-width:320px}
.modal-t{font-size:16px;font-weight:600;text-align:center;margin-bottom:14px}
.modal-desc{font-size:13px;color:var(--t2);text-align:center;margin-bottom:16px}
.modal-inp{width:100%;height:42px;border:1.5px solid #e0e0e0;border-radius:var(--r);padding:0 12px;font-size:14px;margin-bottom:14px}
.modal-inp:focus{border-color:var(--c1)}
.modal-btns{display:flex;gap:10px}
.mbtn{flex:1;height:40px;border-radius:var(--rf);font-size:14px}
.mbtn.cancel{background:#f5f5f5;color:var(--t2);border:none}
.mbtn.ok{background:var(--c1);color:#fff;border:none;font-weight:600}

/* ========== Toast ========== */
.toast{position:fixed;top:30px;left:50%;transform:translateX(-50%) translateY(-10px);background:#fff;color:var(--c1);padding:10px 20px;border-radius:24px;font-size:14px;font-weight:600;z-index:99999;opacity:0;transition:opacity .3s,transform .3s;pointer-events:none;max-width:85%;text-align:center;box-shadow:0 8px 24px rgba(0,0,0,0.12);border:1px solid rgba(0,0,0,0.05);display:flex;align-items:center;gap:8px}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.success { background: #f0fdf4; color: #16a34a; border-color: #bbf7d0; }
.toast.error { background: #fef2f2; color: #dc2626; border-color: #fecaca; }
.toast.warn { background: #fffbeb; color: #d97706; border-color: #fde68a; }
.toast.info { background: #fff; color: var(--t1); border-color: #e5e7eb; }
.toast-icon { font-size: 16px; }


/* ========== API管理页面 ========== */
.api-manage-body{padding:16px;padding-bottom:80px}
.api-card{background:var(--card);border-radius:var(--rl);padding:18px;margin-bottom:14px;box-shadow:var(--sh);border:1px solid #e5e5e5}
.api-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.api-card-left{display:flex;align-items:center;gap:10px}
.api-card-logo{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:#fff;flex-shrink:0}
.api-card-logo-icon{width:42px;height:42px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.api-card-logo.okx{background:#000}
.api-card-logo.binance{background:#f3ba2f}
.api-card-logo.huobi{background:#1c6cfc}
.api-card-logo.gate{background:#2ea87e}
.api-card-name{font-size:16px;font-weight:600;color:var(--t1)}
.api-card-tags{display:flex;align-items:center;gap:6px}
.api-tag{font-size:11px;padding:2px 8px;border-radius:var(--rf);border:1px solid #e5e5e5}
.api-tag.bound{background:var(--grn);color:#fff;border-color:var(--grn)}
.api-tag.unbound{background:#f5f5f5;color:var(--t3);border-color:#e5e5e5}
.api-card-right{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--t2)}
.api-card-right .user-type{display:flex;align-items:center;gap:2px}
.api-card-right .user-type .icon-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:10px}
.api-card-right .user-type .icon-badge.pro{background:var(--c1);color:#fff}
.api-card-right .user-type .icon-badge.normal{background:var(--c1);color:#fff}
.api-reg-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;font-size:12px;color:var(--t2)}
.api-reg-row .reg-link{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:8px}
.api-reg-row .copy-btn{color:var(--c1);font-weight:600;cursor:pointer;white-space:nowrap;font-size:12px}
.api-bind-btn{width:100%;height:44px;border-radius:var(--rf);background:var(--c1);color:#fff;font-size:16px;font-weight:500;border:none;cursor:pointer;transition:opacity .15s}
.api-bind-btn:active{opacity:.85}
.api-manage-footer{text-align:center;padding:20px 16px 30px;font-size:13px;color:var(--t2)}
.api-manage-footer a{color:var(--c1);font-weight:600;text-decoration:none}

/* ========== 绑定API页面 ========== */
.api-bind-body{padding:20px 16px}
.bind-field{margin-bottom:24px}
.bind-field-label{font-size:14px;font-weight:600;color:var(--t1);margin-bottom:10px}
.bind-field-input{width:100%;height:50px;background:#f8f8f8;border:1.5px solid #e0e0e0;border-radius:var(--r);padding:0 16px;font-size:15px;color:var(--t1);box-sizing:border-box;transition:border-color .2s,box-shadow .2s}
.bind-field-input::placeholder{color:var(--t3)}
.bind-field-input:focus{border-color:var(--c1);box-shadow:0 0 0 3px var(--c1-10);outline:none}
.bind-submit-btn{width:100%;height:50px;border-radius:var(--rf);background:var(--c1);color:#fff;font-size:16px;font-weight:600;border:none;cursor:pointer;box-shadow:0 4px 16px var(--c1-20);margin-top:16px;margin-bottom:24px}
.bind-submit-btn:active{opacity:.85}
.bind-promo{font-size:13px;color:var(--t1);line-height:1.6;margin-bottom:16px}
.bind-promo b{color:var(--red)}
.bind-link-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.bind-link-row a{color:var(--c1);font-size:13px;word-break:break-all;text-decoration:underline;flex:1;margin-right:10px}
.bind-link-row .copy-btn{color:var(--c1);font-weight:600;cursor:pointer;white-space:nowrap;font-size:13px}

/* ========== 策略列表页 ========== */
.sl-header{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--c1);position:sticky;top:0;z-index:20;box-shadow:0 2px 4px rgba(0,0,0,.08)}
.sl-header .back{background:none;border:none;color:#fff;font-size:28px;font-weight:700;cursor:pointer;padding:0 10px;min-width:48px;min-height:48px;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;touch-action:manipulation;position:relative}.sl-header .back::after{content:'';position:absolute;inset:-12px;border-radius:14px}
.sl-search{flex:1;display:flex;align-items:center;background:rgba(255,255,255,.2);border-radius:var(--rf);padding:0 12px;height:36px;color:rgba(255,255,255,.7);font-size:13px}
.sl-search input{background:none;border:none;color:#fff;flex:1;margin-left:6px;font-size:13px;outline:none}
.sl-search input::placeholder{color:rgba(255,255,255,.6)}
.sl-ex-sel.sh-ex{background:rgba(255,255,255,.2);color:#fff;box-shadow:none}
.sl-ex-sel.sh-ex .ex-cur-name{color:#fff}
.sl-ex-sel.sh-ex .ex-arrow{color:rgba(255,255,255,.7)}
.sl-ex-sel .ex-dropdown{background:#fff}
.sl-ex-sel .ex-opt{color:var(--t1)}

.sl-summary{display:flex;gap:8px;padding:12px 16px;background:var(--cbg)}
.sl-sum-item{flex:1;background:var(--card);border-radius:var(--rf);padding:10px 8px;text-align:center;font-size:13px;color:var(--t1);border:1.5px solid var(--c1);cursor:pointer;transition:all .15s;user-select:none;font-weight:500}
.sl-sum-item b{font-size:15px;font-weight:700;margin-left:2px}
.sl-sum-item.active{background:var(--c1);color:#fff;border-color:var(--c1)}
.sl-sum-item.active b{color:#fff}

.sl-tabs{display:flex;border-bottom:1px solid #f0f0f0;padding:0 16px;background:var(--card);position:sticky;top:60px;z-index:19}
.slt{flex:1;text-align:center;padding:12px 0;font-size:13px;color:var(--t2);cursor:pointer;position:relative;transition:color .2s}
.slt.active{color:var(--c1);font-weight:600}
.slt.active::after{content:'';position:absolute;bottom:0;left:20%;right:20%;height:2px;background:var(--c1);border-radius:1px}

.sl-list{padding:10px 16px;padding-bottom:80px;min-height:200px}

/* 策略卡片 */
.strat-card{background:var(--card);border-radius:8px;padding:12px 14px;margin-bottom:8px;box-shadow:var(--sh);border:1px solid #e5e5e5;position:relative}
.sc-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.sc-time{font-size:11px;color:var(--t3)}
.sc-status{font-size:11px;padding:3px 10px;border-radius:4px}
.sc-status.running{background:var(--grn);color:#fff}
.sc-status.stopped{background:#f5f5f5;color:var(--t3)}
.sc-symbol{font-size:16px;font-weight:500;color:var(--t1);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.sc-tags{display:flex;gap:4px;flex-wrap:wrap}
.sc-tag{font-size:10px;padding:2px 6px;border-radius:4px;font-weight:400}
.sc-tag.loop{background:#ede9fe;color:#7c3aed}
.sc-tag.lever{background:#fee2e2;color:#ef4444}
.sc-tag.dir-long{background:#d1fae5;color:#059669}
.sc-tag.dir-short{background:#fee2e2;color:#ef4444}
.sc-tag.trend{background:#d1fae5;color:#059669}
.sc-body{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:10px}
.sc-field{font-size:12px}
.sc-field .fl{color:var(--t3);margin-bottom:2px}
.sc-field .fv{font-weight:400;color:var(--t1)}
.sc-field .fv.neg{color:var(--red)}
.sc-field .fv.pos{color:var(--grn)}
.sc-actions{display:flex;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #f0f0f0}
.sc-btn{flex:1;height:36px;border-radius:var(--rf);font-size:13px;font-weight:500;border:none;cursor:pointer;transition:all .15s}
.sc-btn-start{background:var(--c1);color:#fff;box-shadow:0 2px 6px var(--c1-15)}
.sc-btn-start:active{opacity:.85;transform:scale(.98)}
.sc-btn-stop{background:linear-gradient(135deg,#fca5a5,#ef4444);color:#fff;box-shadow:0 2px 6px rgba(239,68,68,.15)}
.sc-btn-stop:active{opacity:.85;transform:scale(.98)}
.sc-btn-detail{background:var(--cbg);color:var(--c1);border:1px solid var(--bd)}
.sc-btn-detail:active{opacity:.85}
.sc-btn-del{background:#fff;color:var(--red);border:1px solid #fee2e2;flex:0 0 auto;width:56px}
.sc-btn-del:active{opacity:.85}

/* 底部操作栏 */
.sl-bottom-bar{position:fixed;bottom:0;left:0;right:0;display:flex;gap:10px;padding:12px 16px;background:var(--card);border-top:1px solid #f0f0f0;z-index:30}
.sl-btn-batch{flex:0 0 auto;height:44px;padding:0 20px;border-radius:var(--rf);background:var(--card);color:var(--t1);font-size:14px;border:1px solid #e0e0e0;cursor:pointer}
.sl-btn-create{flex:1;height:44px;border-radius:var(--rf);background:var(--c1);color:#fff;font-size:15px;font-weight:500;border:none;cursor:pointer}
.sl-btn-create:active{opacity:.85}

.sl-empty{text-align:center;padding:60px 20px;color:var(--t3);font-size:14px}
.sl-spinner{width:28px;height:28px;border:3px solid #e0e0e0;border-top-color:var(--c1);border-radius:50%;animation:sl-spin .7s linear infinite;margin:0 auto 10px}
@keyframes sl-spin{to{transform:rotate(360deg)}}

/* ========== 策略详情页 ========== */
.sd-body{padding:0 0 100px;background:var(--bg)}

/* 持仓卡片 */
.sd-pos-card{margin:16px;border-radius:var(--r);background:linear-gradient(135deg,var(--c1),var(--c2));padding:18px;color:#fff;box-shadow:0 4px 16px var(--c1-15)}
.sd-pos-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.sd-pos-symbol{display:flex;align-items:center;gap:8px}
.sd-coin-icon{font-size:20px;width:32px;height:32px;background:rgba(255,255,255,.2);border-radius:8px;display:flex;align-items:center;justify-content:center}
.sd-coin-name{font-size:16px;font-weight:700}
.sd-coin-tag{font-size:11px;background:rgba(255,255,255,.25);padding:3px 10px;border-radius:4px}
.sd-pos-actions{display:flex;gap:8px}
.sd-icon-btn{width:32px;height:32px;border-radius:8px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:15px}
.sd-icon-btn:active{background:rgba(255,255,255,.3)}

.sd-pos-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px 16px}
.sd-pg-item{}
.sd-pg-label{font-size:11px;color:rgba(255,255,255,.7);margin-bottom:3px}
.sd-pg-val{font-size:17px;font-weight:700}
.sd-pg-val.neg{color:#fca5a5}
.sd-pg-val.pos{color:#a7f3d0}

/* 策略相关 section */
.sd-section{margin:16px;background:var(--card);border-radius:var(--r);padding:16px;box-shadow:var(--sh);border:1px solid #e5e5e5}
.sd-sec-head{display:flex;align-items:center;gap:6px;margin-bottom:14px}
.sd-sec-icon{font-size:16px}
.sd-sec-title{font-size:15px;font-weight:600;color:var(--t1)}
.sd-sec-dir{margin-left:auto;font-size:13px;font-weight:600;color:var(--c1);background:var(--cbg);padding:3px 12px;border-radius:4px}

.sd-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}
.sd-info-item{display:flex;justify-content:space-between;align-items:center}
.sd-info-label{font-size:13px;color:var(--t2)}
.sd-info-val{font-size:13px;font-weight:600;color:var(--t1)}

/* 策略操作 */
.sd-op-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:12px;text-align:center}
.sd-op-item{cursor:pointer;transition:transform .15s}
.sd-op-item:active{transform:scale(.92)}
.sd-op-icon{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 6px;font-size:20px}
.sd-op-icon.loop{background:#ede9fe;color:#7c3aed}
.sd-op-icon.sell{background:#dbeafe;color:#2563eb}
.sd-op-icon.cover{background:#d1fae5;color:#059669}
.sd-op-icon.toggle{background:#fef3c7;color:#d97706}
.sd-op-name{font-size:12px;color:var(--t2)}

/* 底部操作栏 */
.sd-bottom-bar{position:fixed;bottom:0;left:0;right:0;display:flex;gap:10px;padding:12px 16px;background:var(--card);border-top:1px solid #f0f0f0;z-index:30}
.sd-btn-settings{flex:0 0 120px;height:46px;border-radius:var(--rf);background:var(--card);color:var(--t1);font-size:14px;font-weight:600;border:1px solid #e0e0e0;cursor:pointer}
.sd-btn-settings:active{background:#f8f8f8}
.sd-btn-toggle{flex:1;height:46px;border-radius:var(--rf);font-size:15px;font-weight:600;border:none;cursor:pointer;color:#fff;transition:all .2s}
.sd-btn-toggle.running{background:var(--c1);box-shadow:0 4px 14px var(--c1-20)}
.sd-btn-toggle.stopped{background:linear-gradient(135deg,#fca5a5,#ef4444);box-shadow:0 4px 14px rgba(239,68,68,.15)}

/* ========== 批量操作页 ========== */
.bo-body{padding:0 0 80px;background:var(--bg)}

/* 功能按钮区 */
.bo-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 0;padding:18px 16px;margin:0 16px 0;border-radius:var(--r);background:linear-gradient(135deg,var(--c1),var(--c2));color:#fff}
.bo-act-item{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;transition:transform .15s}
.bo-act-item:active{transform:scale(.9)}
.bo-act-icon{width:44px;height:44px;border-radius:var(--r);background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:20px}
.bo-act-name{font-size:11px;color:rgba(255,255,255,.92);white-space:nowrap}

/* 统计栏 */
.bo-summary{display:flex;justify-content:space-around;padding:14px;margin:12px 16px 0;background:var(--card);border-radius:var(--r);box-shadow:var(--sh);border:1px solid #e5e5e5}
.bo-sum-item{font-size:13px;color:var(--t2);text-align:center}
.bo-sum-item b{display:block;font-size:20px;font-weight:700;color:var(--t1);margin-top:2px}

/* Tab 栏 */
.bo-tabs{display:flex;padding:12px 16px 0;gap:0}
.bot{flex:1;text-align:center;font-size:14px;color:var(--t3);padding-bottom:10px;border-bottom:2px solid transparent;cursor:pointer;transition:all .2s}
.bot.active{color:var(--c1);font-weight:600;border-bottom-color:var(--c1)}

/* 策略列表 */
.bo-list{padding:10px 16px;min-height:200px}

/* 批量卡片 */
.bo-card{display:flex;align-items:flex-start;gap:12px;background:var(--card);border-radius:8px;padding:14px;margin-bottom:10px;box-shadow:var(--sh);border:1px solid #e5e5e5}
.bo-card .bo-chk{flex-shrink:0;margin-top:4px}
.bo-card-content{flex:1;min-width:0}
.bo-card-top{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.bo-card-symbol{font-size:15px;font-weight:700;color:var(--t1)}
.bo-card-tags{display:flex;gap:4px;flex-wrap:wrap}
.bo-card-tag{font-size:10px;padding:2px 6px;border-radius:4px;font-weight:600}
.bo-card-tag.loop{background:#ede9fe;color:#7c3aed}
.bo-card-tag.dir-long{background:#d1fae5;color:#059669}
.bo-card-tag.dir-short{background:#fee2e2;color:#ef4444}
.bo-card-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.bo-card-field{font-size:12px}
.bo-card-field .bfl{color:var(--t3);margin-bottom:2px}
.bo-card-field .bfv{font-weight:600;color:var(--t1)}
.bo-card-field .bfv.neg{color:var(--red)}
.bo-card-field .bfv.pos{color:var(--grn)}

/* 勾选框 */
.bo-chk{width:20px;height:20px;border-radius:50%;border:2px solid #d0d0d0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;flex-shrink:0;background:#fff}
.bo-chk.on{border-color:var(--c1);background:var(--c1)}
.bo-chk.on::after{content:'✓';color:#fff;font-size:12px;font-weight:700}

/* 底部操作栏 */
.bo-bottom-bar{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;gap:16px;padding:12px 16px;background:var(--card);border-top:1px solid #f0f0f0;z-index:30}
.bo-check-item{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--t1);cursor:pointer;white-space:nowrap}
.bo-radio{width:16px;height:16px;border-radius:50%;border:2px solid #d0d0d0;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:#fff;transition:all .15s}
.bo-radio.on{border-color:var(--c1);background:var(--c1)}
.bo-radio.on::after{content:'';width:6px;height:6px;border-radius:50%;background:#fff}
.bo-tip{margin-left:auto;font-size:11px;color:var(--c1);white-space:nowrap}

/* ========== 策略记录页 ========== */
.sr-body{padding:16px 16px 80px;min-height:100vh;background:var(--bg)}
.sr-stats-card{background:linear-gradient(135deg,var(--c1),var(--c2));border-radius:var(--r);padding:16px;margin-bottom:14px;color:#fff}
.sr-stats-title{font-size:14px;font-weight:600;margin-bottom:10px;opacity:.9}
.sr-stats-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.sr-stat-label{font-size:11px;opacity:.75;margin-bottom:2px}
.sr-stat-val{font-size:18px;font-weight:700}
.sr-tabs{display:flex;gap:0;border-bottom:1px solid #f0f0f0;margin-bottom:10px}
.sr-tab{flex:1;text-align:center;padding:10px 0;font-size:14px;color:var(--t3);cursor:pointer;border-bottom:2px solid transparent;transition:all .2s}
.sr-tab.active{color:var(--c1);border-bottom-color:var(--c1);font-weight:600}
.sr-list{display:flex;flex-direction:column;gap:8px}
.sr-loading,.sr-empty{text-align:center;padding:40px 0;color:var(--t3);font-size:13px}
.sr-item{display:flex;align-items:center;gap:8px;padding:12px;background:var(--card);border-radius:8px;border:1px solid #e5e5e5}
.sr-item-left{display:flex;flex-direction:column;gap:3px;min-width:50px}
.sr-action{font-size:13px;font-weight:700}
.sr-symbol{font-size:11px;color:var(--t2)}
.sr-side{font-size:10px;padding:1px 4px;border-radius:3px;display:inline-block;width:fit-content}
.sr-item-mid{flex:1;font-size:12px;color:var(--t2);line-height:1.6}
.sr-item-right{text-align:right;font-size:12px;min-width:70px}
.sr-time{font-size:10px;color:var(--t3);margin-top:2px}
.sr-reason{font-size:10px;color:var(--t3);margin-top:1px;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-bottom{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--card);border-top:1px solid #f0f0f0;z-index:30;font-size:13px;color:var(--t2)}
.sr-pnl{font-weight:700;font-size:15px}

/* ========== 止盈子页面 ========== */
.cc-header{display:flex;align-items:center;padding:14px 16px 8px;border-bottom:1px solid #f0f0f0}
.cc-h-label{flex:0 0 60px;font-size:13px;color:var(--t2);font-weight:500}
.cc-h-col{flex:1;text-align:center;font-size:13px;color:var(--t2);font-weight:500}
.cc-list{padding:0 16px}
.cc-row{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}
.cc-row:last-child{border-bottom:none}
.cc-label{flex:0 0 60px;font-size:14px;color:var(--t1);font-weight:500}
.cc-inp{flex:1;display:flex;align-items:center;justify-content:center;gap:2px;font-size:13px;color:var(--t1)}
.cc-inp .ninp{width:52px;text-align:center;font-size:14px}
.tp-sub-list{padding:0 16px}
.tp-sub-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid #f0f0f0}
.tp-sub-row:last-child{border-bottom:none}
.tp-sub-label{font-size:14px;color:var(--t1);font-weight:500}
.tp-sub-inp{display:flex;align-items:center;gap:4px;font-size:14px;color:var(--t1)}
.tp-sub-inp .ninp{width:70px;text-align:right;font-weight:600;font-size:15px}
.tp-param-row{flex-wrap:nowrap;gap:6px}
.tp-param-row .tp-sub-label{white-space:nowrap;font-size:13px}
.tp-param-row .tp-sub-inp .ninp{width:50px}
.tp-mode-row{gap:8px}
.tp-mode-sel{display:flex;align-items:center;gap:4px;padding:6px 12px;background:var(--c1);color:#fff;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.tp-mode-arrow{font-size:10px}
.tp-mode-dropdown{position:fixed;background:#fff;border-radius:var(--r);box-shadow:0 4px 24px rgba(0,0,0,.12);z-index:999;padding:8px 0;min-width:140px}
.tp-mode-dropdown.hide{display:none}
.tp-mode-opt{padding:12px 20px;font-size:14px;color:var(--t1);text-align:center;cursor:pointer;transition:background .15s}
.tp-mode-opt:hover,.tp-mode-opt:active{background:#f8f8f8}
.tp-mode-opt:first-child{color:var(--c1);font-weight:600}
.tp-sub-footer{padding:24px 16px}
.btn-tp-confirm{width:100%;padding:14px;font-size:16px;font-weight:600;color:#fff;background:var(--c1);border:none;border-radius:var(--rf);cursor:pointer;transition:opacity .2s}
.btn-tp-confirm:active{opacity:.85}

/* ========== NovaAI 策略页 ========== */
.nova-hero{background:linear-gradient(135deg,var(--c1),var(--c3));border-radius:0 0 20px 20px;padding:28px 20px 24px;color:#fff;text-align:center;position:relative;overflow:hidden}
.nova-hero::before{content:'';position:absolute;width:200px;height:200px;background:radial-gradient(circle,var(--c2-25),transparent 70%);top:-60px;right:-40px;border-radius:50%}
.nova-hero::after{content:'';position:absolute;width:140px;height:140px;background:radial-gradient(circle,rgba(255,255,255,.06),transparent 70%);bottom:-30px;left:-20px;border-radius:50%}
.nova-icon{width:64px;height:64px;margin:0 auto 10px;background:rgba(255,255,255,.15);border-radius:18px;display:flex;align-items:center;justify-content:center;font-size:32px;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}
.nova-title{font-size:20px;font-weight:700;letter-spacing:.3px}
.nova-desc{font-size:12px;opacity:.75;margin-top:4px}
.nova-badge{display:inline-flex;align-items:center;gap:5px;margin-top:12px;font-size:12px;padding:5px 16px;border-radius:20px;backdrop-filter:blur(8px)}
.nova-badge.off{background:rgba(255,255,255,.12);color:rgba(255,255,255,.8)}
.nova-badge.on{background:var(--c1-30);color:var(--soft);border:1px solid var(--c1-40)}

.nova-form{padding:16px}
.nova-sec{background:var(--card);border-radius:var(--rl);padding:18px;margin-bottom:14px;box-shadow:var(--sh);border:1px solid #e5e5e5}
.nova-sec-head{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.nova-sec-icon{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px}
.nova-sec-icon.coin{background:#ecfdf5;color:#059669}
.nova-sec-icon.model{background:#ede9fe;color:#7c3aed}
.nova-sec-icon.prompt{background:#fff7ed;color:#ea580c}
.nova-sec-icon.param{background:#eff6ff;color:#2563eb}
.nova-sec-title{font-size:15px;font-weight:600;color:var(--t1)}
.nova-sec-sub{font-size:11px;color:var(--t3);margin-top:1px}

.nova-label{font-size:12px;font-weight:500;color:var(--t2);margin-bottom:6px;display:flex;align-items:center;gap:4px}
.nova-label .hint{font-weight:400;opacity:.6}
.nova-select,.nova-input{width:100%;height:44px;padding:0 14px;border:1.5px solid #e0e0e0;border-radius:var(--r);font-size:14px;color:var(--t1);background:#fafafa;transition:all .2s;box-sizing:border-box;-webkit-appearance:none;appearance:none}
.nova-select{background:#fafafa url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%239ca3af' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 14px center}
.nova-input:focus,.nova-select:focus{border-color:var(--c1);background:#fff;box-shadow:0 0 0 3px var(--c1-08);outline:none}
.nova-input::placeholder{color:var(--t3)}
.nova-textarea{width:100%;padding:12px 14px;border:1.5px solid #e0e0e0;border-radius:var(--r);font-size:13px;color:var(--t1);background:#fafafa;transition:all .2s;box-sizing:border-box;resize:vertical;line-height:1.7;font-family:inherit}
.nova-textarea:focus{border-color:var(--c1);background:#fff;box-shadow:0 0 0 3px var(--c1-08);outline:none}
.nova-textarea::placeholder{color:var(--t3)}
.nova-field{margin-bottom:14px}
.nova-field:last-child{margin-bottom:0}

.nova-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.nova-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}

.nova-actions{display:flex;gap:10px;padding:0 0 30px}
.nova-btn{flex:1;height:48px;border-radius:var(--rf);font-size:15px;font-weight:600;border:none;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:6px}
.nova-btn:active{transform:scale(.97);opacity:.9}
.nova-btn.save{background:var(--c1);color:#fff;box-shadow:0 4px 16px var(--c1-20)}
.nova-btn.start{background:linear-gradient(135deg,#66BB6A,#43A047);color:#fff;box-shadow:0 4px 16px rgba(67,160,71,.2)}
.nova-btn.stop{background:linear-gradient(135deg,#fca5a5,#ef4444);color:#fff;box-shadow:0 4px 16px rgba(239,68,68,.15)}
.nova-switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}
.nova-switch input{opacity:0;width:0;height:0}
.nova-slider{position:absolute;cursor:pointer;inset:0;background:#ccc;border-radius:24px;transition:.3s}
.nova-slider:before{content:'';position:absolute;height:18px;width:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.3s}
.nova-switch input:checked+.nova-slider{background:var(--c1)}
.nova-switch input:checked+.nova-slider:before{transform:translateX(20px)}

.nova-tip{text-align:center;font-size:11px;color:var(--t3);padding:0 0 20px;line-height:1.6}

/* ========== NovaAI 决策详情 ========== */
.nova-ai-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.nova-ai-header-left{display:flex;align-items:center;gap:8px}
.nova-ai-icon{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;background:linear-gradient(135deg,#6366F1,#8B5CF6);color:#fff}
.nova-ai-title{font-size:15px;font-weight:700;color:var(--t1)}
.nova-analyze-btn{padding:7px 16px;border-radius:var(--rf);font-size:12px;font-weight:600;border:none;background:var(--c1);color:#fff;cursor:pointer;transition:all .2s;white-space:nowrap}
.nova-analyze-btn:active{transform:scale(.95);opacity:.9}
.nova-analyze-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}

.nova-decision-badge{display:flex;align-items:center;gap:8px;border-radius:var(--r);padding:12px 14px;margin-bottom:12px}
.nova-decision-icon{font-size:28px}
.nova-decision-label{font-size:20px;font-weight:800;letter-spacing:1px;font-family:'SF Mono',monospace}
.nova-decision-cn{font-size:14px;font-weight:600;opacity:.8}
.nova-sentiment{margin-left:auto;font-size:11px;font-weight:600;padding:3px 10px;border-radius:var(--r);border:1px solid}

.nova-confidence-section{margin-bottom:12px}
.nova-confidence-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.nova-confidence-value{font-size:18px;font-weight:800;font-family:'SF Mono',monospace}
.nova-confidence-bar{height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden}
.nova-confidence-fill{height:100%;border-radius:4px;transition:width .6s cubic-bezier(.4,0,.2,1)}

.nova-trade-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.nova-trade-item{background:var(--bg);border-radius:8px;padding:10px 12px;text-align:center}
.nova-trade-label{font-size:11px;color:var(--t3);margin-bottom:3px}
.nova-trade-value{font-size:14px;font-weight:700;color:var(--t1);font-family:'SF Mono',monospace}

.nova-reasoning{background:linear-gradient(135deg,#f0fdf4,#ecfdf5);border:1px solid #bbf7d0;border-radius:var(--r);padding:12px 14px;margin-bottom:12px}
.nova-reasoning-head{font-size:12px;font-weight:700;color:#059669;margin-bottom:6px}
.nova-reasoning-text{font-size:13px;color:#064e3b;line-height:1.7}

.nova-key-levels{display:flex;gap:6px;align-items:flex-start;padding:8px 12px;background:var(--bg);border-radius:8px;margin-bottom:10px;font-size:12px}
.nova-kl-label{color:var(--t3);white-space:nowrap;font-weight:600}
.nova-kl-text{color:var(--t1);line-height:1.5}

.nova-ai-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:var(--t3);padding:4px 0}

.nova-expand-btn{cursor:pointer;font-size:16px;color:var(--t3);transition:transform .25s;flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:none;background:none}
.nova-expand-btn:active{opacity:.5}
.nova-summary-row{display:flex;align-items:baseline;gap:16px;padding:4px 0 0}
.nova-summary-field{display:flex;align-items:baseline;gap:6px}
.nova-sf-label{font-size:12px;color:var(--t3);font-weight:400}
.nova-sf-val{font-size:17px;font-weight:400;color:var(--t1);font-family:'SF Mono',SFMono-Regular,Menlo,monospace;letter-spacing:-.3px}
.nova-ai-row{display:flex;align-items:center;gap:8px;padding:8px 0 2px;cursor:pointer;border-top:1px solid #f0f0f0;margin-top:6px}
.nova-ai-reason{font-size:12px;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.nova-ai-reason-sub{font-size:10px;color:var(--t3);white-space:nowrap;flex-shrink:0}
.nova-summary-badge{padding:3px 8px;border-radius:4px;font-size:12px;font-weight:400;white-space:nowrap;flex-shrink:0}
.nova-card-empty{display:flex;align-items:center;justify-content:space-between;padding:12px 0;cursor:pointer;font-size:13px;color:var(--c1);font-weight:400}

.nova-detail-page{padding-bottom:20px}
.nova-detail-top{padding:20px 16px 12px;background:linear-gradient(135deg,var(--c1),var(--c3));color:#fff;border-radius:0 0 16px 16px;margin-bottom:14px}
.nova-detail-sym{display:flex;align-items:center;gap:8px}
.nova-detail-sym .sc-tag{background:rgba(255,255,255,.2)!important;color:#fff!important}

.nova-analyze-btn-full{width:100%;height:48px;border-radius:var(--rf);font-size:15px;font-weight:700;border:none;background:linear-gradient(135deg,#6366F1,#8B5CF6);color:#fff;cursor:pointer;transition:all .2s;box-shadow:0 4px 16px rgba(99,102,241,.2);display:flex;align-items:center;justify-content:center;gap:8px}
.nova-analyze-btn-full:active{transform:scale(.97);opacity:.9}
.nova-analyze-btn-full:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}

.nova-loading-spinner{width:40px;height:40px;border:3px solid #e0e0e0;border-top-color:var(--c1);border-radius:50%;animation:novaSpin .8s linear infinite;margin:0 auto}
@keyframes novaSpin{to{transform:rotate(360deg)}}

.nova-empty-state{text-align:center;padding:24px 10px}
.nova-empty-icon{font-size:42px;margin-bottom:8px}
.nova-empty-text{font-size:15px;font-weight:600;color:var(--t1);margin-bottom:4px}
.nova-empty-hint{font-size:12px;color:var(--t3);line-height:1.6}

/* ========== 发明者策略持仓详情 ========== */
.fmz-pos-card{background:var(--card);border-radius:var(--rl);border:1px solid #e5e5e5;overflow:hidden;margin-bottom:14px;box-shadow:var(--sh)}
.fmz-pos-header{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid #f0f0f0;background:linear-gradient(135deg,var(--c1-03),var(--c3-03))}
.fmz-pos-side{padding:4px 14px;border-radius:4px;font-size:13px;font-weight:700;color:#fff}
.fmz-pos-symbol{font-size:17px;font-weight:700;color:var(--t1);flex:1}
.fmz-pos-lev{padding:3px 10px;border-radius:4px;font-size:12px;font-weight:600;background:#fee2e2;color:#ef4444}
.fmz-pos-grid{display:grid;grid-template-columns:1fr 1fr 1fr;padding:4px 0}
.fmz-pos-item{padding:12px 16px;text-align:center}
.fmz-pos-label{font-size:11px;color:var(--t3);margin-bottom:4px}
.fmz-pos-value{font-size:14px;font-weight:600;color:var(--t1)}
.fmz-pos-pnl-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:linear-gradient(135deg,var(--c1-04),var(--c3-06));border-top:1px solid #f0f0f0}
.fmz-pos-pnl-label{font-size:13px;color:var(--t2);font-weight:500}
.fmz-pos-pnl-value{font-size:20px;font-weight:800}

.fmz-pos-stats{background:var(--card);border-radius:var(--r);border:1px solid #e5e5e5;padding:16px;margin-bottom:14px}
.fmz-pos-stats-title{font-size:14px;font-weight:700;color:var(--t1);margin-bottom:12px;display:flex;align-items:center;gap:6px}
.fmz-pos-stats-title::before{content:'';width:3px;height:14px;border-radius:2px;background:var(--c1)}
.fmz-pos-stats-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:8px}
.fmz-pos-stat-item{text-align:center;padding:10px 4px;background:var(--bg);border-radius:8px}
.fmz-pos-stat-val{font-size:16px;font-weight:700;color:var(--t1);margin-bottom:2px}
.fmz-pos-stat-label{font-size:10px;color:var(--t3)}

.fmz-pos-trades{background:var(--card);border-radius:var(--r);border:1px solid #e5e5e5;padding:16px;margin-bottom:14px}
.fmz-pos-trade-list{display:flex;flex-direction:column;gap:2px}
.fmz-pos-trade-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #f0f0f0}
.fmz-pos-trade-row:last-child{border-bottom:none}
.fmz-pos-trade-left{display:flex;align-items:center;gap:8px}
.fmz-pos-trade-icon{font-size:18px}
.fmz-pos-trade-action{font-size:13px;font-weight:600;color:var(--t1)}
.fmz-pos-trade-time{font-size:10px;color:var(--t3);margin-top:1px}
.fmz-pos-trade-right{text-align:right}
.fmz-pos-trade-price{font-size:13px;font-weight:600;color:var(--t1)}
.fmz-pos-trade-pnl{font-size:12px;font-weight:700;margin-top:1px}
.fmz-pos-trade-qty{font-size:11px;color:var(--t3);margin-top:1px}

/* ========== NovaAI 卡片展开区域 ========== */
.nova-pos-expand{border-top:1px solid #f0f0f0;margin-top:8px;padding-top:10px}
.nova-ipos-card{background:var(--bg);border-radius:var(--r);border:1px solid #e5e5e5;overflow:hidden;margin-bottom:10px}
.nova-ipos-card:last-child{margin-bottom:0}
.nova-ipos-header{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid #f0f0f0}
.nova-ipos-side{padding:3px 12px;border-radius:4px;font-size:12px;font-weight:400;color:#fff}
.nova-ipos-sym{font-size:15px;font-weight:400;color:var(--t1);flex:1}
.nova-ipos-lev{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:400;background:#fee2e2;color:#ef4444}
.nova-ipos-grid{display:grid;grid-template-columns:1fr 1fr 1fr;padding:2px 0}
.nova-ipos-item{padding:10px 14px;text-align:center}
.nova-ipos-label{font-size:11px;color:var(--t3);margin-bottom:3px}
.nova-ipos-val{font-size:13px;font-weight:400;color:var(--t1)}
.nova-ipos-pnl{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:linear-gradient(135deg,var(--c1-03),var(--c3-05));border-top:1px solid #f0f0f0}
.nova-ipos-pnl-label{font-size:12px;color:var(--t2);font-weight:400}
.nova-ipos-pnl-val{font-size:18px;font-weight:400}

/* ========== 合约策略卡片展开区域 ========== */
.ct-expand-area{border-top:1px solid #f0f0f0;margin-top:8px;padding-top:10px}
.ct-detail-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0}
.ct-detail-row{padding:10px 4px;text-align:center}
.ct-dl{display:block;font-size:11px;color:var(--t3);margin-bottom:4px}
.ct-dv{display:block;font-size:14px;color:var(--t1)}

/* ========== 帮助问号 & 弹窗 ========== */
.help-q{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1.5px solid #bbb;color:#bbb;font-size:11px;font-weight:700;cursor:pointer;margin-left:4px;vertical-align:middle;line-height:1;font-style:normal}
.help-q:active{background:#f5f5f5}
#helpModal{display:none;position:fixed;inset:0;z-index:9999;align-items:center;justify-content:center}
.help-modal-mask{position:absolute;inset:0;background:rgba(0,0,0,.3)}
.help-modal-box{position:relative;background:#fff;border-radius:var(--rl);width:280px;max-width:80vw;padding:24px 20px 0;text-align:center;box-shadow:0 8px 30px rgba(0,0,0,.12)}
.help-modal-title{font-size:16px;font-weight:700;color:var(--t1);margin-bottom:14px}
.help-modal-body{font-size:13px;color:var(--t2);line-height:1.7;margin-bottom:18px;text-align:left;white-space:pre-wrap}
.help-modal-btn{padding:14px 0;border-top:1px solid #f0f0f0;font-size:15px;color:var(--c1);font-weight:600;cursor:pointer}
.help-modal-btn:active{background:#fafafa;border-radius:0 0 14px 14px}

/* ========== 搜索下拉选择器 ========== */
.search-select{position:relative}
.search-select .ss-trigger{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--card);border:1.5px solid #e0e0e0;border-radius:var(--r);cursor:pointer;font-size:14px;color:var(--t1);font-weight:500;transition:border-color .2s}
.search-select .ss-trigger:active{border-color:var(--c1)}
.search-select .ss-trigger .ss-arrow{color:var(--t3);font-size:12px;transition:transform .2s}
.search-select.open .ss-trigger{border-color:var(--c1);border-radius:var(--r) var(--r) 0 0}
.search-select.open .ss-arrow{transform:rotate(180deg)}
.search-select .ss-drop{display:none;position:absolute;left:0;right:0;top:100%;margin-top:-1px;background:var(--card);border:1.5px solid var(--c1);border-top:none;border-radius:0 0 var(--r) var(--r);z-index:200;box-shadow:0 8px 24px rgba(0,0,0,.08);max-height:280px;overflow:hidden;flex-direction:column}
.search-select.open .ss-drop{display:flex}
.ss-search{padding:8px 10px;border-bottom:1px solid #f0f0f0}
.ss-search input{width:100%;border:1.5px solid #e0e0e0;border-radius:8px;padding:8px 10px 8px 30px;font-size:13px;outline:none;box-sizing:border-box;background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%239ca3af' viewBox='0 0 24 24'%3E%3Cpath d='M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E") 9px center no-repeat;transition:border-color .2s}
.ss-search input:focus{border-color:var(--c1)}
.ss-list{overflow-y:auto;max-height:220px;-webkit-overflow-scrolling:touch}
.ss-list::-webkit-scrollbar{width:4px}
.ss-list::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:2px}
.ss-opt{padding:10px 14px;font-size:13px;color:var(--t1);cursor:pointer;transition:background .15s;display:flex;align-items:center;gap:8px}
.ss-opt:active,.ss-opt.active{background:var(--c1-06);color:var(--c1);font-weight:600}
.ss-opt:hover{background:#fafafa}
.ss-opt .ss-check{width:16px;height:16px;border-radius:50%;border:1.5px solid #d0d0d0;display:flex;align-items:center;justify-content:center;font-size:10px;flex-shrink:0;transition:all .15s}
.ss-opt.active .ss-check{background:var(--c1);border-color:var(--c1);color:#fff}
.ss-empty{padding:20px;text-align:center;color:var(--t3);font-size:12px}

/* ========== 动画 ========== */
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.fade-in{animation:fadeIn .25s ease-out}
