/* ============================================
   秋枫物联 - 全局样式表
   主色：#0066FF | 辅助：#1976D2 | 深色导航
   极简科技风 · 全响应式
   ============================================ */

/* --- CSS 变量 --- */
:root {
  --primary: #0066FF;
  --primary-dark: #0052CC;
  --primary-light: #3385FF;
  --secondary: #4285F4;
  --dark: #0D1F3C;
  --dark-nav: #0D1F3C;
  --text: #1A1A2E;
  --text-light: #5A6A7E;
  --text-muted: #8899AA;
  --bg: #F7FAFE;
  --bg-white: #FFFFFF;
  --border: #D6E4F0;
  --shadow: 0 2px 12px rgba(0, 102, 255, 0.06);
  --shadow-md: 0 4px 24px rgba(0, 102, 255, 0.10);
  --shadow-lg: 0 8px 40px rgba(0, 102, 255, 0.12);
  --shadow-glow: 0 0 20px rgba(0, 180, 255, 0.15);
  --radius: 8px;
  --radius-lg: 12px;
  --transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  --max-width: 1200px;
  --nav-height: 72px;
  --gradient-tech: linear-gradient(160deg, #0D1F3C 0%, #0F2A55 50%, #0A1A35 100%);
  --gradient-page: linear-gradient(135deg, #0D1F3C 0%, #142D5E 100%);
}

/* --- 基础重置 --- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; font-size: 16px; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  color: var(--text);
  background: #F8FAFE;
  line-height: 1.7;
  position: relative;
}

body::before {
  content: '';
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background:
    radial-gradient(circle at 10% 20%, rgba(0,102,255,0.02) 0%, transparent 50%),
    radial-gradient(circle at 90% 80%, rgba(0,102,255,0.02) 0%, transparent 50%);
  pointer-events: none;
  z-index: -1;
}

a { text-decoration: none; color: inherit; }
ul, ol { list-style: none; }
img { max-width: 100%; height: auto; display: block; }
input, button, textarea, select { font-family: inherit; font-size: inherit; }

.container { max-width: var(--max-width); margin: 0 auto; padding: 0 20px; }

/* --- 导航栏 --- */
.navbar {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
  background: var(--dark-nav);
  height: var(--nav-height);
  box-shadow: 0 2px 20px rgba(0,0,0,0.15);
}

.navbar .container {
  display: flex; align-items: center; justify-content: space-between; height: 100%;
}

.nav-logo {
  display: flex; align-items: center; gap: 10px;
  font-size: 1.35rem; font-weight: 700; color: #fff; letter-spacing: 1px;
}

.nav-logo .logo-icon { height: 50px; width: auto; border-radius: 4px; }
.logo-icon:not(img) {
  background: linear-gradient(135deg, #0066FF, #3399FF);
  display: flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; font-size: 1.2rem; color: #fff;
  border-radius: 6px;
}

.nav-menu { display: flex; align-items: center; gap: 4px; }

.nav-menu a {
  display: block; padding: 8px 16px; border-radius: 6px;
  font-size: 0.93rem; color: rgba(255,255,255,0.78); font-weight: 500;
  transition: var(--transition);
}

.nav-menu a:hover,
.nav-menu a.active {
  color: #fff; background: rgba(0,102,255,0.2);
}

.nav-toggle {
  display: none; flex-direction: column; gap: 5px;
  background: none; border: none; cursor: pointer; padding: 8px;
}

.nav-toggle span {
  display: block; width: 24px; height: 2px; background: #fff;
  border-radius: 2px; transition: var(--transition);
}

.nav-toggle.open span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }
.nav-toggle.open span:nth-child(2) { opacity: 0; }
.nav-toggle.open span:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); }

/* --- 页面头部 --- */
.page-header {
  padding: calc(var(--nav-height) + 60px) 0 50px;
  background: var(--gradient-page);
  text-align: center;
  color: #fff;
}

.page-header h1 { font-size: 2.2rem; font-weight: 700; margin-bottom: 12px; letter-spacing: 1px; }

.page-header .subtitle {
  font-size: 1.05rem; color: rgba(255,255,255,0.65); max-width: 600px; margin: 0 auto;
}

/* --- 首页 Hero Banner --- */
.hero {
  padding: calc(var(--nav-height) + 80px) 0 100px;
  background: var(--gradient-tech);
  color: #fff; text-align: center;
  position: relative; overflow: hidden;
}

.hero::before {
  content: '';
  position: absolute;
  top: -200px; right: -200px;
  width: 600px; height: 600px;
  background: radial-gradient(circle, rgba(0,102,255,0.15) 0%, transparent 70%);
  border-radius: 50%;
}

