*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg-deep:#06080f;--bg-base:#0b0e18;--bg-card:#111627;--bg-card-hover:#161d33;
  --bg-elevated:#1a2040;--bg-input:#0d1020;
  --border:#1e2645;--border-light:#2a3460;
  --text-primary:#e8ecf4;--text-secondary:#8892b0;--text-muted:#5a6380;
  --accent:#00d4ff;--accent-dim:rgba(0,212,255,.12);--accent-glow:rgba(0,212,255,.25);
  --green:#2ed573;--green-dim:rgba(46,213,115,.12);
  --red:#ff4757;--red-dim:rgba(255,71,87,.12);
  --amber:#ffb800;--amber-dim:rgba(255,184,0,.12);
  --purple:#a855f7;--purple-dim:rgba(168,85,247,.12);
  --radius:10px;--radius-lg:16px;--radius-xl:20px;
  --shadow:0 4px 24px rgba(0,0,0,.4);
  --font-body:'Inter', 'Noto Sans SC', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono:'JetBrains Mono', 'SF Mono', 'Fira Code', 'Consolas', monospace;
  --transition:all .2s cubic-bezier(.4,0,.2,1);
}
html{font-size:14px;scroll-behavior:smooth}
body{font-family:var(--font-body);background:var(--bg-deep);color:var(--text-primary);min-height:100vh;overflow-x:hidden;line-height:1.6}
::selection{background:var(--accent);color:var(--bg-deep)}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--border-light)}

/* ── AUTH PAGE ── */
.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.auth-page::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(0,212,255,.06),transparent 70%),radial-gradient(ellipse 60% 50% at 80% 100%,rgba(168,85,247,.04),transparent 60%);pointer-events:none}
.auth-page .grid-bg{position:absolute;inset:0;background-image:linear-gradient(rgba(30,38,69,.3) 1px,transparent 1px),linear-gradient(90deg,rgba(30,38,69,.3) 1px,transparent 1px);background-size:60px 60px;mask-image:radial-gradient(ellipse 70% 70% at 50% 50%,black,transparent);pointer-events:none}
.auth-container{position:relative;z-index:1;width:100%;max-width:420px;padding:24px}
.auth-brand{text-align:center;margin-bottom:40px}
.auth-brand .logo-icon{width:56px;height:56px;margin:0 auto 16px;background:linear-gradient(135deg,var(--accent),var(--purple));border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:28px;box-shadow:0 8px 32px rgba(0,212,255,.2)}
.auth-brand h1{font-size:1.7rem;font-weight:700;letter-spacing:-.02em;background:linear-gradient(135deg,var(--text-primary),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.auth-brand p{color:var(--text-muted);font-size:.9rem;margin-top:6px}
.auth-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);padding:32px;box-shadow:var(--shadow)}
.auth-tabs{display:flex;gap:0;margin-bottom:28px;background:var(--bg-input);border-radius:var(--radius);padding:3px}
.auth-tab{flex:1;padding:10px;text-align:center;border-radius:8px;cursor:pointer;font-weight:600;font-size:.9rem;color:var(--text-muted);transition:var(--transition)}
.auth-tab.active{background:var(--bg-card);color:var(--text-primary);box-shadow:0 2px 8px rgba(0,0,0,.3)}
.form-group{margin-bottom:18px}
.form-group label{display:block;font-size:.82rem;font-weight:600;color:var(--text-secondary);margin-bottom:7px;letter-spacing:.03em;text-transform:uppercase}
.form-input{width:100%;padding:12px 14px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font-body);font-size:.95rem;transition:var(--transition);outline:none}
.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.form-input::placeholder{color:var(--text-muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;border:none;border-radius:var(--radius);font-family:var(--font-body);font-size:.9rem;font-weight:600;cursor:pointer;transition:var(--transition);text-decoration:none}
.btn-primary{background:linear-gradient(135deg,var(--accent),#0099cc);color:var(--bg-deep);width:100%}
.btn-primary:hover{box-shadow:0 4px 20px var(--accent-glow);transform:translateY(-1px)}
.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn-sm{padding:8px 16px;font-size:.82rem}
.btn-danger{background:var(--red);color:#fff}
.btn-danger:hover{box-shadow:0 4px 16px rgba(255,71,87,.3)}
.btn-success{background:var(--green);color:var(--bg-deep)}
.btn-success:hover{box-shadow:0 4px 16px rgba(46,213,115,.3)}

/* ── APP LAYOUT ── */
.app{display:none;min-height:100vh}
.app.visible{display:flex}
.sidebar{width:240px;height:100vh;background:var(--bg-base);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;left:0;top:0;z-index:100;transition:transform .3s;overflow:hidden}
.sidebar-brand{padding:20px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);flex-shrink:0}
.sidebar-brand .logo-sm{width:36px;height:36px;background:linear-gradient(135deg,var(--accent),var(--purple));border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.sidebar-brand span{font-weight:700;font-size:1.05rem;letter-spacing:-.01em}
.sidebar-nav{flex:1;padding:16px 12px;display:flex;flex-direction:column;gap:2px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;min-height:0}
.nav-item{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;transition:var(--transition);font-weight:500;font-size:.9rem;position:relative}
.nav-item:hover{color:var(--text-primary);background:var(--bg-card)}
.nav-item.active{color:var(--accent);background:var(--accent-dim)}
.nav-item .nav-icon{width:20px;text-align:center;font-size:1.1rem;flex-shrink:0}
.nav-item .badge{position:absolute;right:10px;background:var(--red);color:#fff;font-size:.7rem;padding:2px 7px;border-radius:10px;font-weight:700}
.sidebar-user{padding:16px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-shrink:0}
.sidebar-user .avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--purple));display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;flex-shrink:0}
.sidebar-user .user-info{flex:1;overflow:hidden}
.sidebar-user .user-info .name{font-weight:600;font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-user .user-info .role{font-size:.75rem;color:var(--text-muted)}
.sidebar-user .logout-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1.1rem;padding:4px;border-radius:6px;transition:var(--transition)}
.sidebar-user .logout-btn:hover{color:var(--red);background:var(--red-dim)}

.main-content{margin-left:240px;flex:1;min-height:100vh;background:var(--bg-deep)}
.page{display:none;padding:32px;max-width:1400px;margin:0 auto}
.page.active{display:block}
.page-header{margin-bottom:28px}
.page-header h2{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;gap:10px}
.page-header h2 .icon{font-size:1.3rem}
.page-header p{color:var(--text-muted);margin-top:4px;font-size:.9rem}

/* ── CARDS ── */
.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;transition:var(--transition)}
.card:hover{border-color:var(--border-light);background:var(--bg-card-hover)}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:28px}
.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;position:relative;overflow:hidden}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px}
.stat-card.accent::before{background:linear-gradient(90deg,var(--accent),transparent)}
.stat-card.green::before{background:linear-gradient(90deg,var(--green),transparent)}
.stat-card.amber::before{background:linear-gradient(90deg,var(--amber),transparent)}
.stat-card.purple::before{background:linear-gradient(90deg,var(--purple),transparent)}
.stat-card .stat-label{font-size:.78rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.stat-card .stat-value{font-family:var(--font-mono);font-size:1.6rem;font-weight:700;margin-top:6px}
.stat-card .stat-change{font-size:.8rem;margin-top:4px;font-family:var(--font-mono)}
.stat-card .stat-change.up{color:var(--green)}
.stat-card .stat-change.down{color:var(--red)}

/* ── MARKET FILTERS ── */
.market-filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px;align-items:center}
.filter-group{display:flex;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.filter-btn{padding:8px 18px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-family:var(--font-body);font-size:.85rem;font-weight:500;transition:var(--transition)}
.filter-btn.active{background:var(--accent);color:var(--bg-deep)}
.filter-btn:hover:not(.active){color:var(--text-primary);background:var(--bg-elevated)}
.search-box{flex:1;min-width:200px;position:relative}
.search-box input{width:100%;padding:9px 14px 9px 36px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font-body);font-size:.9rem;outline:none;transition:var(--transition)}
.search-box input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.search-box::before{content:'🔍';position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:.9rem;pointer-events:none}

