/* 自托管字体（落地页 Neo-Brutalism 用）：Archivo Black 数字、Space Mono 英文标签。
     只打包 latin 子集（数字与英文），中文标题仍走系统黑体栈——零外部请求、国内可访问。 */
  @font-face{font-family:'Archivo Black';src:url('/assets/fonts/archivo-black-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap;}
  @font-face{font-family:'Space Mono';src:url('/assets/fonts/space-mono-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap;}
  @font-face{font-family:'Space Mono';src:url('/assets/fonts/space-mono-latin-700-normal.woff2') format('woff2');font-weight:700;font-display:swap;}
  *{margin:0;padding:0;box-sizing:border-box;}
  body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.6;min-height:100vh;overflow-x:hidden;}
  .shell{display:flex;min-height:100vh;background:var(--bg);}
  /* ===== 侧边栏 ===== */
  /* .sidebar 骨架已抽到 common.css；这里只保留客户端差异（背景透明） */
  .sidebar{background:transparent;}
  .brand{display:flex;align-items:center;gap:12px;padding:28px 24px 24px;border-bottom:1px solid var(--line);}
  .brand-logo{width:34px;height:34px;border-radius:8px;flex-shrink:0;}
  .brand-text{font-size:16px;font-weight:700;color:var(--ink);line-height:1.2;}
  .brand-sub{font-size:10px;color:var(--muted);margin-top:1px;letter-spacing:.12em;}
  .brand-logo-box{width:44px;height:44px;border-radius:var(--radius-ctl);background:var(--primary);border:var(--border-hard);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 2px 0 #003D7A;}
  .brand-logo-box svg{width:22px;height:22px;}

  /* 侧栏底部用户卡（横向头像+文字） */
  .sidebar-user{margin:auto 24px 32px;padding:12px 14px;background:#fff;border:var(--border-hard);border-radius:var(--radius-card);box-shadow:var(--shadow-hard);display:flex;align-items:center;gap:10px;}
  .su-avatar{width:36px;height:36px;border-radius:50%;background:var(--inset-bg);color:var(--ink2);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;box-shadow:var(--inset-sm);flex-shrink:0;}
  .su-info{min-width:0;}
  /* ===== 顶栏（面包屑 + 右侧胶囊组）===== */
  .topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 48px 0 32px;height:72px;position:sticky;top:0;background:var(--bg);z-index:50;}
  /* 顶栏右侧是「不参与收缩」的固定区 */
  .topbar-right{flex-shrink:0;margin-left:auto;}
  .topbar-title{display:none;font-size:16px;font-weight:700;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;}
  .topbar-right{display:flex;align-items:center;gap:18px;}
  .checkin-pill{display:inline-flex;align-items:center;gap:6px;background:var(--amber);color:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:0 2px 0 #B25E00;font-family:inherit;flex-shrink:0;white-space:nowrap;}
  .checkin-pill:active{transform:translateY(2px);box-shadow:0 1px 0 #B25E00;}
  /* 已签到（今日已完成）→ 置灰不可点。必须显式给 disabled 态，否则按钮外观仍是高亮琥珀色，
     用户会以为还能点、反复点击只会收到 429 提示。 */
  .checkin-pill:disabled{background:var(--line);color:var(--muted);box-shadow:none;cursor:default;opacity:.9;}
  .checkin-pill:disabled:active{transform:none;box-shadow:none;}
  /* 默认桌面用完整文案；窄屏顶栏只放得下短文案（见 max-width:768px 块内切换） */
  .checkin-pill .ck-short{display:none;}
  .sound-pill{display:inline-flex;align-items:center;gap:6px;background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);padding:8px 14px;font-size:12px;color:var(--muted);cursor:pointer;user-select:none;font-family:inherit;flex-shrink:0;white-space:nowrap;}
  .sound-pill b{color:var(--ink);font-size:11px;letter-spacing:.05em;}
  .credit-capsule{background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);padding:8px 14px;font-size:12px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;}
  .top-avatar{width:38px;height:38px;border-radius:50%;background:#fff;border:var(--border-hard);color:var(--ink2);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;flex-shrink:0;}
  .menu{flex:0 1 auto;padding:20px 20px 0;overflow-y:auto;}
  /* .menu-item / .menu-badge 已抽到 common.css（与 admin.html 统一） */
  .menu-icon{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;}
  .menu-icon svg{width:20px;height:20px;display:block;}
  .menu-head{font-size:11px;color:var(--muted);padding:4px 12px 6px;letter-spacing:.05em;}
  /* 抽屉顶部常驻积分条：仅移动端显示（PC 顶栏已有积分胶囊，避免重复）。
     移动端顶栏放不下积分，但积分是付费核心信息，必须始终可见、且随余额实时同步。 */
  .drawer-credit{display:none;align-items:center;justify-content:space-between;gap:10px;margin:12px 14px 0;padding:12px 14px;background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);}
  .drawer-credit .dc-label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;}
  .drawer-credit .dc-value{font-size:17px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;}
  .drawer-credit .dc-sub{font-size:11px;color:var(--muted);font-weight:400;margin-left:4px;}
  .drawer-credit .dc-topup{flex-shrink:0;font-size:12px;font-weight:600;color:var(--primary);background:none;border:none;padding:4px 8px;cursor:pointer;font-family:inherit;min-width:44px;min-height:44px;}
  .notif-badge{position:absolute;top:-7px;right:-7px;background:var(--red);color:#fff;font-size:10px;min-width:17px;height:17px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 4px;font-weight:600;}
  .notif-bell{position:relative;background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);padding:5px 8px;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;min-width:44px;min-height:44px;}
  .notif-bell:hover{color:var(--primary);transform:translate(-2px,-2px);box-shadow:var(--shadow-hard);}
  .notif-bell svg{width:17px;height:17px;}
  /* SSL 选项卡片 */
  .ssl-option{display:flex;align-items:center;gap:10px;padding:12px 14px;border:var(--border-hard);border-radius:var(--radius-ctl);cursor:pointer;transition:all .15s;font-size:13px;background:#fff;}
  .ssl-option.sel{border-color:var(--primary);box-shadow:0 2px 0 rgba(20,20,20,.07);transform:translate(-2px,-2px);}
  .ssl-option:hover{box-shadow:var(--shadow-hard);transform:translate(-2px,-2px);background:#fff;}
  .ssl-option input[type="radio"]{accent-color:var(--primary);}
  .ssl-option b{color:var(--primary);}
  /* 支付方式选择按钮 */
  .pay-channel{display:flex;gap:8px;margin-bottom:4px;}
  .channel-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:11px 0;border:var(--border-hard);border-radius:var(--radius-ctl);background:#fff;font-size:14px;cursor:pointer;transition:all .15s;}
  .channel-btn.active{background:var(--primary);color:#fff;font-weight:600;}
  .channel-btn:hover{box-shadow:var(--shadow-hard);transform:translate(-2px,-2px);}
  #chWx{color:#07C160;font-weight:600;}
  #chAli{color:#1677FF;font-weight:600;}
  /* 限时免费胶囊（价格 0 时展示） */
  .free-badge{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--success);color:#fff;font-size:11px;font-weight:600;line-height:1.6;margin-left:4px;vertical-align:middle;}
  .user-row{display:flex;align-items:center;justify-content:space-between;}
  .user-name{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .side-title{font-size:11px;color:var(--muted);margin-top:2px;}
  .side-title b{color:var(--primary);font-weight:600;}
  .credit-pill{font-size:12px;color:var(--primary);font-weight:600;}
  /* ===== 2.0 三步上线 ===== */
  .pick-row{display:flex;gap:12px;margin-bottom:18px;flex-wrap:wrap;}
  .pick-card{flex:1;min-width:200px;background:#fff;border:var(--border-hard);border-radius:var(--radius-card);padding:16px;cursor:pointer;transition:all .15s;}
  .pick-card.active{border-color:var(--primary);box-shadow:0 3px 10px rgba(20,20,20,.10);transform:translate(-2px,-2px);}
  .pick-card:hover{box-shadow:var(--shadow-hard);transform:translate(-2px,-2px);}
  .pick-ttl{font-size:15px;font-weight:600;color:var(--ink);}
  .pick-desc{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.6;}
  .pick-tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;background:var(--primary-bg);color:var(--primary);font-weight:600;margin-top:8px;}
  .pick-card.active .pick-tag{background:var(--primary-bg);}
  .pick-ic{width:40px;height:40px;border-radius:50%;background:var(--inset-bg);color:var(--primary);display:flex;align-items:center;justify-content:center;box-shadow:var(--inset-sm);margin-bottom:12px;}
  .pick-ic svg{width:20px;height:20px;}
  .pick-price{font-size:13px;font-weight:700;color:var(--amber);margin-top:10px;}
  .step-head{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600;color:var(--ink);margin:0 0 12px;}
  .step-num{width:24px;height:24px;border-radius:50%;background:var(--primary);color:#fff;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  /* 首页三步引导（组件化：内联样式沉淀为类） */
  .intro-steps{display:flex;gap:14px;margin:22px 0;flex-wrap:wrap;}
  .intro-step{flex:1;min-width:180px;text-align:center;}
  .card.intro-step{padding:24px 16px;margin-bottom:0;}
  .intro-num{width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;font-size:16px;font-weight:600;}
  .intro-title{font-size:15px;font-weight:600;}
  .intro-desc{color:var(--muted);font-size:13px;margin-top:6px;}
  .logout{background:none;border:1px solid var(--line);border-radius:8px;padding:5px 12px;font-size:12px;color:var(--muted);cursor:pointer;transition:all .15s;min-height:44px;}
  .logout:hover{color:var(--red);border-color:var(--red);}
  /* ===== 内容区 ===== */
  .content{flex:1;min-width:0;background:transparent;}
  .page{max-width:1144px;margin:0 auto;padding:24px 0 64px;}
  .page-greet{font-size:13px;color:var(--muted);margin-bottom:8px;letter-spacing:.02em;}
  .page-title{font-size:24px;font-weight:700;letter-spacing:-.01em;}
  .page-sub{color:var(--muted);font-size:14px;margin:6px 0 26px;}
  .page-head-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:4px;flex-wrap:wrap;}
  .credit-now{font-size:14px;color:var(--muted);}
  .credit-now b{color:var(--amber);font-weight:700;font-variant-numeric:tabular-nums;}
  .flow-steps{display:flex;align-items:center;gap:10px;margin:8px 0 20px;font-size:14px;flex-wrap:wrap;}
  .fs-item{color:var(--muted);font-weight:500;transition:color .2s;}
  .fs-item.active{color:var(--primary);font-weight:700;}
  .fs-arrow{color:var(--gray-400);}
  /* ===== 首页 Hero 部署卡 + 指标磁贴（复刻画布）===== */
  .hero-card{display:flex;gap:0;background:#fff;border:var(--border-hard);border-radius:var(--radius-card);padding:36px 48px;box-shadow:var(--shadow-hard);margin-bottom:24px;align-items:center;flex-wrap:wrap;min-height:300px;box-sizing:border-box;}
  .hero-main{flex:1;min-width:260px;}
  .hero-title{font-size:30px;font-weight:700;color:var(--ink);letter-spacing:-.02em;line-height:1.35;margin-top:9px;}
  .hero-sub{font-size:13px;color:var(--muted);margin-top:5px;}
  .hero-actions{display:flex;gap:16px;margin-top:42px;flex-wrap:wrap;}
  .hero-btn{padding:0 26px;height:52px;font-size:15px;border-radius:var(--radius-ctl);}
  .stat-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-bottom:6px;}
  .stat-tile{background:#fff;border:var(--border-hard);border-radius:var(--radius-card);padding:18px 20px;box-shadow:var(--shadow-hard);}
  .tile-val{font-size:26px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;}
  .tile-label{font-size:12px;color:var(--muted);margin-top:0;}
  .hero-step{display:flex;align-items:center;gap:8px;font-size:12px;}
  .hs-num{color:var(--primary);font-family:ui-monospace,monospace;font-weight:700;letter-spacing:.1em;}
  .hs-slash{color:var(--amber);}
  .hs-label{color:var(--amber);font-weight:600;}
  .hero-note{font-size:11px;color:var(--muted);margin-top:42px;font-family:ui-monospace,monospace;}
  /* hero 右侧真实业务信息：下次续费日 + 最近部署结果（替换原重复 KPI） */
  .hero-side{display:flex;flex-direction:column;gap:18px;padding-left:48px;margin-left:24px;border-left:1px solid var(--line);min-width:200px;}
  .hero-info .hi-label{font-size:11px;color:var(--muted);letter-spacing:.04em;}
  .hero-info .hi-val{font-size:17px;font-weight:700;color:var(--ink);margin-top:6px;line-height:1.5;}
  .hero-info .hi-val .ok{color:var(--success-ink);}
  .hero-info .hi-val .fail{color:var(--danger);}
  .hero-info .hi-val .warn{color:var(--amber);}
  .hero-info .hi-sub{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:3px;}
  @media(max-width:768px){ .hero-side{flex-direction:row;gap:24px;padding-left:0;margin-left:0;border-left:none;margin-top:20px;width:100%;min-width:0;} }
  .kf-ok{color:var(--success-ink);}
  .tile-ic{width:40px;height:40px;border-radius:50%;background:var(--inset-bg);color:var(--ink2);display:flex;align-items:center;justify-content:center;box-shadow:var(--inset-sm);margin-bottom:12px;}
  .tile-ic svg{width:19px;height:19px;}
  .tile-ic-amber{color:var(--amber);}
  .tile-ic-blue{color:var(--primary);}
  .tile-ic-orange{color:var(--amber);}
  .tile-ic-green{color:var(--success-ink);}
  .tile-val-amber{color:var(--amber);}
  /* 工作台两栏：当前部署任务 + 实时日志 */
  .dash-row{display:grid;grid-template-columns:1.15fr 1fr;gap:20px;margin-top:24px;}
  .dash-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
  .dash-title{font-size:15px;font-weight:700;color:var(--ink);}
  .live-tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--amber);letter-spacing:.08em;}
  .live-tag::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 3px var(--warning-bg);}
  .dash-empty{font-size:13px;color:var(--muted);padding:26px 0;text-align:center;}
  .log-screen{background:#262019;border-radius:12px;padding:14px 16px;min-height:220px;font-family:ui-monospace,'JetBrains Mono',monospace;font-size:12px;line-height:1.9;color:#B8AE97;box-shadow:inset 3px 3px 8px rgba(0,0,0,.5),inset -2px -2px 4px rgba(255,255,255,.08);overflow-y:auto;max-height:260px;}
  .log-line{white-space:pre-wrap;word-break:break-all;}
  .log-foot{font-size:11px;color:var(--muted);margin-top:10px;}
  .ds-file{font-size:13px;color:var(--ink2);font-family:ui-monospace,monospace;}
  .ds-step{display:flex;align-items:center;gap:10px;padding:9px 0;font-size:13px;}
  .ds-dot{width:10px;height:10px;border-radius:50%;background:var(--gray-300);flex-shrink:0;}
  .ds-dot.ok{background:var(--success);}
  .ds-dot.run{background:var(--amber);box-shadow:0 0 0 4px var(--warning-bg);animation:pulse-dot 1.6s ease-in-out infinite;}
  @keyframes pulse-dot{0%,100%{box-shadow:0 0 0 3px var(--warning-bg);}50%{box-shadow:0 0 0 6px var(--warning-bg);}}
  .ds-label{flex:1;color:var(--ink);}
  .ds-label.dim{color:var(--muted);}
  .ds-time{font-size:11px;color:var(--muted);font-family:ui-monospace,monospace;}
  /* 成长任务两栏 */
  .task-grid{display:grid;grid-template-columns:460px 1fr;gap:24px;align-items:start;}
  .task-col-left{display:flex;flex-direction:column;gap:24px;}
  /* 帮助教程 2×2 网格 */
  #guideContent{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start;}
  #guideContent .card{margin-bottom:0;}
  /* 设置中心窄卡 */
  #moreAccount .card{max-width:700px;}
  .banner-newuser{display:flex;align-items:center;gap:14px;background:var(--primary);border:var(--border-hard);border-radius:var(--radius-ctl);padding:16px 20px;margin-bottom:20px;color:#fff;cursor:pointer;box-shadow:0 2px 0 #003D7A;transition:transform .15s;}
  .banner-newuser:hover{transform:translateY(-2px);}
  .banner-newuser-icon{width:40px;height:40px;border-radius:8px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .banner-newuser-icon svg{width:22px;height:22px;color:#fff;}
  .banner-newuser-text{flex:1;}
  .banner-newuser-title{font-size:16px;font-weight:700;}
  .banner-newuser-desc{font-size:12px;opacity:.85;margin-top:3px;}
  .banner-newuser-cta{font-size:14px;font-weight:600;background:#fff;color:var(--primary);padding:8px 16px;border-radius:999px;white-space:nowrap;}
  .view{display:none;}
  .view.active{display:block;}
  /* ===== Neo-Brutalism 落地页（复刻 Ardot 画布「壹站部署 · Neo-Brutalism 落地页」）=====
     规范：米白底 #FFF4E0 · 纯黑 #141414 3px 描边 · 硬阴影（4-12px 位移 0 模糊）
     糖果色：蓝 #0066CC / 天蓝 #4DA3FF / 粉 #FF6BA6 / 黄 #FFD93D / 绿 #4ED88A
     字体：标题 900 粗黑 · 数字 Arial Black · 英文标签等宽粗体 */
  .auth-wrap{min-height:100vh;background:#FFF4E0;overflow-x:hidden;}
  .nb-mono{font-family:'Space Mono',Consolas,'Courier New',ui-monospace,monospace;}
  .nb-num{font-family:'Archivo Black','Arial Black',Arial,'PingFang SC','Microsoft YaHei',sans-serif;}
  /* ===== 顶部公告条（黑底黄字，静态居中）===== */
  .nb-topbar{background:#141414;height:44px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
  .nb-topbar-track{display:flex;white-space:nowrap;animation:nb-scroll 22s linear infinite;}
  .nb-topbar-track span{font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:14px;color:#FFD93D;letter-spacing:.06em;}
  /* ===== 页头导航 ===== */
  .nb-header{background:#FFF4E0;display:flex;align-items:center;justify-content:space-between;gap:24px;max-width:1344px;margin:0 auto;padding:20px 48px;position:relative;z-index:5;}
  .nb-brand{display:flex;align-items:center;gap:12px;}
  .nb-brand-box{width:44px;height:44px;background:#0066CC;border:3px solid #141414;border-radius:8px;box-shadow:4px 4px 0 #141414;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .nb-brand-box svg{width:24px;height:24px;}
  .nb-brand-name{font-size:17px;font-weight:700;color:#141414;line-height:1.2;}
  .nb-brand-sub{font-size:10px;font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;color:#6B6B6B;letter-spacing:.12em;}
  .nb-nav{display:flex;gap:30px;}
  .nb-nav a{font-size:15px;font-weight:700;color:#141414;text-decoration:none;cursor:pointer;}
  .nb-nav a:hover{text-decoration:underline;text-underline-offset:4px;}
  .nb-actions{display:flex;gap:14px;align-items:center;}
  .nb-btn{font-family:inherit;font-weight:700;border:3px solid #141414;cursor:pointer;border-radius:8px;height:46px;padding:0 22px;font-size:15px;transition:transform .12s ease,box-shadow .12s ease;background:#fff;color:#141414;flex-shrink:0;}
  .nb-btn:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 #141414;}
  .nb-btn:active{transform:translate(3px,3px);box-shadow:none;}
  .nb-btn-yellow{background:#FFD93D;box-shadow:5px 5px 0 #141414;}
  .nb-btn-blue{background:#0066CC;color:#fff;box-shadow:6px 6px 0 #141414;}
  .nb-divider{height:3px;background:#141414;}
  /* ===== 主视觉 ===== */
  .nb-hero{max-width:1344px;margin:0 auto;padding:56px 48px 64px;display:grid;grid-template-columns:1.12fr .88fr;gap:40px;align-items:center;}
  .nb-hero-badge{display:inline-flex;align-items:center;gap:8px;background:#4ED88A;border:3px solid #141414;border-radius:6px;box-shadow:4px 4px 0 #141414;padding:9px 16px;font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:13px;color:#141414;}
  .nb-hero h1{font-size:78px;line-height:1.13;font-weight:900;color:#141414;margin:22px 0 0;}
  .nb-hero-sub{margin-top:18px;font-size:17px;line-height:1.76;color:#4A4A4A;max-width:560px;}
  .nb-hero-btns{display:flex;gap:16px;margin-top:32px;flex-wrap:wrap;}
  .nb-hero-btns .nb-btn{height:58px;padding:0 30px;font-size:17px;border-radius:10px;}
  .nb-hero-trust{margin-top:26px;font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:13px;color:#6B6B6B;}
  /* 主视觉右侧：控制台 mockup + 贴纸 */
  .nb-hero-visual{position:relative;height:580px;}
  .nb-mock{position:absolute;left:56px;top:120px;width:420px;height:300px;background:#fff;border:3px solid #141414;border-radius:10px;box-shadow:12px 12px 0 #141414;display:flex;flex-direction:column;overflow:hidden;}
  .nb-mock-bar{height:34px;border-bottom:3px solid #141414;display:flex;align-items:center;gap:7px;padding:0 12px;background:#FFF4E0;flex-shrink:0;}
  .nb-mock-dot{width:10px;height:10px;border-radius:50%;border:2px solid #141414;flex-shrink:0;}
  .nb-mock-dot.p{background:#FF6BA6;} .nb-mock-dot.y{background:#FFD93D;} .nb-mock-dot.g{background:#4ED88A;}
  .nb-mock-url{flex:1;height:20px;background:#fff;border:2px solid #141414;border-radius:4px;font-size:10px;font-family:'Space Mono',Consolas,monospace;display:flex;align-items:center;padding:0 8px;color:#4A4A4A;overflow:hidden;white-space:nowrap;}
  .nb-mock-body{flex:1;padding:16px;display:flex;flex-direction:column;gap:12px;}
  .nb-mock-line{height:14px;border:2px solid #141414;border-radius:4px;background:#fff;}
  .nb-mock-line.w50{width:50%;} .nb-mock-line.w70{width:70%;} .nb-mock-line.w90{width:90%;}
  .nb-mock-line.blue{background:#4DA3FF;} .nb-mock-line.yellow{background:#FFD93D;} .nb-mock-line.green{background:#4ED88A;} .nb-mock-line.pink{background:#FF6BA6;}
  .nb-sticker{position:absolute;border:3px solid #141414;border-radius:8px;box-shadow:6px 6px 0 #141414;padding:12px 18px;display:flex;flex-direction:column;gap:2px;z-index:2;}
  .nb-sticker .v{font-family:'Archivo Black','Arial Black',Arial,sans-serif;font-weight:900;font-size:28px;line-height:1.1;color:#fff;}
  .nb-sticker .k{font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:11px;color:#FFD93D;}
  .nb-sticker.blue{background:#0066CC;left:396px;top:26px;}
  .nb-sticker.yellow{background:#FFD93D;left:352px;top:428px;}
  .nb-sticker.yellow .v{color:#141414;} .nb-sticker.yellow .k{color:#141414;}
  .nb-sticker.round{width:132px;height:132px;border-radius:50%;background:#4ED88A;left:8px;top:428px;align-items:center;justify-content:center;text-align:center;padding:0;}
  .nb-sticker.round .v{font-size:22px;color:#141414;font-weight:900;font-family:'PingFang SC','Microsoft YaHei',sans-serif;}
  .nb-sticker.round .k{font-size:10px;color:#141414;}
  .nb-star{position:absolute;left:494px;top:326px;width:76px;height:76px;color:#FF6BA6;z-index:1;}
  .nb-star svg{width:100%;height:100%;filter:drop-shadow(0 0 0 #141414);}
  .nb-dots{position:absolute;left:470px;top:496px;width:96px;height:72px;display:grid;grid-template-columns:repeat(4,10px);grid-auto-rows:10px;gap:18px;z-index:1;}
  .nb-dots i{width:10px;height:10px;border-radius:50%;background:#141414;}
  /* ===== 能力横幅（粉色，静态居中）===== */
  .nb-marquee{background:#FF6BA6;border-top:3px solid #141414;border-bottom:3px solid #141414;height:58px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
  .nb-marquee-track{display:flex;white-space:nowrap;font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:17px;color:#141414;animation:nb-scroll 26s linear infinite;}
  .nb-marquee-track span{padding:0 18px;}
  /* 跑马灯无限滚动：内容复制了两份，translateX(-50%) 时第二份正好接上，实现无缝循环 */
  @keyframes nb-scroll{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}
  /* ===== 分区通用 ===== */
  .nb-sec{padding:72px 48px 80px;}
  .nb-sec-white{background:#fff;border-top:3px solid #141414;border-bottom:3px solid #141414;}
  .nb-sec-cream{background:#FFF4E0;}
  .nb-sec-dark{background:#141414;border-top:3px solid #141414;border-bottom:3px solid #141414;}
  .nb-wrap{max-width:1344px;margin:0 auto;}
  .nb-tag{font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:13px;color:#0066CC;letter-spacing:.04em;}
  .nb-h2{font-size:54px;font-weight:900;color:#141414;margin-top:10px;line-height:1.2;}
  .nb-sub{font-size:16px;color:#4A4A4A;margin-top:10px;max-width:640px;}
  .nb-sec-dark .nb-h2{color:#fff;}
  .nb-sec-dark .nb-sub{color:#C9C9C9;}
  .nb-sec-dark .nb-tag{color:#FFD93D;}
  .nb-flag{display:inline-flex;align-items:center;background:#FFD93D;border:3px solid #141414;border-radius:8px;box-shadow:5px 5px 0 #141414;padding:12px 18px;font-weight:700;font-size:14px;color:#141414;}
  .nb-flag.green{background:#4ED88A;}
  /* ===== 上线方式 ===== */
  .nb-sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;}
  .nb-ways-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:44px;}
  .nb-way{border:3px solid #141414;border-radius:10px;box-shadow:8px 8px 0 #141414;padding:26px 24px;display:flex;flex-direction:column;gap:14px;transition:transform .15s ease,box-shadow .15s ease;}
  .nb-way:hover{transform:translate(-3px,-3px);box-shadow:11px 11px 0 #141414;}
  .nb-way.yellow{background:#FFD93D;} .nb-way.sky{background:#4DA3FF;} .nb-way.pink{background:#FF6BA6;}
  .nb-way-top{display:flex;gap:12px;align-items:center;}
  .nb-way-no{width:44px;height:44px;background:#141414;color:#FFD93D;border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:'Archivo Black','Arial Black',Arial,sans-serif;font-weight:900;font-size:22px;flex-shrink:0;}
  .nb-way.sky .nb-way-no{color:#4DA3FF;} .nb-way.pink .nb-way-no{color:#FF6BA6;}
  .nb-way-ic{width:44px;height:44px;background:#fff;border:3px solid #141414;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#141414;flex-shrink:0;}
  .nb-way-ic svg{width:24px;height:24px;}
  .nb-way h3{font-size:26px;font-weight:900;color:#141414;}
  .nb-way p{font-size:15px;line-height:1.73;color:rgba(20,20,20,.82);}
  .nb-way-tag{align-self:flex-start;background:#141414;color:#FFD93D;border-radius:6px;padding:7px 14px;font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:12px;}
  .nb-way.sky .nb-way-tag{color:#4DA3FF;} .nb-way.pink .nb-way-tag{color:#FF6BA6;}
  /* ===== 核心特性 ===== */
  .nb-feat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:40px;}
  .nb-feat{background:#fff;border:3px solid #141414;border-radius:10px;box-shadow:7px 7px 0 #141414;padding:24px 22px;display:flex;flex-direction:column;gap:12px;transition:transform .15s ease,box-shadow .15s ease;}
  .nb-feat:hover{transform:translate(-3px,-3px);box-shadow:10px 10px 0 #141414;}
  .nb-feat-ic{width:56px;height:56px;border:3px solid #141414;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#141414;}
  .nb-feat-ic svg{width:30px;height:30px;}
  .nb-feat-ic.yellow{background:#FFD93D;} .nb-feat-ic.blue{background:#4DA3FF;} .nb-feat-ic.green{background:#4ED88A;} .nb-feat-ic.pink{background:#FF6BA6;}
  .nb-feat h3{font-size:21px;font-weight:900;color:#141414;}
  .nb-feat p{font-size:14px;line-height:1.79;color:#4A4A4A;}
  /* ===== 真实案例 ===== */
  .nb-case-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:40px;}
  .nb-case{background:#fff;border:3px solid #141414;border-radius:10px;box-shadow:8px 8px 0 #141414;padding:14px;display:flex;flex-direction:column;gap:12px;text-decoration:none;color:#141414;transition:transform .15s ease,box-shadow .15s ease;}
  .nb-case:hover{transform:translate(-3px,-3px);box-shadow:11px 11px 0 #141414;}
  .nb-case img{width:100%;height:176px;object-fit:cover;border:2px solid #141414;border-radius:6px;display:block;}
  .nb-case-name{font-size:17px;font-weight:700;color:#141414;}
  .nb-case-tag{align-self:flex-start;border:2px solid #141414;border-radius:6px;padding:5px 12px;font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:12px;color:#141414;}
  .nb-case-tag.yellow{background:#FFD93D;} .nb-case-tag.blue{background:#4DA3FF;} .nb-case-tag.green{background:#4ED88A;} .nb-case-tag.pink{background:#FF6BA6;}
  /* ===== 数据背书（黑底 + 白硬阴影）===== */
  .nb-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:36px;}
  .nb-stat{border:3px solid #141414;border-radius:10px;box-shadow:6px 6px 0 #fff;padding:24px 20px;transition:transform .15s ease,box-shadow .15s ease;}
  .nb-stat:hover{transform:translate(-2px,-2px);box-shadow:8px 8px 0 #fff;}
  .nb-stat .num{font-family:'Archivo Black','Arial Black',Arial,sans-serif;font-weight:900;font-size:56px;line-height:1;color:#141414;}
  .nb-stat .lbl{font-size:15px;font-weight:700;color:#141414;margin-top:10px;}
  .nb-stat .desc{font-size:13px;color:rgba(20,20,20,.72);margin-top:4px;}
  .nb-stat.yellow{background:#FFD93D;} .nb-stat.green{background:#4ED88A;} .nb-stat.sky{background:#4DA3FF;} .nb-stat.pink{background:#FF6BA6;}
  /* ===== CTA（黄底）===== */
  .nb-cta{background:#FFD93D;border-top:3px solid #141414;border-bottom:3px solid #141414;padding:88px 48px;}
  .nb-cta .nb-tag{color:#141414;}
  .nb-cta h2{font-size:58px;font-weight:900;color:#141414;margin-top:14px;line-height:1.2;}
  .nb-cta p{font-size:17px;color:#141414;margin-top:14px;}
  .nb-cta-btns{display:flex;gap:16px;margin-top:30px;align-items:center;flex-wrap:wrap;}
  .nb-cta-btns .nb-btn{height:60px;padding:0 28px;font-size:16px;border-radius:10px;}
  .nb-cta-star{width:64px;height:64px;color:#141414;flex-shrink:0;}
  .nb-cta-star svg{width:100%;height:100%;}
  .nb-cta-note{margin-top:24px;font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:14px;color:#141414;}
  /* ===== 页尾（黑底）===== */
  .nb-footer{background:#141414;padding:72px 48px 32px;color:#fff;}
  .nb-footer-top{display:flex;gap:48px;justify-content:space-between;flex-wrap:wrap;}
  .nb-footer-brand{width:340px;max-width:100%;}
  .nb-footer-logo{display:flex;align-items:center;gap:10px;}
  .nb-footer-box{width:40px;height:40px;background:#0066CC;border:3px solid #fff;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .nb-footer-box svg{width:22px;height:22px;}
  .nb-footer-brand .name{font-size:20px;font-weight:900;color:#fff;}
  .nb-footer-brand .desc{font-size:14px;color:#C9C9C9;margin-top:14px;line-height:1.7;}
  .nb-footer-links{display:flex;gap:64px;flex:1;justify-content:flex-end;flex-wrap:wrap;}
  .nb-footer-col{display:flex;flex-direction:column;gap:12px;min-width:120px;}
  .nb-footer-col .t{font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;font-size:13px;margin-bottom:2px;}
  .nb-footer-col .t.yellow{color:#FFD93D;} .nb-footer-col .t.pink{color:#FF6BA6;} .nb-footer-col .t.green{color:#4ED88A;}
  .nb-footer-col a{font-size:14px;color:#fff;text-decoration:none;cursor:pointer;}
  .nb-footer-col a:hover{text-decoration:underline;}
  .nb-footer-line{height:3px;background:#4A4A4A;margin:48px 0 24px;}
  .nb-footer-bot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:13px;color:#9E9E9E;}
  .nb-footer-bot .cp{font-family:'Space Mono',Consolas,'Courier New',monospace;font-weight:700;}
  /* ===== 底部糖果条 ===== */
  .nb-candy{display:flex;height:18px;}
  .nb-candy i{flex:1;}
  .nb-candy .c1{background:#FF6BA6;} .nb-candy .c2{background:#FFD93D;} .nb-candy .c3{background:#4ED88A;} .nb-candy .c4{background:#0066CC;}
  /* ===== 响应式 ===== */
  @media(min-width:1101px) and (max-width:1344px){
    .nb-hero h1{font-size:66px;}
  }
  @media(max-width:1100px){
    .nb-hero{grid-template-columns:1fr;padding:48px 24px 56px;}
    .nb-hero-visual{height:auto;min-height:440px;transform:scale(.9);transform-origin:top left;margin-left:-20px;}
    .nb-ways-grid{grid-template-columns:1fr 1fr;}
    .nb-feat-grid{grid-template-columns:1fr 1fr;}
    .nb-case-grid{grid-template-columns:1fr 1fr;}
    .nb-stat-grid{grid-template-columns:1fr 1fr;}
    .nb-nav{display:none;}
  }
  @media(max-width:768px){
    .nb-header{padding:14px 16px;}
    .nb-hero{padding:36px 16px 44px;}
    .nb-hero h1{font-size:40px;}
    .nb-hero-sub{font-size:15px;}
    .nb-hero-visual{min-height:380px;transform:none;margin-left:0;height:400px;overflow:hidden;}
    .nb-mock{left:0;top:88px;width:88%;height:210px;}
    .nb-sticker.blue{left:auto;right:4px;top:8px;}
    .nb-sticker.yellow{left:auto;right:12px;top:300px;}
    .nb-sticker.round{width:96px;height:96px;left:0;top:300px;}
    .nb-star{display:none;} .nb-dots{display:none;}
    .nb-sec{padding:44px 16px 56px;}
    .nb-h2{font-size:34px;}
    .nb-ways-grid{grid-template-columns:1fr;}
    .nb-feat-grid{grid-template-columns:1fr 1fr;gap:14px;}
    .nb-case-grid{grid-template-columns:1fr;gap:16px;}
    .nb-stat-grid{grid-template-columns:1fr 1fr;gap:14px;}
    .nb-stat .num{font-size:40px;}
    .nb-cta{padding:56px 16px;}
    .nb-cta h2{font-size:36px;}
    .nb-cta-btns .nb-btn{height:56px;}
    .nb-footer{padding:48px 16px 24px;}
    .nb-footer-links{gap:32px;justify-content:flex-start;}
    /* 触控目标：筛选按钮/搜索框/footer 链接在移动端补到 44px（Material 触控标准） */
    .site-filter{min-height:44px;padding:8px 16px;}
    .site-search{min-height:44px;}
    .nb-footer-col a{min-height:44px;display:flex;align-items:center;}
  }
  .auth-logo-box{width:48px;height:48px;border-radius:var(--radius-ctl);background:var(--primary);border:var(--border-hard);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;box-shadow:0 2px 0 #003D7A;}
  .auth-logo-box svg{width:22px;height:22px;}
  .auth-brand{text-align:center;font-size:14px;font-weight:600;color:var(--ink);margin-bottom:2px;}
  .auth-title{text-align:center;font-size:24px;font-weight:700;margin-bottom:4px;}
  .auth-desc{text-align:center;font-size:13px;color:var(--muted);margin-bottom:24px;}
  .auth-back{text-align:center;margin-top:16px;font-size:13px;}
  .auth-back a{color:var(--muted);text-decoration:none;}
  .auth-back a:hover{color:var(--primary);}
  .price-list{display:flex;flex-direction:column;gap:10px;margin-top:6px;max-height:60vh;overflow-y:auto;}
  .price-row{display:flex;align-items:center;gap:10px;border:var(--border-hard);border-radius:8px;padding:12px 14px;background:#fff;box-shadow:var(--shadow-hard);}
  .price-row span{flex:1;font-size:14px;color:var(--ink2);}
  .price-row b{font-size:14px;color:var(--ink);white-space:nowrap;}
  .price-row i{font-style:normal;font-size:13px;color:var(--muted);white-space:nowrap;}
  .share-status{margin-bottom:14px;font-size:13px;font-weight:600;}
  /* 效果预览：仿微信分享卡片 */
  .share-preview{margin-bottom:16px;padding:12px;background:#f7f7f7;border-radius:10px;border:1px solid #eee;}
  .share-preview-label{font-size:12px;color:var(--muted);margin-bottom:8px;font-weight:600;}
  .wx-card{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid #e5e5e5;border-radius:8px;padding:12px;}
  .wx-card-img-box{width:56px;height:56px;border-radius:6px;flex-shrink:0;background:#e5e5e5 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23b2b2b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='18' height='18' rx='2'/><circle cx='8.5' cy='8.5' r='1.5'/><path d='M21 15l-5-5L5 21'/></svg>") center/20px 20px no-repeat;position:relative;overflow:hidden;}
  .wx-card-img{width:100%;height:100%;object-fit:cover;border-radius:6px;position:relative;z-index:1;display:block;}
  .wx-card-img:not([src]){display:none;}
  .wx-card-body{flex:1;min-width:0;}
  .wx-card-title{font-size:15px;font-weight:600;color:#191919;line-height:1.4;word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
  .wx-card-desc{font-size:13px;color:#888;margin-top:2px;line-height:1.4;word-break:break-all;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}
  .share-status.pending{color:#b98900;background:#fff7e0;border:1px solid #f0d98a;border-radius:6px;padding:8px 12px;}
  .share-status.approved{color:#0a7d4f;background:#e6f7ee;border:1px solid #a8e0c3;border-radius:6px;padding:8px 12px;}
  .share-status.rejected{color:#c0392b;background:#fdeaea;border:1px solid #f2b8b0;border-radius:6px;padding:8px 12px;}
  .share-img-preview{position:relative;width:64px;height:64px;border-radius:8px;overflow:hidden;border:2px solid #141414;box-shadow:2px 2px 0 #141414;}
  .share-img-preview img{width:100%;height:100%;object-fit:cover;display:block;}
  .share-img-del{position:absolute;top:0;right:0;width:20px;height:20px;background:#141414;color:#fff;font-size:13px;line-height:20px;text-align:center;cursor:pointer;}
  .share-price-tip{font-size:12px;color:var(--muted);margin-bottom:10px;}
  .share-qr-box{text-align:center;padding:6px 0 4px;}
  .share-qr-box #shareQrCode{display:flex;justify-content:center;}
  .share-qr-tip{font-size:12px;color:var(--muted);margin-top:8px;}
  .share-qr-actions{display:flex;gap:10px;justify-content:center;margin-top:12px;}
  .share-help{margin-top:16px;text-align:center;font-size:12px;color:var(--muted);cursor:pointer;}
  .share-help-ic{display:inline-block;width:16px;height:16px;line-height:16px;text-align:center;border-radius:50%;background:#141414;color:#fff;font-size:11px;font-weight:700;margin-left:4px;}
  .crop-stage{max-height:48vh;overflow:hidden;border-radius:8px;border:2px solid #141414;background:#f0f0f0;margin-top:10px;}
  /* 裁剪弹窗要盖在分享设置弹窗之上（两者都是 .modal z-index:100，靠 DOM 顺序分享弹窗会盖住裁剪框） */
  #cropModal{z-index:200;}
  .crop-stage img{display:block;max-width:100%;}
  .crop-actions{display:flex;gap:12px;justify-content:center;margin-top:14px;}
  .tabs{display:flex;gap:6px;margin-bottom:20px;background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);padding:4px;box-shadow:var(--shadow-hard);}
  .tab{flex:1;text-align:center;padding:8px;border-radius:var(--radius-ctl);background:transparent;color:var(--muted);cursor:pointer;font-size:13px;border:2px solid transparent;font-family:inherit;min-height:44px;display:flex;align-items:center;justify-content:center;}
  .tab.active{background:var(--primary);border-color:#141414;color:#fff;font-weight:600;}
  .field{margin-bottom:14px;}
  .field label{display:block;font-size:13px;color:var(--ink2);margin-bottom:6px;font-weight:500;}
  .field input,.field textarea{width:100%;padding:10px 12px;border:var(--border-hard);border-radius:var(--radius-ctl);font-size:14px;font-family:inherit;background:#fff;transition:box-shadow .15s;}
  .field input:focus,.field textarea:focus{outline:none;box-shadow:var(--ring);}
  .field textarea{font-family:ui-monospace,monospace;font-size:12px;min-height:72px;resize:vertical;}
  .host-mode-switch{display:flex;gap:4px;background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);padding:4px;box-shadow:var(--shadow-hard);}
  .host-mode-tab{flex:1;text-align:center;padding:9px;border-radius:var(--radius-ctl);color:var(--muted);cursor:pointer;font-size:14px;transition:.15s;user-select:none;}
  .host-mode-tab.active{background:var(--primary);color:#fff;font-weight:600;}
  .update-site-list{display:flex;flex-direction:column;gap:8px;max-height:260px;overflow-y:auto;}
  .update-site-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:var(--border-hard);border-radius:var(--radius-ctl);cursor:pointer;transition:.15s;background:#fff;}
  .update-site-item.selected{border-color:var(--primary);box-shadow:4px 4px 0 #141414;transform:translate(-2px,-2px);}
  .update-site-item:hover{box-shadow:var(--shadow-hard);transform:translate(-2px,-2px);}
  .update-site-radio{width:18px;height:18px;border-radius:50%;border:2px solid var(--gray-400);flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:.15s;box-sizing:border-box;}
  .update-site-item.selected .update-site-radio{border-color:var(--primary);}
  .update-site-item.selected .update-site-radio::after{content:'';width:8px;height:8px;border-radius:50%;background:var(--primary);}
  .update-site-info{flex:1;min-width:0;}
  .update-site-name{font-size:14px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .update-site-meta{font-size:12px;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .update-site-empty{font-size:13px;color:var(--muted);padding:18px;text-align:center;border:1.5px dashed var(--line);border-radius:12px;}
  .update-site-fee{font-size:13px;color:var(--ink2);background:var(--primary-bg);border-radius:8px;padding:8px 12px;margin-bottom:10px;line-height:1.6;display:none;}
  .update-site-fee b{color:var(--primary);}
  .err{color:var(--red);font-size:12px;margin-top:8px;min-height:16px;}
  .agree-row{display:flex;align-items:center;gap:8px;margin-top:12px;}
  /* .btn 骨架与各变体（.btn-primary/.btn-ghost/.btn-sm/.btn-block）已抽到 common.css；
     这里只保留客户端的尺寸规格（padding/字号）——管理端密度不同，见 common.css 头注释 */
  .btn{padding:11px 18px;font-size:14px;}
  .code-row{display:flex;gap:10px;align-items:center;}
  .code-row input{flex:1;}
  .code-btn{flex-shrink:0;white-space:nowrap;padding:10px 14px;border:1px solid var(--primary);color:var(--primary);background:transparent;border-radius:8px;font-size:13px;cursor:pointer;font-family:inherit;min-height:44px;}
  .code-btn:disabled{opacity:.5;cursor:not-allowed;}
  /* ===== 卡片/通用 ===== */
  .drop{border:2px dashed #141414;border-radius:var(--radius-card);background:#fff;padding:44px 24px;text-align:center;cursor:pointer;transition:.15s;}
  .drop:hover,.drop.drag{border-color:var(--primary);background:var(--primary-bg);}
  .drop .icon{font-size:34px;color:var(--primary);}
  .drop .tip{font-size:15px;font-weight:500;margin-top:10px;}
  .drop .hint{font-size:12px;color:var(--muted);margin-top:4px;}
  .file{display:none;}
  .progress{display:none;margin-top:16px;}
  .bar{height:8px;background:var(--line);border-radius:999px;overflow:hidden;}
  .bar i{display:block;height:100%;width:0;background:var(--primary);transition:width .2s;}
  /* 分析中：进度条切换为不确定态（滑块左右往返滑动），表示正在解压/识别技术栈/合规扫描，避免「卡在 100%」的假象 */
  .bar.indeterminate i{width:40%;transition:none;animation:indeterminate 1.2s ease-in-out infinite;}
  @keyframes indeterminate{0%{transform:translateX(-110%);}100%{transform:translateX(360%);}}
  .ptext{font-size:12px;color:var(--muted);margin-top:6px;text-align:center;}
  /* 2.2-8 内联样式组件化：部署状态横幅 / 警告盒（高频内联模式沉淀为类） */
  .status-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:#f0f6ff;border-radius:8px;margin-bottom:10px;font-size:13px;color:#0a5;}
  .warn-box{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;padding:10px 14px;background:var(--warning-soft);border:1px solid var(--warning-border);border-radius:8px;font-size:13px;color:var(--warning-ink2);line-height:1.7;}
  .ptext .spin{display:inline-block;width:12px;height:12px;border:2px solid var(--primary2);border-top-color:transparent;border-radius:50%;vertical-align:-2px;margin:0 4px;animation:spin .8s linear infinite;}
  @keyframes spin{to{transform:rotate(360deg);}}
  /* .card 骨架已抽到 common.css；这里只保留客户端差异（间距） */
  .card{margin-bottom:14px;}
  .stage{font-size:13px;font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:8px;}
  .dot{width:8px;height:8px;border-radius:50%;background:var(--muted);}
  .dot.ok{background:var(--green);}
  .dot.fail{background:var(--red);}
  .kv{display:flex;justify-content:space-between;font-size:13px;padding:3px 0;}
  .kv span{color:var(--muted);}
  /* 可点击的开关行（界面音效等）：沿用 .kv 的排版，补触控目标与开关态 */
  .kv.kv-toggle{width:100%;align-items:center;gap:12px;background:none;border:none;font-family:inherit;font-size:13px;text-align:left;padding:10px 0;cursor:pointer;min-height:44px;border-radius:10px;}
  .kv.kv-toggle b{color:var(--muted);font-weight:600;}
  .kv.kv-toggle.is-on b{color:var(--primary);}
  .issue{font-size:13px;color:var(--red);padding:3px 0;word-break:break-all;}
  .url-box{background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);padding:10px 14px;margin-top:8px;word-break:break-all;}
  .url-box a{color:var(--primary);font-weight:600;text-decoration:none;word-break:break-all;}
  /* .badge 及状态色（.ok/.fail/.amber/.gray）已抽到 common.css */
  .task-ic{width:36px;height:36px;border-radius:999px;background:var(--inset-bg);color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:var(--inset-sm);}
  .task-ic svg{width:20px;height:20px;}
  .task-ic-done{background:var(--success-bg);color:var(--success-ink);}
  .section-title{font-size:16px;font-weight:600;margin:30px 0 14px;display:flex;align-items:center;justify-content:space-between;}
  .projects-tabs{display:flex;gap:4px;margin:16px 0 18px;border-bottom:2px solid var(--line);}
  .projects-tab{padding:10px 18px;font-size:14px;font-weight:600;color:var(--muted);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:color .15s;}
  .projects-tab:hover{color:var(--ink);}
  .projects-tab.active{color:var(--ink);border-bottom-color:var(--primary);}
  /* 区块面板：把「裸标题+内容」聚成卡片，暖纸底上的白色层次 */
  .panel{background:#fff;border-radius:var(--radius-card);padding:20px 22px 18px;margin-top:18px;box-shadow:var(--shadow-hard);}
  .panel-head{display:flex;align-items:center;font-size:15px;font-weight:700;color:var(--ink);margin-bottom:14px;}
  .panel-tip{font-size:12px;color:var(--muted);margin:-8px 0 12px;}
  .panel .empty{padding:26px 16px;}
  /* 我的项目：站点卡片网格 + 筛选工具条 */
  .site-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap;}
  .site-filters{display:flex;gap:6px;flex-wrap:wrap;}
  .site-filter{padding:6px 14px;border:2px solid transparent;border-radius:var(--radius-ctl);background:transparent;color:var(--ink2);font-size:13px;cursor:pointer;font-family:inherit;min-height:34px;transition:all .15s;}
  .site-filter.active{background:var(--primary);border-color:#141414;color:#fff;font-weight:600;}
  .site-filter:hover{color:var(--primary);}
  .site-search{flex:1;min-width:160px;padding:7px 12px;border:var(--border-hard);border-radius:var(--radius-ctl);font-size:13px;background:#fff;color:var(--ink);min-height:34px;}
  .site-grid{display:grid;grid-template-columns:1fr;gap:20px;}
  
  .site-card{background:#fff;border:var(--border-hard);border-radius:var(--radius-card);padding:20px 24px;box-shadow:var(--shadow-hard);display:flex;flex-direction:column;gap:16px;}
  .site-card-top{display:flex;align-items:center;justify-content:space-between;gap:16px;}
  .site-card-left{display:flex;align-items:center;gap:14px;min-width:0;}
  .site-card-ic{width:48px;height:48px;border-radius:12px;background:var(--inset-bg);color:var(--primary);display:flex;align-items:center;justify-content:center;box-shadow:var(--inset-sm);flex-shrink:0;}
  .site-card-ic svg{width:24px;height:24px;}
  .site-card-info{min-width:0;}
  .site-card-info .badge{margin-top:6px;}
  .site-domain{font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .site-card-primary{display:flex;align-items:center;gap:8px;flex-shrink:0;}
  .site-card-stats{display:flex;gap:36px;padding-top:14px;border-top:1px solid var(--line);}
  .sc-stat{text-align:left;}
  .sc-num{font-size:16px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;}
  .sc-label{font-size:11px;color:var(--muted);margin-top:2px;}
  .site-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
  .site-name-row{display:flex;align-items:center;gap:8px;min-width:0;}
  .site-name-text{font-size:15px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;line-height:1.4;}
  .site-name-row .badge{flex-shrink:0;}
  .site-name .mono{font-size:12px;color:var(--muted);font-weight:400;}
  .site-meta-main{font-size:13px;color:var(--ink2);}
  .site-meta-main .expiring{color:var(--red);font-weight:600;}
  .site-meta-sub{font-size:12px;color:var(--muted);}
  .site-actions{display:flex;align-items:center;gap:8px;margin-top:4px;}
  .site-actions .del-btn{margin-left:auto;}
  /* 站点卡片「管理」下拉：收纳次要操作，主次分离去拥挤 */
  .site-more{position:relative;flex-shrink:0;}
  .site-menu{position:absolute;top:calc(100% + 6px);right:0;background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);box-shadow:var(--shadow-hard);padding:6px;min-width:150px;z-index:60;display:flex;flex-direction:column;}
  .site-menu button{text-align:left;padding:9px 12px;border:none;background:none;font-size:13px;border-radius:8px;cursor:pointer;color:var(--ink2);min-height:36px;white-space:nowrap;font-family:inherit;}
  .site-menu button:hover{background:var(--gray-100);color:var(--ink);}
  .site-menu button.danger{color:var(--danger);}
  .site-menu button.danger:hover{background:var(--danger-bg);color:var(--danger);}
  .refresh{font-size:12px;color:var(--primary);cursor:pointer;font-weight:400;}
  .empty{text-align:center;color:var(--muted);font-size:13px;padding:36px 16px;display:flex;flex-direction:column;align-items:center;gap:10px;}
  .empty::before{content:'';width:44px;height:44px;background:var(--empty-bg);border-radius:50%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D9985F' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 12h-6l-2 3h-4l-2-3H2'/%3E%3Cpath d='M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:22px;}

  /* ===== 列表卡片 ===== */
  .list-card{background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);padding:16px 18px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:14px;transition:box-shadow .15s,transform .15s;}
  .list-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard);}
  .list-info{flex:1;min-width:0;}
  .list-name{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;}
  .list-meta{font-size:12px;color:var(--muted);margin-top:3px;}
  .list-link{font-size:12px;color:var(--primary);text-decoration:none;word-break:break-all;display:inline-block;margin-top:4px;}
  .del-btn{flex-shrink:0;border:1px solid var(--red);color:var(--red);background:transparent;border-radius:8px;padding:6px 14px;font-size:12px;cursor:pointer;transition:all .15s;min-height:44px;}
  .del-btn:hover{background:var(--danger-bg);}
  /* ===== 商城档位 ===== */
  .tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
  .tier{background:#fff;border:var(--border-hard);border-radius:var(--radius-card);padding:22px 18px;text-align:center;cursor:pointer;transition:all .18s;position:relative;overflow:hidden;}
  .tier.active{box-shadow:6px 6px 0 #141414;transform:translate(-2px,-2px);}
  .tier:hover{box-shadow:6px 6px 0 #141414;transform:translate(-2px,-2px);}
  .tier.hot{border-color:var(--amber);}
  .tier .t-credits{font-size:28px;font-weight:700;color:var(--ink);letter-spacing:-.02em;}
  .tier .t-credits em{font-style:normal;font-size:14px;color:var(--muted);font-weight:500;}
  .tier .t-label{font-size:14px;font-weight:600;margin-top:6px;}
  .tier .t-price{font-size:20px;color:var(--amber);font-weight:700;margin-top:6px;}
  .tier .t-desc{font-size:12px;color:var(--muted);margin-top:8px;line-height:1.5;}
  .tier-badge{position:absolute;top:0;right:0;background:linear-gradient(135deg,var(--amber),var(--red));color:#fff;font-size:11px;font-weight:700;padding:4px 12px;border-radius:0 0 0 12px;}
  /* ===== 活动套餐 ===== */
  .act-title{grid-column:1/-1;font-size:16px;font-weight:700;margin-top:14px;color:var(--red);display:flex;align-items:center;gap:8px;}
  .act-title::before,.act-title::after{content:'';flex:1;height:1px;background:var(--red);opacity:.3;}
  .tier-title{color:var(--primary);}
  .tier-title::before,.tier-title::after{background:var(--primary);opacity:.2;}
  .tier .t-price s.origin{color:var(--muted);font-weight:400;font-size:14px;margin:0 4px;}
  .tier .t-origin{font-size:12px;color:var(--muted);margin-top:4px;}
  .tier .t-origin s{text-decoration:line-through;font-weight:400;}
  .tier .discount{display:inline-block;background:var(--red);color:#fff;font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px;margin-left:4px;vertical-align:middle;}
  .tier.locked{opacity:.55;filter:grayscale(.5);}
  /* ===== 日志框 ===== */
  .server-form{background:#fff;border:var(--border-hard);border-radius:var(--radius-card);padding:20px;margin-top:14px;box-shadow:var(--shadow-hard);}
  .grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
  .grid2 .field{margin-bottom:0;}
  .grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;}
  .grid3 .field{margin-bottom:0;}
  .stage-note{font-size:12px;color:var(--muted);margin:-6px 0 14px;}
  .server-saved{display:flex;gap:8px;align-items:center;margin-bottom:14px;}
  .server-saved select{flex:1;padding:9px 12px;border:none;border-radius:12px;font-size:14px;background:var(--card);color:var(--ink);box-shadow:var(--inset-sm);}
  .adv-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:14px;padding:10px 14px;border:1px dashed var(--line);border-radius:8px;background:transparent;color:var(--muted);font-size:13px;cursor:pointer;transition:all .15s;font-family:inherit;}
  .adv-toggle:hover{border-color:var(--primary);color:var(--primary);}
  .adv-panel{margin-top:12px;padding:16px;background:var(--bg);border:none;border-radius:12px;box-shadow:var(--inset-sm);}
  .adv-group{margin-bottom:16px;}
  .adv-group:last-child{margin-bottom:0;}
  .adv-group-title{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:10px;letter-spacing:.02em;}
  .server-actions{display:flex;gap:10px;margin-top:18px;}
  .server-actions .btn-ghost{flex:1;}
  .server-actions .btn-primary{flex:2;}
  .logbox{background:var(--ink);color:var(--text-inverse);border-radius:12px;padding:14px;margin-top:16px;font-family:ui-monospace,monospace;font-size:12px;line-height:1.7;max-height:300px;overflow-y:auto;white-space:pre-wrap;word-break:break-all;}
  .logbox .l-err{color:#ff8a80;}
  .logbox .upload-progress{color:var(--primary-400);font-weight:600;} /* 上传进度行（深色日志框内的亮蓝） */
  .deploy-btn{padding:13px;font-size:15px;}
  /* ===== 弹窗 ===== */
  .modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:100;}
  .modal-box{background:#fff;border:var(--border-hard);border-radius:var(--radius-card);padding:24px;width:360px;max-width:90vw;max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-hard);}
  .modal-head{display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:700;margin-bottom:16px;}
  .modal-close{cursor:pointer;font-size:22px;color:var(--muted);line-height:1;border:none;background:none;}
  .login-box{width:400px;max-width:92vw;}
  .terms-box{width:560px;max-width:94vw;}
  .terms-body{max-height:56vh;overflow-y:auto;font-size:13px;line-height:1.8;color:var(--ink2);}
  .terms-body h4{font-size:14px;font-weight:700;color:var(--ink);margin:14px 0 6px;}
  .terms-body p{margin:4px 0;}
  .terms-tip{font-size:12px;color:var(--muted);margin-bottom:8px;}
  .terms-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line);}
  .subdomain-tip{font-size:14px;color:var(--ink2);margin-bottom:6px;}
  .subdomain-tip .cost{color:var(--red);font-size:16px;}
  .subdomain-tip.sub{font-size:12px;color:var(--muted);margin-bottom:16px;}
  .subdomain-warn{color:var(--red);font-size:12px;min-height:16px;margin-top:8px;}
  .ai-hint-btn{display:flex;align-items:center;gap:8px;margin:0 0 18px;padding:12px 18px;background:var(--warning-soft);border:1px dashed var(--amber);border-radius:12px;color:var(--warning-ink);font-size:14px;font-weight:600;cursor:pointer;width:100%;text-align:left;transition:background .15s;}
  .ai-hint-btn:hover{background:#FFF0D6;}
  .ai-hint-btn svg{width:20px;height:20px;flex-shrink:0;}
  .ai-hint-body{font-size:14px;color:var(--ink2);line-height:1.8;}
  .ai-hint-body b{color:var(--primary);}
  .ai-hint-quote{margin:10px 0;padding:12px 16px;background:var(--primary-bg);border-left:3px solid var(--primary);border-radius:8px;font-size:15px;font-weight:600;color:var(--ink);}
  /* ---- AI 引导弹窗（全新版） ---- */
  .ai-hint-box{position:relative;width:440px;max-width:92vw;padding:26px 24px 22px;border-radius:var(--radius-card);}
  .ai-hint-x{position:absolute;top:12px;right:12px;width:30px;height:30px;border:none;border-radius:50%;background:var(--gray-200);color:var(--muted);font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;}
  .ai-hint-x:hover{background:var(--gray-300);color:var(--ink2);}
  .ai-hint-hero{display:flex;align-items:center;gap:14px;margin-bottom:20px;}
  .ai-hint-ic{width:52px;height:52px;flex-shrink:0;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;background:var(--primary);box-shadow:0 6px 16px rgba(10,132,255,.25);}
  .ai-hint-ic svg{width:26px;height:26px;}
  .ai-hint-title{font-size:18px;font-weight:700;color:var(--ink);}
  .ai-hint-sub{font-size:13px;color:var(--muted);margin-top:3px;}
  .ai-hint-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--ink);margin-bottom:9px;}
  .ai-hint-step{width:18px;height:18px;flex-shrink:0;border-radius:50%;background:var(--primary);color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;}
  .ai-hint-ask{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;background:#F2F7FF;border:1px solid #D6E7FF;border-radius:12px;}
  .ai-hint-ask-text{font-size:14px;font-weight:600;color:#1a2a45;line-height:1.5;flex:1;}
  .ai-hint-copy{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border:1px solid #B9D6FF;border-radius:8px;background:#fff;color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s;min-height:44px;}
  .ai-hint-copy:hover{background:#EAF3FF;}
  .ai-hint-copy.copied{border-color:var(--green);color:var(--success-ink);background:var(--success-bg);}
  .ai-hint-choices{display:flex;flex-direction:column;gap:8px;}
  .ai-choice{display:flex;align-items:center;gap:12px;padding:11px 13px;border:var(--border-hard);border-radius:var(--radius-ctl);cursor:pointer;text-align:left;transition:transform .12s,box-shadow .12s,border-color .12s;background:#fff;}
  .ai-choice:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 #141414;}
  .ai-choice-ic{width:34px;height:34px;flex-shrink:0;border-radius:8px;display:flex;align-items:center;justify-content:center;}
  .ai-choice-ic svg{width:18px;height:18px;}
  .ai-choice.is-static{border-color:#C9E0FF;background:#F7FBFF;}
  .ai-choice.is-static .ai-choice-ic{background:#E3EFFF;color:var(--primary2);}
  .ai-choice.is-static:hover{border-color:var(--primary2);}
  .ai-choice.is-dynamic{border-color:#C9F0D7;background:#F7FCF8;}
  .ai-choice.is-dynamic .ai-choice-ic{background:#E3F7EA;color:#2EB872;}
  .ai-choice.is-dynamic:hover{border-color:#2EB872;}
  .ai-choice-txt{flex:1;}
  .ai-choice-name{font-size:14px;font-weight:700;color:var(--ink);}
  .ai-choice-desc{font-size:12px;color:var(--muted);margin-top:2px;}
  .ai-choice-go{width:9px;height:9px;border-top:2px solid #c0c4cc;border-right:2px solid #c0c4cc;transform:rotate(45deg);transition:border-color .15s,transform .15s;flex-shrink:0;}
  .ai-choice:hover .ai-choice-go{border-color:var(--primary);transform:rotate(45deg) translateX(2px);}
  .ai-hint-foot{font-size:12px;color:var(--muted);text-align:center;margin-top:16px;padding:8px 12px;background:#fbfbfd;border-radius:8px;}
  .welcome-box{width:380px;max-width:92vw;text-align:center;}
  .welcome-icon{width:64px;height:64px;border-radius:var(--radius-card);background:var(--primary);border:var(--border-hard);color:#fff;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;box-shadow:var(--shadow-hard);}
  .welcome-icon svg{width:32px;height:32px;}
  .welcome-title{font-size:19px;font-weight:700;margin-bottom:10px;}
  .welcome-gift{font-size:15px;color:var(--ink2);margin-bottom:8px;}
  .welcome-gift b{color:var(--red);font-size:22px;}
  .welcome-desc{font-size:13px;color:var(--muted);margin-bottom:22px;line-height:1.7;}
  .welcome-box .btn-block{margin-bottom:10px;}
  .qrcode-box{text-align:center;margin-top:16px;}
  .qr-order-name{font-size:15px;font-weight:700;margin-bottom:4px;}
  .qr-order-price{font-size:24px;font-weight:700;color:var(--amber);margin-bottom:12px;}
  .qrcode-box #qrcode{display:inline-block;}
  .qrcode-tip{font-size:13px;color:var(--ink2);margin-top:10px;}
  .qrcode-status{font-size:12px;color:var(--muted);margin-top:6px;}
  /* ===== 通知面板 ===== */
  .notif-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:200;display:flex;justify-content:flex-end;opacity:0;visibility:hidden;transition:opacity .25s var(--ease),visibility .25s var(--ease);}
  .notif-mask.open{opacity:1;visibility:visible;}
  .notif-panel{width:380px;max-width:92vw;height:100%;background:#fff;box-shadow:-4px 0 20px rgba(0,0,0,.1);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s var(--ease);}
  .notif-mask.open .notif-panel{transform:translateX(0);}
  .notif-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line);font-size:16px;font-weight:700;}
  .notif-markall{background:none;border:none;color:var(--primary);font-size:12px;cursor:pointer;margin-right:12px;}
  .notif-close{background:none;border:none;color:var(--muted);font-size:14px;cursor:pointer;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;}
  .notif-empty{padding:40px;text-align:center;color:var(--muted);font-size:14px;}
  .notif-list{flex:1;overflow-y:auto;}
  .notif-item{padding:14px 18px;border-bottom:1px solid var(--line);}
  .notif-item.unread{background:#F5F9FF;}
  .notif-title{font-size:14px;font-weight:600;}
  .notif-content{font-size:13px;color:var(--muted);margin-top:4px;line-height:1.6;word-break:break-all;}
  .notif-time{font-size:11px;color:var(--gray-500);margin-top:6px;}
  /* ===== 积分流水 ===== */
  .log-item{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;margin-bottom:8px;background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);font-size:13px;}
  .log-item:last-child{margin-bottom:0;}
  .log-amount.plus{color:var(--green);font-weight:600;}
  .log-amount.minus{color:var(--ink2);font-weight:600;}
  .log-type{font-size:11px;color:var(--muted);}
  /* ===== 响应式 ===== */
  /* 汉堡按钮 + 遮罩（移动端） */
  .hamburger{display:none;}
  .sidebar-overlay{display:none;}
  @media (max-width:768px){
    /* 侧边栏改为抽屉式：默认滑出屏幕，点汉堡展开完整侧边栏 */
    .sidebar{position:fixed;left:0;top:0;width:280px;height:100vh;transform:translateX(-100%);transition:transform .25s ease;z-index:200;box-shadow:none;background:var(--bg);border-right:1px solid var(--line);}
    .sidebar.open{transform:translateX(0);box-shadow:0 0 40px rgba(0,0,0,.16);}
    .hamburger{display:flex;position:fixed;top:12px;left:12px;z-index:150;width:44px;height:44px;align-items:center;justify-content:center;background:#fff;border:var(--border-hard);border-radius:var(--radius-ctl);cursor:pointer;box-shadow:var(--shadow-hard);}
    .hamburger svg{width:22px;height:22px;}
    .sidebar-overlay{display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:190;opacity:0;pointer-events:none;transition:opacity .25s;}
    .sidebar-overlay:not(.hidden){opacity:1;pointer-events:auto;}
    .tiers{grid-template-columns:repeat(2,1fr);gap:10px;}
    .tiers .tier{padding:14px 10px;}
    .tiers .t-credits{font-size:22px;}
    .grid2{grid-template-columns:1fr;}
    .grid3{grid-template-columns:1fr;}
    .page{padding:64px 16px 40px;}
    .topbar{padding:0 16px 0 64px;height:56px;}
    .topbar-title{display:block;}
    /* 顶栏在 360px 下可用宽仅 280px：标题 + 铃铛 + 签到 + 头像按 18px 间距刚好差 1px 就放不下，
       flex 收缩会把标题和签到按钮压成两行（破版）。收紧间距 + 禁止换行，两者都加上才稳。 */
    .topbar-right{gap:10px;}
    .topbar-title,.checkin-pill{white-space:nowrap;}
    /* 签到按钮是可点元素，移动端必须满足 44px 最小触控目标（默认只有 33px 高） */
    .checkin-pill{min-height:44px;padding:8px 14px;}
    /* 移动端顶栏可用宽度只够「标题 + 铃铛 + 签到 + 头像」，签到态文案「已签到 · 连续 N 天」会把标题挤换行，
       窄屏改用短文案「已签 N」——信息不丢（连续天数仍在），宽度回到与「签到 +10」接近的水平。 */
    .checkin-pill .ck-full{display:none;}
    .checkin-pill .ck-short{display:inline;}
    /* 移动端顶栏只放得下「通知铃铛 + 头像」：
       - 积分胶囊 → 挪到抽屉顶部常驻条（.drawer-credit），并同步真实余额；
       - 音效胶囊 → 挪到「更多 / 账号」里的开关（不能在移动端凭空消失，否则功能丢失）；
       - 通知铃铛必须保留（带未读数红点），否则移动端用户收不到任何通知提醒。 */
    .sound-pill,.credit-capsule{display:none;}
    .drawer-credit{display:flex;}
    .notif-bell.has-unread{color:var(--primary);}
    /* 移动端顶栏只有 56px 高，铃铛 44px 居中后上下仅剩 6px；badge 默认 -7px 偏移会被顶栏上沿裁掉，
       这里收进铃铛边角内，保证未读红点完整可见（不裁切、也不影响 44px 触控区）。 */
    .notif-badge{top:-2px;right:-2px;}
    .stat-tiles{grid-template-columns:repeat(2,1fr);gap:12px;}
    .dash-row{grid-template-columns:1fr;}
    .task-grid{grid-template-columns:1fr;}
    #guideContent{grid-template-columns:1fr;}
    #moreAccount .card{max-width:100%;}
    .hero-card{padding:24px 20px;}
    /* 通知面板全宽 */
    .notif-panel{width:100%;max-width:100vw;}
    /* 列表卡片纵向排列，操作按钮换行（修复「我的项目」移动端错乱） */
    .list-card{flex-direction:column;align-items:stretch;gap:10px;}
    .list-card > div:last-child{flex-wrap:wrap;}
    .site-card{flex-direction:column;align-items:stretch;gap:14px;padding:16px;}
    .site-card-top{flex-direction:column;align-items:stretch;gap:12px;}
    .site-card-primary{justify-content:space-between;width:100%;}
    .site-card-stats{justify-content:space-between;flex-wrap:wrap;gap:16px;}
    .projects-tab{padding:10px 14px;font-size:13px;}
    .card{overflow-x:auto;}
  }
  /* 超窄屏（320px 一类小屏）：顶栏内容最小宽约 329px，会顶出横向滚动条。
     进一步收紧左右内边距与间距，标题则由 ellipsis 截断让路（不隐藏任何功能入口）。 */
  @media (max-width:360px){
    .topbar{padding:0 12px 0 60px;}
    .topbar-right{gap:8px;}
  }

  /* ===== E1 AI 管家客服 ===== */
  .support-fab{position:fixed;right:20px;bottom:20px;width:56px;height:56px;border-radius:50%;background:var(--primary);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--btn-side);z-index:800;transition:transform .15s;}
  .support-fab:hover{transform:scale(1.06);}
  .support-fab svg{width:26px;height:26px;}
  .support-panel{position:fixed;right:20px;bottom:88px;width:380px;max-width:calc(100vw - 40px);height:520px;max-height:calc(100vh - 120px);background:#fff;border:var(--border-hard);border-radius:var(--radius-card);box-shadow:var(--shadow-hard);display:flex;flex-direction:column;z-index:800;overflow:hidden;}
  .support-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line);font-size:15px;font-weight:600;}
  .support-msgs{flex:1;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:10px;background:var(--bg);}
  .support-msg{max-width:85%;padding:10px 13px;border-radius:12px;font-size:13px;line-height:1.65;white-space:pre-wrap;word-break:break-word;}
  .support-msg.bot{background:#fff;color:var(--ink);align-self:flex-start;border:1px solid var(--line);}
  .support-msg.user{background:var(--primary);color:#fff;align-self:flex-end;}
  .support-msg.typing{color:var(--muted);}
  .support-quick{display:flex;flex-wrap:wrap;gap:6px;padding:10px 14px;border-top:1px solid var(--line);}
  .support-quick button{background:var(--primary-bg);color:var(--primary);border:none;border-radius:999px;padding:7px 12px;font-size:12px;cursor:pointer;font-family:inherit;min-height:32px;}
  .support-quick button:hover{background:#D6E8FB;}
  .support-input{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--line);}
  .support-input input{flex:1;border:1px solid var(--line);border-radius:8px;padding:9px 12px;font-size:14px;font-family:inherit;}
  .support-input input:focus{outline:none;border-color:var(--primary);box-shadow:var(--ring);}
  .support-input .btn{min-height:44px;}
  @media(max-width:520px){.support-panel{right:10px;left:10px;width:auto;}}

  /* ===== A3「怎么找」引导 ===== */
  .how-find{font-size:12px;color:var(--primary);text-decoration:none;margin-left:6px;font-weight:400;display:inline-block;padding:6px 4px;}
  .how-find:hover{text-decoration:underline;}
  .how-vendor{font-size:13px;font-weight:600;color:var(--ink);margin:14px 0 2px;}
  .how-vendor:first-child{margin-top:0;}
  .how-step{display:flex;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px;line-height:1.7;color:var(--ink2);}
  .how-step:last-child{border-bottom:none;}
  .how-step-num{flex-shrink:0;width:20px;height:20px;border-radius:50%;background:var(--primary-bg);color:var(--primary);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;}