.hero::after {
  content: '';
  position: absolute;
  bottom: -150px; left: -150px;
  width: 500px; height: 500px;
  background: radial-gradient(circle, rgba(51,133,255,0.1) 0%, transparent 70%);
  border-radius: 50%;
}

.hero-content { position: relative; z-index: 1; }

.hero h1 {
  font-size: 3rem; font-weight: 800; letter-spacing: 2px; margin-bottom: 20px;
  color: #fff;
}

.hero .hero-tagline {
  font-size: 1.15rem; color: rgba(255,255,255,0.7); margin-bottom: 40px;
  max-width: 700px; margin-left: auto; margin-right: auto; line-height: 1.8;
}

.hero-btns { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }

/* --- 按钮 --- */
.btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 28px; border-radius: 6px; font-weight: 600; font-size: 0.95rem;
  cursor: pointer; border: none; transition: var(--transition); white-space: nowrap;
}

.btn-primary {
  background: var(--primary);
  color: #fff; box-shadow: 0 4px 16px rgba(0,102,255,0.35);
}

.btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(0,102,255,0.5);
}

.btn-outline {
  background: transparent; color: #fff;
  border: 1.5px solid rgba(255,255,255,0.35);
}

.btn-outline:hover { border-color: #fff; background: rgba(255,255,255,0.08); }

.btn-outline-blue {
  background: transparent; color: var(--primary);
  border: 1.5px solid var(--primary);
}

.btn-outline-blue:hover { background: var(--primary); color: #fff; }

.btn-sm { padding: 8px 18px; font-size: 0.85rem; }

.btn-lg { padding: 14px 36px; font-size: 1rem; }

/* --- 区块标题 --- */
.section { padding: 80px 0; }

.section-title {
  text-align: center; margin-bottom: 50px;
}

.section-title h2 {
  font-size: 2rem; font-weight: 700; color: var(--text);
  margin-bottom: 12px; letter-spacing: 1px;
}

.section-title p {
  font-size: 0.98rem; color: var(--text-light); max-width: 560px;
  margin: 0 auto;
}

.section-title h2::after {
  content: '';
  display: block; width: 50px; height: 3px;
  background: var(--primary);
  margin: 14px auto 0; border-radius: 2px;
}
.card {
  background: var(--bg-white); border-radius: var(--radius-lg);
  box-shadow: var(--shadow); transition: var(--transition);
  overflow: hidden;
  position: relative;
}

.card::before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 3px;
  background: var(--primary);
  transform: scaleX(0);
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.card:hover { box-shadow: var(--shadow-glow), var(--shadow-md); transform: translateY(-3px); }

.card:hover::before { transform: scaleX(1); }

/* --- 服务卡片网格 --- */
.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }

/* --- 核心业务卡片 --- */
.service-card {
  padding: 36px 28px; text-align: center;
}

.service-card .card-icon {
  width: 64px; height: 64px; margin: 0 auto 20px;
  background: linear-gradient(135deg, rgba(0,102,255,0.08), rgba(51,133,255,0.08));
  border-radius: 16px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.8rem; color: var(--primary);
}

.service-card h3 { font-size: 1.15rem; margin-bottom: 10px; color: var(--text); }

.service-card p { font-size: 0.9rem; color: var(--text-light); line-height: 1.7; }

/* --- 服务流程 --- */
.flow-steps { display: flex; justify-content: center; gap: 30px; flex-wrap: wrap; }

.flow-step {
  text-align: center; flex: 1; min-width: 160px; max-width: 220px;
  position: relative;
}

.flow-step:not(:last-child)::after {
  content: '→';
  position: absolute; right: -24px; top: 24px;
  font-size: 1.5rem; color: var(--primary); font-weight: 700;
}

.flow-step .step-num {
  width: 56px; height: 56px; margin: 0 auto 16px;
  background: var(--primary);
  color: #fff; border-radius: 50%;
  font-size: 1.3rem; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 0 20px rgba(0,102,255,0.25);
}

.flow-step h4 { font-size: 0.98rem; margin-bottom: 6px; color: var(--text); }

.flow-step p { font-size: 0.83rem; color: var(--text-light); }

/* --- 演示站卡片 --- */
.demo-card { overflow: hidden; }

.demo-card .demo-thumb {
  height: 200px; background: linear-gradient(135deg, #E8F4FD, #D4ECFF);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.demo-card .demo-thumb img {
  width: 100%; height: 100%; object-fit: cover;
}

.demo-card .demo-thumb .placeholder-img {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  color: var(--primary); font-size: 3rem;
  background: linear-gradient(135deg, rgba(0,102,255,0.04), rgba(25,118,210,0.06));
}

.demo-card .demo-info { padding: 20px; }

.demo-card .demo-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }

.demo-card .demo-tags span {
  background: rgba(0,102,255,0.08); color: var(--primary);
  font-size: 0.75rem; padding: 3px 10px; border-radius: 20px; font-weight: 500;
}

.demo-card h3 { font-size: 1.08rem; margin-bottom: 6px; color: var(--text); }

.demo-card .demo-desc { font-size: 0.85rem; color: var(--text-light); margin-bottom: 14px; line-height: 1.6; }

.demo-card .demo-footer {
  display: flex; justify-content: space-between; align-items: center;
  border-top: 1px solid var(--border); padding-top: 14px;
}

/* --- 演示站详情页 --- */
.demo-detail-header {
  padding: calc(var(--nav-height) + 50px) 0 40px;
  background: var(--gradient-page);
  color: #fff;
}

.demo-detail-header .container { display: flex; flex-wrap: wrap; gap: 30px; align-items: flex-start; }

.demo-detail-header .demo-meta { flex: 1; min-width: 280px; }

.demo-detail-header .demo-meta h1 { font-size: 1.8rem; margin-bottom: 8px; }

.demo-detail-header .meta-info {
  display: flex; flex-wrap: wrap; gap: 12px; margin-top: 16px;
}

.demo-detail-header .meta-info span {
  background: rgba(255,255,255,0.1); padding: 6px 14px;
  border-radius: 20px; font-size: 0.85rem; color: rgba(255,255,255,0.8);
}

.demo-detail-header .demo-preview-img {
  flex: 0 0 420px; max-width: 100%; height: 240px;
  background: rgba(0,102,255,0.06);
  border-radius: var(--radius-lg);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.demo-detail-header .demo-preview-img img {
  width: 100%; height: 100%; object-fit: cover;
}

.demo-preview-links {
  display: flex; flex-wrap: wrap; gap: 12px; margin: 30px 0;
}

.demo-preview-links .preview-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 10px 20px;
  background: rgba(0,102,255,0.06);
  border: 1px solid var(--border);
  border-radius: 6px;
  color: var(--primary); font-weight: 500; font-size: 0.9rem;
  transition: var(--transition); cursor: pointer;
}

.demo-preview-links .preview-btn:hover {
  background: var(--primary); color: #fff; border-color: var(--primary);
}

.demo-feature-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin: 20px 0; }