/* ── STRATEGY CARD ── */
.strategy-card{cursor:pointer;position:relative;overflow:hidden}
.strategy-card .card-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}
.strategy-card .strategy-name{font-size:1.1rem;font-weight:700}
.strategy-card .strategy-author{font-size:.8rem;color:var(--text-muted);margin-top:2px}
.strategy-card .strategy-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.tag{padding:3px 10px;border-radius:20px;font-size:.72rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}
.tag-sim{background:var(--purple-dim);color:var(--purple)}
.tag-live{background:var(--green-dim);color:var(--green)}
.tag-crypto{background:var(--accent-dim);color:var(--accent)}
.tag-forex{background:var(--amber-dim);color:var(--amber)}
.tag-stock{background:rgba(255,255,255,.06);color:var(--text-secondary)}
.strategy-card .metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding-top:14px;border-top:1px solid var(--border)}
.metric{text-align:center}
.metric .metric-val{font-family:var(--font-mono);font-size:1.05rem;font-weight:700}
.metric .metric-val.positive{color:var(--green)}
.metric .metric-val.negative{color:var(--red)}
.metric .metric-label{font-size:.72rem;color:var(--text-muted);margin-top:2px;text-transform:uppercase;letter-spacing:.04em}
.strategy-card .card-footer{display:flex;justify-content:space-between;align-items:center;margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
.strategy-card .card-footer .subscribers{font-size:.8rem;color:var(--text-muted)}
.strategy-card .card-footer .rating{color:var(--amber);font-size:.85rem}

/* ── CONFIG PAGE ── */
.config-section{margin-bottom:32px}
.config-section h3{font-size:1.1rem;font-weight:700;margin-bottom:16px;display:flex;align-items:center;gap:8px}
.config-section h3 .icon{font-size:1.2rem}
.config-list{display:flex;flex-direction:column;gap:12px}
.config-item{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;display:flex;align-items:center;gap:16px;transition:var(--transition)}
.config-item:hover{border-color:var(--border-light)}
.config-item .config-icon{width:44px;height:44px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:1.3rem;flex-shrink:0}
.config-item .config-info{flex:1}
.config-item .config-info .config-title{font-weight:600;font-size:.95rem}
.config-item .config-info .config-desc{font-size:.8rem;color:var(--text-muted);margin-top:2px}
.config-item .config-status{font-size:.78rem;font-weight:600;padding:4px 12px;border-radius:20px}
.config-item .config-status.connected{background:var(--green-dim);color:var(--green)}
.config-item .config-status.pending{background:var(--amber-dim);color:var(--amber)}
.config-item .config-status.disconnected{background:var(--red-dim);color:var(--red)}

/* ── MODAL ── */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:1000;align-items:center;justify-content:center}
.modal-overlay.visible{display:flex}
.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);width:90%;max-width:560px;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.modal-header{padding:24px 28px 0;display:flex;justify-content:space-between;align-items:center}
.modal-header h3{font-size:1.15rem;font-weight:700}
.modal-close{background:none;border:none;color:var(--text-muted);font-size:1.4rem;cursor:pointer;padding:4px;border-radius:6px;transition:var(--transition)}
.modal-close:hover{color:var(--text-primary);background:var(--bg-elevated)}
.modal-body{padding:24px 28px 28px}

