    :root{
      --bg:#f4f7fb;
      --panel:#ffffff;
      --panel-soft:rgba(255, 255, 255, .72);
      --primary:#1f6feb; /* 主蓝 */
      --primary-strong:#0b5ad9;
      --accent:#2aa8ff; /* 亮蓝 */
      --text:#0b1b33;
      --muted:#4f6380;
      --shadow:0 12px 30px rgba(13, 50, 102, .12);
      --shadow-strong:0 18px 44px rgba(13, 50, 102, .18);
      --hover-shadow:0 10px 22px rgba(31,111,235,.22);
      --hover-border:rgba(31,111,235,.35);
      --radius:16px;
    }
    *{box-sizing:border-box}
    img{ -webkit-user-drag:none; user-select:none; }@media print{ body{ display:none !important; }}
    html,body{height:100%;}
    body{
      margin:0;
      background:
        radial-gradient(900px 500px at 10% -10%, rgba(31,111,235,.16), transparent 60%),
        radial-gradient(900px 500px at 110% 0%, rgba(42,168,255,.14), transparent 60%),
        linear-gradient(180deg, #f6f9ff 0%, #eef3fb 45%, #f7f9fc 100%);
      color:var(--text);
      font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;
      line-height:1.6;
      -webkit-tap-highlight-color: transparent;
    }/* 背景粒子层 *//* 固定顶部区域与滚动卡片区 */
    body{ overflow:hidden; }
    .cards-scroll{
      position:fixed;
      left:0; right:0; bottom:0;
      overflow:auto;
      -webkit-overflow-scrolling: touch;
    }/* 顶部栏 */
    header{
      position:sticky; top:0; z-index:20;
      background:
        linear-gradient(180deg, rgba(220,232,250,.98), rgba(200,218,245,.9));
      backdrop-filter: blur(10px);
      border-bottom:1px solid rgba(15, 40, 90, .1);
      box-shadow: 0 10px 26px rgba(15, 40, 90, .08);
      position: relative;
      overflow: hidden;
    }
    header::before{
      content:"";
      position:absolute; inset:0;
      background:
        linear-gradient(120deg, rgba(31,111,235,.12), transparent 60%),
        repeating-linear-gradient(90deg, rgba(15,40,90,.08) 0 1px, transparent 1px 24px),
        repeating-linear-gradient(0deg, rgba(15,40,90,.06) 0 1px, transparent 1px 18px);
      opacity:.95;
      pointer-events:none;
    }
    header::after{
      content:"";
      position:absolute; left:0; right:0; bottom:0; height:2px;
      background: linear-gradient(90deg, transparent, rgba(31,111,235,.6), transparent);
      opacity:.8;
      pointer-events:none;
    }
    .nav{
      max-width:1200px; margin:0 auto; padding:10px 20px;
      display:flex; align-items:center; justify-content:space-between; gap:16px;
      position: relative; z-index: 1;
    }
    .brand{display:flex; align-items:center; gap:12px; font-weight:800; letter-spacing:.6px;}
    .brand .logo{
      width:38px; aspect-ratio:1/1; border-radius:50%;
      display:grid; place-items:center; color:#fff; font-weight:900;
      background: radial-gradient(circle at 30% 30%, rgba(42,168,255,.9), transparent 55%),
                  radial-gradient(circle at 70% 70%, rgba(31,111,235,.9), transparent 55%),
                  #0b4db8;
      box-shadow: var(--shadow);
    }
    .brand .title{font-size:18px; color:#0b1b33; text-shadow:0 2px 12px rgba(31,111,235,.18)}

    .nav-links{display:flex; gap:12px; flex-wrap:wrap}
    .nav-links a{
      color:#0b1b33; text-decoration:none; padding:9px 14px; border-radius:14px;
      border:1px solid rgba(15, 40, 90, .18);
      transition:.25s ease; font-weight:700; font-size:14px;
      background: #ffffff;
      box-shadow: 0 10px 20px rgba(15, 40, 90, .18);
      backdrop-filter: blur(6px);
    }
    .nav-links a:hover{ color:#0b1b33; border-color:var(--hover-border); box-shadow:var(--hover-shadow)}/* 轮播 */
    .carousel{ max-width:1200px; margin:2px auto 6px; padding:0 20px; }
    .carousel-wrap{ position:relative; border-radius:var(--radius); overflow:hidden; box-shadow: var(--shadow); border:1px solid rgba(15, 40, 90, .08); background:#fff; }
    .slides, .dots{ position:relative; z-index:1; }
    .slides{ display:flex; transition: transform .6s ease; }
    .slide{ min-width:100%; height:42vw; max-height:420px; background:#eaf1ff; position:relative; }
    .slide img{ 
      width:100%; 
      height:100%; 
      object-fit:cover; 
      display:block; 
      image-rendering: auto;
      image-rendering: -webkit-optimize-contrast;
      image-rendering: crisp-edges;
      -webkit-backface-visibility: hidden;
      -webkit-transform: translateZ(0);
      transform: translateZ(0);
    }

    .dots{ position:absolute; bottom:10px; left:0; right:0; display:flex; gap:8px; justify-content:center; }
    .dot{ width:10px; height:10px; border-radius:50%; background:rgba(15, 40, 90, .15); border:1px solid rgba(15, 40, 90, .2); cursor:pointer; transition: transform .46s cubic-bezier(.22,1,.36,1), background .34s cubic-bezier(.22,1,.36,1), box-shadow .34s cubic-bezier(.22,1,.36,1), border-color .34s cubic-bezier(.22,1,.36,1); }
    .dot.active{ background:var(--primary); box-shadow:0 0 12px rgba(31,111,235,.35); transform: scale(1.18); }/* 区块标题 */
    .section{ max-width:1200px; margin:10px auto; padding:0 20px; }
    .section h2{ font-size:18px; margin:6px 0 6px; color:#0b1b33; text-shadow:none}
    .section-head{
      display:flex;
      justify-content:center;
      align-items:center;
      gap:12px;
      margin:6px 0 10px;
    }
.category-tabs{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  align-items:center;
  padding:6px;
  border-radius:14px;
  background: linear-gradient(180deg, rgba(255,255,255,.82), rgba(245,250,255,.7));
  border:1px solid rgba(15, 40, 90, .08);
  box-shadow: 0 10px 22px rgba(31,111,235,.14);
}/* 让卡片区标题更贴近热门轮播 */
    #cardsScroll .section h2{
      margin-top:2px;
      margin-bottom:4px;
    }/* 卡片栅格（按钮区） */
    .card-grid{ display:flex; flex-direction:column; gap:10px; }
    .card-row{
      position:relative;
      display:grid;
      grid-template-columns: repeat(4, minmax(0,1fr));
      gap:6px;
      padding:8px 10px;
      border-radius:16px;
      background:
        linear-gradient(180deg, rgba(255,255,255,.92), rgba(245,250,255,.86));
      border:1px solid rgba(15, 40, 90, .08);
      box-shadow: 0 10px 22px rgba(31,111,235,.14);
    }

    .card{
      background: linear-gradient(180deg, rgba(255,255,255,.95), rgba(248,251,255,.95));
      border:1px solid rgba(15, 40, 90, .08);
      border-radius:12px; padding:6px 4px; display:flex; flex-direction:column; gap:4px; align-items:center; text-align:center;
      box-shadow: 0 6px 14px rgba(31,111,235,.12);
      transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
      position: relative;
      overflow: hidden;
      text-decoration:none;
      color: inherit;
    }
    .card:hover{ transform: translateY(-4px); border-color: rgba(31,111,235,.25); box-shadow: var(--shadow-strong); }

    .avatar{ width:42px; height:42px; border-radius:10px; border:2px solid rgba(31,111,235,.18); box-shadow:0 6px 12px rgba(31,111,235,.16); flex: none; background:#eef4ff; object-fit:cover }

    .title{ font-weight:700; color:#0b1b33; font-size:11px; line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100% }/* 新增卡片按钮（浮动） *//* 弹窗 */
    .dialog{ width:min(580px, 92vw); background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,251,255,.98)); border:1px solid rgba(15, 40, 90, .12); border-radius:18px; padding:16px; box-shadow: var(--shadow-strong)}
    .dialog h3{ margin:0 0 10px; text-shadow:none}
    .form{ display:grid; grid-template-columns:1fr 1fr; gap:12px }
    .form .full{ grid-column:1/-1 }
    label{ font-size:12px; color:var(--muted) }
    input[type="text"], textarea, input[type="number"]{
      width:100%; padding:10px 12px; border-radius:12px; border:1px solid rgba(15, 40, 90, .12); background:rgba(255,255,255,.9); color:#0b1b33; outline:none;
    }
    textarea{ min-height:84px; resize:vertical }
    .preview{ width:60px; height:60px; border-radius:50%; border:2px dashed rgba(31,111,235,.25); display:grid; place-items:center; color:var(--muted); font-size:12px; overflow:hidden }
    .preview img{ width:100%; height:100%; object-fit:cover }
    .btn{ padding:10px 14px; border-radius:12px; border:1px solid rgba(15, 40, 90, .12); cursor:pointer; font-weight:700 }
    .btn.primary{ background: linear-gradient(90deg, var(--primary-strong), var(--accent)); color:#fff; box-shadow:0 10px 20px rgba(31,111,235,.25) }
    .btn.primary:hover{ box-shadow: var(--hover-shadow); }/* 轻水印（基础防抄袭，可关闭） *//* 底部品牌信息区 *//* 限制选择复制（表单除外） */
    .no-select{ user-select:none }
    .no-select input, .no-select textarea{ user-select:text }/* 顶部主按钮（导航 / 关于合并版） */
.nav-main-btn{
  color:#0b1b33 !important;
  font-weight:800;
  padding:10px 20px;
  border-radius:14px;
  background: #ffffff;
  box-shadow: 0 16px 30px rgba(15, 40, 90, .22);
  border:1px solid rgba(15, 40, 90, .22);
  position:relative;
  overflow:hidden;
  text-shadow: none;
  transition: transform .42s cubic-bezier(.22,1,.36,1), box-shadow .42s cubic-bezier(.22,1,.36,1), border-color .34s cubic-bezier(.22,1,.36,1), background .34s cubic-bezier(.22,1,.36,1);
}/* hover 发光 */
.nav-main-btn:hover{
  transform: translateY(-1px);
  box-shadow: var(--hover-shadow);
}/* 轻微流光效果 */
.nav-main-btn::after{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(
    120deg,
    transparent 30%,
    rgba(255,255,255,.45),
    transparent 70%
  );
  transform: translateX(-120%);
  transition: .6s ease;
}

.nav-main-btn:hover::after{
  transform: translateX(120%);
}
.brand-logo {
  height: 40px;
  background: transparent;
  filter: drop-shadow(0 6px 14px rgba(31,111,235,.25));
}/* 域名限制提示 */
.marquee-wrap {
  width: 100%;
  overflow: hidden;
  background: linear-gradient(90deg, #2b6fe9, #4aa3ff);
  border-radius: 10px;
  padding: 6px 10px 6px 58px;
  box-shadow: 0 10px 22px rgba(31,111,235,.2);
  border:1px solid rgba(15, 40, 90, .08);
  display:flex;
  align-items:center;
  gap:8px;
  min-height:40px;
  position:relative;
}
.marquee-wrap::before{
  content:"";
  position:absolute;
  left:-18px; top:0; bottom:0;
  width:70px;
  background: linear-gradient(135deg, #ff4d4d, #ff8a3d);
  border-radius:10px;
  z-index:1;
}
.marquee-wrap.no-badge{
  padding: 2px 10px;
  min-height:28px;
}
.marquee-wrap.no-badge::before{
  content:none;
}
.marquee-wrap.compact{ margin-top:6px; }

.marquee {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  animation: marqueeMove 6s linear infinite;
  padding-left: 6px;
  z-index:2;
}

.marquee-text {
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  letter-spacing: .5px;
  text-shadow:
    0 1px 0 rgba(0,0,0,.2),
    0 6px 16px rgba(0,0,0,.18);
}/* 图标轮播 */@keyframes marqueeMove {
  0% {
    transform: translateX(100%);
  }
  100% {
    transform: translateX(-100%);
  }
}/* ===== iOS Glassmorphism Theme Override ===== */
:root{
  --bg:#edf3ff;
  --panel:rgba(255,255,255,.7);
  --panel-soft:rgba(255,255,255,.5);
  --primary:#2f7bff;
  --primary-strong:#1f6bff;
  --accent:#5fb4ff;
  --text:#0f1e3a;
  --muted:#4b6288;
  --shadow:0 10px 22px rgba(37,79,152,.12);
  --shadow-strong:0 16px 36px rgba(29,67,132,.18);
  --hover-shadow:0 12px 24px rgba(47,123,255,.2);
  --hover-border:rgba(47,123,255,.32);
}

body{
  background:
    radial-gradient(1200px 520px at -10% -8%, rgba(96,165,250,.22), transparent 62%),
    radial-gradient(900px 460px at 110% 2%, rgba(125,211,252,.18), transparent 60%),
    linear-gradient(180deg,#f6f9ff 0%,#eef3ff 42%,#edf3ff 100%);
  font-family:"SF Pro Display","SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}

header{
  background:linear-gradient(180deg, rgba(236,244,255,.78), rgba(220,234,252,.7));
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
  border-bottom:1px solid rgba(255,255,255,.6);
  box-shadow: 0 6px 18px rgba(31,81,168,.1);
}

.nav-main-btn{
  border-radius:18px;
  border:1px solid rgba(255,255,255,.72);
  background: linear-gradient(180deg, rgba(255,255,255,.88), rgba(241,248,255,.72));
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.9),
    0 10px 24px rgba(28,72,142,.2);
}

.carousel-wrap{
  border-radius:20px;
  border:1px solid rgba(255,255,255,.65);
  background: linear-gradient(180deg, rgba(255,255,255,.5), rgba(255,255,255,.28));
  backdrop-filter: blur(10px) saturate(1.08);
  -webkit-backdrop-filter: blur(10px) saturate(1.08);
  box-shadow: 0 14px 30px rgba(25,61,126,.18);
}

.marquee-wrap{
  border-radius:14px;
  border:1px solid rgba(255,255,255,.65);
  background: linear-gradient(120deg, rgba(44,115,255,.82), rgba(89,178,255,.78));
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.3),
    0 8px 18px rgba(42,105,214,.2);
}

#cardsScroll .section h2{
  color:#122248;
  letter-spacing:.8px;
}

.card{
  border-radius:20px;
  border:1px solid rgba(255,255,255,.66);
  background:
    linear-gradient(180deg, rgba(255,255,255,.9), rgba(245,250,255,.85));
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.85),
    0 14px 30px rgba(26,68,138,.13);
  opacity:0;
  animation: iosCardIn .62s cubic-bezier(.22,1,.36,1) forwards;
  animation-delay: var(--stagger, 0ms);
}

.card:hover{
  transform: translateY(-3px) scale(1.01);
  border-color: rgba(84,151,255,.48);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.88),
    0 16px 36px rgba(37,92,184,.2);
}

.card .go{
  border-radius:14px;
  border:1px solid rgba(255,255,255,.48);
  background: linear-gradient(110deg, #2f7bff 0%, #50a8ff 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.26),
    0 8px 18px rgba(47,123,255,.34);
}@keyframes iosCardIn{
  0%{
    opacity:0;
    transform: translateY(12px) scale(.985);
  }
  68%{
    opacity:1;
    transform: translateY(-1px) scale(1.003);
  }
  100%{
    opacity:1;
    transform: translateY(0) scale(1);
  }
}@media (prefers-reduced-motion: reduce){
  .card{
    animation:none;
    opacity:1;
    transform:none;
  }}@media (max-width:768px){
  .carousel-wrap{ border-radius:18px; }
  .card{ border-radius:16px; }}/* ===== Template V2: Neo Glass Board ===== */
body{
  background:
    radial-gradient(1000px 540px at -20% -10%, rgba(56,189,248,.25), transparent 60%),
    radial-gradient(860px 480px at 120% 6%, rgba(37,99,235,.24), transparent 62%),
    linear-gradient(160deg, #eef4ff 0%, #e8effd 48%, #edf3ff 100%);
}

header{
  max-width:1200px;
  margin:8px auto 4px;
  border-radius:20px;
  border:1px solid rgba(255,255,255,.75);
  box-shadow: 0 12px 28px rgba(26,69,138,.14);
}

header::after{
  height:1px;
  opacity:.5;
}

.nav{
  padding:10px 18px;
}

.brand-logo{
  height:40px;
  filter: drop-shadow(0 8px 16px rgba(31,111,235,.16));
}

.nav-main-btn{
  min-width:120px;
  border-radius:14px;
  font-size:15px;
  font-weight:800;
  letter-spacing:.4px;
}

.carousel{
  margin:2px auto 2px;
}

.carousel-wrap{
  border-radius:26px;
  box-shadow: 0 26px 46px rgba(30,78,158,.22);
}

.slide{
  height:36vw;
  min-height:220px;
  max-height:380px;
}

.marquee-wrap{
  min-height:32px;
  border-radius:12px;
  padding:3px 10px;
}

.marquee-text{
  font-size:13px;
  font-weight:700;
}

.cards-scroll .section{
  margin-top:0;
  padding-top:0;
}

#cardsScroll .section h2{
  margin-top:0;
  margin-bottom:10px;
  font-size:30px;
  font-weight:900;
  letter-spacing:1px;
  color:#0f2250;
}

.card-grid{
  display:flex;
  flex-direction:column;
  gap:12px;
  margin-top:6px;
}

.card-row{
  display:grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap:6px;
  padding:8px 10px;
  border-radius:18px;
  border:1px solid rgba(255,255,255,.66);
  background: linear-gradient(180deg, rgba(255,255,255,.9), rgba(245,250,255,.85));
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.75),
    0 14px 28px rgba(26,68,138,.12);
}@media (min-width:1025px){
  .card-grid{ gap:8px; }
  .card-row{
    gap:4px;
    padding:3px 4px;
    border-radius:10px;
  }
  .card{
    padding:3px 2px;
    gap:2px;
    border-radius:8px;
  }
  .avatar{ width:34px; height:34px; }
  .title{ font-size:9.5px; }}

.card{
  border-radius:14px;
  padding:6px 4px;
  gap:4px;
  align-items:center;
  display:flex;
  flex-direction:column;
  position:relative;
  overflow:hidden;
  transition: transform .28s ease, box-shadow .24s ease;
  will-change: transform;
}

.card::after{
  content:"";
  position:absolute;
  inset:0;
  background: radial-gradient(circle at center, rgba(47,123,255,.25), transparent 60%);
  opacity:0;
  transform: scale(0.7);
  transition: opacity .24s ease, transform .24s cubic-bezier(.2,1.2,.3,1);
  pointer-events:none;
}

.card:active{
  transform: translateY(-2px);
  box-shadow: 0 10px 20px rgba(47,123,255,.28);
  filter: brightness(1.02) saturate(1.08);
}

.card:active::after{
  opacity:1;
  transform: scale(1.05);
}

.avatar{
  width:42px;
  height:42px;
}

    .title{
      font-size:11px;
      line-height:1.2;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
      max-width:100%;
    }@media (max-width:1200px){
  #cardsScroll .section h2{ font-size:30px; }}@media (max-width:1024px){
  .card-row{ grid-template-columns: repeat(4, minmax(0,1fr)); }
  #cardsScroll .section h2{ font-size:26px; }
  .title{ font-size:11px; }
  .avatar{ width:40px; height:40px; }}@media (max-width:768px){
  header{ margin:0 auto 4px; border-radius:0 0 16px 16px; }
  .nav{ padding:8px 12px; }
  .brand-logo{ height:28px; }
  .nav-main-btn{ font-size:12px; min-width:86px; padding:7px 10px; border-radius:10px; }
  .carousel{ padding:0 10px; margin:2px auto 2px; }
  .slide{ min-height:160px; max-height:220px; height:44vw; }
  .marquee-wrap{ min-height:28px; border-radius:10px; }
  .marquee{
    animation: marqueeMove 6s linear infinite;
    width:auto;
    justify-content:flex-start;
    padding-left:6px;
  }
  .marquee-text{
    font-size:11px;
    white-space:nowrap;
  }
  #cardsScroll .section{ padding:0 10px; }
  #cardsScroll .section h2{ font-size:18px; margin-bottom:8px; }
  .card-row{ grid-template-columns: repeat(4, minmax(0, 1fr)); gap:6px; }
  .card{
    padding:6px 4px;
    gap:4px;
    border-radius:12px;
  }
  .avatar{ width:38px; height:38px; }
  .title{
    font-size:10px;
    line-height:1.2;
  }}@media (max-width:420px){
  .card-row{ grid-template-columns: repeat(4, minmax(0,1fr)); }
  .card{ padding:5px 3px; }
  .title{ font-size:10px; }}/* ===== sr-only utility (seo) ===== */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}/* ============================================================
   主页链接 logo 图标：hover 时呼吸旋转放大
   ============================================================ */
.card .avatar,
.ng-platform-logo-link img{ transition:transform .3s cubic-bezier(.34,1.56,.64,1); will-change:transform; }
.card:hover .avatar,
.ng-platform-logo-link:hover img{
  animation:linkLogoBreathe .9s ease-in-out infinite alternate;
  filter:drop-shadow(0 0 10px rgba(124,102,255,.55));
}@keyframes linkLogoBreathe{
  0%{ transform:scale(1) rotate(0deg); }
  50%{ transform:scale(1.18) rotate(10deg); }
  100%{ transform:scale(1.28) rotate(-8deg); }
}/* ============================================================
   浅色主题（白天 6:00-18:00）
   ============================================================ *//* 全局背景与文字 *//* 顶部固定区 *//* 轮播 *//* 跑马灯 *//* 图标滚动条 *//* 分类标签 *//* 卡片滚动区：透明，让 body 波点透出 *//* 底部导航 *//* 页脚 *//* ===== 所有 service-view 子页面 ===== *//* ===== 发现页 ===== *//* ===== 公告页 ===== *//* ===== 通用弹窗 dialog ===== *//* 浅色模式下 section 标题 *//* 浅色模式下顶部品牌区右侧保留一部分星球背景 *//* ============================================================
   浅色模式：动态波点背景
   body::before 双层漂移点阵，body::after 旋转环境光
   ============================================================ */@keyframes ambientDrift{
  to{ background-position:128px 64px, 128px 64px; }
}@keyframes ambientTurn{
  to{ transform:rotate(1turn); }
}/* ============================================================
   品牌区始终置顶：全屏视图打开时 fixedArea 提到最高层，
   并隐藏其下的轮播/图标条，只留顶部品牌卡片
   ============================================================ */
body:has(.service-view.show) #fixedArea{ z-index:100 !important; }
body:has(.service-view.show) #top{ display:none !important; }
body:has(.service-view.show) .service-view.show{ top:78px; }/* ============================================================
   客服页底部防仿冒提示：深色模式白字（默认宇宙风即深色）
   ============================================================ */
.svc-tip strong{ color:#ffffff !important; }
.svc-tip p{ color:#c7d2e8 !important; }/* 浅色模式：提示文字改黑色（深灰） */