/* ============================================================
   浪七工坊 · 星际版 — 太空指挥中心视觉
   色板：深空蓝紫基底 / 霓虹青 #22D3EE / 霓虹紫 #A78BFA / 亮蓝 #60A5FA
   ============================================================ */
html,body{
  -webkit-user-select:none;-moz-user-select:none;user-select:none;
  -webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;
}
input,textarea,[contenteditable]{
  -webkit-user-select:text;-moz-user-select:text;user-select:text;
}
img{ -webkit-user-drag:none;user-drag:none;pointer-events:auto; }
:root{
  --bg:#05070F;
  --bg-2:#0A0F24;
  --panel:rgba(139,150,255,.07);
  --panel-2:rgba(16,22,48,.55);
  --line:rgba(130,145,255,.18);
  --line-strong:rgba(34,211,238,.5);
  --cyan:#22D3EE;
  --purple:#A78BFA;
  --blue:#60A5FA;
  --txt:#E8EDFF;
  --txt-2:#9AA6CE;
  --txt-3:#5D6890;
  --ok:#34D399;
  --warn:#FBBF24;
  --danger:#F87171;
  --radius-lg:14px;
  --radius-md:10px;
  --radius-sm:7px;
  --font-en:'Orbitron','Noto Sans SC',sans-serif;
  --font-cn:'Noto Sans SC',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:var(--font-cn);
  background:var(--bg);
  color:var(--txt);
  line-height:1.6;
  min-height:100vh;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
::selection{background:rgba(34,211,238,.3)}

/* ---------- 太空背景：星点 + 光晕 ---------- */
.cosmos{
  position:fixed;inset:0;z-index:-2;
  background:
    radial-gradient(1200px 700px at 80% -10%, rgba(96,65,255,.22), transparent 60%),
    radial-gradient(900px 600px at -10% 30%, rgba(34,211,238,.12), transparent 55%),
    radial-gradient(700px 500px at 50% 115%, rgba(34,211,238,.08), transparent 60%),
    linear-gradient(180deg,#070B18 0%,#05070F 55%,#080A18 100%);
}
.cosmos::before{
  content:"";position:absolute;inset:0;
  background-image:
    radial-gradient(1.2px 1.2px at 12% 22%, rgba(255,255,255,.8), transparent 60%),
    radial-gradient(1px 1px at 28% 65%, rgba(200,220,255,.7), transparent 60%),
    radial-gradient(1.4px 1.4px at 42% 12%, rgba(255,255,255,.6), transparent 60%),
    radial-gradient(1px 1px at 58% 38%, rgba(160,200,255,.7), transparent 60%),
    radial-gradient(1.2px 1.2px at 70% 78%, rgba(255,255,255,.55), transparent 60%),
    radial-gradient(1px 1px at 83% 18%, rgba(220,190,255,.7), transparent 60%),
    radial-gradient(1.3px 1.3px at 92% 55%, rgba(255,255,255,.5), transparent 60%),
    radial-gradient(1px 1px at 8% 82%, rgba(190,210,255,.5), transparent 60%),
    radial-gradient(1px 1px at 34% 88%, rgba(255,255,255,.45), transparent 60%),
    radial-gradient(1.2px 1.2px at 64% 8%, rgba(255,255,255,.6), transparent 60%),
    radial-gradient(1px 1px at 88% 88%, rgba(160,230,255,.5), transparent 60%),
    radial-gradient(1px 1px at 18% 45%, rgba(255,255,255,.4), transparent 60%),
    radial-gradient(1.1px 1.1px at 49% 52%, rgba(255,255,255,.45), transparent 60%),
    radial-gradient(1px 1px at 76% 30%, rgba(255,255,255,.5), transparent 60%);
  opacity:.7;
  pointer-events:none;
}
.gridlines{
  position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.5;
  background:
    linear-gradient(rgba(130,145,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(130,145,255,.05) 1px, transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse 90% 70% at 50% 0%, #000 30%, transparent 75%);
  -webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 0%, #000 30%, transparent 75%);
}

/* ---------- 顶部导航 ---------- */
.nav{
  position:sticky;top:0;z-index:50;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  background:rgba(5,8,20,.72);
  border-bottom:1px solid var(--line);
}
.nav-inner{
  max-width:880px;margin:0 auto;padding:0 16px;
  height:54px;display:flex;align-items:center;gap:20px;
}
.brand{display:flex;align-items:center;gap:10px;cursor:pointer;flex-shrink:0}
.brand-mark{
  width:28px;height:28px;border-radius:8px;flex-shrink:0;
  background:linear-gradient(135deg, rgba(34,211,238,.18), rgba(167,139,250,.18));
  border:1px solid var(--line-strong);
  display:grid;place-items:center;
  box-shadow:0 0 18px rgba(34,211,238,.25);
}
.brand-name{
  font-family:var(--font-en);font-weight:900;font-size:15px;letter-spacing:2px;
  background:linear-gradient(90deg,#22D3EE,#A78BFA);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  white-space:nowrap;
}
.brand-sub{font-size:10px;color:var(--txt-3);letter-spacing:1px;line-height:1;margin-top:2px}
.nav-tabs{display:flex;gap:6px;margin-left:auto;align-items:center}
.nav-tab{
  display:flex;align-items:center;gap:7px;
  padding:7px 12px;border-radius:var(--radius-sm);
  color:var(--txt-2);font-size:13px;font-weight:500;cursor:pointer;
  border:1px solid transparent;transition:all .22s ease;white-space:nowrap;
  background:none;font-family:inherit;
}
.nav-tab svg{width:15px;height:15px;opacity:.75;transition:all .22s ease}
.nav-tab:hover{color:var(--txt);background:rgba(139,150,255,.08)}
.nav-tab:active{transform:scale(.94)}
.nav-tab.active{
  color:var(--cyan);
  border-color:rgba(34,211,238,.35);
  background:rgba(34,211,238,.08);
  box-shadow:inset 0 0 16px rgba(34,211,238,.06);
}
.nav-tab.active svg{opacity:1;filter:drop-shadow(0 0 6px rgba(34,211,238,.7))}
.mobile-tabs{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:50;
  background:rgba(6,9,22,.94);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-top:1px solid var(--line);
  padding:6px 8px calc(6px + env(safe-area-inset-bottom));
}
.mobile-tabs .nav-tab{flex:1;flex-direction:column;gap:2px;padding:7px 3px;font-size:10.5px;border-radius:9px;position:relative}
.mobile-tabs .nav-tab svg{width:19px;height:19px;margin-bottom:1px}
.mobile-tabs .nav-tab.active{background:rgba(34,211,238,.12)}
.mobile-tabs .nav-tab.active::after{
  content:'';position:absolute;bottom:2px;left:50%;transform:translateX(-50%);
  width:18px;height:3px;border-radius:2px;background:var(--cyan);
  box-shadow:0 0 8px rgba(34,211,238,.8);
}
.mobile-tabs .nav-tab.active span{font-weight:700}
.mobile-tabs .nav-tab.active svg{transform:scale(1.12)}

/* ---------- 主容器 & 视图切换 ---------- */
.view{display:none;animation:viewIn .3s ease}
.view.active{display:block;animation:viewIn .3s ease}
@keyframes viewIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.container{max-width:880px;margin:0 auto;padding:20px 16px 24px}

/* ---------- Hero ---------- */
.hero{
  position:relative;border-radius:16px;overflow:hidden;
  border:1px solid var(--line);
  min-height:280px;display:flex;align-items:flex-end;
}
.hero-bg{position:absolute;inset:0;background-size:cover;background-position:center}
.hero-bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(5,8,20,.30) 0%, rgba(5,8,20,.45) 40%, rgba(5,8,20,.94) 100%),
    linear-gradient(90deg, rgba(5,8,20,.5), transparent 70%);
}
.hero-body{position:relative;z-index:2;padding:22px;max-width:520px}
.hero-eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-en);font-size:11px;letter-spacing:2.5px;color:var(--cyan);
  border:1px solid rgba(34,211,238,.35);border-radius:999px;
  padding:3px 11px;background:rgba(34,211,238,.07);margin-bottom:12px;
}
.hero-eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px var(--cyan);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.hero h1{
  font-size:clamp(23px,3.8vw,38px);font-weight:900;line-height:1.18;letter-spacing:1px;
  margin-bottom:10px;
}
.hero h1 .hl{
  background:linear-gradient(90deg,#22D3EE,#A78BFA,#60A5FA);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero p{color:var(--txt-2);font-size:13px;max-width:460px;margin-bottom:16px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap}

.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 16px;border-radius:var(--radius-sm);
  font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;
  border:1px solid transparent;transition:all .22s ease;text-decoration:none;
}
.btn-primary{
  background:linear-gradient(135deg, rgba(34,211,238,.2), rgba(167,139,250,.2));
  border-color:rgba(34,211,238,.55);color:var(--cyan);
  box-shadow:0 0 22px rgba(34,211,238,.18);
}
.btn-primary:hover{box-shadow:0 0 32px rgba(34,211,238,.4);transform:translateY(-1px)}
.btn-ghost{border-color:var(--line);color:var(--txt-2);background:rgba(139,150,255,.05)}
.btn-ghost:hover{border-color:rgba(167,139,250,.55);color:var(--purple)}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn-ok{
  background:linear-gradient(135deg, rgba(52,211,153,.22), rgba(34,211,238,.18));
  border-color:rgba(52,211,153,.5);color:#6EE7B7;
}
.btn-ok:hover{box-shadow:0 0 26px rgba(52,211,153,.3)}

/* ---------- 区块通用 ---------- */
.section{margin-top:20px}
.sec-head{display:flex;align-items:flex-end;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.sec-title{font-size:17px;font-weight:700;letter-spacing:.5px;display:flex;align-items:center;gap:10px}
.sec-title .bar{
  width:3px;height:16px;border-radius:2px;flex-shrink:0;
  background:linear-gradient(180deg,var(--cyan),var(--purple));
  box-shadow:0 0 12px rgba(34,211,238,.5);
}
 .sec-desc{color:var(--txt-3);font-size:12px;margin-left:auto}
.card{
  background:linear-gradient(160deg, rgba(139,150,255,.08), rgba(16,22,48,.5));
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
}

/* ---------- 设备检测仪表 ---------- */
.device-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.device-cell{
  background:linear-gradient(160deg, rgba(139,150,255,.06), rgba(16,22,48,.4));
  border:1px solid var(--line);border-radius:var(--radius-md);
  padding:8px 10px;transition:border-color .25s, box-shadow .25s, transform .25s;
}
.device-cell.scanning{border-color:rgba(34,211,238,.7);box-shadow:0 0 14px rgba(34,211,238,.2)}
.device-cell .k{font-size:10.5px;color:var(--txt-3);letter-spacing:.5px;display:flex;align-items:center;gap:5px}
.device-cell .k svg{width:11px;height:11px;opacity:.7}
.device-cell .v{
  font-size:clamp(12px,1.3vw,14px);font-weight:700;margin-top:2px;
  color:var(--txt);font-family:var(--font-cn);
  word-break:break-all;
}
.device-cell .v.cy{color:var(--cyan);text-shadow:0 0 12px rgba(34,211,238,.45)}
.device-cell .v.pu{color:var(--purple);text-shadow:0 0 12px rgba(167,139,250,.4)}
.reco-banner{
  margin-top:10px;padding:8px 12px;border-radius:var(--radius-md);
  border:1px dashed rgba(34,211,238,.4);
  background:linear-gradient(90deg, rgba(34,211,238,.08), rgba(167,139,250,.08));
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
}
.reco-banner .label{font-size:12px;color:var(--txt-2)}
.reco-banner .value{
  font-size:14px;font-weight:900;font-family:var(--font-en);
  color:var(--cyan);text-shadow:0 0 14px rgba(34,211,238,.5);
  letter-spacing:1px;
}
.reco-banner .note{font-size:11px;color:var(--txt-3);margin-left:auto}

/* ---------- 画质一键设置 ---------- */
.preset-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.preset{
  padding:13px 15px;border-radius:var(--radius-lg);cursor:pointer;position:relative;overflow:hidden;
  background:linear-gradient(160deg, rgba(139,150,255,.07), rgba(16,22,48,.45));
  border:1px solid var(--line);
  transition:transform .22s ease, border-color .22s ease, box-shadow .22s ease;
}
.preset::before{
  content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg, transparent, var(--cyan), transparent);
  opacity:0;transition:opacity .25s;
}
.preset:hover{transform:translateY(-3px);border-color:rgba(34,211,238,.4)}
.preset:hover::before{opacity:.8}
.preset.selected{
  border-color:var(--line-strong);
  background:linear-gradient(160deg, rgba(34,211,238,.12), rgba(167,139,250,.1));
  box-shadow:0 0 26px rgba(34,211,238,.18);
}
.preset.selected::before{opacity:1}
.preset .p-name{font-size:14px;font-weight:800;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-right:52px}
.preset .p-name .tier{
  font-family:var(--font-en);font-size:11px;font-weight:700;letter-spacing:1px;
  padding:2px 8px;border-radius:999px;
  color:var(--txt-2);border:1px solid var(--line);background:rgba(5,8,20,.4);
}
  .preset .p-desc{font-size:11.5px;color:var(--txt-2);margin-top:8px;line-height:1.5;padding-right:40px}
.preset .p-tag{
  margin-left:auto;flex-shrink:0;
  font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;
  background:rgba(251,191,36,.14);color:var(--warn);border:1px solid rgba(251,191,36,.4);
}
.preset .p-tag.reco{background:rgba(34,211,238,.12);color:var(--cyan);border-color:rgba(34,211,238,.45)}
.preset .p-tag.done{background:rgba(52,211,153,.12);color:var(--ok);border-color:rgba(52,211,153,.45)}
.preset .p-check{
  position:absolute;bottom:11px;right:11px;width:18px;height:22px;border-radius:50%;
  border:1.5px solid var(--line);display:grid;place-items:center;color:transparent;transition:all .2s;
}
.preset .p-check svg{width:12px;height:12px;stroke:currentColor}
.preset.selected .p-check{background:linear-gradient(135deg,var(--cyan),var(--purple));border-color:transparent;color:#041018}

/* ---------- 弹窗 ---------- */
.modal-mask{
  position:fixed;inset:0;z-index:80;display:none;
  background:rgba(3,5,12,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  align-items:center;justify-content:center;padding:20px;
}
.modal-mask.show{display:flex;animation:fadeIn .25s}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{
  width:100%;max-width:380px;border-radius:var(--radius-lg);
  background:linear-gradient(170deg,#101633,#0A0E24);
  border:1px solid var(--line-strong);
  box-shadow:0 0 60px rgba(34,211,238,.15), 0 24px 60px rgba(0,0,0,.6);
  padding:20px;animation:popIn .28s cubic-bezier(.2,1.4,.4,1);
}
@keyframes popIn{from{opacity:0;transform:scale(.92) translateY(10px)}to{opacity:1;transform:none}}
.modal h3{font-size:15px;font-weight:800;display:flex;align-items:center;gap:10px}
.modal h3 .ic{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,rgba(34,211,238,.2),rgba(167,139,250,.2));border:1px solid var(--line-strong);display:grid;place-items:center;font-size:15px}
.modal p{color:var(--txt-2);font-size:12.5px;margin:11px 0 16px;line-height:1.65}
.modal-actions{display:flex;flex-direction:column;gap:10px}
.modal-actions .btn{justify-content:center;padding:13px}
.modal .hint{font-size:12px;color:var(--txt-3);text-align:center;margin-top:12px}
.modal-close{position:absolute;top:16px;right:16px;width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--txt-2);cursor:pointer;display:grid;place-items:center}
.modal-close:hover{color:var(--txt);border-color:var(--line-strong)}

/* ---------- 自定义页 ---------- */
.custom-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:14px}
.opt-card{padding:14px}
.opt-card + .opt-card{margin-top:11px}
.opt-title{font-size:13px;font-weight:700;color:var(--txt);display:flex;align-items:center;gap:7px;margin-bottom:10px}
.opt-title .count{margin-left:auto;font-size:12px;color:var(--txt-3);font-weight:400}
.chip-row{display:flex;gap:8px;flex-wrap:wrap}
.chip{
  padding:7px 13px;border-radius:999px;cursor:pointer;font-size:12.5px;
  border:1px solid var(--line);background:rgba(139,150,255,.05);color:var(--txt-2);
  transition:all .2s ease;user-select:none;
}
.chip:hover{border-color:rgba(167,139,250,.5);color:var(--txt)}
.chip.on{
  border-color:var(--line-strong);color:var(--cyan);
  background:rgba(34,211,238,.1);
  box-shadow:0 0 14px rgba(34,211,238,.15);
}
.toggle-row{display:flex;gap:10px;flex-wrap:wrap}
.toggle{
  display:flex;align-items:center;gap:8px;
  padding:8px 11px;border-radius:var(--radius-sm);cursor:pointer;
  border:1px solid var(--line);background:rgba(139,150,255,.05);user-select:none;
  transition:all .2s;font-size:12.5px;color:var(--txt-2);
}
.toggle .sw{width:30px;height:17px;border-radius:99px;background:rgba(93,104,144,.35);position:relative;transition:background .2s;flex-shrink:0}
.toggle .sw::after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:#8A94B8;transition:all .2s}
.toggle.on{color:var(--txt);border-color:rgba(52,211,153,.45);background:rgba(52,211,153,.08)}
.toggle.on .sw{background:rgba(52,211,153,.55)}
.toggle.on .sw::after{left:15px;background:#fff}
.toolbar{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.cmp-wrap{margin-top:10px;position:relative;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--line);aspect-ratio:4/3;background:#0A0E24}
.cmp-wrap img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.cmp-wrap .low{filter:saturate(.55) blur(2.2px) contrast(.88) brightness(.78)}
.cmp-wrap .high{clip-path:inset(0 calc(100% - var(--pos,50%)) 0 0)}
.cmp-divider{
  position:absolute;top:0;bottom:0;left:var(--pos,50%);width:2.5px;transform:translateX(-1px);
  background:var(--cyan);box-shadow:0 0 16px rgba(34,211,238,.8);cursor:ew-resize;z-index:5;
}
.cmp-divider::after{
  content:"◂ ▸";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  background:rgba(6,10,24,.9);border:1px solid var(--cyan);border-radius:6px;
  color:var(--cyan);font-size:10px;padding:5px 8px;white-space:nowrap;letter-spacing:2px;
}
.cmp-badge{
  position:absolute;top:10px;left:10px;z-index:4;
  font-size:11px;padding:4px 10px;border-radius:6px;color:var(--txt);background:rgba(5,8,20,.7);border:1px solid var(--line);
}
.cmp-badge.low{color:#B9C2E0}
.cmp-badge.high{left:auto;right:10px;color:var(--cyan);border-color:rgba(34,211,238,.4)}
.cmp-fps{
  position:absolute;bottom:10px;left:50%;transform:translateX(-50%);z-index:4;
  font-family:var(--font-en);font-size:13px;font-weight:900;letter-spacing:1px;
  color:var(--cyan);text-shadow:0 0 12px rgba(34,211,238,.7);
  background:rgba(5,8,20,.75);padding:4px 12px;border-radius:6px;border:1px solid rgba(34,211,238,.35);
}
.cmp-tip{font-size:11px;color:var(--txt-3);text-align:center;margin-top:6px}

/* ---------- 改枪工坊 ---------- */
.shop-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:14px}
.search-wrap{display:flex;gap:10px;margin-bottom:14px}
.search-wrap input{
  flex:1;padding:9px 13px;border-radius:var(--radius-sm);
  background:rgba(139,150,255,.06);border:1px solid var(--line);color:var(--txt);
  font-family:inherit;font-size:16px;outline:none;transition:border-color .2s;
}
.search-wrap input::placeholder{color:var(--txt-3)}
.search-wrap input:focus{border-color:var(--line-strong)}
.cat-row{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.gun-card{
  display:flex;gap:12px;padding:11px;border-radius:var(--radius-md);cursor:pointer;
  border:1px solid var(--line);background:linear-gradient(160deg, rgba(139,150,255,.06), rgba(16,22,48,.4));
  transition:all .2s ease;align-items:center;margin-bottom:10px;
}
.gun-card:hover{border-color:rgba(167,139,250,.45);transform:translateX(3px)}
.gun-card.on{border-color:var(--line-strong);background:linear-gradient(160deg, rgba(34,211,238,.1), rgba(16,22,48,.45));box-shadow:0 0 18px rgba(34,211,238,.12)}
.gun-svg{
  width:88px;height:44px;flex-shrink:0;border-radius:8px;
  background:rgba(5,8,20,.5);border:1px solid var(--line);
  display:grid;place-items:center;overflow:hidden;
}
.gun-svg svg{width:80%;height:80%}
.gun-info{flex:1;min-width:0}
.gun-name{font-size:15.5px;font-weight:700;display:flex;align-items:center;gap:8px}
.gun-cat{font-size:11px;color:var(--txt-3);letter-spacing:1px;margin-top:3px}
.gun-stats{display:flex;gap:14px;margin-top:7px;flex-wrap:wrap}
.gun-stats .s{font-size:11.5px;color:var(--txt-2)}
.gun-stats .s b{color:var(--cyan);font-weight:700;margin-left:3px}
.empty-state{text-align:center;padding:46px 20px;color:var(--txt-3);font-size:14px}
.empty-state svg{width:44px;height:44px;opacity:.4;margin-bottom:12px}
.panel-title{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:14px}
.panel-title .cnt{margin-left:auto;font-size:12px;color:var(--cyan);font-weight:600}
.attach-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.attach{
  padding:8px 14px;border-radius:999px;font-size:12.5px;cursor:pointer;
  border:1px solid var(--line);background:rgba(139,150,255,.05);color:var(--txt-2);
  transition:all .2s;user-select:none;
}
.attach.on{border-color:rgba(34,211,238,.55);color:var(--cyan);background:rgba(34,211,238,.09)}
.spec-list{border-top:1px solid var(--line)}
.spec-row{display:flex;justify-content:space-between;padding:9px 2px;border-bottom:1px solid rgba(130,145,255,.1);font-size:13px}
.spec-row .k{color:var(--txt-2)}
.spec-row .v{color:var(--txt);font-weight:600}
.market{background:rgba(5,8,20,.4);border-radius:var(--radius-md);border:1px solid var(--line);overflow:hidden}
.market-head{padding:12px 16px;font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line)}
.market-head .live{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 8px var(--ok);animation:pulse 1.8s infinite}
.market table{width:100%;border-collapse:collapse;table-layout:fixed}
.market th,.market td{padding:9px 14px;text-align:left;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.market th{color:var(--txt-3);font-weight:500;border-bottom:1px solid var(--line)}
.market td{border-bottom:1px solid rgba(130,145,255,.08)}
.up{color:var(--ok)}.down{color:var(--danger)}
.demo-note{font-size:11px;color:var(--txt-3);padding:8px 14px;text-align:right}

/* ---------- 准星精灵 ---------- */
.ch-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:14px}
.ch-preview{padding:24px;display:flex;flex-direction:column;align-items:center;gap:18px;position:relative;overflow:hidden}
.ring-bg{
  width:min(300px,80%);aspect-ratio:1;border-radius:50%;position:relative;
  background:
    radial-gradient(circle at center, rgba(34,211,238,.14) 0 12%, transparent 13%),
    radial-gradient(circle, transparent 0 44%, rgba(130,145,255,.25) 45% 46%, transparent 47%),
    radial-gradient(circle, transparent 0 62%, rgba(130,145,255,.18) 63% 64%, transparent 65%),
    radial-gradient(circle at center, transparent 0 86%, rgba(130,145,255,.12) 87% 88%, transparent 89%);
  border:1px solid rgba(130,145,255,.3);
  display:grid;place-items:center;
  box-shadow:inset 0 0 60px rgba(34,211,238,.08), 0 0 40px rgba(96,65,255,.15);
}
.ring-bg svg{width:78%;height:78%}
.ch-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.ch-pool .card{padding:20px}
.ch-pool-title{font-size:14px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.ch-pool-title .cnt{margin-left:auto;font-size:12px;color:var(--txt-3);font-weight:400}
.ch-grid-12{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ch-item{
  aspect-ratio:1;border-radius:var(--radius-md);cursor:pointer;position:relative;
  border:1px solid var(--line);background:
    radial-gradient(circle at center, transparent 0 40%, rgba(130,145,255,.12) 41% 43%, transparent 44%),
    rgba(139,150,255,.05);
  display:grid;place-items:center;transition:all .2s;
}
.ch-item:hover{border-color:rgba(167,139,250,.5)}
.ch-item.on{border-color:var(--line-strong);box-shadow:0 0 18px rgba(34,211,238,.2);background:radial-gradient(circle at center, rgba(34,211,238,.16) 0 42%, rgba(34,211,238,.05) 43% 45%, transparent 46%)}
.ch-item svg{width:58%;height:58%}
.ch-item .tag{
  position:absolute;bottom:5px;left:0;right:0;text-align:center;
  font-size:9.5px;color:var(--txt-3);pointer-events:none;white-space:nowrap;overflow:hidden;
}
.ch-settings{margin-top:11px;padding:16px;border-radius:var(--radius-md);border:1px solid var(--line);background:rgba(139,150,255,.04)}
.set-row{display:flex;align-items:center;gap:14px;margin-bottom:12px;flex-wrap:wrap}
.set-row:last-child{margin-bottom:0}
.set-label{font-size:12.5px;color:var(--txt-2);width:64px;flex-shrink:0}
.set-row input[type=range]{flex:1;accent-color:var(--cyan);min-width:120px}
.set-row input[type=color]{width:42px;height:30px;border:none;border-radius:6px;background:transparent;cursor:pointer}
.set-row input[type=color]::-webkit-color-swatch-wrapper{padding:2px}
.set-row input[type=color]::-webkit-color-swatch{border-radius:5px;border:1px solid var(--line)}
.color-chips{display:flex;gap:8px;flex-wrap:wrap}
.color-chip{width:26px;height:26px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:all .15s}
.color-chip.on{border-color:#fff;box-shadow:0 0 10px rgba(255,255,255,.4)}
.range-val{font-size:12px;color:var(--cyan);font-family:var(--font-en);width:34px;text-align:right}

/* ---------- 免责声明 ---------- */
.legal{padding:20px;line-height:1.85}
.legal h2{font-size:17px;font-weight:800;margin-bottom:14px;display:flex;align-items:center;gap:10px}
.legal p,.legal li{color:var(--txt-2);font-size:13px;margin-bottom:10px}
.legal ul{padding-left:22px}
.legal .warn{border-left:3px solid var(--warn);padding:12px 16px;background:rgba(251,191,36,.07);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:16px 0}

/* ---------- Footer ---------- */
.footer{
  border-top:1px solid var(--line);margin-top:10px;
  padding:10px 16px calc(14px + env(safe-area-inset-bottom));
  text-align:center;color:var(--txt-3);font-size:11.5px;line-height:1.8;
}
.footer b{color:var(--txt-2);font-weight:600}
/* ---------- Toast ---------- */
.toast{
  position:fixed;left:50%;bottom:88px;transform:translateX(-50%) translateY(16px);
  background:rgba(10,14,36,.95);border:1px solid var(--line-strong);
  color:var(--txt);padding:9px 18px;border-radius:999px;font-size:12.5px;
  box-shadow:0 10px 34px rgba(0,0,0,.5), 0 0 20px rgba(34,211,238,.15);
  opacity:0;pointer-events:none;transition:all .3s ease;z-index:90;max-width:88vw;text-align:center;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- 准星精灵（新布局） ---------- */
.ch-head{display:flex;gap:12px;align-items:stretch}
.ch-preview-box{
  flex:1;min-height:150px;border-radius:var(--radius-md);position:relative;overflow:hidden;
  background:radial-gradient(circle at center, rgba(34,211,238,.08), rgba(10,14,36,.6));
  border:1px solid var(--line);display:grid;place-items:center;
}
.ch-preview-box .ph{position:absolute;top:10px;left:12px;font-size:11px;color:var(--txt-3)}
.ch-preview-box .ring-mini{
  width:110px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;
  border:1px solid rgba(130,145,255,.3);
  background:radial-gradient(circle, transparent 0 55%, rgba(130,145,255,.18) 56% 57%, transparent 58%);
}
.ch-preview-box .ring-mini svg{width:70%;height:70%}
.ch-activate{
  width:120px;border:none;cursor:pointer;border-radius:var(--radius-md);
  background:linear-gradient(160deg, rgba(34,211,238,.22), rgba(167,139,250,.22));
  border:1px solid var(--line-strong);color:var(--txt);
  font-family:inherit;font-size:14px;font-weight:700;letter-spacing:1px;
  transition:all .2s;
}
.ch-activate:hover{box-shadow:0 0 22px rgba(34,211,238,.35)}
.ch-activate.on{background:linear-gradient(160deg, rgba(52,211,153,.28), rgba(34,211,238,.2));border-color:rgba(52,211,153,.55);color:#6EE7B7}
.ch-code-row{display:flex;gap:10px;margin-top:12px}
.ch-code-row input{
  flex:1;padding:10px 14px;border-radius:var(--radius-sm);
  background:rgba(139,150,255,.06);border:1px solid var(--line);color:var(--txt);
  font-family:var(--font-en);font-size:13px;letter-spacing:1px;outline:none;
}
.ch-code-row .copy-btn{
  padding:0 18px;border-radius:var(--radius-sm);cursor:pointer;
  background:rgba(34,211,238,.12);border:1px solid rgba(34,211,238,.45);
  color:var(--cyan);font-family:inherit;font-size:13px;font-weight:600;white-space:nowrap;
}
.ch-code-row .copy-btn:hover{background:rgba(34,211,238,.22)}

/* ---------- 比例修改（FOV） ---------- */
.fov-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.fov-card{
  padding:14px 16px;border-radius:var(--radius-md);cursor:pointer;position:relative;
  border:1px solid var(--line);background:linear-gradient(160deg, rgba(139,150,255,.07), rgba(16,22,48,.45));
  transition:all .2s;
}
.fov-card:hover{border-color:rgba(34,211,238,.4)}
.fov-card.on{border-color:var(--line-strong);background:linear-gradient(160deg, rgba(34,211,238,.12), rgba(167,139,250,.1));box-shadow:0 0 20px rgba(34,211,238,.15)}
.fov-card .fn{font-size:14px;font-weight:800;display:flex;align-items:center;gap:8px}
.fov-card .fn .fv{font-family:var(--font-en);color:var(--cyan)}
.fov-card .fd{font-size:11.5px;color:var(--txt-2);margin-top:5px}
.fov-card .ftag{
  position:absolute;top:10px;right:12px;font-size:10.5px;font-weight:700;
  padding:2px 8px;border-radius:999px;background:rgba(52,211,153,.14);color:var(--ok);
}
.fov-levels{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.fov-lvl{
  padding:12px 14px;border-radius:var(--radius-md);border:1px solid var(--line);
  background:rgba(139,150,255,.05);
}
.fov-lvl .lt{font-size:12px;color:var(--cyan);font-weight:700}
.fov-lvl .ld{font-size:12px;color:var(--txt-2);margin-top:4px;line-height:1.5}
.fov-slider-row{
  margin-top:14px;padding:16px;border-radius:var(--radius-md);
  border:1px solid var(--line);background:rgba(139,150,255,.05);
}
.fov-slider-row .sr-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.fov-slider-row .sr-l{font-size:13px;color:var(--txt-2)}
.fov-slider-row .sr-v{font-family:var(--font-en);font-size:22px;font-weight:900;color:var(--cyan);text-shadow:0 0 14px rgba(34,211,238,.5)}
.fov-slider-row input[type=range]{width:100%;accent-color:var(--cyan)}
.fov-slider-row .sr-range{display:flex;justify-content:space-between;font-size:11px;color:var(--txt-3);margin-top:4px}
.fov-confirm{
  margin-top:12px;width:100%;padding:13px;border-radius:var(--radius-md);cursor:pointer;
  border:none;background:linear-gradient(135deg, rgba(34,211,238,.3), rgba(167,139,250,.3));
  color:#041018;font-family:inherit;font-size:14px;font-weight:800;letter-spacing:2px;
  box-shadow:0 0 24px rgba(34,211,238,.25);
}
.fov-confirm:hover{box-shadow:0 0 34px rgba(34,211,238,.45)}

/* ---------- 响应式 ---------- */
@media (max-width:900px){
  .nav-tabs{display:none}
  .mobile-tabs{display:flex}
  .container{padding:12px 12px 14px}
  .preset-grid{grid-template-columns:repeat(2,1fr)}
  .device-grid{grid-template-columns:repeat(2,1fr)}
  .custom-grid,.shop-grid,.ch-grid{grid-template-columns:1fr}
  .hero{min-height:240px}
  .hero-body{padding:18px 16px}
  .sec-desc{margin-left:0;width:100%}
  .ch-grid-12{grid-template-columns:repeat(4,1fr)}
  .reco-banner .note{width:100%;margin-left:0}
  .footer{padding-bottom:calc(74px + env(safe-area-inset-bottom))}
}
@media (max-width:520px){
  .preset-grid{grid-template-columns:1fr}
  .device-grid{grid-template-columns:1fr 1fr}
  .ch-grid-12{grid-template-columns:repeat(4,1fr)}
  .brand-sub{display:none}
  .nav-inner{gap:14px}
}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}
}
/* ===== 准星精灵专用弹窗 ===== */
.ch-modal{
  width:min(92vw,420px);
  background:#0d1526;border:1px solid rgba(52,211,153,.3);border-radius:16px;
  padding:22px 20px;box-shadow:0 20px 60px rgba(0,0,0,.5);
}
.ch-modal-title{
  display:flex;align-items:center;justify-content:center;gap:8px;
  font-size:18px;font-weight:800;color:#fff;margin-bottom:6px;
}
.ch-modal-sub{
  text-align:center;font-size:12.5px;color:#9aa5c4;margin-bottom:16px;
}
.ch-modal-list{
  max-height:280px;overflow-y:auto;
  background:#080f1e;border:1px solid rgba(52,211,153,.15);border-radius:10px;
  padding:8px 12px;margin-bottom:14px;
}
.ch-modal-list::-webkit-scrollbar{width:4px}
.ch-modal-list::-webkit-scrollbar-thumb{background:rgba(52,211,153,.3);border-radius:2px}
.ch-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:9px 0;border-bottom:1px solid rgba(255,255,255,.05);
  font-size:13px;
}
.ch-row:last-child{border-bottom:none}
.ch-row .nm{color:#c8d0e8;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-row .cd{color:#34D399;font-family:monospace;font-size:12px;flex-shrink:0;margin-left:10px}
.ch-modal-tip{
  text-align:center;font-size:12px;color:#7a85a8;margin-bottom:16px;line-height:1.6;
}
.ch-modal-btns{display:flex;gap:10px}
.ch-modal-btn{
  flex:1;padding:12px;border-radius:10px;border:none;cursor:pointer;
  font-size:14px;font-weight:700;font-family:inherit;transition:all .2s;
}
.ch-modal-btn.ghost{
  background:transparent;border:1px solid rgba(255,255,255,.15);color:#c8d0e8;
}
.ch-modal-btn.ghost:hover{background:rgba(255,255,255,.06)}
.ch-modal-btn.main{
  background:#34D399;color:#06281a;
}
.ch-modal-btn.main:hover{box-shadow:0 0 20px rgba(52,211,153,.4)}