/* ── SIGNALS TABLE ── */
.signals-table{width:100%;border-collapse:collapse}
.signals-table th{text-align:left;padding:12px 16px;font-size:.78rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border);background:var(--bg-base);position:sticky;top:0}
.signals-table td{padding:14px 16px;border-bottom:1px solid var(--border);font-size:.9rem}
.signals-table tr:hover td{background:var(--bg-card)}
.pnl-positive{color:var(--green);font-family:var(--font-mono);font-weight:600}
.pnl-negative{color:var(--red);font-family:var(--font-mono);font-weight:600}
.side-buy{color:var(--green);font-weight:600}
.side-sell{color:var(--red);font-weight:600}

/* ── DETAIL PAGE ── */
.detail-hero{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);padding:32px;margin-bottom:24px;position:relative;overflow:hidden}
.detail-hero::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--purple),var(--accent))}
.detail-hero .hero-top{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px}
.detail-hero .hero-title{font-size:1.6rem;font-weight:700}
.detail-hero .hero-sub{color:var(--text-muted);font-size:.9rem;margin-top:4px}
.detail-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;margin-top:24px;padding-top:24px;border-top:1px solid var(--border)}
.detail-stat .ds-label{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}
.detail-stat .ds-value{font-family:var(--font-mono);font-size:1.2rem;font-weight:700;margin-top:4px}
.equity-chart-placeholder{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);height:260px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.9rem;margin-bottom:24px;position:relative;overflow:hidden}
.equity-chart-placeholder canvas{position:absolute;inset:0}
.trade-log{max-height:400px;overflow-y:auto}

/* ── SHARE FORM ── */
.share-preview{background:var(--bg-base);border:1px dashed var(--border);border-radius:var(--radius-lg);padding:20px;margin-top:20px}

/* ── TOAST ── */
.toast-container{position:fixed;top:24px;right:24px;z-index:2000;display:flex;flex-direction:column;gap:10px}
.toast{padding:14px 20px;border-radius:var(--radius);font-size:.88rem;font-weight:500;box-shadow:0 8px 32px rgba(0,0,0,.4);animation:slideIn .3s ease;display:flex;align-items:center;gap:10px;min-width:280px}
.toast.success{background:var(--green);color:var(--bg-deep)}
.toast.error{background:var(--red);color:#fff}
.toast.info{background:var(--accent);color:var(--bg-deep)}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes modalIn{from{opacity:0;transform:scale(.92) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}

/* ── EMPTY STATE ── */
.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}
.empty-state .empty-icon{font-size:3rem;margin-bottom:16px;opacity:.5}
.empty-state h3{font-size:1.1rem;color:var(--text-secondary);margin-bottom:8px}
.empty-state p{font-size:.88rem;max-width:360px;margin:0 auto}

/* ── ANIMATIONS ── */
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes fade-down{from{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%,0)}}
.fade-up{animation:fadeUp .4s ease both}
.fade-up:nth-child(1){animation-delay:.05s}
.fade-up:nth-child(2){animation-delay:.1s}
.fade-up:nth-child(3){animation-delay:.15s}
.fade-up:nth-child(4){animation-delay:.2s}
.fade-up:nth-child(5){animation-delay:.25s}
.fade-up:nth-child(6){animation-delay:.3s}