.demo-feature-list li {
  padding: 12px 16px; background: var(--bg);
  border-radius: var(--radius); font-size: 0.9rem;
  display: flex; align-items: flex-start; gap: 8px; color: var(--text);
}

.demo-feature-list li::before {
  content: '✓'; color: var(--primary); font-weight: 700; flex-shrink: 0;
}

.demo-info-table {
  width: 100%; border-collapse: collapse; margin: 20px 0;
}

.demo-info-table th, .demo-info-table td {
  padding: 12px 16px; text-align: left; border: 1px solid var(--border);
  font-size: 0.9rem;
}

.demo-info-table th {
  background: var(--bg); color: var(--text); font-weight: 600; width: 30%;
}

.demo-info-table td { color: var(--text-light); }

/* --- 客户案例 --- */
.case-card { overflow: hidden; }

.case-card .case-thumb {
  height: 220px; overflow: hidden;
  background: linear-gradient(135deg, #E8F4FD, #D4ECFF);
  display: flex; align-items: center; justify-content: center;
}
.case-card .case-thumb img {
  width: 100%; height: 100%; object-fit: cover;
}

.case-card .case-thumb .placeholder-img {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-size: 3rem; color: var(--primary);
}

.case-card .case-info { padding: 20px; }

.case-card h3 { font-size: 1.05rem; margin-bottom: 6px; }

.case-card .case-type {
  display: inline-block; background: rgba(0,102,255,0.08);
  color: var(--primary); font-size: 0.78rem; padding: 3px 10px;
  border-radius: 20px; margin-bottom: 8px;
}

.case-card p { font-size: 0.85rem; color: var(--text-light); line-height: 1.6; }

/* --- FAQ --- */
.faq-list { max-width: 800px; margin: 0 auto; }

.faq-item {
  background: var(--bg-white); border-radius: var(--radius);
  box-shadow: var(--shadow); margin-bottom: 12px; overflow: hidden;
}

.faq-question {
  padding: 18px 24px; cursor: pointer;
  display: flex; justify-content: space-between; align-items: center;
  font-weight: 600; font-size: 0.98rem; color: var(--text);
  user-select: none;
}

.faq-question .faq-arrow {
  font-size: 0.8rem; color: var(--primary);
  transition: transform var(--transition);
}

.faq-item.open .faq-arrow { transform: rotate(180deg); }

.faq-answer {
  max-height: 0; overflow: hidden;
  transition: max-height 0.35s ease, padding 0.35s ease;
  background: var(--bg);
}

.faq-item.open .faq-answer {
  max-height: 300px; padding: 0 24px 18px;
}

.faq-answer p { font-size: 0.9rem; color: var(--text-light); line-height: 1.8; }

/* --- 物联卡专项 --- */
.iot-hero {
  padding: calc(var(--nav-height) + 80px) 0 100px;
  background: var(--gradient-tech);
  color: #fff;
  position: relative; overflow: hidden;
}

.iot-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 20% 50%, rgba(0,102,255,0.18) 0%, transparent 50%),
    radial-gradient(circle at 80% 30%, rgba(51,133,255,0.1) 0%, transparent 40%);
}

