/* ═══════════════════════════════════════════════════════════════════════════
   设计语言 v3 —— 赛博朋克 · 深色霓虹 · 废机械银
   ── 为什么改 ──
   反馈：① 球的黑眼珠太恐怖，要「机器人 / 具身智能」的眼睛；
         ② 身体用废旧机械感的银色；
         ③ 整个网站往赛博朋克靠；
         ④ **不是照搬旧站，是在旧站的设计上做优化，以用户体验感为主**。
   ── 旧站的骨架保留、设计做优化（不是照搬）──
   保留的信息架构（旧站实测骨架）：顶部提示条 → 头部 → banner → 目的地搜索 →
   地区标签 + 国家卡网格 → 快速指南 → 深色 AI 段 → 精品专区 → 常见问题 → 页脚。
   下面是这一次针对**体验**做的九处优化，每一条都能对上一个旧站的具体毛病：
     1 搜索前置    旧站搜索框压在 banner 下沿、宽 400px、手机上几乎点不到
                   → 首屏主入口，可键盘操作，附热门目的地一键直达
     2 介质前置    旧站把 eSIM / 实体卡 埋在「快速指南」里，而我们最大的差异化就是它
                   → 提到第二屏，做成可切换的对照区，价格并列
     3 价格可读    旧站「低至 HKD 4.68 /GB」是一整行小灰字，扫不动
                   → 数字用等宽 + 琥珀色放大，单位降一级
     4 整卡可点    旧站只有卡上文字可点
                   → 整卡可点、可 Tab、焦点环可见
     5 层级明确    旧站国家卡是 20px 大字 + 一行小字挤在一起
                   → 国旗 / 名称 / 介质 / 起价 四层分开
     6 少一次跳转  旧站国家卡不给档位信息，必须点进去才知道
                   → 卡上直接给「N 档」与起价
     7 对比度      浅底浅灰字对比不足
                   → 深底上主文字 16:1、次文字 8.5:1、价格 10:1
     8 键盘可达    旧站无焦点样式
                   → 全站 :focus-visible 焦点环
     9 动效克制    只做 200ms 的位移与描边，不闪烁、不 glitch 正文
   ── 赛博朋克的用法（克制版）──
   深蓝黑底（不是纯黑，避免光晕）、单一霓虹青作交互色、琥珀作价格色、
   切角代替圆角、细描边 HUD 框、极低透明度的扫描线与网格。
   发光只用在「可交互」和「关键数据」上，**正文一律不发光**。
   ═══════════════════════════════════════════════════════════════════════════ */