/* ── RESPONSIVE ── */
@media(max-width:1024px){
  *{max-width:100vw!important;box-sizing:border-box}
  html,body{overflow-x:hidden!important;width:100%!important}
  .sidebar{transform:translateX(-100%);width:260px;height:100dvh;max-height:100dvh;overflow:hidden}
  .sidebar.open{transform:translateX(0)}
  .main-content{margin-left:0!important;padding-top:52px;width:100%!important;overflow-x:hidden!important}
  .card-grid{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .stat-card{padding:14px 12px!important}
  .stat-card .stat-label{font-size:.68rem!important}
  .stat-card .stat-value{font-size:1.1rem!important;margin-top:4px!important}
  .stat-card .stat-change{font-size:.72rem!important}
  .mobile-toggle{display:flex!important}
  #mobileTopbar{display:flex!important}
  .page{padding:16px 12px;padding-top:12px;padding-bottom:max(16px,var(--safe-bottom,0px));width:100%!important;overflow-x:hidden!important;max-width:100vw!important}
  .page h2{font-size:1.1rem!important}
  .strategy-card .metrics{grid-template-columns:repeat(3,1fr);gap:8px}
  .strategy-card .card-footer{flex-direction:column;gap:10px;align-items:stretch!important}
  .strategy-card .card-footer .subscribers{font-size:.72rem!important}
  .strategy-card .card-footer .rating{font-size:.75rem!important}
  .strategy-card .card-footer .flex{justify-content:center;flex-wrap:wrap;gap:6px!important}
  .strategy-card .card-footer .btn-follow{padding:5px 10px!important;font-size:.72rem!important;flex:1;min-width:0;text-align:center}
  .strategy-card .card-top{flex-direction:column;gap:8px}
  .strategy-card .strategy-tags{margin-bottom:8px}
  .strategy-card .card-top .strategy-name{font-size:.95rem!important}
  .strategy-card .card-top .strategy-author{font-size:.72rem!important}
  .strategy-card .metrics .metric-val{font-size:.85rem!important}
  .strategy-card .metrics .metric-label{font-size:.65rem!important}
  .card{max-width:100%!important;overflow:hidden!important}
  .page-header p{font-size:.78rem!important}
  /* PWA safe area */
  #mobileTopbar{padding-top:var(--safe-top,0px);height:calc(52px + var(--safe-top,0px))}
  .sidebar{padding-top:var(--safe-top,0px)}
  /* 机器人页面响应式 */
  #page-robot [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
  #page-robot [style*="grid-template-columns:repeat(3,1fr)"]{grid-template-columns:1fr!important}
  #page-robot [style*="grid-template-columns:1fr 1fr"][style*="gap:12px"]{grid-template-columns:1fr!important}
  /* 管理后台响应式 - 表格转卡片布局 */
  #page-admin [style*="grid-template-columns:repeat(auto-fit"]{grid-template-columns:repeat(3,1fr)!important}
  #page-admin .admin-table-wrap table,
  #page-admin .admin-table-wrap thead,
  #page-admin .admin-table-wrap tbody,
  #page-admin .admin-table-wrap th,
  #page-admin .admin-table-wrap td,
  #page-admin .admin-table-wrap tr{display:block!important;width:100%!important;box-sizing:border-box!important}
  #page-admin .admin-table-wrap thead{position:absolute;left:-9999px;height:0;overflow:hidden}
  #page-admin .admin-table-wrap tr{background:var(--bg-card)!important;border:1px solid var(--border)!important;border-radius:10px!important;padding:10px 12px!important;margin-bottom:8px!important}
  #page-admin .admin-table-wrap td{padding:4px 0!important;border:none!important;text-align:left!important;font-size:.82rem!important;position:relative}
  #page-admin .admin-table-wrap td:nth-child(1){display:none!important}
  #page-admin .admin-table-wrap td:nth-child(3){display:none!important}
  #page-admin .admin-table-wrap td::before{content:attr(data-label);display:inline-block;width:52px;font-size:.68rem;color:var(--text-muted);font-weight:500;vertical-align:middle}
  #page-admin .admin-table-wrap td:nth-child(4){text-align:left!important}
  #page-admin .admin-table-wrap td:nth-child(4)::before{content:'积分'}
  #page-admin .admin-table-wrap td:nth-child(5)::before{content:'等级'}
  #page-admin .admin-table-wrap td:nth-child(6)::before{content:'操作'}
  #page-admin .admin-table-wrap td:nth-child(6){display:flex!important;gap:6px;flex-wrap:wrap;padding-top:6px!important;border-top:1px solid var(--border)!important;margin-top:4px}
  #page-admin .admin-table-wrap td:nth-child(6) button{font-size:.72rem!important;padding:4px 8px!important;margin:0!important}
  #page-admin .admin-table-wrap td:nth-child(2) [style*="width:30px"]{width:22px!important;height:22px!important;font-size:.6rem!important}
  #page-admin .admin-table-wrap td:nth-child(2) [style*="font-size:.85rem"]{font-size:.78rem!important}
  #page-admin .admin-table-wrap td:nth-child(2) [style*="font-size:.72rem"]{display:none!important}
  #page-admin .admin-table-wrap td:nth-child(2) [style*="min-width:140px"]{min-width:auto!important}
  #page-admin .admin-table-wrap td:nth-child(5) span{font-size:.72rem!important;padding:2px 6px!important}
  /* 订单表格卡片布局 */
  #page-admin .orders-table-wrap table,
  #page-admin .orders-table-wrap thead,
  #page-admin .orders-table-wrap tbody,
  #page-admin .orders-table-wrap th,
  #page-admin .orders-table-wrap td,
  #page-admin .orders-table-wrap tr{display:block!important;width:100%!important;box-sizing:border-box!important}
  #page-admin .orders-table-wrap thead{position:absolute;left:-9999px;height:0;overflow:hidden}
  #page-admin .orders-table-wrap tr{background:var(--bg-card)!important;border:1px solid var(--border)!important;border-radius:10px!important;padding:10px 12px!important;margin-bottom:8px!important}
  #page-admin .orders-table-wrap td{padding:4px 0!important;border:none!important;text-align:left!important;font-size:.82rem!important;position:relative}
  #page-admin .orders-table-wrap td:nth-child(1){display:none!important}
  #page-admin .orders-table-wrap td:nth-child(7){display:none!important}
  #page-admin .orders-table-wrap td:nth-child(8){display:none!important}
  #page-admin .orders-table-wrap td::before{content:attr(data-label);display:inline-block;width:42px;font-size:.68rem;color:var(--text-muted);font-weight:500;vertical-align:middle}
  #page-admin .orders-table-wrap td:nth-child(2)::before{content:'用户'}
  #page-admin .orders-table-wrap td:nth-child(3)::before{content:'套餐'}
  #page-admin .orders-table-wrap td:nth-child(4)::before{content:'金额'}
  #page-admin .orders-table-wrap td:nth-child(5)::before{content:'链'}
  #page-admin .orders-table-wrap td:nth-child(6)::before{content:'状态'}
  #page-admin .orders-table-wrap td:nth-child(9)::before{content:'操作'}
  #page-admin .orders-table-wrap td:nth-child(9){display:flex!important;gap:6px;flex-wrap:wrap;padding-top:6px!important;border-top:1px solid var(--border)!important;margin-top:4px}
  #page-admin .orders-table-wrap td:nth-child(9) button{font-size:.72rem!important;padding:4px 8px!important;margin:0!important}
  #page-admin .orders-table-wrap td:nth-child(4){font-size:.78rem!important}
  /* 订单表格响应式 */
  #page-admin table [style*="min-width"]{min-width:auto!important}
  /* 持仓监控响应式 */
  #page-positions table{font-size:.68rem!important;width:100%!important}
  #page-positions table th,#page-positions table td{padding:5px 3px!important;font-size:.65rem!important;line-height:1.3!important}
  #page-positions table button{font-size:.6rem!important;padding:2px 5px!important}
  /* 会员中心响应式 */
  .billing-plans{grid-template-columns:1fr!important}
  .billing-status{grid-template-columns:repeat(2,1fr)!important;gap:8px!important;max-width:100%!important}
  .billing-status-card{padding:14px 10px!important;overflow:hidden!important}
  .billing-status-card .label{font-size:.72rem!important}
  .billing-status-card .value{font-size:1.3rem!important;word-break:break-all}
  .billing-status-card .value button{font-size:.72rem!important;padding:4px 8px!important;white-space:nowrap}
  #billingPermissions [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
  /* 积分明细手机端：隐藏表格，显示卡片 */
  .billing-log .log-desktop{display:none!important}
  .billing-log .log-table-wrap{display:none!important}
  .billing-log .log-mobile-cards{display:block!important}
  /* 配置页面响应式 */
  #page-config [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
  #page-config .card{padding:12px!important}
  #page-config .flex{flex-wrap:wrap}
  #page-config .config-section h3{font-size:.95rem!important}
  /* 策略管理页面响应式 */
  #page-share .config-item{flex-wrap:wrap!important}
  #page-share .config-item .config-info{min-width:0!important;width:100%!important;order:2}
  #page-share .config-item .config-icon{order:1}
  #page-share .config-item code{font-size:.68rem!important;word-break:break-all!important}
  #page-share .config-item button{flex-shrink:0!important}
  /* 信号记录页面响应式 */
  .signals-desktop{display:none!important}
  .signals-mobile{display:block!important}
  #page-signals .card.signals-desktop,
  #page-detail .card{padding:0!important;overflow:visible!important}
  #page-signals .trade-log,
  #page-detail .trade-log{max-height:none!important;overflow:visible!important}
  /* 策略卡片响应式 */
  .strategy-card .metrics{grid-template-columns:repeat(2,1fr)!important}
  .strategy-card{padding:16px!important}
  .strategy-card h3{font-size:1rem!important}
  /* 江湖急救响应式 */
  #page-rescue [style*="grid-template-columns:1fr 1fr 1fr"]{grid-template-columns:1fr!important}
  #page-rescue textarea{font-size:.82rem!important}
  /* 策略详情页面响应式 */
  #page-detail .detail-hero{padding:16px!important;margin-bottom:16px!important}
  #page-detail .hero-title{font-size:1.15rem!important}
  #page-detail .hero-sub{font-size:.78rem!important}
  #page-detail .detail-stats{grid-template-columns:repeat(2,1fr)!important;gap:10px!important;margin-top:16px!important;padding-top:16px!important}
  #page-detail .detail-stat .ds-value{font-size:1rem!important}
  #page-detail .equity-chart-placeholder{height:180px!important;margin-bottom:16px!important}
  #page-detail .card h3{font-size:.9rem!important;padding:14px 12px 0!important}
  #page-detail #detailTrades{min-width:700px}
  #page-detail #detailTrades th,#page-detail #detailTrades td{padding:8px 6px!important;font-size:.72rem!important;white-space:nowrap}
  #page-detail #detailTrades th:nth-child(2),#page-detail #detailTrades td:nth-child(2){display:none}
  #page-detail #detailTrades th:nth-child(5),#page-detail #detailTrades td:nth-child(5){display:none}
  #page-detail .btn-ghost{font-size:.78rem!important;padding:6px 12px!important}
  /* 市场策略卡片 */
  .market-grid{grid-template-columns:1fr!important}
  /* 金豆中心响应式 */
  #page-gold-bean [style*="grid-template-columns:repeat(3"]{grid-template-columns:1fr!important}
  #page-gold-bean [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
  #page-gold-bean [style*="display:flex"][style*="gap:12px"]{flex-direction:column!important}
  /* 通用表格横滚 */
  .overflow-x-auto{overflow-x:auto;-webkit-overflow-scrolling:touch}
  /* 按钮缩小 */
  button{font-size:.82rem!important}
  /* 侧边栏遮罩 */
  .sidebar.open~.sidebar-overlay{display:block}
}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:99}
.mobile-toggle{display:none;position:fixed;top:16px;left:16px;z-index:101;width:40px;height:40px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);align-items:center;justify-content:center;cursor:pointer;font-size:1.2rem;color:var(--text-primary)}