.iot-hero .container { position: relative; z-index: 1; display: flex; flex-wrap: wrap; gap: 40px; align-items: center; }

.iot-hero-text { flex: 1; min-width: 280px; }

.iot-hero-text h1 {
  font-size: 2.5rem; font-weight: 800; margin-bottom: 16px; line-height: 1.3;
}

.iot-hero-text p {
  font-size: 1.05rem; color: rgba(255,255,255,0.7); margin-bottom: 30px; line-height: 1.8;
}

.iot-hero-visual {
  flex: 0 0 380px; max-width: 100%; height: 340px;
  background: linear-gradient(135deg, rgba(0,102,255,0.06), rgba(51,133,255,0.04));
  border: 1px solid rgba(0,102,255,0.15);
  border-radius: var(--radius-lg);
  display: flex; align-items: center; justify-content: center;
  font-size: 5rem; color: rgba(0,102,255,0.3);
}

.iot-features { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }

.iot-feature {
  display: flex; gap: 16px; padding: 24px;
  background: var(--bg-white); border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}

.iot-feature .feature-icon {
  width: 48px; height: 48px;
  background: linear-gradient(135deg, rgba(0,102,255,0.1), rgba(51,133,255,0.1));
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem; color: var(--primary);
  flex-shrink: 0;
}

.iot-feature h4 { font-size: 1rem; margin-bottom: 4px; }

.iot-feature p { font-size: 0.85rem; color: var(--text-light); line-height: 1.6; }

.iot-industries {
  display: flex; flex-wrap: wrap; gap: 12px; justify-content: center;
}

.iot-industries span {
  padding: 8px 20px;
  background: rgba(0,102,255,0.06);
  border: 1px solid var(--border);
  border-radius: 24px; font-size: 0.9rem; color: var(--text);
  font-weight: 500;
}

/* --- 分类筛选 --- */
.filter-bar {
  display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-bottom: 40px;
}

.filter-bar .filter-btn {
  padding: 8px 20px; border: 1.5px solid var(--border);
  background: #fff; border-radius: 24px; cursor: pointer;
  font-size: 0.88rem; color: var(--text); font-weight: 500;
  transition: var(--transition);
}

.filter-bar .filter-btn:hover,
.filter-bar .filter-btn.active {
  background: var(--primary); color: #fff; border-color: var(--primary);
}

/* --- 联系页面 --- */
.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }

.contact-info h3 { font-size: 1.3rem; margin-bottom: 20px; }

.contact-item {
  display: flex; gap: 14px; margin-bottom: 20px; align-items: flex-start;
}

.contact-item .ci-icon {
  width: 44px; height: 44px;
  background: rgba(0,102,255,0.06);
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.2rem; color: var(--primary);
  flex-shrink: 0;
}

.contact-item .ci-text h4 { font-size: 0.95rem; margin-bottom: 2px; }

.contact-item .ci-text p { font-size: 0.85rem; color: var(--text-light); }

.contact-form .form-group { margin-bottom: 20px; }

.contact-form label {
  display: block; margin-bottom: 6px; font-weight: 600; font-size: 0.9rem;
  color: var(--text);
}

.contact-form input,
.contact-form textarea,
.contact-form select {
  width: 100%; padding: 12px 16px;
  border: 1.5px solid var(--border); border-radius: 6px;
  background: #fff; color: var(--text); font-size: 0.93rem;
  transition: var(--transition); outline: none;
}

.contact-form input:focus,
.contact-form textarea:focus,
.contact-form select:focus {
  border-color: var(--primary); box-shadow: 0 0 0 3px rgba(0,102,255,0.08);
}