:root{
  /* ── 主题 v6：回到旧站那一版（用户指定 203.81.181.201，实测就是旧站同一个站）──
     下面每个值都来自旧站 /css/app.191c01db.css 的实测统计，不是配出来的。 */
  --bg:#ffffff;          /* 页面底：白 */
  --bg2:#f7f7f8;
  --panel:#ffffff;       /* 卡面：白卡 + #EBEBF3 描边（旧站实测 9 次） */
  --panel2:#f4f7fc;      /* 悬停底 #F4F7FC（旧站实测 3 次） */
  --line:#EBEBF3;        /* 旧站卡片描边/阴影色（实测 9 次） */
  --line2:#A5A5B1;       /* 旧站药丸描边（实测 2 次） */
  --neon:#4b74fb;        /* 旧站主强调色（实测 11 次） */
  --neon2:#c9d6ff;
  --amber:#FF6B3D;       /* 旧站价格橙（实测 2 次） */
  --rust:#FB6D3A;
  --tx:#111111;          /* 正文：近黑（白底 18.9:1） */
  --tx2:#111111;         /* 正文次级：近黑（用户要求：不要灰字） */
  --tx3:#111111;         /* 三级文字：同样近黑，层级改用字号/字重区分 */
  --blue:#4b74fb;
  --navy:#00054b;        /* 旧站标题深蓝（实测 5 次） */
  --ink:#111111;
  --ink2:#111111;
  --ink3:#111111;
  --soft:#F4F7FC;
  --soft2:#F7F7F8;
  --orange:#FF6B3D;
  --orange2:#FB6D3A;
  --red:#E31811;         /* 旧站步骤号红（实测 5 次） */
  --ball:#4b74fb;
  --grad:linear-gradient(70deg,#E0170F 0%,#944E86 50%,#1A58C2 100%);  /* 旧站招牌渐变（实测 4 次） */
  --sec:linear-gradient(79deg,#F7F7F8 0%,#FFFFFF 100%);               /* 旧站区块底（实测 2 次） */
  --sh:0px 8px 30px 0px #EBEBF3;
  --sh2:0px 8px 20px 0px #EBEBF3;
  --sh3:0px 2px 20px 0px rgba(0,0,0,.1);
  --ease:cubic-bezier(.16,1,.3,1);
  --mono:"SF Mono","JetBrains Mono",ui-monospace,Consolas,"Courier New",monospace;
  /* 废机械银：做旧的金属面 */
  --metal:linear-gradient(158deg,#f2f5fa 0%,#cbd4e2 26%,#96a1b4 52%,#6d788c 74%,#4d5768 100%);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-tap-highlight-color:transparent;scroll-behavior:smooth}
body{font-family:"PingFang SC","Microsoft YaHei","Helvetica Neue",Helvetica,Arial,sans-serif;
     font-size:14px;color:var(--tx);background:var(--bg);-webkit-font-smoothing:antialiased;overflow-x:hidden}
/* 扫描线 + 网格：极低透明度，只做气氛，不压正文 */
body::before{display:none}
a{text-decoration:none;color:inherit}
img{display:block;max-width:100%}
button,input{font-family:inherit}
:focus-visible{outline:2px solid var(--neon);outline-offset:2px;border-radius:2px}
.wrap{max-width:1280px;margin:0 auto;padding:0 20px;position:relative;z-index:2}
/* 标题沿用旧站的「渐变字」手法，但换成霓虹青 → 紫 → 品红，且只用于大标题 */
.grad-txt{background:var(--grad);-webkit-background-clip:text;background-clip:text;
          -webkit-text-fill-color:transparent;color:transparent;font-weight:bold}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* ── 顶部提示条（旧站是五段彩虹渐变 fixed 40px；换成深底 + 霓虹底线） ── */
.tips{position:fixed;top:0;left:0;width:100%;height:40px;z-index:99;
      background:linear-gradient(90deg,#fff 0%,#e0170f 20%,#944e86 50%,#1a58c2 80%,#fff 100%);color:#fff;font-size:13px;
      display:flex;align-items:center;justify-content:center;gap:12px}
.tips::after{display:none}
.tips b{color:#fff;font-weight:bold}
.tips .code{background:rgba(255,255,255,.22);color:#fff;border:0;border-radius:100px;
            padding:2px 10px;letter-spacing:.08em}

/* ── 头部（旧站：透明浮在 banner 上，滚动后转白；这里改成滚动后转深底 + 霓虹描边） ── */
.hd{position:fixed;top:40px;left:0;width:100%;z-index:98;transition:background .25s ease,border-color .25s ease}
.hd.scrolled{background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
/* ── 头部一行放下，不许中途换行（用户实测截图报过：「首/页」「全部目的/地」一字一行）─────
   实测（headless Chrome，三语首页，未登录、含语言菜单与账户入口）：
     站标 183px + gap 30 + 导航 606px + gap 30 + 右侧功能区 365px = 1244px，
     加上 .wrap 左右各 20px padding ⇒ **一行放下需要 1284px 视口**；
     而收起导航的断点原来定在 1080px —— 于是 1081～1283px 这段区间里
     头部塞不进去，flex 项被压到 min-content，中文标签就从中间断开（一字一行）。
   三条硬约束（缺一条这个现象就会回来）：
     ① 导航项与右侧功能区的文字一律 nowrap、flex 不收缩（不许被压窄到换行）；
     ② 头部容器 flex-wrap:nowrap，宁可让下面那条窄屏断点接管，也不许折行；
     ③ 收起断点必须 ≥ 实测需求（见文件末尾 .nav-toggle 段：已提到 1220px，
        并把导航项左右 padding 从 15px 收到 12px，把需求压到 1218px 以内）。 */
.hd-in{display:flex;align-items:center;gap:30px;height:72px;flex-wrap:nowrap}
.logo{display:flex;align-items:center;gap:9px;font-size:20px;font-weight:bold;color:var(--tx);flex:none}
.logo img{height:30px;filter:brightness(1.12) saturate(1.05)}
.nav{display:flex;gap:2px;flex-wrap:nowrap}
.nav a{position:relative;padding:9px 12px;font-size:15px;color:var(--tx2);transition:color .2s ease;
       white-space:nowrap;flex:0 0 auto}
.nav a:hover{color:var(--tx)}
.nav a.on{color:var(--blue)}
/* 下划线的左右内缩必须与 .nav a 的 padding 一致，否则选中态下划线会偏出文字两端 */
.nav a.on::after{content:"";position:absolute;left:12px;right:12px;bottom:2px;height:2px;background:var(--blue)}
/* 右侧功能区（币种/语言/账户/登出/购物车）同样不许换行或收缩：
   实测「简体 ▾」被压成两行、「我的账户 cs@sim2ai.com」被压成三行都是这个原因。
   窄屏的紧凑规则在下面 max-width:760px 段里（那里允许账户文字收缩并省略号截断）。 */
.hd-r{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--tx2);font-size:14px;
      white-space:nowrap}
.hd-r > *{flex:none}
.hd-r .sel{padding:6px 12px;border:1px solid var(--line2);cursor:pointer;transition:all .2s ease;font-family:var(--mono);
           font-size:12.5px}
.hd-r .sel:hover{border-color:var(--blue);color:var(--blue)}
.cart{display:flex;align-items:center;gap:7px;padding:7px 15px;background:var(--blue);color:#fff!important;
      font-weight:bold;position:relative;transition:box-shadow .2s ease;
      clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px)}
.cart:hover{background:#3a5fd9}
.cart i{position:absolute;top:-6px;right:-5px;background:var(--rust);color:#150700;font-size:10px;font-style:normal;
        min-width:17px;height:17px;display:grid;place-items:center;font-weight:bold;font-family:var(--mono)}

/* ── Banner（旧站 4 张 750×360 实拍图。深色页面上要给它们做「暗场调色」，否则一片惨白） ── */
.banner{position:relative;height:400px;overflow:hidden;background:#0b1440}
.slides{display:flex;height:100%;transition:transform .7s var(--ease)}
.slides img{width:100%;height:400px;object-fit:cover;flex:none}
.banner::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.58) 0%,rgba(0,0,0,.18) 34%,rgba(0,0,0,0) 62%)}
.bdots{position:absolute;bottom:84px;left:0;width:100%;display:flex;justify-content:center;gap:10px;z-index:3}
.bdots i{width:10px;height:10px;border-radius:100px;background:transparent;border:1px solid #fff;cursor:pointer;transition:background .2s ease}
.bdots i.on{background:#fff}

/* ── 优化 1：目的地搜索。旧站是压在 banner 下沿的小药丸；这里做成首屏主入口 ── */
.dest{position:relative;z-index:4;width:fit-content;margin:-34px auto 0;background:var(--panel);
      border:1px solid var(--line2);height:64px;display:flex;align-items:center;padding:0 12px 0 26px;
      box-shadow:var(--sh3);
      clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px)}
.dest .title{font-size:20px;margin-right:18px;white-space:nowrap;font-weight:bold}
.dest .area{width:420px;height:44px;background:#f5f5f5;border:1px solid transparent;display:flex;align-items:center;
            padding:0 6px 0 18px;margin-right:12px}
.dest .area:focus-within{border-color:var(--neon);box-shadow:0 0 0 1px rgba(62,224,255,.35)}
.dest .area input{flex:1;border:0;outline:0;background:transparent;font-size:15px;color:var(--tx)}
.dest .area input::placeholder{color:var(--tx3)}
.dest .area .sbtn{width:34px;height:34px;background:var(--blue);display:grid;place-items:center;cursor:pointer;
                  border:0;flex:none;transition:background .2s ease}
.dest .area .sbtn:hover{background:#3a63ea}
.dest .hot{font-size:13px;color:var(--tx3);white-space:nowrap}
.dest .hot a{color:var(--neon);margin-left:8px}
.dest .hot a:hover{text-decoration:underline}

/* ── H1 区（旧站首页 0 个 h1 —— 这是本次的 SEO 修正；配色改成霓虹渐变） ── */
.hero{padding:48px 0 6px;text-align:center}
.hero h1{font-size:clamp(28px,3.6vw,46px);line-height:1.3;margin-bottom:16px;letter-spacing:-.01em}
.hero p{font-size:16px;color:var(--tx2);max-width:730px;margin:0 auto;line-height:1.85}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;max-width:920px;margin:34px auto 0}
.stats div{background:var(--sec);border:1px solid var(--line);padding:20px 16px;
           clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
.stats b{display:block;font-family:var(--mono);font-size:34px;line-height:1;color:var(--navy);font-weight:600}
.stats span{display:block;font-size:13px;color:var(--tx3);margin-top:9px}

/* ── 区块通用 ── */
section{padding:64px 0}
.sh{text-align:center;margin-bottom:30px}
.sh h2{font-size:34px;line-height:1.45;display:inline-block}
.sh p{font-size:14px;color:var(--tx3);margin-top:10px}
.sec-soft{background:var(--sec);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

/* ── 标签控件：旧站是 400px 圆角药丸；换成切角分段控件（更硬朗，点击区更大） ── */
.tabs{width:fit-content;margin:0 auto 34px;display:flex;gap:6px;background:#fff;
      border:1px solid var(--line2);padding:6px;
      clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px)}
.tabs button{border:1px solid transparent;background:transparent;cursor:pointer;font-size:15px;color:var(--tx2);
             padding:11px 28px;transition:all .2s ease;white-space:nowrap}
.tabs button:hover{color:var(--blue);border-color:var(--blue)}
.tabs button.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:bold}
.ctabs{width:fit-content;margin:0 auto 30px;display:flex;gap:26px;flex-wrap:wrap;justify-content:center}
.ctabs button{position:relative;border:0;background:none;font-size:17px;color:var(--tx2);cursor:pointer;padding:0 0 9px;
              transition:color .2s ease}
.ctabs button:hover{color:var(--tx)}
.ctabs button.on{color:var(--navy);font-weight:bold}
.ctabs button.on::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--grad)}

/* ── 优化 4/5/6：国家卡。旧站是白卡圆角 10px；这里换来切角深卡 + 四层信息 + 整卡可点 ── */
.grid{display:flex;flex-wrap:wrap;background:var(--sec);border:1px solid var(--line);padding:34px 34px 0}
.ci{width:calc(25% - 30px);margin-right:40px;margin-bottom:34px;display:flex;align-items:center;
    background:#fff;border:1px solid var(--line);
    padding:14px;cursor:pointer;position:relative;
    clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
    transition:border-color .2s ease,transform .2s ease,background .2s ease}
.ci:nth-child(4n){margin-right:0}
.ci::before{content:"";position:absolute;left:0;top:0;width:2px;height:40%;background:var(--neon);opacity:0;
            transition:opacity .2s ease}
.ci:hover,.ci:focus-visible{border-color:#1A59C1;transform:translateY(-2px);background:var(--soft)}
.ci:hover::before,.ci:focus-visible::before{opacity:1}
/* ── 国旗统一形状 ──
   实测 143 张国旗里：138 张是圆形徽章（四角 alpha=0），5 张是方形图（四角不透明），
   尺寸还有 100/80/200 三种 —— 所以直接摆出来形状就花。
   这里按旧站的做法统一：一律裁成 68px 圆 + 3px 白边 + 淡投影
   （旧站实测：border-radius:100px / border:3px solid #FFFFFF / 0 2px 10px rgba(0,0,0,.1)）。
   方形那 5 张会被 object-fit:cover 铺满方框、再由圆角裁成圆 —— 和其余 138 张一致。 */
.ci img{width:68px;height:68px;min-width:68px;object-fit:cover;background:var(--soft);
        border-radius:100px;border:3px solid #fff;box-shadow:0 2px 10px 0 rgba(0,0,0,.1)}
.ci .nm{flex:1;margin-left:15px;text-align:left;min-width:0}
.ci .nm b{display:block;color:var(--tx);font-size:18px;font-weight:600;line-height:1.3;
          overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ci .nm .md{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-top:6px}
.ci .nm .md > span:first-child{font-size:12px;color:var(--blue);font-family:var(--mono);letter-spacing:.02em}
.ci .nm .md .lp{font-size:11.5px;color:var(--tx3);line-height:1;white-space:nowrap}
.ci .nm .md .lp em{font-style:normal;color:var(--amber);font-family:var(--mono);font-size:15px;font-weight:600}
.ci[hidden]{display:none}
.all{width:296px;margin:4px auto 0;padding:15px 0;background:var(--blue);color:#fff;font-size:15px;font-weight:bold;
     text-align:center;cursor:pointer;display:block;transition:box-shadow .2s ease;
     clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
.all:hover{background:#3a63ea}
.cov-list{margin-top:26px;background:var(--panel);border:1px solid var(--line);padding:22px 24px}
.cov-list .row{display:flex;gap:14px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.75}
.cov-list .row:last-child{border-bottom:0}
.cov-list .k{flex:none;width:160px;color:var(--navy);font-weight:bold;font-size:13px}
.cov-list .v{color:var(--tx2)}
.cov-list .v a{color:var(--tx);border-bottom:1px solid var(--neon2)}
.cov-list .v a:hover{color:var(--neon)}

/* ── 优化 2：介质对照。旧站把 eSIM / SIM 埋在快速指南的小 tab 里 ── */
.qg-title{font-size:38px;line-height:1.5;text-align:center}
.qg-sub{font-size:15px;text-align:center;margin-top:12px;color:var(--tx2)}
.pane{display:flex;gap:30px;background:var(--sec);border:1px solid var(--line);padding:34px;margin-top:30px}
.pane[hidden]{display:none}
.step{flex:1;max-width:340px;background:#fff;border:1px solid var(--line);display:flex;flex-direction:column;
      align-items:center;text-align:center;overflow:hidden;transition:border-color .2s ease,transform .2s ease;
      clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px)}
.step:hover{border-color:var(--neon);transform:translateY(-3px)}
.step .ph{width:100%;height:186px;background:var(--soft);display:grid;place-items:center;overflow:hidden;
          border-bottom:1px solid var(--line)}
.step .ph img{height:100%;width:auto;object-fit:contain;filter:saturate(.85) brightness(.95)}
.step .no{width:40px;height:40px;background:rgba(227,24,17,.05);border:0;color:var(--red);
          display:grid;place-items:center;font-weight:bold;font-size:15px;margin:18px 0 12px;font-family:var(--mono)}
.step .tx{display:block;font-size:16px;padding:0 20px;line-height:1.6;color:var(--tx)}
.step .tx small{display:block;font-size:12.5px;color:var(--tx3);margin-top:7px;line-height:1.65}
.step .lk{margin-top:auto;padding:16px 0 24px;font-size:14px;color:var(--blue)}
.step .lk:hover{text-decoration:underline}
.compat{margin-top:24px;background:var(--panel);border:1px solid var(--line);padding:22px 26px;display:flex;
        align-items:center;gap:18px}
.compat .qm{width:44px;height:44px;background:rgba(255,180,61,.12);border:1px solid #7a5620;color:var(--amber);
            display:grid;place-items:center;font-size:22px;font-weight:bold;flex:none;font-family:var(--mono)}
.compat b{color:var(--tx);font-size:16px;display:block}
.compat .s{font-size:13px;color:var(--tx3);display:block;margin-top:5px}
.compat .go{margin-left:auto;padding:12px 26px;background:transparent;border:1px solid var(--neon);color:var(--neon);
            font-size:14px;white-space:nowrap;transition:all .2s ease}
.compat .go:hover{background:var(--blue);color:#fff}

/* ── AI 段：旧站就是深色 + 底图；这里加一层霓虹网格与描边 ── */
.ai{position:relative;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
    background:linear-gradient(79deg,#F7F7F8 0%,#FFFFFF 55%,#EEF3FE 100%);color:var(--tx)}
.ai::before{content:"";position:absolute;inset:0;
  background:radial-gradient(700px 380px at 80% 40%,rgba(75,116,251,.10),transparent 62%)}
.ai .wrap{position:relative;display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;padding-top:64px;padding-bottom:64px}
.ai h2{font-size:34px;font-weight:bold;margin-bottom:18px;line-height:1.35;color:var(--navy)}
.ai p{font-size:15px;line-height:1.9;color:var(--tx2);max-width:570px}
.ai .fl{margin:26px 0 30px}
.ai .f{display:flex;gap:14px;padding:12px 18px;margin-bottom:10px;font-size:14px;background:#fff;
       border:1px solid var(--line);border-radius:10px;box-shadow:var(--sh2)}
.ai .f .n{color:var(--blue);font-weight:bold;font-family:var(--mono)}
.ai .f b{font-weight:bold;color:var(--navy)}
.ai .go{display:inline-block;padding:14px 40px;background:var(--blue);color:#fff;font-size:15px;font-weight:bold;
        transition:box-shadow .2s ease;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
.ai .go:hover{background:#3a63ea}
.ai .ph{border-radius:20px;overflow:hidden;box-shadow:var(--sh)}
/* 图片尺寸约束（本波第 ④ 项：消除布局抖动）。
   aiesim_back_phone.png 实测 690×920（直接读 PNG 的 IHDR），原来只有 width:100%、
   height:auto —— 浏览器在图片下载完之前不知道它的高度，图一到位就把下面整段推下去。
   这里用 CSS aspect-ratio 按真实宽高比预留高度（不写死像素高度，窄屏宽屏都成立）。 */
.ai .ph img{width:100%;aspect-ratio:690/920;height:auto}

/* ── 精品专区：旧站 5 列网格；这里保留网格，卡面换成金属深板 ── */
.gg{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:24px}
.gc{display:block;background:#fff;border:1px solid var(--line);
    overflow:hidden;transition:border-color .2s ease,transform .2s ease;
    clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
.gc:hover{border-color:var(--neon);transform:translateY(-3px)}
.gc .bd{display:block;padding:16px 14px 18px}
.gc .tt{font-size:15.5px;line-height:22px;min-height:44px;margin-bottom:10px;color:var(--tx);
        overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.gc .tg{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:10px;min-height:20px}
.gc .tg span{font-size:10px;line-height:14px;padding:2px 6px;background:transparent;border:1px solid var(--line2);
             color:var(--tx3);white-space:nowrap;font-family:var(--mono)}
.gc .tg span.a{border-color:var(--neon);color:var(--neon)}
.gc .pv{display:block;font-size:20px;font-weight:bold;color:var(--amber);line-height:1;font-family:var(--mono)}
.gc .pv small{font-size:11.5px;font-weight:normal;color:var(--tx3);font-family:inherit}

/* ── 常见问题：旧站白卡 + plus 图标；这里深卡 + 霓虹加减号 ── */
.faq{max-width:940px;margin:0 auto}
.qa{background:#fff;border:1px solid var(--line);box-shadow:var(--sh);margin-bottom:20px;overflow:hidden;
    transition:border-color .2s ease}
.qa[open]{border-color:var(--line2)}
.qa summary{list-style:none;cursor:pointer;min-height:62px;display:flex;align-items:center;padding:0 24px;
            font-size:17px;color:var(--tx);position:relative}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{content:"";position:absolute;right:24px;top:50%;transform:translateY(-50%);width:24px;height:24px;
                   border-radius:100px;background-color:var(--soft);border:0;
                   background-image:linear-gradient(var(--neon),var(--neon)),linear-gradient(var(--neon),var(--neon));
                   background-size:10px 2px,2px 10px;background-position:center;background-repeat:no-repeat;
                   transition:background-size .25s ease}
.qa[open] summary{color:var(--navy)}
.qa[open] summary::after{background-size:10px 2px,2px 0}
.qa .an{padding:20px 24px 24px;border-top:1px solid var(--line);font-size:14px;line-height:1.9;color:var(--tx2)}
.qa .an a{color:var(--blue)}
.qa .an a:hover{text-decoration:underline}

/* ── 页脚（旧站 底 #eee + #1f1f39 版权条；换成深底 + 霓虹分隔） ── */
footer{background:#f5f6f7;border-top:1px solid var(--line);padding:60px 0 112px;position:relative}
.ft{display:flex;gap:56px}
.ft .brand{flex:1.3}
.ft .brand p{font-size:14px;color:var(--tx2);max-width:300px;line-height:1.85;margin-bottom:18px}
/* ── 页脚社交图标：统一成同大小的圆 ──
   实测问题：芯片是方形（38px），而里面的图标本身形状也不一致 ——
   WhatsApp / 微信 / Facebook / 邮件 是圆形徽章，Instagram 是一块圆角方形渐变贴片，
   混在一排里就是「形状不统一」（和国旗那一排是同一类问题）。
   这里两道都统一：① 芯片做成圆形；② 图标本身也套一层圆角遮罩，
   连 Instagram 那块方贴片一起裁圆。hover 不再换底色（会和品牌色打架），改成蓝描边 + 轻微上浮。 */
.ft .soc{display:flex;gap:12px;align-items:center}
.ft .soc a{width:42px;height:42px;border-radius:100px;background:#fff;border:1px solid var(--line);
           display:grid;place-items:center;
           transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}
.ft .soc a:hover{border-color:var(--blue);box-shadow:0 4px 14px rgba(75,116,251,.22);transform:translateY(-2px)}
.ft .soc img{width:22px;height:22px;border-radius:100px;filter:none}
.ft .col{flex:1}
.ft .col h4{font-size:15px;color:var(--tx);margin-bottom:16px;font-weight:bold}
.ft .col a{display:block;font-size:13.5px;color:#111111;margin-bottom:11px;transition:color .2s ease}
.ft .col a:hover{color:var(--blue)}
.copy{position:absolute;bottom:0;left:0;width:100%;height:64px;background:#1f1f39;
      color:var(--tx3);font-size:13px;display:flex;align-items:center;justify-content:center;gap:22px}
.copy a:hover{color:#9fc0ff}

/* ═══════════════════════════════════════════════════════════════════════════
   客户大使「小艾」= muda.co 那颗蓝球 + 一张脸 + 陪购向导
   实测来源：https://muda.co/rsc/main.js 的 c.make.blup()
     载体   一个 fixed 全屏 <svg>（pointer-events:none），内装单个 <path>
     种子   半径 20px、采样 10 个点；路径 = 中点起笔 + 逐点二次贝塞尔平滑闭合
     交互   mousedown 记标记 → click 切换 opening / closing；收起延时 250ms
   我移植解算器后的实测结论：muda 的恒定外推力没有平衡点，离开它自己的工况就会退化成乱麻，
   所以「样子」全抄、「解算器」换成一个半径标量 + 低频起伏（始终是凸的圆球）。
   陪购向导分 5 阶段，脚本与 cs-agent/lib/guide.js 对齐。
   ═══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
   ── 渲染语言 v3：废旧机械银外壳 + 具身智能的眼睛 ──
   v1 冷调科技感 → 反馈「越改越恐怖」；v2 暖白软壳 → 反馈「眼珠全黑还是恐怖」。
   v3 两个动作：
     · 身体换成**做旧金属银**：拉丝高光 + 氧化暗斑 + 锈色痕 + 一圈冷边光。
       不是抛光镜面，是「从废件堆里捡回来擦干净」的那种银。
     · 眼睛换成**具身智能的光学传感器**：不是黑眼珠，是发光的镜片 ——
       细金属圈 + 大面积自发光虹膜 + 偏左上的一点高光核心。
       **整个眼睛以「亮」为主，黑只占最外一圈**，这是它不恐怖的关键。
   参考的是「机器人 / 具身智能」这种材质与光学读法，没有复制任何影视作品的角色形象或素材。
   ═══════════════════════════════════════════════════════════════════════════ */
#amb-svg{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:9000;overflow:visible}
/* pointer-events 是继承属性：#amb-svg 设了 none，球必须自己重新打开，否则真实鼠标点不到。
   另一条实测教训：**#amb-ball 上不能挂 CSS filter**。挂了 drop-shadow 之后，
   elementFromPoint(球心) 返回的是底下的 DIV（真实鼠标点不到球）；把 filter 去掉立刻恢复成
   path#amb-ball。所以投影改由独立图层 #amb-shadow 来画（pointer-events:none、画在球后面）。 */
#amb-ball{fill:url(#ambGrad);pointer-events:visiblePainted;cursor:pointer;shape-rendering:geometricPrecision;
          stroke-linejoin:bevel;outline:none}
#amb-ball:focus-visible{stroke:var(--neon);stroke-width:3;stroke-opacity:.95}
#amb-rim,#amb-band,#amb-plate,#amb-plate-hi,#amb-gloss1,#amb-gloss2,#amb-cup-l,#amb-cup-r,#amb-mic,#amb-mic-tip,#amb-face-g,#amb-shadow{pointer-events:none}
/* 展开时把球体本身换成深色屏 —— 参考图里小艾的脸就是一块深色屏，
   这样既省掉一层重面纱，文字对比度也够（实测最亮处 5:1 以上）。 */
/* 展开时球体**不再变深色**：整站浅色，台面就该是白的。见 drawShell()。 */
#amb-rim,#amb-band,#amb-plate,#amb-plate-hi,#amb-gloss1,#amb-gloss2,#amb-cup-l,#amb-cup-r,#amb-mic,#amb-mic-tip{transition:opacity .35s ease}

/* 脸 v5：两颗竖直的绿色发光椭圆眼，外加一层打在面板上的绿色光晕。 */
#amb-eye1,#amb-eye2{filter:drop-shadow(0 0 6px rgba(168,224,122,.55))}

/* ── 台面：球展开后是一大片银面，用一层深纱把中间压住，浅色文字才压得住 ── */
.amb-veil{position:fixed;inset:0;z-index:9000;pointer-events:none;opacity:0;transition:opacity .5s ease;
  /* 浅色版：一层柔白纱，把底下的页面轻轻推开，同时提亮台面 */
  background:rgba(255,255,255,.62)}
.amb-veil.on{opacity:1}

/* ── 导览聚光：压暗四周 + 霓虹描边（深色底上，压暗比蒙白更自然） ── */
.amb-spot{position:fixed;border-radius:2px;pointer-events:none;z-index:8998;opacity:0;
  box-shadow:0 0 0 9999px rgba(255,255,255,.86),0 0 0 2px var(--blue),0 0 0 7px rgba(75,116,251,.18);
  transition:left .45s var(--ease),top .45s var(--ease),width .45s var(--ease),height .45s var(--ease),opacity .3s ease}
.amb-spot.on{opacity:1}

/* ── 对话气泡 ── */
.amb-bubble{position:fixed;left:0;top:0;z-index:9002;width:310px;background:#fff;border:1px solid var(--line2);
  box-shadow:var(--sh3);padding:14px 16px;font-size:13.5px;line-height:1.65;color:var(--tx);
  opacity:0;pointer-events:none;transform-origin:0 50%;
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
  transition:opacity .25s ease,transform .45s var(--ease)}
.amb-bubble.on{opacity:1;pointer-events:auto}
.amb-bubble .who{font-size:11px;color:var(--blue);font-weight:bold;letter-spacing:.1em;margin-bottom:6px;
                 font-family:var(--mono)}
/* 气泡的箭头跟着换边：默认在左（气泡在球的右侧），.left 时翻到右边，.above 时去掉 */
.amb-bubble.left::before{left:auto;right:-7px;transform:rotate(-135deg)}
.amb-bubble.above::before{display:none}
.amb-bubble .row{display:flex;gap:8px;margin-top:11px;flex-wrap:wrap}
.amb-bubble button{font:inherit;font-size:12.5px;padding:8px 15px;cursor:pointer;border:1px solid var(--line2);
  background:transparent;color:var(--tx2);transition:all .2s ease}
.amb-bubble button:hover{border-color:var(--neon);color:var(--neon)}
.amb-bubble button.pri{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:bold}
.amb-bubble button.pri:hover{background:#3a5fd9}

/* ── 陪购面板：球展开后是一大片银面，文字用浅色 ── */
#amb-panel{position:fixed;inset:0;z-index:9001;pointer-events:none;opacity:0;
  transition:opacity .5s ease;display:grid;grid-template-rows:1fr auto;padding:36px 24px 26px}
#amb-panel.on{opacity:1;pointer-events:auto}
.amb-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  color:var(--tx);max-width:760px;margin:0 auto;width:100%}
.amb-face{width:66px;height:66px;flex:none}
.amb-who{font-size:12px;letter-spacing:.14em;color:var(--blue);margin:8px 0 2px;font-family:var(--mono)}
.amb-prog{display:flex;gap:7px;margin:0 0 10px;justify-content:center;flex:none}
.amb-prog i{width:26px;height:3px;background:#dfe4f2;transition:background .25s ease}
.amb-prog i.on{background:var(--blue)}
.amb-prog i.done{background:#a9bbe8}
.amb-q{font-size:clamp(22px,2.6vw,34px);font-weight:bold;line-height:1.5;margin-bottom:14px;color:var(--tx)}
.amb-note{font-size:14.5px;line-height:1.9;color:var(--tx2);max-width:620px}
.amb-note b{color:var(--navy)}
.amb-note a{color:var(--neon);border-bottom:1px solid var(--neon2)}
.amb-opts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:0 0 14px;flex:none;
  max-height:104px;overflow-y:auto}
.amb-opts button{font:inherit;font-size:14.5px;padding:11px 20px;cursor:pointer;color:var(--tx);
  border:1px solid var(--line2);background:#fff;transition:all .2s ease;
  clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px)}
.amb-opts button:hover,.amb-opts button:focus-visible{background:var(--blue);color:#fff;border-color:var(--blue);outline:none}
.amb-opts button.ghost{font-size:13.5px;padding:10px 20px;background:transparent;border-color:var(--line);
  color:var(--tx3)}
.amb-foot{display:flex;justify-content:center;gap:26px;flex-wrap:wrap}
.amb-foot button{font:inherit;font-size:13.5px;background:none;border:0;color:var(--tx3);cursor:pointer;
  padding:8px 4px;transition:color .2s ease}
.amb-foot button:hover{color:var(--blue)}
.amb-foot button[hidden]{display:none}
.amb-face svg{display:block;width:100%;height:100%}

/* ── 对话功能：小艾会说话，客户也能打字 ── */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);
         white-space:nowrap;border:0}
.amb-stage{align-items:stretch;justify-content:flex-start;text-align:left;max-width:720px;min-height:0}
.amb-head{display:flex;align-items:center;gap:12px;flex:none;text-align:left;padding-bottom:10px;
          border-bottom:1px solid var(--line)}
.amb-head .amb-face{width:40px;height:40px}
.amb-status{font-size:11.5px;color:var(--tx3);font-family:var(--mono);margin-top:2px}
.amb-status.on{color:var(--blue)}
.amb-status.off{color:#b26a00}   /* 白底上要更深，之前偏亮看不清 */
/* 对话流：可滚动，撑满中间 */
.amb-thread{flex:1 1 auto;min-height:80px;overflow-y:auto;overflow-x:hidden;padding:16px 2px 14px;display:flex;flex-direction:column;gap:10px;
            scrollbar-width:thin;scrollbar-color:var(--line2) transparent}
.amb-thread::-webkit-scrollbar{width:8px}
.amb-thread::-webkit-scrollbar-thumb{background:var(--line2)}
.amb-msg{max-width:86%;padding:12px 15px;font-size:14.5px;line-height:1.75;white-space:pre-wrap;
         word-break:break-word;flex:none}
.amb-msg.me{align-self:flex-end;background:#eef2fe;border:1px solid #c9d6ff;color:var(--tx);
            clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px)}
.amb-msg.ai{align-self:flex-start;background:#fff;border:1px solid var(--line);color:var(--tx);
            clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px)}
.amb-msg.ai b{color:var(--navy)}
.amb-msg.ai a{color:var(--blue);border-bottom:1px solid var(--neon2)}
.amb-msg .src{display:block;margin-top:8px;font-size:11px;color:var(--tx3);font-family:var(--mono)}
.amb-msg.sys{align-self:center;background:none;border:0;color:var(--tx3);font-size:12.5px;text-align:center;
             max-width:96%;padding:4px 0}
/* 正在输入 */
.amb-typing{align-self:flex-start;display:flex;gap:5px;padding:14px 16px;background:#fff;
            border:1px solid var(--line)}
.amb-typing i{width:6px;height:6px;background:var(--blue);border-radius:50%;animation:ambdot 1.1s infinite}
.amb-typing i:nth-child(2){animation-delay:.16s}
.amb-typing i:nth-child(3){animation-delay:.32s}
@keyframes ambdot{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
/* 输入行 */
.amb-input{display:flex;gap:10px;align-items:flex-end;border:1px solid var(--line2);background:#fff;padding:8px;width:100%;max-width:640px;
           transition:border-color .2s ease;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
.amb-input:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px rgba(75,116,251,.16)}
.amb-input textarea{flex:1;min-width:0;border:0;outline:none;resize:none;background:transparent;color:var(--tx);
                    font:inherit;font-size:14.5px;line-height:1.5;padding:11px 4px;max-height:120px;min-height:46px;
                    font-family:inherit;overflow:hidden;display:block}
.amb-input textarea::placeholder{color:#8a8a94}   /* 白底上 4.6:1，之前偏浅看不清 */
.amb-send{flex:none;height:46px;padding:0 20px;border:0;cursor:pointer;background:#3a5fd9;color:#fff;
          font:inherit;font-size:14px;font-weight:bold;transition:background .2s ease}
.amb-send:hover{background:#2f4fc0}

.amb-send[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none}
.amb-foot{flex-direction:column;align-items:center;gap:12px;flex:none;min-height:0}
.amb-foot-row{display:flex;justify-content:center;gap:26px;flex-wrap:wrap}
@media (max-width:760px){
  .amb-msg{max-width:94%;font-size:14px}
  .amb-send{padding:0 16px}
}

/* ── 动作减弱：球不动、面板直接出现 ── */
@media (prefers-reduced-motion:reduce){
  .amb-bubble,.amb-spot,.amb-spot.on{display:none}
  #amb-svg{transition:none}
  .slides{transition:none}
}
@media (max-width:1080px){
  .nav{display:none}.ft{flex-wrap:wrap}.gg{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ai .wrap{grid-template-columns:1fr}.pane{flex-wrap:wrap}.dest .hot{display:none}
}
@media (max-width:760px){
  .tips{font-size:11px;gap:6px}.banner,.slides img{height:300px}
  .dest{width:calc(100% - 32px);padding-left:18px;height:58px}
  .dest .title{font-size:17px;margin-right:12px}.dest .area{width:auto;flex:1;height:40px}
  .ci{width:100%;margin-right:0}.grid{padding:20px 20px 0}
  .step{max-width:none}.gg{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stats{grid-template-columns:repeat(2,1fr)}
  .ft{gap:32px}.ft .brand,.ft .col{flex:1 1 100%}
  #amb-panel{padding:24px 16px 20px}
  .amb-opts button{font-size:15px;padding:13px 22px}
  .amb-bubble{width:250px;font-size:12.5px}
}

/* ═══════════════════════════════════════════════════════════════════════════
   小艾面板：文字颜色全部写死（不再靠变量继承）
   ── 为什么 ──
   面板原来是给深色台面设计的，文字用的是「浅字」变量；整站改浅色之后，
   这些变量在浅底上就变成了浅灰字 —— 用户实测反馈「字体颜色未修改」。
   与其继续追是哪一层变量没转过来，不如把面板里每一处文字都写成实色，
   并且每个状态（常态 / hover / focus / disabled）都写清楚。
   对比度（白底，WCAG AA 正文 4.5:1）：
     #15151B 17.9:1  ·  #5b5b66 7.0:1  ·  #75757f 4.9:1  ·  #8a8a94 4.6:1（占位）
     #4b74fb 3.6:1（只用于图标/描边/大字）· 白字在 #3a5fd9 上 4.9:1
   ═══════════════════════════════════════════════════════════════════════════ */
#amb-panel{color:#15151B}
#amb-panel .amb-head{border-bottom-color:#EBEBF3}
#amb-panel .amb-who{color:#4b74fb}
#amb-panel .amb-status{color:#75757f}
#amb-panel .amb-status.on{color:#3a63ea}
#amb-panel .amb-status.off{color:#b26a00}
#amb-panel .amb-thread::-webkit-scrollbar-thumb{background:#d8dae3}
/* 快捷回答：白底 + 灰描边 + 深字；hover 蓝底白字 */
#amb-panel .amb-opts button{color:#15151B;background:#fff;border:1px solid #A5A5B1;font-weight:500}
#amb-panel .amb-opts button:hover,
#amb-panel .amb-opts button:focus-visible{background:#4b74fb;color:#fff;border-color:#4b74fb}
#amb-panel .amb-opts button.ghost{color:#5b5b66;border-color:#d8dae3;background:transparent}
#amb-panel .amb-opts button.ghost:hover{background:#F4F7FC;color:#15151B;border-color:#A5A5B1}
/* 对话气泡 */
#amb-panel .amb-msg.ai{color:#15151B;background:#fff;border:1px solid #EBEBF3}
#amb-panel .amb-msg.ai b{color:#00054b}
#amb-panel .amb-msg.ai a{color:#3a63ea;border-bottom:1px solid #c9d6ff}
#amb-panel .amb-msg.me{color:#15151B;background:#eef2fe;border:1px solid #c9d6ff}
#amb-panel .amb-msg.sys{color:#75757f}
#amb-panel .amb-msg .src{color:#8a8a94}
#amb-panel .amb-typing{background:#fff;border:1px solid #EBEBF3}
#amb-panel .amb-typing i{background:#4b74fb}
/* 输入区：白底、深字、灰占位；focus 只加蓝框，不加发光层 */
#amb-panel .amb-input{background:#fff;border:1px solid #A5A5B1}
#amb-panel .amb-input:focus-within{border-color:#4b74fb;box-shadow:0 0 0 3px rgba(75,116,251,.14)}
#amb-panel .amb-input textarea{color:#15151B;background:transparent}
#amb-panel .amb-input textarea::placeholder{color:#8a8a94}
#amb-panel .amb-send{background:#3a5fd9;color:#fff}
#amb-panel .amb-send:hover{background:#2f4fc0}
/* 页脚文字按钮 */
#amb-panel .amb-foot button{color:#5b5b66}
#amb-panel .amb-foot button:hover{color:#3a63ea}
/* 进度条 */
#amb-panel .amb-prog i{background:#dfe4f2}
#amb-panel .amb-prog i.on{background:#4b74fb;box-shadow:none}
#amb-panel .amb-prog i.done{background:#a9bbe8}
/* ═══════════════════════════════════════════════════════════════════════════
   修：hover 时「蓝底 + 灰字」
   ── 根因 ──
   这些按钮原来写的是 transition:all .2s ease —— **color 也在过渡里**。
   鼠标一放上去，背景先变成蓝色，而字色正从 #15151B 慢慢变白，
   卡在中间那一段就是「蓝底 + 灰字」，看起来就是「字看不清」。
   （截图里那颗蓝底按钮的字正是灰的，白底那颗正常 —— 完全对得上。）
   ── 修法 ──
   ① 把 color 从过渡里拿掉：字色瞬间切换，不经过中间态；
   ② 再把 hover / focus 的前景色用 !important 钉死，避免被别处覆盖。
   ═══════════════════════════════════════════════════════════════════════════ */
#amb-panel .amb-opts button{
  transition:background .15s ease,border-color .15s ease,color 0s;
}
#amb-panel .amb-opts button:hover,
#amb-panel .amb-opts button:focus-visible{
  background:#4b74fb!important;color:#fff!important;border-color:#4b74fb!important;
}
#amb-panel .amb-opts button:not(:hover):not(:focus-visible){
  background:#fff!important;color:#15151B!important;border-color:#A5A5B1!important;
}
#amb-panel .amb-opts button.ghost:not(:hover):not(:focus-visible){
  background:transparent!important;color:#5b5b66!important;border-color:#d8dae3!important;
}
#amb-panel .amb-send{transition:background .15s ease,color 0s;}
#amb-panel .amb-foot button{transition:color 0s;}
#amb-panel .amb-foot button:hover{color:#3a63ea!important;}
.amb-bubble button{transition:background .15s ease,border-color .15s ease,color 0s;}
.amb-bubble button.pri:hover{background:#3a5fd9!important;color:#fff!important;}
/* 保险：整站的可点元素在浅底上都不要出现「低对比前景」 */
.amb-opts button,.amb-foot button,.amb-bubble button{ -webkit-text-fill-color:currentColor; }
/* ═══════════════════════════════════════════════════════════════════════════
   文字颜色统一：浅底用近黑，深底用纯白 —— 不再出现低对比的灰字
   用户要求「把网站的灰字全部换成黑色或者白色，必须与对比色有反差」。
   做法：① 三个文字灰变量（--tx/--tx2/--tx3）全部收敛到 #111111；
        ② 层级不再靠灰度区分，改靠字号 / 字重 / 描边；
        ③ 深底上的文字（banner 上的头部、页脚版权条）显式改纯白；
        ④ 占位文字、来源小字这类原本偏浅的，一并压到近黑。
   ═══════════════════════════════════════════════════════════════════════════ */
/* 浅底：所有文字近黑 */
.hero p,.qg-sub,.ai p,.qa .an,.ci .nm .md .lp,.gc .tg span,.stats span,
.compat .s,.step .tx small,.cov-list .v,.ft .brand p,.ft .col a,.amb-msg.sys{color:#111111}
/* 占位文字：比正文略淡但仍高对比（白底 10:1），不能再用灰 */
.dest .area input::placeholder,#amb-panel .amb-input textarea::placeholder{color:#3f3f47}
/* 面板内的次级小字 */
#amb-panel .amb-status,#amb-panel .amb-status.on{color:#111111}
.amb-msg .src{color:#111111}
/* 深底：banner 上方的头部一律纯白（未滚动时） */
.hd:not(.scrolled) .logo,
.hd:not(.scrolled) .nav a,
.hd:not(.scrolled) .nav a.on,
.hd:not(.scrolled) .hd-r,
.hd:not(.scrolled) .hd-r .sel{color:#ffffff}
.hd:not(.scrolled) .nav a:hover,
.hd:not(.scrolled) .hd-r .sel:hover{color:#ffffff;background:rgba(255,255,255,.20)}
.hd:not(.scrolled) .hd-r .sel{border-color:rgba(255,255,255,.6)}
.hd:not(.scrolled) .nav a.on::after{background:#ffffff}
/* 深底：页脚版权条纯白 */
.copy{color:#ffffff}
.copy a{color:#ffffff}
.copy a:hover{color:#c9d6ff}
/* 页脚社交图标在白底芯片上，不需要再提亮 */
.ft .soc img{filter:none}
/* 深色 banner 上的圆点与按钮文字保持白 */
.bdots i{border-color:#ffffff}
.bdots i.on{background:#ffffff}
/* 深底 AI 段（如将来切回深底）兜底：其内文字用白 */
.ai .f .n{color:#3a63ea}
/* ── 发送按钮：所有状态都钉成白字 ──
   之前漏了两件事：
     ① 只改了常态，disabled 那条规则还留着 opacity:.5 —— 白字被整体压暗，看起来就是灰字；
     ② 请求挂起时按钮一直是 disabled（fetch 没有超时，能挂几十秒）。
   所以这里把 color 在「常态 / hover / focus / disabled」四个状态都钉死，
   禁用态改用浅蓝底而不是降透明度。 */
#amb-panel .amb-send,
#amb-panel .amb-send:hover,
#amb-panel .amb-send:focus-visible,
#amb-panel .amb-send[disabled],
#amb-panel .amb-send[disabled]:hover{
  color:#ffffff!important;-webkit-text-fill-color:#ffffff!important;
  font-weight:bold;letter-spacing:.04em;
}
#amb-panel .amb-send{background:#3a5fd9}
#amb-panel .amb-send:hover{background:#2f4fc0}
#amb-panel .amb-send[disabled]{opacity:1!important;background:#7d92cf;cursor:default}
/* ═══════════════════════════════════════════════════════════════════════════
   修：白字压在 #4b74fb 上对比不足
   ── 从用户截图里取到的实数 ──
     蓝色按钮底色实测 #6074f3，文字实测 #f0f3f7（几乎是白）。
     也就是说字**是**白的，问题出在底色太亮：
       #4b74fb 与白的对比只有 4.09:1，而按钮文字是 14.5px 常规字重 → 需要 ≥4.5:1。
     旧站自己也是这么用的（.all{background:#4b74fb;color:#fff}），所以这是旧站带来的老问题。
   ── 修法 ──
     保持同一个色相，把「填充态」的蓝压深：
       常态填充 #3a5fd9  → 与白 5.49:1  ✔
       hover 填充 #2f4fc0 → 与白 6.88:1  ✔
     描边、图标、白底上的链接仍用品牌蓝 #4b74fb（不涉及白字）。
   ═══════════════════════════════════════════════════════════════════════════ */
:root{ --blue-fill:#3a5fd9; --blue-fill-h:#2f4fc0; }
/* 所有「蓝底白字」的地方统一压深 */
.cart,.all,.compat .go,.ai .go,.tabs button.on,
.amb-opts button:hover,.amb-opts button:focus-visible,
.amb-bubble button.pri,.tabs button.on,
#amb-panel .amb-opts button:hover,
#amb-panel .amb-opts button:focus-visible{background:var(--blue-fill)!important;border-color:var(--blue-fill)!important;color:#fff!important}
.cart:hover,.all:hover,.compat .go:hover,.ai .go:hover,.amb-bubble button.pri:hover,
#amb-panel .amb-opts button:hover:hover{background:var(--blue-fill-h)!important}
/* 填充蓝上的文字加粗一档，小字号更好认 */
.cart,.all,.compat .go,.ai .go,.tabs button.on{font-weight:600}
#amb-panel .amb-opts button:hover,#amb-panel .amb-opts button:focus-visible{font-weight:600}
/* 白底上的蓝色链接/文字也压深一档（#4b74fb 在白底只有 4.09:1） */
.cov-list .v a,.qa .an a,.step .lk,.ft .col a:hover,.amb-msg.ai a,
#amb-panel .amb-foot button:hover,.compat .go,.all,.cart{text-decoration:none}
.qa .an a,.step .lk,.cov-list .v a{color:var(--blue-fill)}
/* 发送按钮沿用更深的蓝，与上面一致 */
#amb-panel .amb-send{background:var(--blue-fill)}
#amb-panel .amb-send:hover{background:var(--blue-fill-h)}

/* ═══════════════════════════════════════════════════════════════════════════
   移动端（H5）窄屏修正层
   ── 这一层为什么存在 ──
   tools/check_mobile.py 用真实 Chrome 在「布局视口宽 = 375px」下实测出四处确定崩版，
   它们都落在 max-width:760px / 1080px 两个断点里没有规则的组件上。
   下面每条都写上实测数字（测量方式：headless Chrome + CDP，
   Emulation.setDeviceMetricsOverride width=375, mobile=false，即 375 CSS px 的布局视口），
   改完全部走 tools/check_mobile.py 复测。**只加窄屏规则，不动桌面版式。**
     · 头部 .hd-r 右边界 406px（视口 375）→ 购物车入口被裁掉；中文页每一页都中；
       英文页更宽（457px），且「HKD ▾」「简体 ▾」被挤成两行（实测高 42px = 2 行）
     · 首页分组标签 .tabs 宽 474px（英文页 591px）→ 「精品专区 / Boutique」整块在屏幕外
     · 首页介质对照 .step 是 flex:1（flex-basis 0），flex-wrap 永远不会触发，
       375px 下 4 张卡被压成 **44px 宽**一列，内容再被 .step 的 overflow:hidden 切掉
     · 英文页搜索条 .dest .area 右边界 387px：<input> 的固有最小宽度（默认 size=20）顶破容器
   另外顺手修两条：兼容性提示条 .compat 英文页内容 389px 溢出 56px；
   覆盖国文字清单键列写死 160px，375px 下值列只剩 111px（国名一行两三个字）。
   ═══════════════════════════════════════════════════════════════════════════ */
@media (max-width:760px){
  /* ── ① 头部 ──
     实测（375px，当前代码含账户入口）：.hd 的 scrollWidth 462px，.hd-r 右边界 456px ——
     英文页的「Register」「Cart」整块在屏幕外，中文页的「购物车」也被裁掉一半。
     可用内容宽只有 335px，而桌面值是：站标 183px + gap 30px + .hd-r 456px。
     三步收窄，每一步都写明为什么不是随便调的：
       a 隐藏站标后面那个重复的文字「sim2ai」：logo_color.svg 本身就是 80×22 的
         「sim2ai」字标（实测截图里出现两次「sim2ai sim2ai」），所以这里**不丢任何信息**；
       b 隐藏币种位（.hd-r 的第一个子元素）。它是**非交互**的纯展示 span（没有链接、
         没有 JS），手机上加的账户入口 / 语言 / 购物车都要用它那 50px —— 取舍见交付报告；
       c 其余控件统一 12px 字 + 最小内边距 + 禁止换行（之前「HKD ▾」「简体 ▾」被挤成
         两行，实测高 42px 就是这个原因），并给 .sel 加 ellipsis 兜底：
         万一将来文案变长，是省略号而不是把购物车挤出屏幕。 */
  .hd-in{gap:2px}
  .logo{gap:5px;font-size:15px}
  .logo img{height:18px}
  .logo > span{display:none}
  .hd-r{gap:1px;font-size:12px;min-width:0}
  .hd-r > .sel:first-child{display:none}
  .hd-r .sel{padding:6px 3px;font-size:12px;min-height:44px;
             display:inline-flex;align-items:center;gap:4px;white-space:nowrap;
             overflow:hidden;text-overflow:ellipsis}
  /* 右侧每一项默认**不收缩**：只有「我的账户」那一条允许被省略号截断。
     它是唯一长度不可控的一项（实测已登录时是「我的账户 probe@example.com」，
     37 个字符），点进去 /personal/ 能看到完整账号；语言切换 / 购物车 / 登录 / 登出
     这些一旦被截断就直接影响可用性，所以钉死不收缩。 */
  .hd-r > *{flex:none}
  .hd-r > a.sel[href*="/personal/"]{flex:0 1 auto;min-width:0}
  .cart{padding:6px 4px;font-size:12px;min-height:44px;flex:none;white-space:nowrap}
  /* 购物车只留图标 + 数量角标：375px 英文页塞不下「logo + 汉堡 + 语言 + 登录 + 注册 + 购物车」
     六项（实测差 28px），文字标签收起后省 34–43px，正好让汉堡开关有位子。
     功能与信息一个不少：图标可点、角标数字还在、aria-label 仍播报「购物车」。 */
  .cart .cart-t{display:none}
  .cart svg{width:14px;height:14px;flex:none}

  /* ── ①b Banner：素材是 750×360（实测 4 张 PNG 的 IHDR 都是 750×360，正好等于
        V5 8.2 的移动端 Banner 规格），而 .banner 在 375px 下的盒子是 375×300（比例 1.25）。
        object-fit:cover 会把图裁掉横向 40%，图里烧进去的标题文字被切成半句
        （截图证据见 _audit/mobile_shots/front_0.png：中文标题只剩「盖多国 | 专线稳定」）。
        窄屏改成 contain：整张图（含文字）完整可见，上下留出页面已有的深蓝色底。 */
  .slides img{object-fit:contain}

  /* ── ② 分组标签：实测 .tabs 474px（英文 591px），容器内容宽只有 335px，且没有 flex-wrap。
        允许换行 + 收窄按钮内边距 → 4 个标签在 375px 下排成两行，一个都不丢。 */
  .tabs{flex-wrap:wrap;justify-content:center;width:auto;max-width:100%}
  .tabs button{padding:10px 14px;font-size:14px}

  /* ── ③ 介质对照：.step 的 flex:1 意味着 flex-basis:0，flex-wrap 形同虚设 ——
        4 张卡会一直挤在同一行。窄屏下改成一行一张。 */
  .pane{gap:16px;padding:20px}
  .step{flex:1 1 100%;max-width:none}

  /* ── ④ 搜索条：input 的固有最小宽度顶破 .dest（英文页 .area 右边界 387px），
        允许收缩即可；同时把搜索按钮从 34×34 提到 44×44（触控目标）。 */
  .dest .area{min-width:0;height:44px}
  .dest .area input{min-width:0}
  .dest .area .sbtn{width:44px;height:44px}

  /* ── ⑤ 兼容性提示条：英文页那个 white-space:nowrap 的按钮宽 212px，
        和图标 + 文案挤在一行时溢出 56px。允许换行。 */
  .compat{flex-wrap:wrap}

  /* ── ⑥ 覆盖国文字清单：键列 .k 写死 160px + gap 14px，375px 下值列只剩 111px。
        与 .kv 在 max-width:900px 的做法保持一致：上下排列。 */
  .cov-list .row{flex-direction:column;gap:4px}
  .cov-list .k{width:auto}

  /* ── ⑦ 客服面板底部按钮：实测高 35px，低于 44px 触控门槛 */
  .amb-foot button{padding:10px 8px;min-height:44px;
                   display:inline-flex;align-items:center;justify-content:center}

  /* ── ⑧ 页脚社交图标与页脚文字链接的点击区（本波第 ② 项）──
     实测（headless Chrome，375px，/zh-hans/）：.ft .soc a 的真实矩形是 42×42，
     低于 TOUCH_MIN=44；.ft .col a 只有 16px 高（font-size:13.5px 的行盒），
     手指点不准 —— 用户反馈的「手机端不好点」主要就是这两处。
     修法：**用 padding 把 <a> 撑到 >= 44px，不放大图片本身**（图标仍 22px），
     视觉大小与间距排序都不变，只是可点区域变大。 */
  .ft .soc{gap:8px}
  .ft .soc a{width:auto;height:auto;padding:11px}      /* 22 图 + 22 padding + 2 描边 = 46×46 */
  .ft .soc img{width:22px;height:22px}
  .ft .col h4{margin-bottom:6px}
  .ft .col a{min-height:44px;display:flex;align-items:center;
             padding:6px 0;margin-bottom:2px}          /* 行盒 ~16 + 6*2 + min-height 兜底 */

  /* ── ⑨ iOS 输入框自动放大（本波第 ③ 项）──
     iOS Safari 在输入框 font-size < 16px 时，聚焦会**自动放大整页**，
     表现为「排版突然变大、退不回去」。站内输入框的桌面字号是 15px
     （搜索条 .dest .area input，site.css:137），所以手机上每一个搜索框、
     登录 / 注册 / 结算 / 合作申请的表单框都会触发。
     这里只把窄屏字号提到 16px（== iOS 的阈值），**桌面视觉完全不变**。
     .frow 系列（登录 / 注册 / 结算表单）的字号定义在 pages.css，且 pages.css
     在 site.css 之后加载 —— 同权重下后加载者赢，所以那几条必须写在 pages.css
     末尾的窄屏块里，写在这里不生效（实测踩过一次同样的坑，见文件末尾那段说明）。 */
  .dest .area input{font-size:16px}
  .amb-input textarea{font-size:16px}
}

/* ── 360px 及以下：头部再收一档 ──────────────────────────────────────────
   实测（headless Chrome，布局视口 320px，英文页未登录）：
   .hd-in 的 clientWidth=320 但 scrollWidth=342，购物车 <a class="cart">
   右边界 337 —— 已经被裁掉。注意这里 **scrollWidth 是看不出来的**：
   .hd 是 position:fixed，固定定位元素的溢出不会撑大 documentElement.scrollWidth，
   页面 scrollWidth 仍是 320，只有逐元素量右边界才发现（tools/check_mobile.py 的 B4 就是为此改的）。
   这一档只在 <=360px 生效，375px 及以上的字号保持 12px，不影响主流机型可读性。 */
@media (max-width:360px){
  .hd-in{gap:2px}
  .hd-r{gap:1px;font-size:11px}
  .hd-r .sel{padding:6px 2px;font-size:11px}
  .cart{padding:6px 4px;font-size:11px}
  .logo img{height:18px}
}
/* 320px 级窄屏：见 pages.css 末尾的 .cards.two 单列退回规则。
   （.cards 系列定义在 pages.css，而 pages.css 在 site.css 之后加载，
   同权重下后加载的赢 —— 所以那条规则必须写在 pages.css 里，写在 site.css 里不生效。） */

/* ═══════════════════════════════════════════════════════════════════════════
   手机端主导航开关（本波第 ① 项）
   ── 原来的缺陷 ──
   .nav 在 max-width:1080px 下是 display:none（见上面第 485 行那条断点规则），
   而头部右侧只有币种 / 语言 / 账户 / 购物车，**没有任何导航入口**：
   手机访客看不到也点不到「全部目的地 / 精品专区 / 帮助中心」这 6 条内链，
   这是用户报过的「手机端 H5 排版」里最实质的一条。
   ── 断点为什么从 1080px 提到 1220px ──
   用户随后实测截图报「导航文字一字一行」。实测（headless Chrome）：
   头部一行放下需要 1284px，把导航项左右 padding 从 15px 收到 12px 后压到 **1218px**；
   而断点原来是 1080px ⇒ **1081～1217px 这段区间没有任何机制兜住**，
   头部塞不下就把中文标签压成 min-content（一字一行）。提到 1220px 后：
     · ≥1220px：桌面导航一行放下，且实测无横向溢出；
     · <1220px：收起成汉堡菜单（下拉面板的样式与 ≤1080px 时完全一致）。
   这一段必须**同时**给 .nav 的收起与 .nav-toggle 的显示，只改一处会得到
   「按钮出来了但没有面板样式」的坏状态。
   ── 修法（三条硬要求，缺一即错）──
   1. SSR：6 条 <a> 始终留在 DOM 里（base.html 的 <nav class="nav" id="site-nav">），
      窄屏只是 CSS 收起、加 .is-open 类展开。**没有**改成 JS 动态注入 ——
      爬虫不执行 JS 也照样能抓到这 6 条真实内链；
   2. 开关是真实 <button type="button" class="nav-toggle">，带 aria-expanded / aria-controls；
   3. 无 JS 兜底写在 base.html 的 <head>（<noscript><style>…）里，导航强制常显、按钮隐藏。
   ── 为什么这一段必须放在文件末尾 ──
   .hd:not(.scrolled) .nav a{color:#ffffff}（第 598 行）是给「深色 banner 上的白色导航字」
   用的；而展开后的下拉面板是**白底**，白字叠白底等于看不见。展开态要显式钉回深色，
   而那条规则与 598 行**选择器权重相同**，只能靠书写顺序决胜 —— 所以本段放在最后。
   ── 实测（headless Chrome，布局视口 375px / 360px，三语首页）──
   按钮 44×44，展开后 6 条链接每条 min-height 44px；数字见 _audit/mobile2/README.md。
   ═══════════════════════════════════════════════════════════════════════════ */
.nav-toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;padding:0;
            background:transparent;border:1px solid var(--line2);color:var(--tx);cursor:pointer;flex:none}
.nav-toggle:hover,.nav-toggle:focus-visible{border-color:var(--blue);color:var(--blue)}
.nav-toggle svg{display:block}
@media (max-width:1220px){
  .nav-toggle{display:inline-flex}
  /* 未滚动时头部压在深色 banner 上，开关要跟着变白（与 .logo / .hd-r 同口径） */
  .hd:not(.scrolled) .nav-toggle{color:#ffffff;border-color:rgba(255,255,255,.6)}
  .hd:not(.scrolled) .nav-toggle:hover{background:rgba(255,255,255,.20)}
  /* 下拉面板：绝对定位挂在头部下方，**不参与** .hd-in 的 72px 高度，桌面版式不受影响 */
  .nav{position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;gap:0;
       background:#fff;border-bottom:1px solid var(--line);box-shadow:var(--sh);
       padding:4px 20px 8px;max-height:calc(100vh - 112px);overflow-y:auto}
  .nav.is-open{display:flex}
  /* 每条链接 >= 44px 触控高度，并显式钉深色（见上面「为什么这一段必须放在文件末尾」） */
  .nav a{display:flex;align-items:center;min-height:44px;padding:10px 0;font-size:15px;
         color:var(--tx);border-bottom:1px solid var(--line)}
  .nav a:last-child{border-bottom:0}
  .nav a.on{color:#3a63ea;font-weight:600}
  .nav a.on::after{display:none}
  .hd:not(.scrolled) .nav a,.hd:not(.scrolled) .nav a.on{color:var(--tx)}
  .hd:not(.scrolled) .nav a:hover{color:var(--blue);background:transparent}
}