/* ── MISC ── */
.divider{height:1px;background:var(--border);margin:20px 0}
.flex{display:flex}.flex-col{flex-direction:column}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}
.items-center{align-items:center}.justify-between{justify-content:space-between}
.text-green{color:var(--green)}.text-red{color:var(--red)}.text-amber{color:var(--amber)}.text-accent{color:var(--accent)}
.text-sm{font-size:.82rem}.text-xs{font:.75rem}.text-muted{color:var(--text-muted)}
.mt-12{margin-top:12px}.mt-20{margin-top:20px}.mb-16{margin-bottom:16px}
.w-full{width:100%}
select.form-input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%238892b0' viewBox='0 0 16 16'%3E%3Cpath d='M8 12L2 6h12z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}
.switch{position:relative;width:44px;height:24px;flex-shrink:0}
.switch input{opacity:0;width:0;height:0}
.switch .slider{position:absolute;inset:0;background:var(--border);border-radius:12px;cursor:pointer;transition:var(--transition)}
.switch .slider::before{content:'';position:absolute;width:18px;height:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:var(--transition)}
.switch input:checked+.slider{background:var(--accent)}
.switch input:checked+.slider::before{transform:translateX(20px)}

/* ── PAGINATION ── */
.pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:24px}
.pagination button{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);padding:8px 14px;border-radius:var(--radius);cursor:pointer;font-size:.85rem;transition:var(--transition)}
.pagination button:hover:not(:disabled){background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}
.pagination button:disabled{opacity:.4;cursor:not-allowed}
.pagination .page-info{color:var(--text-muted);font-size:.82rem;font-family:var(--font-mono)}