.contact-form textarea { resize: vertical; min-height: 120px; }

/* --- 快速咨询 --- */
.cta-section {
  padding: 70px 0; text-align: center;
  background: var(--gradient-page);
  color: #fff;
}

.cta-section h2 { font-size: 1.8rem; font-weight: 700; margin-bottom: 12px; }

.cta-section p { font-size: 1rem; color: rgba(255,255,255,0.7); margin-bottom: 30px; }

/* --- 关于页面 --- */
.about-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }

.about-visual {
  height: 380px;
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: flex; align-items: center; justify-content: center;
}
.about-visual img {
  width: 100%; height: 100%; object-fit: cover;
}

.about-text h2 { font-size: 1.6rem; margin-bottom: 16px; }

.about-text p { font-size: 0.95rem; color: var(--text-light); line-height: 1.8; margin-bottom: 12px; }

.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 30px; }

.stat-item { text-align: center; padding: 20px; background: var(--bg); border-radius: var(--radius); }

.stat-item .stat-num {
  font-size: 1.8rem; font-weight: 800; color: var(--primary);
  margin-bottom: 4px;
}

.stat-item .stat-label { font-size: 0.85rem; color: var(--text-light); }

/* --- 页脚 --- */
.footer {
  background: #0D1F3C; color: rgba(255,255,255,0.65);
  padding: 50px 0 0;
}

.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 30px; padding-bottom: 40px; }