/* ── LOADING OVERLAY ── */
.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(6,8,15,.7);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;pointer-events:none;transition:opacity .3s}
.loading-overlay.show{opacity:1;pointer-events:all}
.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── FOLLOW BUTTON ── */
.btn-follow{background:var(--accent-dim);border:1px solid var(--accent);color:var(--accent);padding:6px 14px;border-radius:var(--radius);cursor:pointer;font-size:.82rem;transition:var(--transition)}
.btn-follow:hover{background:var(--accent);color:#fff}
.btn-follow.following{background:var(--green-dim);border-color:var(--green);color:var(--green)}
.btn-follow.following:hover{background:var(--green);color:#fff}

/* ── SEARCH INPUT DEBOUNCE FEEDBACK ── */
.search-box input.debounce-active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim);animation:pulse-border 1s ease-in-out infinite}
@keyframes pulse-border{0%,100%{box-shadow:0 0 0 3px var(--accent-dim)}50%{box-shadow:0 0 0 5px var(--accent-glow)}}
@keyframes blink-dot{0%,100%{opacity:1;box-shadow:0 0 8px var(--green)}50%{opacity:.3;box-shadow:0 0 2px var(--green)}}
.blink-active{animation:blink-dot 1.2s ease-in-out infinite}

/* ── BILLING ── */
.billing-status {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
  margin-bottom: 24px;
}
.billing-status-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 20px;
  text-align: center;
}
.billing-status-card .label { color: var(--text-muted); font-size: .85rem; margin-bottom: 8px; }
.billing-status-card .value { font-size: 1.8rem; font-weight: 700; }
.billing-status-card .value.gold { color: var(--amber); }
.billing-status-card .value.green { color: var(--green); }