.footer-col h4 { color: #fff; font-size: 1.05rem; margin-bottom: 16px; }

.footer-col p { font-size: 0.85rem; line-height: 1.7; margin-bottom: 6px; }

.footer-col a { display: block; font-size: 0.85rem; margin-bottom: 8px; transition: var(--transition); }

.footer-col a:hover { color: var(--primary-light); }

.footer-bottom {
  border-top: 1px solid rgba(255,255,255,0.08);
  padding: 20px 0; text-align: center; font-size: 0.82rem;
}

/* --- 返回顶部 --- */
.back-to-top {
  position: fixed; bottom: 30px; right: 30px; z-index: 999;
  width: 44px; height: 44px;
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  color: #fff; border: none; border-radius: 50%;
  font-size: 1.1rem; cursor: pointer;
  opacity: 0; visibility: hidden;
  transform: translateY(10px);
  transition: var(--transition);
  box-shadow: 0 4px 16px rgba(0,102,255,0.3);
}

.back-to-top.show { opacity: 1; visibility: visible; transform: translateY(0); }

.back-to-top:hover { transform: translateY(-2px); }

/* --- 通用内容区块 --- */
.content-section { padding: 60px 0; }

.content-section .section-title { text-align: left; margin-bottom: 30px; }

.content-section .section-title h2::after { margin: 14px 0 0; }

/* --- 响应式 --- */
@media (max-width: 1024px) {
  .grid-4 { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 768px) {
  .nav-menu {
    position: fixed; top: var(--nav-height); left: 0; right: 0; bottom: 0;
    background: var(--dark); flex-direction: column; align-items: stretch;
    padding: 20px; gap: 4px;
    transform: translateX(100%); transition: transform 0.3s ease;
  }
  .nav-menu.open { transform: translateX(0); }
  .nav-menu a { padding: 14px 16px; font-size: 1rem; }
  .nav-toggle { display: flex; }

  .hero h1 { font-size: 2rem; }
  .page-header h1 { font-size: 1.6rem; }
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
  .about-grid { grid-template-columns: 1fr; }
  .contact-grid { grid-template-columns: 1fr; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .flow-steps { flex-direction: column; align-items: center; }
  .flow-step:not(:last-child)::after { display: none; }

  .iot-hero .container { flex-direction: column; }
  .iot-hero-visual { flex: 0 0 220px; width: 100%; }
  .iot-features { grid-template-columns: 1fr; }
  .demo-feature-list { grid-template-columns: 1fr; }

  .demo-detail-header .container { flex-direction: column-reverse; }
  .demo-detail-header .demo-preview-img { flex: 0 0 180px; }

  .section { padding: 50px 0; }
}

@media (max-width: 480px) {
  .nav-logo { font-size: 1rem; }
  .nav-logo .logo-icon { height: 50px; }
  .logo-icon:not(img) { width: 32px; height: 32px; }
  .hero h1 { font-size: 2.4rem; }
  .hero .hero-tagline { font-size: 0.9rem; }
  .footer-grid { grid-template-columns: 1fr; }
}

/* ============================================
   SVG 图标系统 - 替代emoji，专业矢量图标
   ============================================ */

/* 图标容器基础：使用SVG背景，隐藏文字内容 */
.icon-globe, .icon-sim, .icon-doc, .icon-server, .icon-fast,
.icon-tools, .icon-shield, .icon-money, .icon-target, .icon-rocket,
.icon-heart, .icon-building, .icon-chart, .icon-users, .icon-chat,
.icon-payment, .icon-pool, .icon-cart, .icon-order, .icon-gift,
.icon-bell, .icon-settings, .icon-book, .icon-mobile, .icon-clock,
.icon-brand, .icon-news, .icon-admin, .icon-link, .icon-desktop,
.icon-phone, .icon-email, .icon-time, .icon-web, .icon-check,
.icon-search {
  display: flex; align-items: center; justify-content: center;
  font-size: 0; /* 隐藏任何文字内容 */
}

.icon-globe::before, .icon-sim::before, .icon-doc::before,
.icon-server::before, .icon-fast::before, .icon-tools::before,
.icon-shield::before, .icon-money::before, .icon-target::before,
.icon-rocket::before, .icon-heart::before, .icon-building::before,
.icon-chart::before, .icon-users::before, .icon-chat::before,
.icon-payment::before, .icon-pool::before, .icon-cart::before,
.icon-order::before, .icon-gift::before, .icon-bell::before,
.icon-settings::before, .icon-book::before, .icon-mobile::before,
.icon-clock::before, .icon-brand::before, .icon-news::before,
.icon-admin::before, .icon-link::before, .icon-desktop::before,
.icon-phone::before, .icon-email::before, .icon-time::before,
.icon-web::before, .icon-check::before, .icon-search::before {
  content: '';
  display: block;
  min-width: 16px; min-height: 16px;
  background: var(--primary);
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
}

/* 各尺寸图标容器内的SVG大小 */
.card-icon.icon-globe::before,
.card-icon.icon-sim::before,
.card-icon.icon-doc::before,
.card-icon.icon-server::before,
.card-icon.icon-fast::before,
.card-icon.icon-tools::before,
.card-icon.icon-shield::before,
.card-icon.icon-money::before,
.card-icon.icon-target::before,
.card-icon.icon-rocket::before,
.card-icon.icon-heart::before,
.card-icon.icon-building::before,
.card-icon.icon-payment::before,
.card-icon.icon-desktop::before,
.card-icon.icon-brand::before { width: 32px; height: 32px; }

.feature-icon.icon-globe::before,
.feature-icon.icon-sim::before,
.feature-icon.icon-doc::before,
.feature-icon.icon-server::before,
.feature-icon.icon-fast::before,
.feature-icon.icon-tools::before,
.feature-icon.icon-shield::before,
.feature-icon.icon-money::before,
.feature-icon.icon-target::before,
.feature-icon.icon-rocket::before,
.feature-icon.icon-heart::before,
.feature-icon.icon-chart::before,
.feature-icon.icon-users::before,
.feature-icon.icon-chat::before,
.feature-icon.icon-payment::before,
.feature-icon.icon-pool::before,
.feature-icon.icon-cart::before,
.feature-icon.icon-order::before,
.feature-icon.icon-gift::before,
.feature-icon.icon-bell::before,
.feature-icon.icon-settings::before,
.feature-icon.icon-book::before,
.feature-icon.icon-link::before,
.feature-icon.icon-desktop::before,
.feature-icon.icon-brand::before { width: 24px; height: 24px; }

.ci-icon.icon-phone::before,
.ci-icon.icon-email::before,
.ci-icon.icon-time::before,
.ci-icon.icon-web::before,
.ci-icon.icon-chat::before,
.ci-icon.icon-target::before { width: 22px; height: 22px; }

/* --- 各图标SVG蒙版形状 --- */

/* 地球/网站 */
.icon-globe::before, .icon-web::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* SIM卡/物联卡 */
.icon-sim::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18 2H8L2 8v12a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='9' y1='9' x2='9' y2='18' stroke='black' stroke-width='2'/%3E%3Cline x1='15' y1='9' x2='15' y2='18' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18 2H8L2 8v12a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='9' y1='9' x2='9' y2='18' stroke='black' stroke-width='2'/%3E%3Cline x1='15' y1='9' x2='15' y2='18' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 文档/备案 */
.icon-doc::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='16' y1='13' x2='8' y2='13' stroke='black' stroke-width='2'/%3E%3Cline x1='16' y1='17' x2='8' y2='17' stroke='black' stroke-width='2'/%3E%3Cline x1='10' y1='9' x2='9' y2='9' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='16' y1='13' x2='8' y2='13' stroke='black' stroke-width='2'/%3E%3Cline x1='16' y1='17' x2='8' y2='17' stroke='black' stroke-width='2'/%3E%3Cline x1='10' y1='9' x2='9' y2='9' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 服务器/运维 */
.icon-server::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='8' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Crect x='2' y='14' width='20' height='8' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='6' cy='6' r='1' fill='black'/%3E%3Ccircle cx='6' cy='18' r='1' fill='black'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='8' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Crect x='2' y='14' width='20' height='8' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='6' cy='6' r='1' fill='black'/%3E%3Ccircle cx='6' cy='18' r='1' fill='black'/%3E%3C/svg%3E");
}

/* 闪电/快速 */
.icon-fast::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 2L3 14h9l-1 8 10-12h-9l1-8z' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 2L3 14h9l-1 8 10-12h-9l1-8z' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* 工具/技术全面 */
.icon-tools::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 盾牌/安全 */
.icon-shield::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 货币/价格 */
.icon-money::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='black' stroke-width='2'/%3E%3Ctext x='12' y='16' text-anchor='middle' font-size='12' font-weight='bold' fill='black'%3E%26yen%3B%3C/text%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='black' stroke-width='2'/%3E%3Ctext x='12' y='16' text-anchor='middle' font-size='12' font-weight='bold' fill='black'%3E%26yen%3B%3C/text%3E%3C/svg%3E");
}

/* 靶心/精准 */
.icon-target::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='6' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='2' fill='black'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='6' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='2' fill='black'/%3E%3C/svg%3E");
}

/* 火箭/高效 */
.icon-rocket::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2s-3 7-3 10a3 3 0 0 0 6 0c0-3-3-10-3-10z' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='3' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M8 18l-2 4h12l-2-4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2s-3 7-3 10a3 3 0 0 0 6 0c0-3-3-10-3-10z' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='3' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M8 18l-2 4h12l-2-4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* 心形/服务 */
.icon-heart::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 建筑/公司 */
.icon-building::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='4' y='2' width='16' height='20' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='9' y1='6' x2='9' y2='10' stroke='black' stroke-width='2'/%3E%3Cline x1='15' y1='6' x2='15' y2='10' stroke='black' stroke-width='2'/%3E%3Cline x1='9' y1='14' x2='9' y2='18' stroke='black' stroke-width='2'/%3E%3Cline x1='15' y1='14' x2='15' y2='18' stroke='black' stroke-width='2'/%3E%3Cline x1='4' y1='22' x2='20' y2='22' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='4' y='2' width='16' height='20' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='9' y1='6' x2='9' y2='10' stroke='black' stroke-width='2'/%3E%3Cline x1='15' y1='6' x2='15' y2='10' stroke='black' stroke-width='2'/%3E%3Cline x1='9' y1='14' x2='9' y2='18' stroke='black' stroke-width='2'/%3E%3Cline x1='15' y1='14' x2='15' y2='18' stroke='black' stroke-width='2'/%3E%3Cline x1='4' y1='22' x2='20' y2='22' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 图表/数据 */
.icon-chart::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cline x1='18' y1='20' x2='18' y2='10' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='12' y1='20' x2='12' y2='4' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='6' y1='20' x2='6' y2='14' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='2' y1='20' x2='22' y2='20' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cline x1='18' y1='20' x2='18' y2='10' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='12' y1='20' x2='12' y2='4' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='6' y1='20' x2='6' y2='14' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='2' y1='20' x2='22' y2='20' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 用户/角色 */
.icon-users::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='9' cy='7' r='4' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M23 21v-2a4 4 0 0 0-3-3.87' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='9' cy='7' r='4' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M23 21v-2a4 4 0 0 0-3-3.87' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 聊天气泡/客服 */
.icon-chat::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 支付/套餐 */
.icon-payment::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='5' width='20' height='14' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='2' y1='10' x2='22' y2='10' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='5' width='20' height='14' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='2' y1='10' x2='22' y2='10' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 流量池 */
.icon-pool::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='3' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='3' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 购物车/商城 */
.icon-cart::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='9' cy='21' r='1' fill='black'/%3E%3Ccircle cx='20' cy='21' r='1' fill='black'/%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='9' cy='21' r='1' fill='black'/%3E%3Ccircle cx='20' cy='21' r='1' fill='black'/%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 订单/列表 */
.icon-order::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cline x1='8' y1='6' x2='21' y2='6' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='8' y1='12' x2='21' y2='12' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='8' y1='18' x2='21' y2='18' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='3' y1='6' x2='3.01' y2='6' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='3' y1='12' x2='3.01' y2='12' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='3' y1='18' x2='3.01' y2='18' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cline x1='8' y1='6' x2='21' y2='6' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='8' y1='12' x2='21' y2='12' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='8' y1='18' x2='21' y2='18' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='3' y1='6' x2='3.01' y2='6' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='3' y1='12' x2='3.01' y2='12' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='3' y1='18' x2='3.01' y2='18' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* 礼物/推广 */
.icon-gift::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='8' width='18' height='14' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='8' x2='12' y2='22' stroke='black' stroke-width='2'/%3E%3Cpath d='M8 8V6a4 4 0 0 1 8 0v2' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='3' y1='14' x2='21' y2='14' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='8' width='18' height='14' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='8' x2='12' y2='22' stroke='black' stroke-width='2'/%3E%3Cpath d='M8 8V6a4 4 0 0 1 8 0v2' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='3' y1='14' x2='21' y2='14' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 铃铛/通知 */
.icon-bell::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M13.73 21a2 2 0 0 1-3.46 0' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M13.73 21a2 2 0 0 1-3.46 0' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 齿轮/设置/系统 */
.icon-settings::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='3' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='3' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 书本/日志 */
.icon-book::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 19.5A2.5 2.5 0 0 1 6.5 17H20' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 19.5A2.5 2.5 0 0 1 6.5 17H20' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 手机/移动端 */
.icon-mobile::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='5' y='2' width='14' height='20' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='18' x2='12.01' y2='18' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='5' y='2' width='14' height='20' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='18' x2='12.01' y2='18' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* 时钟/时间 */
.icon-clock::before, .icon-time::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='6' x2='12' y2='12' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='12' x2='16' y2='14' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='6' x2='12' y2='12' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='12' x2='16' y2='14' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 品牌/画笔 */
.icon-brand::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' rx='4' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M7 16l3-10 4 10-4-4-4 4z' fill='none' stroke='black' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' rx='4' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M7 16l3-10 4 10-4-4-4 4z' fill='none' stroke='black' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* 新闻/资讯 */
.icon-news::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='3' width='20' height='18' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='6' y1='8' x2='18' y2='8' stroke='black' stroke-width='2'/%3E%3Cline x1='6' y1='12' x2='18' y2='12' stroke='black' stroke-width='2'/%3E%3Cline x1='6' y1='16' x2='12' y2='16' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='3' width='20' height='18' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='6' y1='8' x2='18' y2='8' stroke='black' stroke-width='2'/%3E%3Cline x1='6' y1='12' x2='18' y2='12' stroke='black' stroke-width='2'/%3E%3Cline x1='6' y1='16' x2='12' y2='16' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 管理/后台/仪表盘 */
.icon-admin::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='3' width='7' height='7' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='3' width='7' height='7' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 链接/API */
.icon-link::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 桌面/电脑/Monitor */
.icon-desktop::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='3' width='20' height='14' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='8' y1='21' x2='16' y2='21' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='17' x2='12' y2='21' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='3' width='20' height='14' rx='2' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='8' y1='21' x2='16' y2='21' stroke='black' stroke-width='2'/%3E%3Cline x1='12' y1='17' x2='12' y2='21' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 电话 */
.icon-phone::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 邮箱 */
.icon-email::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M22 6l-10 7L2 6' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M22 6l-10 7L2 6' fill='none' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* 对勾/选中的 */
.icon-check::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 6L9 17l-5-5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 6L9 17l-5-5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* 搜索/放大镜 */
.icon-search::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8' fill='none' stroke='black' stroke-width='2'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65' stroke='black' stroke-width='2'/%3E%3C/svg%3E");
}

/* --- 大尺寸占位图标 (placeholder-img, about-visual, iot-hero-visual, demo-preview-img) --- */
.placeholder-img[class*="icon-"],
.about-visual[class*="icon-"],
.iot-hero-visual[class*="icon-"],
.demo-preview-img[class*="icon-"] {
  font-size: 0;
  color: transparent;
}

.placeholder-img[class*="icon-"]::before {
  width: 60px; height: 60px;
  opacity: 0.35;
}

.about-visual[class*="icon-"]::before {
  width: 120px; height: 120px;
  opacity: 0.30;
}

.iot-hero-visual[class*="icon-"]::before {
  width: 120px; height: 120px;
  opacity: 0.25;
}

.demo-preview-img[class*="icon-"]::before {
  width: 80px; height: 80px;
  opacity: 0.30;
}

/* 确保 card-icon 的图标覆盖原有 font-size */
.card-icon[class*="icon-"] { font-size: 0 !important; }