.billing-plans {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  margin-bottom: 32px;
}
.plan-card {
  background: var(--bg-card);
  border: 2px solid var(--border);
  border-radius: 16px;
  padding: 28px 24px;
  position: relative;
  transition: all .2s;
  cursor: pointer;
  display: flex;
  flex-direction: column;
}
.plan-card:hover { border-color: var(--accent); transform: translateY(-2px); }
.plan-card.current { border-color: var(--green); }
.plan-card .plan-name { font-size: 1.3rem; font-weight: 700; margin-bottom: 4px; }
.plan-card .plan-price { font-size: 2rem; font-weight: 800; margin: 12px 0; }
.plan-card .plan-price .unit { font-size: .85rem; font-weight: 400; color: var(--text-muted); }
.plan-card .plan-features { list-style: none; padding: 0; margin: 16px 0; display: flex !important; flex-direction: column; gap: 8px; }
.plan-card .plan-feature-item { display: flex; align-items: flex-start; gap: 10px; font-size: .85rem; color: #e8ecf4; line-height: 1.5; }
.plan-card .plan-feature-icon { width: 24px; text-align: center; flex-shrink: 0; font-size: 1rem; line-height: 1.5; }
.plan-card .btn-purchase {
  width: 100%; padding: 12px; border: none; border-radius: 8px;
  font-size: 1rem; font-weight: 600; cursor: pointer; margin-top: auto;
  background: var(--accent); color: white; transition: opacity .2s;
}
.plan-card .btn-purchase:hover { opacity: .85; }
.plan-card .btn-purchase:disabled { background: var(--text-muted); cursor: not-allowed; }
.plan-card .badge-current {
  position: absolute; top: -10px; right: 16px;
  background: var(--green); color: white; font-size: .75rem;
  padding: 4px 12px; border-radius: 12px; font-weight: 600;
}

.billing-log {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
}
.billing-log-header {
  padding: 16px 20px;
  border-bottom: 1px solid var(--border);
  font-weight: 600;
}
.billing-log .log-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.billing-log table { width: 100%; border-collapse: collapse; min-width: 480px; }
.billing-log th, .billing-log td { padding: 10px 16px; text-align: left; font-size: .85rem; white-space: nowrap; }
.billing-log th { color: var(--text-muted); font-weight: 500; border-bottom: 1px solid var(--border); }
.billing-log tr:hover { background: rgba(255,255,255,.02); }
.billing-log .log-mobile-cards { display: none; padding: 12px; }
.billing-log .log-card { padding: 12px 14px; background: var(--bg-deep); border-radius: 10px; margin-bottom: 8px; }
.billing-log .log-card-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.billing-log .log-card-action { font-size: .85rem; font-weight: 600; color: var(--text-primary); }
.billing-log .log-card-amount { font-size: .95rem; font-weight: 700; font-family: var(--font-mono); }
.billing-log .log-card-detail { display: flex; justify-content: space-between; align-items: center; font-size: .75rem; color: var(--text-muted); }
.billing-log .log-card-time { }
.billing-log .log-card-balance { font-family: var(--font-mono); }
.billing-log .log-card-remark { font-size: .75rem; color: var(--text-muted); margin-top: 4px; }
/* ── 手机端全面缩小化 ── */
@media(max-width:600px){
  html{font-size:12px}
  .page{padding:10px 8px;padding-top:8px}
  .page h2{font-size:.95rem!important}
  .page-header p{font-size:.7rem!important}
  .card{padding:10px!important;border-radius:8px!important}
  .card-grid{gap:8px!important}
  .stat-grid{grid-template-columns:repeat(2,1fr)!important;gap:6px!important}
  .stat-card{padding:10px 8px!important}
  .stat-card .stat-label{font-size:.6rem!important}
  .stat-card .stat-value{font-size:.95rem!important}
  .stat-card .stat-change{font-size:.65rem!important}
  .btn{padding:8px 14px!important;font-size:.78rem!important}
  .btn-sm{padding:5px 10px!important;font-size:.7rem!important}
  .form-input{padding:8px 10px!important;font-size:.82rem!important}
  input,textarea,select{font-size:.82rem!important}
  .modal-content{padding:16px!important;margin:10px!important;border-radius:12px!important}
  .modal-content h3{font-size:.95rem!important}
  .tag{font-size:.62rem!important;padding:1px 6px!important}
  .badge{font-size:.55rem!important;padding:1px 5px!important;min-width:16px!important;height:16px!important;line-height:14px!important}
  .pagination button{padding:5px 10px!important;font-size:.75rem!important}
  .pagination .page-info{font-size:.72rem!important}
  .empty-state{padding:20px 10px!important}
  .empty-state .empty-icon{font-size:2rem!important}
  .empty-state h3{font-size:.9rem!important}
  .empty-state p{font-size:.72rem!important}
  .config-section h3{font-size:.85rem!important}
  .config-section p{font-size:.68rem!important}
  .config-item{padding:8px 10px!important;gap:6px!important}
  .config-title{font-size:.82rem!important}
  .config-desc{font-size:.68rem!important}
  .config-status{font-size:.62rem!important;padding:2px 6px!important}
  .nav-item{padding:10px 12px!important;font-size:.82rem!important}
  .sidebar{width:220px!important}
  .sidebar .nav-icon{font-size:1rem!important;width:22px!important}
  .sidebar .nav-label{font-size:.78rem!important}
  .hero-title{font-size:1rem!important}
  .hero-sub{font-size:.7rem!important}
  .detail-stats{grid-template-columns:repeat(2,1fr)!important;gap:6px!important}
  .detail-stat .ds-value{font-size:.85rem!important}
  .detail-stat .ds-label{font-size:.62rem!important}
  .market-grid{gap:8px!important}
  .strategy-card{padding:12px!important}
  .strategy-card .strategy-name{font-size:.85rem!important}
  .strategy-card .strategy-author{font-size:.65rem!important}
  .strategy-card .metrics .metric-val{font-size:.78rem!important}
  .strategy-card .metrics .metric-label{font-size:.58rem!important}
  .strategy-card .card-footer .btn-follow{padding:4px 8px!important;font-size:.65rem!important}
  .auth-card{padding:20px!important}
  .auth-brand h1{font-size:1.3rem!important}
  .auth-brand p{font-size:.78rem!important}
  .auth-tab{font-size:.78rem!important;padding:8px!important}
  .billing-plans{gap:8px!important}
  .billing-plan-card{padding:14px!important}
  .billing-plan-card .plan-name{font-size:.85rem!important}
  .billing-plan-card .plan-price{font-size:1.3rem!important}
  .billing-status-card .value{font-size:1.1rem!important}
  .log-card{padding:8px 10px!important}
  .log-card-action{font-size:.78rem!important}
  .log-card-amount{font-size:.85rem!important}
  #page-admin [style*="grid-template-columns:repeat(auto-fit"]{grid-template-columns:repeat(2,1fr)!important}
  #page-admin .admin-table-wrap tr{padding:8px 10px!important}
  #page-admin .admin-table-wrap td{font-size:.72rem!important}
  #adminStats{grid-template-columns:repeat(3,1fr)!important;gap:6px!important}
  #adminStats [style*="padding"]{padding:10px!important}
  #adminStats [style*="font-size:1.5rem"]{font-size:1.1rem!important}
  #adminStats [style*="font-size:.72rem"]{font-size:.6rem!important}
  #page-signals .signal-detail{padding:10px!important}
  #page-signals .signal-detail .time{font-size:.65rem!important}
  #page-signals .signal-detail .price{font-size:.75rem!important}
  #page-robot .config-item{padding:8px 10px!important}
  #page-robot .config-title{font-size:.78rem!important}
  #page-robot .config-desc{font-size:.65rem!important}
  #page-chat .message{padding:8px 10px!important}
  #page-chat .message-content{font-size:.78rem!important}
  #page-chat .message-time{font-size:.58rem!important}
  #page-detail #detailTrades th,#page-detail #detailTrades td{font-size:.62rem!important;padding:5px 3px!important}
  .billing-log .log-card{padding:8px 10px!important}
  .billing-log .log-card-action{font-size:.78rem!important}
  .billing-log .log-card-amount{font-size:.85rem!important}
  .billing-log .log-card-detail{font-size:.65rem!important}
  #page-gold-bean [style*="font-size:1.5rem"]{font-size:1.2rem!important}
  #page-gold-bean [style*="padding:20px"]{padding:12px!important}
  #page-rescue .card{padding:12px!important}
  #page-rescue textarea{font-size:.75rem!important;padding:8px!important}
  #page-marketplace .card{padding:10px!important}
  .filter-group button{font-size:.68rem!important;padding:4px 8px!important}
  #page-battle .stat-grid{grid-template-columns:repeat(2,1fr)!important}
  #page-battle [style*="font-size:1.5rem"]{font-size:1.1rem!important}
  #auditLogList .log-entry{padding:8px 10px!important;font-size:.72rem!important}
  .audit-detail-toggle{font-size:.62rem!important;padding:2px 6px!important}
  #page-admin .admin-table-wrap td:nth-child(2) [style*="width:30px"]{width:18px!important;height:18px!important;font-size:.5rem!important}
  #page-admin .admin-table-wrap td:nth-child(2) [style*="font-size:.85rem"]{font-size:.7rem!important}
}

/* ── Event contract cards in market ── */
.market-event-card{
  padding:0 !important;
  overflow:visible !important;
}
.market-event-card .card-top{
  display:block !important;
}
.market-event-card > div{
  max-width:100% !important;
}
.market-event-card .strategy-card .metrics{
  display:none !important;
}
