/*!
 * 创客帮 MakerBand · Discuz! X3.4 门户模板样式
 * 全部规则限定在 #mb-portal 作用域内，不会影响论坛/家园/群组等其他页面
 * 主色：科技蓝 #1E6FFF / 极客绿 #00B386 / 科技青 #06B6D4 / 靛蓝 #6366F1
 * 编码：UTF-8 无 BOM
 */


  /* ============== 设计令牌（创客橙 + 绿暖色系） ============== */#mb-portal{
    /* 主色系：创客橙 + 暖绿 */
    --c-primary: #1E6FFF;          /* 科技蓝 */
    --c-primary-deep: #0F4FD6;
    --c-primary-soft: #EAF1FF;
    --c-mint: #00B386;             /* 极客绿 */
    --c-mint-soft: #E3F6F0;
    --c-gold: #06B6D4;             /* 科技青 */
    --c-gold-soft: #E1F5FA;
    --c-purple: #7C5CFC;           /* 3D 紫 */
    --c-purple-soft: #F0EBFF;
    --c-pink: #6366F1;             /* 靛蓝 */

    /* 文字 */
    --t-1: #101828;                /* 主标题（冷黑） */
    --t-2: #344054;                /* 正文 */
    --t-3: #667085;                /* 次要 */
    --t-4: #98A2B3;                /* 辅助/占位 */

    /* 背景 */
    --bg-page: #F5F8FC;
    --bg-card: #FFFFFF;
    --bg-soft: #EEF2F7;
    --bg-deep: #0B1220;

    /* 描边与阴影（暖色调） */
    --bd: #E4E9F0;
    --bd-strong: #CBD5E1;
    --sh-sm: 0 2px 8px rgba(16,24,40,.06);
    --sh-md: 0 6px 20px rgba(16,24,40,.08);
    --sh-lg: 0 14px 40px rgba(16,24,40,.12);
    --sh-hover: 0 20px 50px rgba(30,111,255,.18);

    /* 圆角 */
    --r-sm: 8px;
    --r-md: 12px;
    --r-lg: 16px;
    --r-xl: 24px;

    /* 容器与节奏 */
    --container: 1200px;
    --gutter: 24px;
    --section-y: 56px;
    --section-y-m: 44px;

    /* 字体栈 */
    --ff: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', sans-serif;
    --ff-mono: 'JetBrains Mono', 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  }

  /* ============== 重置 ============== */#mb-portal,
#mb-portal *::before,
#mb-portal *::after{ box-sizing:border-box; }#mb-portal{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }#mb-portal{
    margin:0;
    font-family:var(--ff);
    font-size:15px;
    line-height:1.7;
    color:var(--t-2);
    background:var(--bg-page);
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    overflow-x:hidden;
  }#mb-portal h1,
#mb-portal h2,
#mb-portal h3,
#mb-portal h4,
#mb-portal h5,
#mb-portal h6{ margin:0; font-weight:700; color:var(--t-1); letter-spacing:-.01em; }#mb-portal p{ margin:0; }#mb-portal a{ color:inherit; text-decoration:none; transition:color .2s ease; }#mb-portal img{ max-width:100%; display:block; }#mb-portal ul,
#mb-portal ol{ margin:0; padding:0; list-style:none; }#mb-portal button{ font-family:inherit; cursor:pointer; border:none; background:none; color:inherit; }#mb-portal input{ font-family:inherit; }#mb-portal svg{ width:1em; height:1em; }

  /* ============== 通用容器 ============== */#mb-portal .wrap{ max-width:var(--container); margin:0 auto; padding:0 var(--gutter); }

  /* 模块标题 */#mb-portal .mod-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:36px; flex-wrap:wrap; }#mb-portal .mod-head .ttl{ display:flex; flex-direction:column; gap:8px; }#mb-portal .mod-head .ttl h2{ font-size:32px; line-height:1.2; position:relative; padding-left:18px; }#mb-portal .mod-head .ttl h2::before{
    content:""; position:absolute; left:0; top:50%; transform:translateY(-50%);
    width:5px; height:28px; border-radius:3px;
    background:linear-gradient(180deg, var(--c-primary), var(--c-mint));
  }#mb-portal .mod-head .ttl p{ color:var(--t-3); font-size:15px; }#mb-portal .mod-head .more{ color:var(--c-primary); font-weight:600; font-size:14px; display:inline-flex; align-items:center; gap:4px; transition:gap .2s; }#mb-portal .mod-head .more:hover{ gap:8px; }

  /* Tab 切换 */#mb-portal .tabs{ display:flex; gap:8px; align-items:center; }#mb-portal .tabs button{
    padding:8px 18px; border-radius:999px;
    font-size:14px; font-weight:500; color:var(--t-3);
    background:transparent; transition:all .25s ease;
  }#mb-portal .tabs button:hover{ color:var(--c-primary); }#mb-portal .tabs button.on{ background:var(--c-primary); color:#fff; box-shadow:0 6px 14px rgba(30,111,255,.3); }

  /* ============== 顶部导航 ============== */#mb-portal .topbar{
    position:fixed; top:0; left:0; right:0; z-index:100;
    height:64px; display:flex; align-items:center;
    background:rgba(240,246,252,.6);
    backdrop-filter:saturate(180%) blur(14px);
    -webkit-backdrop-filter:saturate(180%) blur(14px);
    border-bottom:1px solid transparent;
    transition:all .35s ease;
  }#mb-portal .topbar.scrolled{
    background:rgba(240,246,252,.94);
    border-bottom-color:var(--bd);
    box-shadow:0 2px 12px rgba(16,24,40,.04);
  }#mb-portal .topbar .wrap{ width:100%; display:flex; align-items:center; gap:32px; }#mb-portal .brand{ display:flex; align-items:center; gap:10px; font-size:20px; font-weight:800; color:var(--t-1); letter-spacing:-.02em; }#mb-portal .brand .logo{
    width:34px; height:34px; border-radius:10px;
    background:linear-gradient(135deg, var(--c-primary) 0%, var(--c-gold) 100%);
    display:grid; place-items:center; color:#fff; font-size:18px; font-weight:800;
    box-shadow:0 6px 14px rgba(30,111,255,.35);
    transform:rotate(-4deg);
  }#mb-portal .brand .name b{ color:var(--c-primary); }#mb-portal .brand .logo-img{ height:44px; width:auto; display:block; }#mb-portal .nav{ display:flex; align-items:center; gap:2px; flex:1; }#mb-portal .nav a{
    padding:8px 11px; border-radius:8px; font-size:14px; font-weight:500;
    color:var(--t-2); position:relative; transition:all .2s ease; white-space:nowrap;
  }#mb-portal .nav a:hover{ color:var(--c-primary); background:var(--c-primary-soft); }#mb-portal .nav a.active{ color:var(--c-primary); }#mb-portal .nav a.active::after{
    content:""; position:absolute; left:11px; right:11px; bottom:2px;
    height:2px; border-radius:2px; background:var(--c-primary);
  }#mb-portal .nav-right{ display:flex; align-items:center; gap:12px; }#mb-portal .search{ position:relative; width:160px; transition:width .3s ease; }#mb-portal .search input{
    width:100%; height:38px; padding:0 14px 0 38px;
    border:1px solid var(--bd); border-radius:999px;
    background:var(--bg-soft); color:var(--t-1);
    font-size:13px; outline:none; transition:all .25s ease;
  }#mb-portal .search input:focus{ border-color:var(--c-primary); background:#fff; box-shadow:0 0 0 4px rgba(30,111,255,.12); }#mb-portal .search svg{
    position:absolute; left:13px; top:50%; transform:translateY(-50%);
    width:16px; height:16px; color:var(--t-4); pointer-events:none;
  }#mb-portal .btn-login{
    padding:8px 18px; border-radius:999px; font-size:14px; font-weight:600;
    color:var(--t-1); background:transparent; border:1px solid var(--bd-strong);
    transition:all .2s ease;
  }#mb-portal .btn-login:hover{ color:var(--c-primary); border-color:var(--c-primary); }#mb-portal .btn-join{
    padding:8px 20px; border-radius:999px; font-size:14px; font-weight:600;
    background:linear-gradient(135deg, var(--c-primary), var(--c-gold)); color:#fff;
    box-shadow:0 6px 14px rgba(30,111,255,.3); transition:all .25s ease;
  }#mb-portal .btn-join:hover{ transform:translateY(-1px); box-shadow:0 10px 22px rgba(30,111,255,.4); }

  /* 登录态：用户菜单 */#mb-portal .user-menu{ position:relative; display:none; }#mb-portal body.logged-in .nav-right .btn-login,
#mb-portal body.logged-in .nav-right .btn-join{ display:none; }#mb-portal body.logged-in .user-menu{ display:flex; align-items:center; gap:10px; }#mb-portal .user-menu .um-avatar{
    width:36px; height:36px; border-radius:50%; cursor:pointer;
    background:linear-gradient(135deg, var(--c-primary), var(--c-mint)); color:#fff;
    display:grid; place-items:center; font-weight:700; font-size:14px;
    border:2px solid #fff; box-shadow:var(--sh-sm); transition:transform .2s;
  }#mb-portal .user-menu .um-avatar:hover{ transform:scale(1.08); }#mb-portal .user-menu .um-name{ font-size:14px; font-weight:500; color:var(--t-2); cursor:pointer; }#mb-portal .um-dropdown{
    position:absolute; top:calc(100% + 10px); right:0; min-width:180px;
    background:#fff; border:1px solid var(--bd); border-radius:var(--r-md);
    box-shadow:var(--sh-lg); padding:8px; opacity:0; visibility:hidden;
    transform:translateY(-6px); transition:all .25s ease; z-index:10;
  }#mb-portal .user-menu.open .um-dropdown{ opacity:1; visibility:visible; transform:none; }#mb-portal .um-dropdown a{
    display:flex; align-items:center; gap:10px; padding:10px 12px;
    border-radius:8px; font-size:14px; color:var(--t-2); transition:all .2s;
  }#mb-portal .um-dropdown a:hover{ background:var(--c-primary-soft); color:var(--c-primary); }#mb-portal .um-dropdown a.danger:hover{ background:#FFEEEE; color:#E02424; }#mb-portal .um-dropdown .divider{ height:1px; background:var(--bd); margin:6px 0; }#mb-portal .menu-toggle{ display:none; width:40px; height:40px; border-radius:8px; align-items:center; justify-content:center; color:var(--t-1); }#mb-portal .menu-toggle svg{ width:24px; height:24px; }

  /* ============== 首屏 Banner 三图轮播（通栏） ============== */#mb-portal .hero-slider{
    position:relative; margin-top:64px; height:440px; overflow:hidden;
    background:var(--bg-deep);
  }#mb-portal .slides{ position:relative; width:100%; height:100%; }#mb-portal .slide{
    position:absolute; inset:0; opacity:0; visibility:hidden;
    transition:opacity .8s cubic-bezier(.4,0,.2,1), visibility .8s;
  }#mb-portal .slide.on{ opacity:1; visibility:visible; z-index:2; }#mb-portal .slide .s-bg{ position:absolute; inset:0; }#mb-portal .slide .s-bg::before{
    content:""; position:absolute; inset:0;
    background-image:linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px),
                     linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px);
    background-size:48px 48px;
    mask-image:radial-gradient(circle at 32% 50%, #000 22%, transparent 72%);
    -webkit-mask-image:radial-gradient(circle at 32% 50%, #000 22%, transparent 72%);
  }#mb-portal .s1 .s-bg{ background:linear-gradient(120deg, #1E6FFF 0%, #06B6D4 55%, #67E8F9 100%); }#mb-portal .s2 .s-bg{ background:linear-gradient(120deg, #00B386 0%, #1B9ED0 58%, #7C5CFC 100%); }#mb-portal .s3 .s-bg{ background:linear-gradient(120deg, #7C5CFC 0%, #6366F1 55%, #1E6FFF 100%); }
  /* 通栏图片层的可读性遮罩：左下重、右上轻，保证白色文案清晰 */
  #mb-portal .slide .s-bg[style*="background-image"]::after{ content:""; position:absolute; inset:0; background:linear-gradient(100deg, rgba(8,24,64,.74) 0%, rgba(8,24,64,.38) 45%, rgba(8,24,64,.05) 75%, rgba(8,24,64,.12) 100%); }
  /* 整张轮播可点击的透明链接层（位于文字之下、箭头之上） */
  #mb-portal .slide .slide-link{ position:absolute; inset:0; z-index:3; cursor:pointer; }
  #mb-portal .slide .wrap{ z-index:2; }
  #mb-portal .slide .sl-arrow, #mb-portal .slide-cta a{ position:relative; z-index:4; }#mb-portal .slide .wrap{
    position:relative; height:100%; width:100%;
    display:grid; grid-template-columns:1.15fr 1fr; gap:40px; align-items:center;
  }#mb-portal .slide-text{ color:#fff; }#mb-portal .slide-text .badge{
    display:inline-flex; align-items:center; gap:8px; padding:5px 14px 5px 5px;
    border-radius:999px; font-size:12px; font-weight:600; margin-bottom:18px;
    background:rgba(255,255,255,.2); backdrop-filter:blur(8px); color:#fff;
  }#mb-portal .slide-text .badge .tag{
    background:#fff; color:var(--t-1); padding:2px 10px; border-radius:999px; font-size:11px;
  }#mb-portal .slide-text h1,
#mb-portal .slide-text h2{
    font-size:42px; line-height:1.15; font-weight:800; color:#fff;
    letter-spacing:-.02em; margin-bottom:14px; text-shadow:0 2px 14px rgba(0,0,0,.14);
  }#mb-portal .slide-text p{
    font-size:16px; color:rgba(255,255,255,.93); line-height:1.8;
    max-width:470px; margin-bottom:26px;
  }#mb-portal .slide-cta{ display:flex; gap:14px; flex-wrap:wrap; }#mb-portal .slide-cta .btn-solid{
    padding:13px 28px; border-radius:12px; font-size:15px; font-weight:600;
    background:#fff; color:var(--t-1); display:inline-flex; align-items:center; gap:8px;
    box-shadow:0 10px 24px rgba(0,0,0,.2); transition:all .25s ease;
  }#mb-portal .slide-cta .btn-solid:hover{ transform:translateY(-2px); box-shadow:0 14px 30px rgba(0,0,0,.28); }#mb-portal .slide-cta .btn-line{
    padding:13px 26px; border-radius:12px; font-size:15px; font-weight:600;
    background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.5);
    color:#fff; display:inline-flex; align-items:center; gap:8px;
    backdrop-filter:blur(8px); transition:all .25s ease;
  }#mb-portal .slide-cta .btn-line:hover{ background:rgba(255,255,255,.3); transform:translateY(-2px); }

  /* 轮播右侧视觉卡 */#mb-portal .slide-visual{ position:relative; display:grid; place-items:center; }#mb-portal .sv-card{
    width:100%; max-width:380px; aspect-ratio:1.32; border-radius:20px;
    background:rgba(255,255,255,.17); border:1px solid rgba(255,255,255,.32);
    backdrop-filter:blur(14px); box-shadow:0 24px 60px rgba(0,0,0,.22);
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px;
    color:#fff; position:relative; overflow:hidden; padding:20px;
  }#mb-portal .sv-card .sv-ico{ font-size:60px; animation:floaty 5s ease-in-out infinite; }#mb-portal .sv-card .sv-ttl{ font-size:20px; font-weight:800; letter-spacing:-.01em; }#mb-portal .sv-card .sv-sub{ font-size:13px; color:rgba(255,255,255,.88); text-align:center; }#mb-portal .sv-chips{ display:flex; gap:8px; flex-wrap:wrap; justify-content:center; margin-top:4px; }#mb-portal .sv-chips span{
    padding:4px 12px; border-radius:999px; font-size:12px;
    background:rgba(255,255,255,.22); color:#fff;
  }

  /* 轮播控件 */#mb-portal .sl-arrow{
    position:absolute; top:50%; transform:translateY(-50%); z-index:10;
    width:44px; height:44px; border-radius:50%;
    background:rgba(255,255,255,.2); backdrop-filter:blur(8px); color:#fff;
    display:grid; place-items:center;
    border:1px solid rgba(255,255,255,.3); transition:all .25s ease;
  }#mb-portal .sl-arrow:hover{ background:rgba(255,255,255,.38); }#mb-portal .sl-arrow svg{ width:20px; height:20px; }#mb-portal .sl-arrow.prev{ left:24px; }#mb-portal .sl-arrow.next{ right:24px; }#mb-portal .sl-dots{
    position:absolute; bottom:22px; left:50%; transform:translateX(-50%);
    z-index:10; display:flex; gap:10px;
  }#mb-portal .sl-dots span{
    width:26px; height:4px; border-radius:2px; cursor:pointer;
    background:rgba(255,255,255,.45); transition:all .3s ease;
  }#mb-portal .sl-dots span.on{ width:44px; background:#fff; }

  /* 轮播下方资讯·数据条（左：资讯上滚 / 右：数据滑动） */#mb-portal .hero-stats-bar{ background:#fff; border-bottom:1px solid var(--bd); }#mb-portal .info-bar{
    display:grid; grid-template-columns:1fr auto 1fr; align-items:stretch;
    padding:20px 0;
  }#mb-portal .news-pins{
    display:flex; flex-direction:column; justify-content:center; gap:9px;
    min-width:0; padding-right:28px;
  }#mb-portal .news-pin{
    display:flex; align-items:center; gap:10px;
    font-size:13.5px; color:var(--t-2); text-decoration:none; min-width:0;
  }#mb-portal .news-pin .ntxt{
    flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
    font-weight:600; transition:color .2s;
  }#mb-portal .news-pin:hover .ntxt{ color:var(--c-primary); }#mb-portal .news-pin .ndate{ flex:none; font-size:12px; color:var(--t-4); }#mb-portal .ticker-viewport{ overflow:hidden; height:56px; min-width:0; display:flex; align-items:center; }#mb-portal .ticker-list{ display:flex; flex-direction:column; animation:tickerUp 64s linear infinite; }#mb-portal .ticker-viewport:hover .ticker-list{ animation-play-state:paused; }@keyframes tickerUp{
    0%{ transform:translateY(0); }
    100%{ transform:translateY(-50%); }
  }#mb-portal .ticker-item{
    height:28px; flex:none; display:flex; align-items:center; gap:10px;
    font-size:13px; color:var(--t-2); min-width:0; text-decoration:none;
  }#mb-portal .news-pin .ntag,
#mb-portal .ticker-item .ntag{
    flex:none; padding:1px 7px; border-radius:5px; font-size:10px; font-weight:600;
    background:var(--c-primary-soft); color:var(--c-primary);
  }#mb-portal .ticker-item .ntag.nt-ann{ background:var(--c-mint-soft); color:var(--c-mint); }#mb-portal .ticker-item .ntag.nt-rec{ background:var(--c-gold-soft); color:var(--c-gold); }#mb-portal .ticker-item .ntag.nt-hot{ background:rgba(124,92,252,.1); color:var(--c-purple); }#mb-portal .ticker-item .ntxt{
    flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
    font-weight:500; transition:color .2s;
  }#mb-portal .ticker-item:hover .ntxt{ color:var(--c-primary); }#mb-portal .ticker-item .ndate{ flex:none; font-size:12px; color:var(--t-4); }#mb-portal .ticker-divider{ width:1px; background:var(--bd); }@keyframes floaty{
    0%,100%{ transform:translateY(0); }
    50%{ transform:translateY(-12px); }
  }

  /* ============== 板块通用 ============== */#mb-portal .section{ padding:var(--section-y) 0; }

  /* ============== 创客好工具（coding.qq.com 风格：左垂直 Tab + 右详情面板） ============== */#mb-portal .tools-panel{
    display:grid; grid-template-columns:280px 1fr;
    background:var(--bg-card); border:1px solid var(--bd); border-radius:var(--r-lg);
    overflow:hidden; box-shadow:var(--sh-sm); min-height:480px;
  }#mb-portal .tool-tabs{
    display:flex; flex-direction:column; gap:4px;
    padding:12px; background:var(--bg-soft);
  }#mb-portal .tool-tab{
    display:flex; align-items:center; gap:14px; padding:14px 16px;
    border-radius:var(--r-md); cursor:pointer; transition:all .25s ease;
    text-align:left; width:100%;
  }#mb-portal .tool-tab:hover{ background:rgba(255,255,255,.75); }#mb-portal .tool-tab.on{
    background:linear-gradient(135deg, var(--accent), var(--accent-deep, var(--accent)));
    box-shadow:0 8px 20px rgba(30,111,255,.28);
  }#mb-portal .tool-tab .tt-ico{
    width:46px; height:46px; border-radius:12px; display:grid; place-items:center;
    color:#fff; flex-shrink:0; font-size:20px; background:var(--accent);
    box-shadow:0 4px 10px rgba(16,24,40,.12);
  }#mb-portal .tool-tab.on .tt-ico{ background:rgba(255,255,255,.24); box-shadow:none; }#mb-portal .tool-tab .tt-info{ display:flex; flex-direction:column; gap:2px; min-width:0; }#mb-portal .tool-tab .tt-info h4{ font-size:16px; color:var(--t-1); }#mb-portal .tool-tab .tt-info span{ font-size:12px; color:var(--t-3); }#mb-portal .tool-tab.on .tt-info h4,
#mb-portal .tool-tab.on .tt-info span{ color:#fff; }#mb-portal .tool-detail{ display:none; padding:36px 40px 32px; }#mb-portal .tool-detail.on{ display:block; animation:detailIn .45s cubic-bezier(.2,.8,.2,1); }@keyframes detailIn{ from{ opacity:0; transform:translateY(16px); } to{ opacity:1; transform:none; } }#mb-portal .td-badge{
    display:inline-flex; align-items:center; gap:8px; padding:6px 14px;
    border-radius:8px; background:var(--accent-soft); color:var(--accent);
    font-size:13px; font-weight:600; margin-bottom:20px;
  }#mb-portal .td-grid{ display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:center; }#mb-portal .td-grid h3{ font-size:28px; margin-bottom:14px; }#mb-portal .td-grid p{ font-size:14px; color:var(--t-3); line-height:1.8; margin-bottom:24px; text-wrap:pretty; }#mb-portal .td-cta{ display:flex; align-items:center; gap:18px; }#mb-portal .td-btn{
    padding:12px 30px; border-radius:999px; background:var(--accent);
    color:#fff; font-size:15px; font-weight:600;
    box-shadow:0 8px 18px rgba(30,111,255,.3); transition:all .25s ease;
    display:inline-flex; align-items:center; gap:6px;
  }#mb-portal .td-btn:hover{ transform:translateY(-2px); box-shadow:0 12px 24px rgba(30,111,255,.4); }#mb-portal .td-more{ color:var(--t-2); font-size:14px; font-weight:500; transition:color .2s; }#mb-portal .td-more:hover{ color:var(--accent); }

  /* 详情插图：浏览器窗口风 */#mb-portal .td-visual{
    border-radius:var(--r-md); overflow:hidden; box-shadow:var(--sh-lg);
    border:1px solid var(--bd); background:var(--bg-page);
  }#mb-portal .td-visual .v-bar{
    height:32px; background:var(--bg-soft); display:flex; align-items:center; gap:6px;
    padding:0 14px; border-bottom:1px solid var(--bd);
  }#mb-portal .td-visual .v-bar i{ width:9px; height:9px; border-radius:50%; display:block; }#mb-portal .td-visual .v-bar i:nth-child(1){ background:#FF6B6B; }#mb-portal .td-visual .v-bar i:nth-child(2){ background:#FFC94D; }#mb-portal .td-visual .v-bar i:nth-child(3){ background:#3DD68C; }#mb-portal .td-visual .v-bar span{ font-size:11px; color:var(--t-4); margin-left:8px; font-family:var(--ff-mono); }#mb-portal .td-visual .v-body{ height:220px; position:relative; overflow:hidden; }

  /* 编程插图：彩色代码条 */#mb-portal .v-code{ padding:16px 18px; display:flex; flex-direction:column; gap:10px; font-family:var(--ff-mono); font-size:12px; }#mb-portal .v-code .ln{ display:flex; gap:8px; align-items:center; }#mb-portal .v-code .blk{ height:16px; border-radius:4px; display:inline-block; }#mb-portal .v-code .kw{ width:52px; background:#FF8A65; }#mb-portal .v-code .fn{ width:88px; background:#FFD27A; }#mb-portal .v-code .st{ width:120px; background:#9CCC65; }#mb-portal .v-code .nm{ width:40px; background:#80CBC4; }#mb-portal .v-code .gap{ width:20px; }

  /* 仿真插图：赛道机器人 */#mb-portal .v-sim{
    height:100%; background:linear-gradient(180deg, #2A2A3E, #1A1A2E);
    position:relative;
  }#mb-portal .v-sim .track{
    position:absolute; top:50%; left:8%; right:8%; height:5px;
    background:linear-gradient(90deg, var(--c-primary), var(--c-gold), var(--c-mint));
    border-radius:3px;
  }#mb-portal .v-sim .bot{
    position:absolute; top:50%; left:0; transform:translate(-50%,-50%);
    width:44px; height:44px; border-radius:10px; font-size:22px;
    background:linear-gradient(135deg, var(--c-primary), var(--c-primary-deep));
    display:grid; place-items:center; box-shadow:0 10px 20px rgba(0,0,0,.4);
    animation:vBot 4s ease-in-out infinite;
  }@keyframes vBot{ 0%,100%{ left:15%; } 50%{ left:85%; } }

  /* 设计插图：3D 立方体 */#mb-portal .v-3d{
    height:100%; background:linear-gradient(180deg, #3A3530, #2A2520);
    position:relative; display:grid; place-items:center;
  }#mb-portal .v-3d .cube{
    width:90px; height:90px; border-radius:14px;
    background:linear-gradient(135deg, var(--c-purple), var(--c-pink));
    transform:rotate(-12deg) perspective(400px) rotateX(22deg);
    box-shadow:0 20px 40px rgba(124,92,252,.4);
    display:grid; place-items:center; font-size:36px;
    animation:vCube 5s ease-in-out infinite;
  }@keyframes vCube{ 0%,100%{ transform:rotate(-12deg) perspective(400px) rotateX(22deg); } 50%{ transform:rotate(-4deg) perspective(400px) rotateX(10deg); } }

  /* 打印插图：进度条 */#mb-portal .v-print{
    height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px;
    background:linear-gradient(180deg, #2A2A3E, #1A1A2E); color:#fff;
  }#mb-portal .v-print .p-model{ font-size:44px; animation:floaty 4s ease-in-out infinite; }#mb-portal .v-print .p-bar{
    width:60%; height:8px; border-radius:4px; background:rgba(255,255,255,.15); overflow:hidden;
  }#mb-portal .v-print .p-bar i{
    display:block; height:100%; width:64%; border-radius:4px;
    background:linear-gradient(90deg, var(--c-gold), var(--c-primary));
    animation:pBar 3s ease-in-out infinite alternate;
  }@keyframes pBar{ from{ width:40%; } to{ width:78%; } }#mb-portal .v-print .p-txt{ font-size:11px; color:rgba(255,255,255,.7); font-family:var(--ff-mono); }

  /* 入门体验三卡 */#mb-portal .td-exp{ margin-top:30px; }#mb-portal .td-exp h4{ font-size:16px; margin-bottom:14px; }#mb-portal .td-exp-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:16px; }#mb-portal .td-exp-item{
    border-radius:var(--r-md); overflow:hidden; cursor:pointer;
    border:1px solid var(--bd); background:#fff; transition:all .25s ease;
  }#mb-portal .td-exp-item:hover{ transform:translateY(-4px); box-shadow:var(--sh-md); }#mb-portal .td-exp-item .thumb{
    height:104px; display:grid; place-items:center; font-size:38px; color:#fff;
    background:linear-gradient(135deg, var(--accent), var(--accent-2, var(--accent-deep, var(--accent))));
    position:relative;
  }#mb-portal .td-exp-item .thumb::after{
    content:""; position:absolute; inset:0;
    background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.25), transparent 60%);
  }#mb-portal .td-exp-item .name{ padding:10px 14px; font-size:13px; color:var(--t-2); font-weight:500; }

  /* ============== 社区论坛 ============== */#mb-portal .forum-layout{ display:grid; grid-template-columns:1fr 320px; gap:24px; }#mb-portal .forum-list{
    background:var(--bg-card); border:1px solid var(--bd); border-radius:var(--r-lg);
    overflow:hidden;
  }#mb-portal .forum-list-head{
    display:grid; grid-template-columns:48px 1fr auto auto auto; gap:16px;
    padding:14px 24px; background:var(--bg-soft); border-bottom:1px solid var(--bd);
    font-size:12px; color:var(--t-3); font-weight:600;
  }#mb-portal .forum-row{
    display:grid; grid-template-columns:48px 1fr auto auto auto; gap:16px;
    padding:18px 24px; align-items:center; border-bottom:1px solid var(--bd);
    transition:background .2s ease; cursor:pointer;
  }#mb-portal .forum-row:last-child{ border-bottom:none; }#mb-portal .forum-row:hover{ background:var(--c-primary-soft); }#mb-portal .forum-row .av{
    width:42px; height:42px; border-radius:10px; color:#fff;
    display:grid; place-items:center; font-weight:700; font-size:15px;
  }#mb-portal .forum-row .ft{ display:flex; flex-direction:column; gap:4px; min-width:0; }#mb-portal .forum-row .ft .tags{ display:flex; gap:6px; }#mb-portal .forum-row .ft .tags span{
    font-size:11px; padding:1px 7px; border-radius:4px;
    background:var(--bg-soft); color:var(--t-3);
  }#mb-portal .forum-row .ft .tags span.hot{ background:#FFEEEE; color:#E02424; }#mb-portal .forum-row .ft .tags span.pin{ background:#FFF5E6; color:var(--c-gold); }#mb-portal .forum-row .ft h4{ font-size:15px; line-height:1.4; }#mb-portal .forum-row .ft .meta{ font-size:12px; color:var(--t-4); }#mb-portal .forum-row .col{ font-size:13px; color:var(--t-3); text-align:center; min-width:60px; }#mb-portal .forum-row .col b{ display:block; color:var(--t-1); font-size:15px; font-weight:700; }#mb-portal .forum-row .col span{ font-size:11px; color:var(--t-4); }#mb-portal .forum-row .last{ display:flex; align-items:center; gap:8px; min-width:140px; }#mb-portal .forum-row .last .av-s{ width:24px; height:24px; border-radius:50%; background:var(--c-mint); color:#fff; display:grid; place-items:center; font-size:11px; font-weight:600; }#mb-portal .forum-row .last .info{ font-size:12px; color:var(--t-4); line-height:1.4; min-width:0; }#mb-portal .forum-row .last .info b{ display:block; color:var(--t-2); font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

  /* 侧栏 */#mb-portal .side{ display:flex; flex-direction:column; gap:20px; }#mb-portal .side-card{
    background:var(--bg-card); border:1px solid var(--bd); border-radius:var(--r-lg);
    padding:22px;
  }#mb-portal .side-card h3{ font-size:16px; margin-bottom:16px; display:flex; align-items:center; gap:8px; }#mb-portal .side-card h3::before{ content:""; width:4px; height:14px; border-radius:2px; background:var(--c-primary); }#mb-portal .notice-list{ display:flex; flex-direction:column; gap:12px; }#mb-portal .notice-list li{
    display:flex; gap:10px; font-size:13px; color:var(--t-2); line-height:1.6;
    padding-bottom:12px; border-bottom:1px dashed var(--bd); cursor:pointer;
  }#mb-portal .notice-list li:last-child{ border-bottom:none; padding-bottom:0; }#mb-portal .notice-list li:hover{ color:var(--c-primary); }#mb-portal .notice-list li .dt{ flex-shrink:0; color:var(--t-4); font-size:12px; }#mb-portal .rank-list li{
    display:flex; align-items:center; gap:12px; padding:10px 0;
    border-bottom:1px solid var(--bd); font-size:13px;
  }#mb-portal .rank-list li:last-child{ border-bottom:none; }#mb-portal .rank-list li .rn{
    width:22px; height:22px; border-radius:6px; flex-shrink:0;
    display:grid; place-items:center; font-weight:700; font-size:12px;
    background:var(--bg-soft); color:var(--t-3);
  }#mb-portal .rank-list li:nth-child(1) .rn{ background:var(--c-primary); color:#fff; }#mb-portal .rank-list li:nth-child(2) .rn{ background:var(--c-gold); color:#fff; }#mb-portal .rank-list li:nth-child(3) .rn{ background:#FFB993; color:#fff; }#mb-portal .rank-list li .nm{ flex:1; color:var(--t-2); }#mb-portal .rank-list li .sc{ color:var(--c-primary); font-weight:700; }

  /* ============== 技术文章 ============== */#mb-portal .articles-layout{ display:grid; grid-template-columns:1.4fr 1fr; gap:24px; }#mb-portal .art-feat{
    border-radius:var(--r-lg); overflow:hidden;
    background:var(--bg-card); border:1px solid var(--bd);
    transition:all .3s ease; cursor:pointer; height:100%;
    display:flex; flex-direction:column;
  }#mb-portal .art-feat:hover{ transform:translateY(-4px); box-shadow:var(--sh-lg); }#mb-portal .art-feat .cover{
    height:280px; background:linear-gradient(135deg, var(--c-primary), var(--c-purple));
    position:relative; overflow:hidden;
  }#mb-portal .art-feat .cover::after{
    content:""; position:absolute; inset:0;
    background:
      radial-gradient(circle at 20% 30%, rgba(255,255,255,.2) 0%, transparent 40%),
      radial-gradient(circle at 80% 70%, rgba(6,182,212,.3) 0%, transparent 50%);
  }#mb-portal .art-feat .cover .pattern{
    position:absolute; inset:0; opacity:.35;
    background-image:
      linear-gradient(45deg, rgba(255,255,255,.15) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.15) 75%),
      linear-gradient(45deg, rgba(255,255,255,.15) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.15) 75%);
    background-size:32px 32px;
    background-position:0 0, 16px 16px;
  }#mb-portal .art-feat .cover .cat{
    position:absolute; top:18px; left:18px; z-index:2;
    padding:5px 12px; border-radius:6px; font-size:12px; font-weight:600;
    background:rgba(255,255,255,.95); color:var(--c-primary);
  }#mb-portal .art-feat .body{ padding:24px 26px 28px; display:flex; flex-direction:column; gap:12px; flex:1; }#mb-portal .art-feat h3{ font-size:22px; line-height:1.4; }#mb-portal .art-feat p{ color:var(--t-3); font-size:14px; line-height:1.7; }#mb-portal .art-feat .meta{ display:flex; align-items:center; gap:12px; margin-top:auto; font-size:13px; color:var(--t-4); }#mb-portal .art-feat .meta .av{
    width:28px; height:28px; border-radius:50%;
    background:linear-gradient(135deg, var(--c-primary), var(--c-mint)); color:#fff;
    display:grid; place-items:center; font-size:12px; font-weight:600;
  }#mb-portal .art-feat .meta b{ color:var(--t-2); font-weight:500; }#mb-portal .art-feat .meta .dot{ width:3px; height:3px; border-radius:50%; background:var(--t-4); }#mb-portal .art-feat .meta .views{ display:flex; align-items:center; gap:4px; }#mb-portal .art-list{ display:flex; flex-direction:column; gap:14px; }#mb-portal .art-item{
    display:flex; gap:14px; padding:16px; border-radius:var(--r-md);
    background:var(--bg-card); border:1px solid var(--bd);
    transition:all .25s ease; cursor:pointer;
  }#mb-portal .art-item:hover{ transform:translateX(4px); box-shadow:var(--sh-md); border-color:var(--c-primary); }#mb-portal .art-item .num{
    width:32px; height:32px; flex-shrink:0; border-radius:8px;
    background:var(--c-primary-soft); color:var(--c-primary);
    display:grid; place-items:center; font-weight:700; font-size:14px;
  }#mb-portal .art-item .info{ display:flex; flex-direction:column; gap:6px; min-width:0; }#mb-portal .art-item h4{ font-size:15px; line-height:1.45; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }#mb-portal .art-item .m{ font-size:12px; color:var(--t-4); display:flex; gap:10px; }

  /* ============== 开源项目 ============== */#mb-portal .proj-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:20px; }#mb-portal .proj-card{
    border-radius:var(--r-lg); background:var(--bg-card); border:1px solid var(--bd);
    padding:24px; transition:all .3s ease; cursor:pointer;
    display:flex; flex-direction:column; gap:14px;
  }#mb-portal .proj-card:hover{ transform:translateY(-4px); box-shadow:var(--sh-lg); border-color:transparent; }#mb-portal .proj-head{ display:flex; align-items:center; gap:12px; }#mb-portal .proj-head .pi{
    width:42px; height:42px; border-radius:10px; color:#fff;
    display:grid; place-items:center; font-weight:700;
  }#mb-portal .proj-head h4{ font-size:16px; }#mb-portal .proj-head .slug{ font-size:12px; color:var(--t-4); font-family:var(--ff-mono); }#mb-portal .proj-card .desc{ font-size:13px; color:var(--t-3); line-height:1.7; min-height:44px; }#mb-portal .proj-tags{ display:flex; flex-wrap:wrap; gap:6px; }#mb-portal .proj-tags span{
    padding:3px 10px; border-radius:6px; font-size:12px;
    background:var(--bg-soft); color:var(--t-3);
  }#mb-portal .proj-meta{
    display:flex; align-items:center; gap:18px; padding-top:14px;
    border-top:1px solid var(--bd); font-size:13px; color:var(--t-3);
  }#mb-portal .proj-meta .m{ display:flex; align-items:center; gap:5px; }#mb-portal .proj-meta .m svg{ width:14px; height:14px; color:var(--t-4); }#mb-portal .proj-meta .lang{ display:flex; align-items:center; gap:6px; font-weight:600; color:var(--t-2); }#mb-portal .proj-meta .lang::before{ content:""; width:9px; height:9px; border-radius:50%; background:var(--lang-color, var(--c-primary)); }

  /* ============== 赛事活动 ============== */#mb-portal .events-row{ display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:20px; }#mb-portal .event-card{
    border-radius:var(--r-lg); overflow:hidden; background:var(--bg-card);
    border:1px solid var(--bd); transition:all .3s ease; cursor:pointer;
    display:flex; flex-direction:column;
  }#mb-portal .event-card:hover{ transform:translateY(-4px); box-shadow:var(--sh-lg); }#mb-portal .event-card .e-cover{
    height:160px; position:relative; color:#fff; padding:22px;
    display:flex; flex-direction:column; justify-content:space-between;
  }#mb-portal .event-card .e-cover .status{
    align-self:flex-start; padding:4px 10px; border-radius:6px;
    background:rgba(255,255,255,.25); backdrop-filter:blur(8px);
    font-size:12px; font-weight:600;
  }#mb-portal .event-card .e-cover .status.end{ background:rgba(16,24,40,.4); }#mb-portal .event-card .e-cover h3{ color:#fff; font-size:20px; line-height:1.3; }#mb-portal .event-card .e-body{ padding:18px 20px 20px; display:flex; flex-direction:column; gap:12px; flex:1; }#mb-portal .event-card .e-body .desc{ font-size:13px; color:var(--t-3); line-height:1.7; }#mb-portal .countdown{
    display:flex; gap:8px; margin-top:auto; padding-top:14px; border-top:1px solid var(--bd);
  }#mb-portal .countdown .cd{
    flex:1; text-align:center; padding:8px 4px; border-radius:8px;
    background:var(--bg-soft);
  }#mb-portal .countdown .cd b{ display:block; font-size:18px; color:var(--c-primary); font-weight:800; }#mb-portal .countdown .cd span{ font-size:11px; color:var(--t-4); }

  /* ============== 创客器材商城 ============== */#mb-portal .shop-banner{
    display:flex; align-items:center; justify-content:space-between; gap:20px;
    padding:20px 28px; border-radius:var(--r-lg); margin-bottom:24px;
    background:linear-gradient(120deg, var(--c-primary), var(--c-gold)); color:#fff;
  }#mb-portal .shop-banner .sb-l{ display:flex; flex-direction:column; gap:4px; }#mb-portal .shop-banner .sb-l b{ font-size:18px; }#mb-portal .shop-banner .sb-l span{ font-size:13px; opacity:.92; }#mb-portal .shop-banner .sb-btn{
    padding:10px 24px; border-radius:999px; background:#fff; color:var(--c-primary);
    font-weight:700; font-size:14px; flex-shrink:0; transition:all .2s;
  }#mb-portal .shop-banner .sb-btn:hover{ transform:translateY(-2px); box-shadow:0 8px 18px rgba(0,0,0,.2); }#mb-portal .shop-grid{ display:grid; grid-template-columns:repeat(4, 1fr); gap:20px; }#mb-portal .shop-card{
    background:var(--bg-card); border:1px solid var(--bd); border-radius:var(--r-lg);
    overflow:hidden; transition:all .3s ease; display:flex; flex-direction:column;
    cursor:pointer; position:relative;
  }#mb-portal .shop-card:hover{ transform:translateY(-5px); box-shadow:var(--sh-lg); border-color:transparent; }#mb-portal .shop-card .sc-thumb{
    height:150px; position:relative; display:grid; place-items:center;
    font-size:52px; color:#fff;
    background:linear-gradient(135deg, var(--sc-c1, var(--c-primary)), var(--sc-c2, var(--c-mint)));
    transition:font-size .3s ease;
  }#mb-portal .shop-card:hover .sc-thumb{ font-size:58px; }#mb-portal .shop-card .sc-thumb::after{
    content:""; position:absolute; inset:0;
    background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.25), transparent 60%);
  }#mb-portal .shop-card .sc-tag{
    position:absolute; top:12px; left:12px; z-index:2;
    padding:3px 10px; border-radius:6px; font-size:11px; font-weight:700;
    background:#fff; color:var(--c-primary);
  }#mb-portal .shop-card .sc-tag.hot{ background:var(--c-primary); color:#fff; }#mb-portal .shop-card .sc-tag.new{ background:var(--c-mint); color:#fff; }#mb-portal .shop-card .sc-body{ padding:14px 16px 16px; display:flex; flex-direction:column; gap:8px; flex:1; }#mb-portal .shop-card h4{ font-size:14px; line-height:1.4; }#mb-portal .shop-card .sc-desc{ font-size:12px; color:var(--t-3); line-height:1.6; }#mb-portal .shop-card .sc-price{ display:flex; align-items:baseline; gap:6px; margin-top:auto; padding-top:10px; }#mb-portal .shop-card .sc-price .cur{ font-size:13px; color:var(--c-primary); font-weight:700; }#mb-portal .shop-card .sc-price .num{ font-size:22px; color:var(--c-primary); font-weight:800; }#mb-portal .shop-card .sc-price .old{ font-size:12px; color:var(--t-4); text-decoration:line-through; }#mb-portal .shop-card .sc-foot{
    display:flex; align-items:center; justify-content:space-between;
    padding-top:12px; border-top:1px solid var(--bd); font-size:12px; color:var(--t-4);
  }#mb-portal .shop-card .sc-cart{
    padding:5px 12px; border-radius:6px; font-size:12px; font-weight:600;
    background:var(--bg-soft); color:var(--t-2); transition:all .2s ease;
  }#mb-portal .shop-card:hover .sc-cart{ background:var(--c-primary); color:#fff; }@keyframes shopRefresh{
    from{ opacity:0; transform:translateY(14px); }
    to{ opacity:1; transform:none; }
  }

  /* ============== 创客风采 ============== */#mb-portal .show-grid{ display:grid; grid-template-columns:repeat(4, 1fr); gap:18px; }#mb-portal .show-card{
    border-radius:var(--r-lg); overflow:hidden; background:var(--bg-card);
    border:1px solid var(--bd); cursor:pointer; transition:all .3s ease;
    display:flex; flex-direction:column;
  }#mb-portal .show-card:hover{ transform:translateY(-4px); box-shadow:var(--sh-lg); }#mb-portal .show-card .cv{
    height:160px; position:relative;
    background:linear-gradient(135deg, var(--cv-c1, var(--c-primary)), var(--cv-c2, var(--c-mint)));
    display:grid; place-items:center; color:#fff; font-size:46px;
    transition:font-size .3s ease;
  }#mb-portal .show-card:hover .cv{ font-size:54px; }#mb-portal .show-card .cv::after{
    content:""; position:absolute; inset:0;
    background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.25), transparent 60%);
  }#mb-portal .show-card .body{ padding:14px 16px 16px; display:flex; flex-direction:column; gap:8px; }#mb-portal .show-card h4{ font-size:14px; line-height:1.4; }#mb-portal .show-card .au{ display:flex; align-items:center; gap:8px; font-size:12px; color:var(--t-3); }#mb-portal .show-card .au .av-s{
    width:22px; height:22px; border-radius:50%; background:var(--c-primary); color:#fff;
    display:grid; place-items:center; font-size:10px; font-weight:600;
  }#mb-portal .show-card .stats{ display:flex; gap:14px; font-size:12px; color:var(--t-4); padding-top:8px; border-top:1px solid var(--bd); }#mb-portal .show-card .stats .s{ display:flex; align-items:center; gap:4px; }

  /* ============== 页脚 ============== */footer.footer .wrap{ max-width:1200px; margin:0 auto; padding:0 24px; }
  footer.footer{
    background:#0B1220; color:#B5A89B;
    padding:64px 0 32px; margin-top:40px;
  }footer.footer a{ color:#94A3B8; }footer.footer a:hover{ color:#fff; }footer.footer .footer-grid{
    display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr 1fr 1.1fr; gap:40px;
    padding-bottom:40px; border-bottom:1px solid rgba(255,255,255,.08);
  }footer.footer .f-about p{ color:#8A94A6; font-size:13px; line-height:1.8; max-width:280px; }footer.footer h5{ color:#fff; font-size:14px; margin-bottom:16px; }footer.footer ul li{ margin-bottom:10px; font-size:13px; }footer.footer ul li.fd{ display:flex; gap:12px; align-items:baseline; color:#94A3B8; }footer.footer ul li.fd b{ color:#fff; font-weight:600; font-size:13px; }footer.footer ul li.fd b .unit{ font-size:11px; color:#94A3B8; font-weight:400; margin-left:1px;   }footer.footer .footer-bottom{
    display:flex; justify-content:space-between; align-items:center;
    padding-top:24px; font-size:12px; color:#8A94A6; flex-wrap:wrap; gap:12px;
  }footer.footer .footer-navlinks{ padding-top:22px; border-top:1px solid rgba(255,255,255,.08); }
  footer.footer .footer-navlinks .wrap{ text-align:center; }
  footer.footer .fnl-nav{ font-size:12px; color:#8A94A6; line-height:2; }
  footer.footer .fnl-nav a{ color:#8A94A6; text-decoration:none; }
  footer.footer .fnl-nav a:hover{ color:#fff; }
  footer.footer .fnl-nav .pipe{ color:rgba(255,255,255,.18); margin:0 8px; }
  footer.footer .fnl-links{ font-size:12px; color:#8A94A6; margin-top:10px; line-height:2; }
  footer.footer .fnl-links .fnl-list,
  footer.footer .fnl-links .fnl-group{ display:inline; }
  footer.footer .fnl-links li{ display:inline; }
  footer.footer .fnl-links li a{ color:#8A94A6; text-decoration:none; margin:0 6px; }
  footer.footer .fnl-links li a:hover{ color:#fff; }
  }


  /* ============== 工具实演 iframe（内嵌可玩） ============== */
  #mb-portal .v-embed{ display:block; width:100%; height:100%; border:0; background:#fff; border-radius:0 0 14px 14px; }
  #mb-portal .v-body{ position:relative; }
  #mb-portal .v-body:has(> .v-embed){ height:360px; }
  #mb-portal .v-embed-ph{ display:grid; place-items:center; gap:10px; width:100%; min-height:300px;
    background:linear-gradient(135deg,#f4f8ff,#eef3fb); color:#5a6b84; font-size:13.5px; text-align:center; padding:24px; }
  #mb-portal .v-embed-ph .ph-btn{ display:inline-flex; align-items:center; gap:6px; margin-top:4px; padding:8px 18px;
    border-radius:20px; background:var(--c-primary); color:#fff; font-size:13px; font-weight:600; cursor:pointer; border:0; }
  #mb-portal .v-embed-ph .ph-note{ color:#93a1b5; font-size:12px; line-height:1.7; }
  /* ============== 滚动渐入 ============== */#mb-portal .reveal{ opacity:0; transform:translateY(30px); transition:opacity .7s ease, transform .7s ease; }#mb-portal .reveal.shown{ opacity:1; transform:none; }

  /* ============== 移动端菜单 ============== */#mb-portal .mobile-menu{
    position:fixed; top:64px; left:0; right:0; bottom:0; z-index:99;
    background:rgba(240,246,252,.98); backdrop-filter:blur(20px);
    padding:24px; transform:translateX(100%); transition:transform .35s cubic-bezier(.4,0,.2,1);
    overflow-y:auto;
  }#mb-portal .mobile-menu.open{ transform:translateX(0); }#mb-portal .mobile-menu a{
    display:block; padding:14px 0; font-size:17px; color:var(--t-1);
    border-bottom:1px solid var(--bd); font-weight:500;
  }#mb-portal .mobile-menu a:hover{ color:var(--c-primary); }#mb-portal .mobile-menu .mm-actions{ display:flex; gap:12px; margin-top:24px; }#mb-portal .mobile-menu .mm-actions .btn-join{ flex:1; text-align:center; justify-content:center; }

  /* ============== 弹层（登录/注册） ============== */#mb-portal .modal-overlay{
    position:fixed; inset:0; z-index:200;
    background:rgba(16,24,40,.55); backdrop-filter:blur(6px);
    display:flex; align-items:center; justify-content:center; padding:20px;
    opacity:0; visibility:hidden; transition:opacity .25s ease, visibility .25s;
  }#mb-portal .modal-overlay.show{ opacity:1; visibility:visible; }#mb-portal .modal-box{
    width:100%; max-width:420px; background:var(--bg-card);
    border-radius:var(--r-xl); box-shadow:var(--sh-lg);
    overflow:hidden; transform:translateY(20px) scale(.96);
    transition:transform .3s cubic-bezier(.2,.8,.2,1);
  }#mb-portal .modal-overlay.show .modal-box{ transform:none; }#mb-portal .modal-head{
    position:relative; padding:28px 32px 0; text-align:center;
  }#mb-portal .modal-head .logo{
    width:48px; height:48px; border-radius:14px; margin:0 auto 16px;
    background:linear-gradient(135deg, var(--c-primary), var(--c-gold));
    display:grid; place-items:center; color:#fff; font-size:24px; font-weight:800;
    box-shadow:0 8px 20px rgba(30,111,255,.3);
  }#mb-portal .modal-head h3{ font-size:22px; margin-bottom:6px; }#mb-portal .modal-head p{ font-size:13px; color:var(--t-3); }#mb-portal .modal-close{
    position:absolute; top:20px; right:20px; width:32px; height:32px;
    border-radius:8px; display:grid; place-items:center; color:var(--t-3);
    transition:all .2s ease;
  }#mb-portal .modal-close:hover{ background:var(--bg-soft); color:var(--t-1); }#mb-portal .modal-body{ padding:24px 32px 32px; }#mb-portal .field{ margin-bottom:16px; }#mb-portal .field label{ display:block; font-size:13px; font-weight:600; color:var(--t-2); margin-bottom:8px; }#mb-portal .field input{
    width:100%; height:44px; padding:0 14px;
    border:1px solid var(--bd); border-radius:var(--r-md);
    background:var(--bg-page); color:var(--t-1); font-size:14px;
    outline:none; transition:all .25s ease;
  }#mb-portal .field input:focus{ border-color:var(--c-primary); background:#fff; box-shadow:0 0 0 4px rgba(30,111,255,.12); }#mb-portal .field .err{ font-size:12px; color:#E02424; margin-top:6px; display:none; }#mb-portal .field.invalid input{ border-color:#E02424; }#mb-portal .field.invalid .err{ display:block; }#mb-portal .modal-body .btn-submit{
    width:100%; height:46px; border-radius:var(--r-md);
    background:linear-gradient(135deg, var(--c-primary), var(--c-primary-deep)); color:#fff;
    font-size:15px; font-weight:600; margin-top:8px;
    box-shadow:0 8px 20px rgba(30,111,255,.3); transition:all .25s ease;
  }#mb-portal .modal-body .btn-submit:hover{ transform:translateY(-1px); box-shadow:0 12px 26px rgba(30,111,255,.4); }#mb-portal .modal-divider{
    display:flex; align-items:center; gap:14px; margin:20px 0;
    color:var(--t-4); font-size:12px;
  }#mb-portal .modal-divider::before,
#mb-portal .modal-divider::after{
    content:""; flex:1; height:1px; background:var(--bd);
  }#mb-portal .social-row{ display:flex; gap:12px; }#mb-portal .social-row button{
    flex:1; height:44px; border-radius:var(--r-md);
    border:1px solid var(--bd); background:#fff; color:var(--t-2);
    font-size:13px; font-weight:500; display:flex; align-items:center; justify-content:center; gap:8px;
    transition:all .2s ease;
  }#mb-portal .social-row button:hover{ border-color:var(--c-primary); color:var(--c-primary); background:var(--c-primary-soft); }#mb-portal .social-row .wx{ color:#07C160; }#mb-portal .social-row .qq{ color:#12B7F5; }#mb-portal .modal-foot{ text-align:center; font-size:13px; color:var(--t-3); margin-top:18px; }#mb-portal .modal-foot a{ color:var(--c-primary); font-weight:600; }

  /* ============== 工作台占位页 ============== */#mb-portal .workspace{
    display:none; padding-top:64px; min-height:100vh; background:var(--bg-page);
  }#mb-portal .workspace.active{ display:block; }#mb-portal #home-page.active{ display:block; }#mb-portal #home-page{ }#mb-portal .ws-topbar{
    position:sticky; top:64px; z-index:50; height:56px;
    background:#fff; border-bottom:1px solid var(--bd);
    display:flex; align-items:center; gap:16px; padding:0 24px;
  }#mb-portal .ws-back{
    display:inline-flex; align-items:center; gap:6px;
    padding:7px 14px; border-radius:8px; font-size:13px; font-weight:600;
    color:var(--t-2); background:var(--bg-soft); transition:all .2s;
  }#mb-portal .ws-back:hover{ background:var(--c-primary-soft); color:var(--c-primary); }#mb-portal .ws-title{ font-size:15px; font-weight:600; color:var(--t-1); flex:1; }#mb-portal .ws-title .file{ font-family:var(--ff-mono); color:var(--t-3); font-weight:400; margin-left:8px; }#mb-portal .ws-actions{ display:flex; gap:10px; }#mb-portal .ws-btn{
    padding:7px 16px; border-radius:8px; font-size:13px; font-weight:600;
    display:inline-flex; align-items:center; gap:6px; transition:all .2s;
  }#mb-portal .ws-btn-primary{ background:var(--c-primary); color:#fff; }#mb-portal .ws-btn-primary:hover{ background:var(--c-primary-deep); box-shadow:0 6px 14px rgba(30,111,255,.3); }#mb-portal .ws-btn-ghost{ background:var(--bg-soft); color:var(--t-2); }#mb-portal .ws-btn-ghost:hover{ background:var(--bd); }

  /* IDE 在线编程 */#mb-portal .ide-layout{ display:grid; grid-template-columns:220px 1fr; height:calc(100vh - 120px); }#mb-portal .ide-sidebar{
    background:#1E1814; color:#C4B5A8; padding:16px 0; overflow-y:auto;
    border-right:1px solid #2A2218;
  }#mb-portal .ide-sidebar .group{ padding:0 16px 12px; font-size:11px; color:#7A6E62; text-transform:uppercase; letter-spacing:.08em; }#mb-portal .ide-sidebar .file-item{
    display:flex; align-items:center; gap:8px; padding:6px 16px;
    font-size:13px; cursor:pointer; transition:background .2s;
  }#mb-portal .ide-sidebar .file-item:hover{ background:#2A2218; }#mb-portal .ide-sidebar .file-item.active{ background:var(--c-primary); color:#fff; }#mb-portal .ide-sidebar .file-item .fic{ width:14px; opacity:.7; }#mb-portal .ide-main{ display:flex; flex-direction:column; background:#1E1814; }#mb-portal .ide-editor{
    flex:1; display:flex; overflow:auto; font-family:var(--ff-mono); font-size:13px;
  }#mb-portal .ide-lines{
    padding:14px 12px; text-align:right; color:#5A4E42; user-select:none;
    border-right:1px solid #2A2218; line-height:1.7;
  }#mb-portal .ide-code{ padding:14px 18px; color:#E8DFD3; line-height:1.7; flex:1; }#mb-portal .ide-code .kw{ color:#FF8A65; }#mb-portal .ide-code .fn{ color:#FFD27A; }#mb-portal .ide-code .st{ color:#9CCC65; }#mb-portal .ide-code .cm{ color:#5A4E42; font-style:italic; }#mb-portal .ide-code .nm{ color:#80CBC4; }#mb-portal .ide-console{
    height:180px; border-top:1px solid #2A2218; background:#15110E;
    display:flex; flex-direction:column;
  }#mb-portal .ide-console .ch{
    padding:8px 16px; font-size:12px; color:#7A6E62; border-bottom:1px solid #2A2218;
    display:flex; align-items:center; gap:8px;
  }#mb-portal .ide-console .cb{ flex:1; padding:12px 16px; font-family:var(--ff-mono); font-size:12px; color:#9CCC65; line-height:1.8; overflow:auto; }#mb-portal .ide-console .cb .prompt{ color:#FF8A65; }#mb-portal .ide-console .cb .info{ color:#80CBC4; }

  /* 虚拟仿真 */#mb-portal .sim-layout{ display:grid; grid-template-columns:1fr 300px; height:calc(100vh - 120px); }#mb-portal .sim-stage{
    background:linear-gradient(180deg, #2A2A3E 0%, #1A1A2E 100%);
    position:relative; overflow:hidden;
    display:flex; align-items:center; justify-content:center;
  }#mb-portal .sim-grid{
    position:absolute; inset:0;
    background-image:
      linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
    background-size:40px 40px;
    transform:perspective(800px) rotateX(55deg);
    transform-origin:center 70%;
  }#mb-portal .sim-track{
    position:absolute; bottom:20%; left:10%; right:10%; height:6px;
    background:linear-gradient(90deg, var(--c-primary), var(--c-gold), var(--c-mint));
    border-radius:3px; box-shadow:0 0 20px rgba(30,111,255,.4);
  }#mb-portal .sim-robot{
    position:relative; z-index:2; width:80px; height:80px;
    border-radius:12px; background:linear-gradient(135deg, var(--c-primary), var(--c-primary-deep));
    display:grid; place-items:center; color:#fff; font-size:32px;
    box-shadow:0 20px 40px rgba(0,0,0,.4);
    animation:simMove 4s ease-in-out infinite;
  }@keyframes simMove{
    0%,100%{ transform:translateX(-120px); }
    50%{ transform:translateX(120px); }
  }#mb-portal .sim-label{
    position:absolute; top:24px; left:24px; z-index:3;
    padding:6px 14px; border-radius:8px; background:rgba(255,255,255,.1);
    backdrop-filter:blur(10px); color:#fff; font-size:13px; font-weight:600;
  }#mb-portal .sim-panel{
    background:#fff; border-left:1px solid var(--bd); padding:24px;
    overflow-y:auto; display:flex; flex-direction:column; gap:20px;
  }#mb-portal .sim-panel h4{ font-size:14px; margin-bottom:4px; }#mb-portal .sim-panel .ctrl{ display:flex; flex-direction:column; gap:8px; }#mb-portal .sim-panel .ctrl .row{ display:flex; justify-content:space-between; font-size:13px; color:var(--t-3); }#mb-portal .sim-panel .ctrl .row b{ color:var(--t-1); }#mb-portal .sim-panel input[type=range]{
    width:100%; height:6px; -webkit-appearance:none; appearance:none;
    background:var(--bg-soft); border-radius:3px; outline:none;
  }#mb-portal .sim-panel input[type=range]::-webkit-slider-thumb{
    -webkit-appearance:none; width:16px; height:16px; border-radius:50%;
    background:var(--c-primary); cursor:pointer; box-shadow:0 2px 6px rgba(30,111,255,.4);
  }#mb-portal .sim-panel .toggle{
    display:flex; align-items:center; justify-content:space-between;
    padding:10px 14px; border-radius:8px; background:var(--bg-soft); font-size:13px;
  }#mb-portal .sim-panel .toggle .sw{
    width:36px; height:20px; border-radius:10px; background:var(--bd-strong);
    position:relative; transition:background .2s; cursor:pointer;
  }#mb-portal .sim-panel .toggle .sw::after{
    content:""; position:absolute; top:2px; left:2px; width:16px; height:16px;
    border-radius:50%; background:#fff; transition:transform .2s;
  }#mb-portal .sim-panel .toggle.on .sw{ background:var(--c-mint); }#mb-portal .sim-panel .toggle.on .sw::after{ transform:translateX(16px); }

  /* 三维设计 */#mb-portal .design-layout{ display:grid; grid-template-columns:64px 1fr 280px; height:calc(100vh - 120px); }#mb-portal .design-tools{
    background:#1E1814; border-right:1px solid #2A2218;
    display:flex; flex-direction:column; align-items:center; gap:6px; padding:16px 0;
  }#mb-portal .design-tools .tool{
    width:40px; height:40px; border-radius:10px; display:grid; place-items:center;
    color:#9A8E82; cursor:pointer; transition:all .2s;
  }#mb-portal .design-tools .tool:hover{ background:#2A2218; color:#fff; }#mb-portal .design-tools .tool.active{ background:var(--c-primary); color:#fff; }#mb-portal .design-canvas{
    background:linear-gradient(180deg, #3A3530 0%, #2A2520 100%);
    position:relative; overflow:hidden;
    display:flex; align-items:center; justify-content:center;
  }#mb-portal .design-grid{
    position:absolute; inset:0;
    background-image:
      linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
    background-size:30px 30px;
  }#mb-portal .design-model{
    position:relative; z-index:2; width:160px; height:120px;
    background:linear-gradient(135deg, var(--c-purple), var(--c-pink));
    border-radius:12px; transform:rotate(-15deg) perspective(600px) rotateX(25deg);
    box-shadow:0 30px 60px rgba(124,92,252,.4);
    display:grid; place-items:center; color:#fff; font-size:36px;
  }#mb-portal .design-axes{
    position:absolute; bottom:30px; left:30px; z-index:3;
    display:flex; flex-direction:column; gap:4px; font-family:var(--ff-mono); font-size:11px;
  }#mb-portal .design-axes .ax{ display:flex; align-items:center; gap:6px; }#mb-portal .design-axes .ax .ln{ width:30px; height:2px; }#mb-portal .design-axes .ax.x .ln{ background:#1E6FFF; }#mb-portal .design-axes .ax.y .ln{ background:#00B386; }#mb-portal .design-axes .ax.z .ln{ background:#7C5CFC; }#mb-portal .design-axes .ax span{ color:rgba(255,255,255,.7); }#mb-portal .design-props{
    background:#fff; border-left:1px solid var(--bd); padding:24px;
    overflow-y:auto; display:flex; flex-direction:column; gap:18px;
  }#mb-portal .design-props h4{ font-size:14px; }#mb-portal .design-props .pg{ display:flex; flex-direction:column; gap:8px; }#mb-portal .design-props .pg .label{ font-size:12px; color:var(--t-3); font-weight:600; }#mb-portal .design-props .pg .dims{ display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; }#mb-portal .design-props .pg .dims .d{ display:flex; flex-direction:column; gap:4px; }#mb-portal .design-props .pg .dims .d span{ font-size:11px; color:var(--t-4); text-align:center; }#mb-portal .design-props .pg .dims .d input{
    width:100%; height:32px; padding:0 8px; text-align:center;
    border:1px solid var(--bd); border-radius:6px; font-size:12px; font-family:var(--ff-mono);
    outline:none;
  }#mb-portal .design-props .pg .dims .d input:focus{ border-color:var(--c-primary); }#mb-portal .design-props .mat-grid{ display:grid; grid-template-columns:repeat(4, 1fr); gap:8px; }#mb-portal .design-props .mat-grid .mat{
    aspect-ratio:1; border-radius:8px; cursor:pointer; border:2px solid transparent;
    transition:all .2s;
  }#mb-portal .design-props .mat-grid .mat:hover{ transform:scale(1.08); }#mb-portal .design-props .mat-grid .mat.active{ border-color:var(--c-primary); box-shadow:0 0 0 3px rgba(30,111,255,.2); }

  /* 3D 打印 */#mb-portal .print-layout{ display:grid; grid-template-columns:240px 1fr 300px; height:calc(100vh - 120px); }#mb-portal .print-queue{
    background:#fff; border-right:1px solid var(--bd); padding:20px; overflow-y:auto;
  }#mb-portal .print-queue h4{ font-size:14px; margin-bottom:14px; }#mb-portal .print-queue .q-item{
    display:flex; gap:10px; padding:12px; border-radius:var(--r-md);
    border:1px solid var(--bd); margin-bottom:10px; cursor:pointer; transition:all .2s;
  }#mb-portal .print-queue .q-item:hover{ border-color:var(--c-primary); background:var(--c-primary-soft); }#mb-portal .print-queue .q-item.active{ border-color:var(--c-primary); background:var(--c-primary-soft); }#mb-portal .print-queue .q-item .qi-thumb{
    width:44px; height:44px; border-radius:8px; flex-shrink:0;
    display:grid; place-items:center; color:#fff; font-size:20px;
  }#mb-portal .print-queue .q-item .qi-info{ flex:1; min-width:0; }#mb-portal .print-queue .q-item .qi-info h5{ font-size:13px; line-height:1.3; margin-bottom:4px; }#mb-portal .print-queue .q-item .qi-info .qi-meta{ font-size:11px; color:var(--t-4); }#mb-portal .print-preview{
    background:linear-gradient(180deg, #2A2A3E 0%, #1A1A2E 100%);
    position:relative; overflow:hidden;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
  }#mb-portal .print-preview .pv-grid{
    position:absolute; inset:0;
    background-image:
      linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
    background-size:40px 40px;
  }#mb-portal .print-model{
    position:relative; z-index:2; width:180px; height:140px;
    background:linear-gradient(135deg, var(--c-gold), var(--c-primary));
    border-radius:12px; transform:perspective(600px) rotateX(20deg) rotateY(-15deg);
    box-shadow:0 30px 60px rgba(6,182,212,.3);
    display:grid; place-items:center; color:#fff; font-size:40px;
  }#mb-portal .print-layers{
    position:absolute; right:24px; top:24px; z-index:3;
    padding:12px 16px; border-radius:10px; background:rgba(255,255,255,.1);
    backdrop-filter:blur(10px); color:#fff; font-size:12px;
  }#mb-portal .print-layers b{ font-size:20px; display:block; }#mb-portal .print-params{
    background:#fff; border-left:1px solid var(--bd); padding:24px; overflow-y:auto;
    display:flex; flex-direction:column; gap:18px;
  }#mb-portal .print-params h4{ font-size:14px; }#mb-portal .print-params .pg{ display:flex; flex-direction:column; gap:8px; }#mb-portal .print-params .pg .row{ display:flex; justify-content:space-between; align-items:center; font-size:13px; }#mb-portal .print-params .pg .row .v{ font-family:var(--ff-mono); color:var(--c-primary); font-weight:600; }#mb-portal .print-params input[type=range]{
    width:100%; height:6px; -webkit-appearance:none; appearance:none;
    background:var(--bg-soft); border-radius:3px; outline:none;
  }#mb-portal .print-params input[type=range]::-webkit-slider-thumb{
    -webkit-appearance:none; width:16px; height:16px; border-radius:50%;
    background:var(--c-gold); cursor:pointer; box-shadow:0 2px 6px rgba(6,182,212,.4);
  }#mb-portal .print-params .est{
    margin-top:8px; padding:14px; border-radius:var(--r-md); background:var(--c-mint-soft);
    display:flex; justify-content:space-between; align-items:center;
  }#mb-portal .print-params .est .lab{ font-size:12px; color:var(--t-3); }#mb-portal .print-params .est .val{ font-size:18px; font-weight:800; color:var(--c-mint); }

  /* ============== 响应式 ============== */@media (max-width: 1024px){#mb-portal .hero-slider{ height:400px; }#mb-portal .slide .wrap{ grid-template-columns:1fr; gap:24px; }#mb-portal .slide-visual{ display:none; }#mb-portal .info-bar{ grid-template-columns:1fr; gap:12px; }#mb-portal .ticker-divider{ width:auto; height:1px; }#mb-portal .news-pins{ padding-right:0; }#mb-portal .shop-grid{ grid-template-columns:repeat(2, 1fr); }#mb-portal .articles-layout{ grid-template-columns:1fr; }#mb-portal .forum-layout{ grid-template-columns:1fr; }#mb-portal .tools-panel{ grid-template-columns:1fr; }#mb-portal .tool-tabs{ flex-direction:row; overflow-x:auto; padding:10px; }#mb-portal .tool-tab{ min-width:210px; flex-shrink:0; }#mb-portal .tool-detail{ padding:24px 20px; }#mb-portal .td-grid{ grid-template-columns:1fr; gap:24px; }#mb-portal .td-exp-grid{ grid-template-columns:repeat(3, 1fr); gap:10px; }#mb-portal .td-exp-item .thumb{ height:72px; font-size:28px; }#mb-portal .show-grid{ grid-template-columns:repeat(2, 1fr); }#mb-portal .events-row{ grid-template-columns:1fr; }footer.footer .footer-grid{ grid-template-columns:1fr 1fr; gap:32px; }#mb-portal .ide-layout{ grid-template-columns:1fr; height:auto; }#mb-portal .ide-sidebar{ display:none; }#mb-portal .sim-layout,
#mb-portal .print-layout{ grid-template-columns:1fr; height:auto; }#mb-portal .sim-panel,
#mb-portal .print-params,
#mb-portal .print-queue{ border:none; border-top:1px solid var(--bd); }#mb-portal .design-layout{ grid-template-columns:64px 1fr; height:auto; }#mb-portal .design-props{ border:none; border-top:1px solid var(--bd); }
  }@media (max-width: 768px){#mb-portal{ --section-y: var(--section-y-m); --gutter:18px; }#mb-portal .nav,
#mb-portal .nav-right{ display:none; }#mb-portal .menu-toggle{ display:flex; }#mb-portal .hero-slider{ height:360px; margin-top:0; }#mb-portal .slide-text h1,
#mb-portal .slide-text h2{ font-size:28px; }#mb-portal .slide-text p{ font-size:14px; margin-bottom:20px; }#mb-portal .slide-cta .btn-solid,
#mb-portal .slide-cta .btn-line{ padding:11px 20px; font-size:14px; }#mb-portal .sl-arrow{ width:36px; height:36px; }#mb-portal .sl-arrow.prev{ left:10px; }#mb-portal .sl-arrow.next{ right:10px; }#mb-portal .info-bar{ padding:14px 0; }#mb-portal .news-pin{ font-size:13px; }#mb-portal .ticker-viewport{ height:48px; }#mb-portal .ticker-item{ height:24px; font-size:12px; }#mb-portal .shop-banner{ flex-direction:column; align-items:flex-start; gap:14px; padding:18px 20px; }#mb-portal .shop-grid{ grid-template-columns:repeat(2, 1fr); gap:12px; }#mb-portal .shop-card .sc-thumb{ height:110px; font-size:40px; }#mb-portal .shop-card .sc-body{ padding:12px 13px 14px; }#mb-portal .mod-head .ttl h2{ font-size:24px; }#mb-portal .mod-head{ flex-direction:column; align-items:flex-start; }#mb-portal .proj-grid{ grid-template-columns:1fr; }#mb-portal .forum-row,
#mb-portal .forum-list-head{ grid-template-columns:40px 1fr; gap:12px; padding:14px 16px; }#mb-portal .forum-row .col,
#mb-portal .forum-row .last,
#mb-portal .forum-list-head span:not(:first-child):not(:nth-child(2)){ display:none; }footer.footer .footer-grid{ grid-template-columns:1fr; gap:28px; }#mb-portal .design-layout{ grid-template-columns:1fr; }#mb-portal .design-tools{ flex-direction:row; width:100%; padding:8px; overflow-x:auto; }
  }


/* ============== 门户模板（Discuz 版）新增规则 ============== */
#mb-portal .stats{ display:flex; align-items:center; justify-content:space-between; gap:24px; padding:18px 0; flex-wrap:wrap; }
#mb-portal .stats .s{ display:flex; flex-direction:column; gap:2px; }
#mb-portal .stats .s b{ font-size:22px; color:var(--t-1); font-weight:800; }
#mb-portal .stats .s span{ font-size:12px; color:var(--t-3); }
#mb-portal .e-meta{ display:flex; align-items:center; justify-content:space-between; font-size:12px; color:var(--t-4); padding-top:10px; margin-top:12px; border-top:1px solid var(--bd); }
#mb-portal .tip{ font-size:13px; color:var(--t-3); line-height:1.7; margin:0 0 12px; }
#mb-portal .forum-row img.av{ width:100%; height:100%; object-fit:cover; border-radius:inherit; display:block; }
#mb-portal .art-feat .cover, #mb-portal .show-card .cv{ background-size:cover; background-position:center; }
#mb-portal .slide .badge{ margin-bottom:18px; }
@media (max-width: 768px){ #mb-portal .stats{ gap:14px 24px; padding:14px 0; } #mb-portal .stats .s b{ font-size:18px; } }

/* ==================== X5.0 新增：视频板块 / 微信小店商城 / 微信引导层 ==================== */

/* 通用来源切换 Tab（视频板块用） */
#mb-portal .mb-tabs{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:18px; }
#mb-portal .mb-tab{
  padding:7px 16px; border-radius:999px; font-size:13px; font-weight:600;
  color:var(--t-2); background:var(--bg-soft); border:1px solid transparent;
  cursor:pointer; transition:all .2s ease;
}
#mb-portal .mb-tab:hover{ color:var(--c-primary); background:var(--c-primary-soft); }
#mb-portal .mb-tab.on{ background:var(--c-primary); color:#fff; }

/* 视频网格 */
#mb-portal .video-grid{ display:grid; grid-template-columns:repeat(4, 1fr); gap:20px; }
#mb-portal .video-card{
  display:flex; flex-direction:column; background:var(--bg-card);
  border:1px solid var(--bd); border-radius:14px; overflow:hidden;
  text-decoration:none; color:inherit;
  transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s ease, border-color .3s ease;
}
#mb-portal .video-card:hover{ transform:translateY(-5px); box-shadow:var(--sh-lg); border-color:transparent; }
#mb-portal .vc-cover{
  position:relative; height:0; padding-top:56.25%; overflow:hidden;
  background-color:var(--bg-soft);
  background-image:linear-gradient(135deg, var(--c-primary), var(--c-purple));
  background-size:cover; background-position:center;
}
#mb-portal .vc-cover .vc-inner{ position:absolute; top:0; right:0; bottom:0; left:0; display:flex; align-items:center; justify-content:center; }
#mb-portal .vc-play{
  width:48px; height:48px; border-radius:50%; background:rgba(255,255,255,.92);
  display:flex; align-items:center; justify-content:center; color:var(--c-primary);
  box-shadow:0 6px 16px rgba(16,24,40,.18); transition:transform .3s ease;
}
#mb-portal .vc-play svg{ width:20px; height:20px; }
#mb-portal .video-card:hover .vc-play{ transform:scale(1.12); }
#mb-portal .vc-src{
  position:absolute; top:8px; left:8px; padding:2px 8px; border-radius:6px;
  background:rgba(255,255,255,.94); color:var(--c-primary); font-size:11px; font-weight:700;
}
#mb-portal .vc-src.ch{ color:var(--c-gold); }
#mb-portal .vc-dur{
  position:absolute; right:8px; bottom:8px; padding:2px 6px; border-radius:4px;
  background:rgba(16,24,40,.55); color:#fff; font-size:11px;
}
#mb-portal .vc-body{ padding:12px 14px 14px; display:flex; flex-direction:column; gap:6px; }
#mb-portal .vc-body h4{ font-size:14px; line-height:1.45; font-weight:600; }
#mb-portal .vc-body p{ font-size:12px; color:var(--t-3); line-height:1.6; }
#mb-portal .vc-video{ width:100%; height:auto; display:block; background:#101828; max-height:200px; }
#mb-portal .vc-empty{
  padding:28px 24px; border-radius:14px; background:var(--bg-soft);
  font-size:13px; color:var(--t-3); line-height:1.8;
}
#mb-portal .vc-empty b{ color:var(--c-primary); font-weight:700; }

/* 微信小店商城 */
#mb-portal .shop-banner{
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:18px 24px; border-radius:14px; margin-bottom:20px;
  background:linear-gradient(120deg, var(--c-primary), var(--c-purple)); color:#fff;
}
#mb-portal .shop-banner .sb-l{ display:flex; flex-direction:column; gap:4px; }
#mb-portal .shop-banner .sb-l b{ font-size:18px; }
#mb-portal .shop-banner .sb-l span{ font-size:13px; opacity:.92; }
#mb-portal .shop-banner .sb-r{ display:flex; align-items:center; gap:10px; }
#mb-portal .shop-banner .sb-btn{
  padding:9px 20px; border-radius:10px; background:#fff; color:var(--c-primary);
  font-size:13px; font-weight:700; text-decoration:none; transition:all .25s ease;
}
#mb-portal .shop-banner .sb-btn:hover{ transform:translateY(-2px); box-shadow:0 8px 18px rgba(16,24,40,.2); }
#mb-portal .shop-card{
  display:flex; flex-direction:column; background:var(--bg-card);
  border:1px solid var(--bd); border-radius:14px; overflow:hidden;
  text-decoration:none; color:inherit;
  transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s ease, border-color .3s ease;
}
#mb-portal .shop-card:hover{ transform:translateY(-5px); box-shadow:var(--sh-lg); border-color:transparent; }
#mb-portal .shop-card .sc-thumb{
  position:relative; height:132px; display:flex; align-items:center; justify-content:center;
  background-color:var(--bg-soft); background-size:cover; background-position:center;
}
#mb-portal .shop-card .sc-ph{ width:44px; height:44px; color:var(--t-4); }
#mb-portal .shop-card .sc-ph svg{ width:100%; height:100%; }
#mb-portal .shop-card .sc-tag{
  position:absolute; top:10px; left:10px; padding:2px 8px; border-radius:6px;
  font-size:11px; font-weight:700; background:var(--c-primary); color:#fff;
}
#mb-portal .shop-card h4{ font-size:14px; line-height:1.45; font-weight:600; }
#mb-portal .shop-card .sc-cart{
  margin-top:4px; padding:8px 0; border-radius:8px; text-align:center;
  font-size:13px; font-weight:600; background:var(--bg-soft); color:var(--t-2);
  transition:all .25s ease;
}
#mb-portal .shop-card:hover .sc-cart{ background:var(--c-primary); color:#fff; }

/* 资讯来源标签：公众号 */
#mb-portal .news-pin .ntag.nt-wx, #mb-portal .ticker-item .ntag.nt-wx{ background:var(--c-mint-soft); color:var(--c-mint); }

/* X5.0 统一头像调用（class="_avt" data-uid）在论坛行内的尺寸 */
#mb-portal .forum-row img._avt{ width:40px; height:40px; border-radius:10px; display:block; }
/* ============== 论坛列表：头像徽标（替代黑块） ============== */
#mb-portal .forum-row .ft-av{
  position:relative; flex:0 0 40px; width:40px; height:40px; border-radius:10px;
  display:flex; align-items:center; justify-content:center;
  font-size:17px; font-weight:700; color:#fff; line-height:1; overflow:hidden;
  background:var(--c-primary); user-select:none;
}
#mb-portal .forum-row .ft-av img._avt{ position:absolute; inset:0; width:40px; height:40px; border-radius:10px; display:none; object-fit:cover; }
#mb-portal .forum-row .ft-av.has-img img._avt{ display:block; }
#mb-portal .forum-row .ft-av.av-c0{ background:linear-gradient(135deg,#3B82F6,#2563EB); }
#mb-portal .forum-row .ft-av.av-c1{ background:linear-gradient(135deg,#10B981,#059669); }
#mb-portal .forum-row .ft-av.av-c2{ background:linear-gradient(135deg,#F59E0B,#D97706); }
#mb-portal .forum-row .ft-av.av-c3{ background:linear-gradient(135deg,#EF4444,#DC2626); }
#mb-portal .forum-row .ft-av.av-c4{ background:linear-gradient(135deg,#8B5CF6,#7C3AED); }
#mb-portal .forum-row .ft-av.av-c5{ background:linear-gradient(135deg,#06B6D4,#0891B2); }


/* 微信引导层（视频号在微信外打开时提示） */
#mb-portal .mb-modal{
  position:fixed; top:0; right:0; bottom:0; left:0; z-index:99999;
  display:flex; align-items:center; justify-content:center; padding:20px;
  background:rgba(16,24,40,.55);
}
#mb-portal .mb-modal .mb-box{
  background:#fff; border-radius:16px; padding:24px 22px; max-width:320px;
  text-align:center; box-shadow:0 24px 60px rgba(16,24,40,.3);
}
#mb-portal .mb-modal .mb-box h5{ font-size:16px; margin-bottom:8px; }
#mb-portal .mb-modal .mb-box p{ font-size:13px; color:var(--t-3); line-height:1.7; }
#mb-portal .mb-modal .mb-box img{ width:180px; height:180px; margin:14px auto 4px; display:block; }
#mb-portal .mb-modal .mb-close{
  margin-top:14px; padding:9px 22px; border-radius:10px; border:none;
  background:var(--c-primary); color:#fff; font-size:13px; font-weight:700; cursor:pointer;
}

/* 响应式补充 */
@media (max-width: 1024px){
  #mb-portal .video-grid{ grid-template-columns:repeat(2, 1fr); }
  #mb-portal .shop-banner{ flex-direction:column; align-items:flex-start; gap:14px; padding:18px 20px; }
}
@media (max-width: 600px){
  #mb-portal .video-grid{ grid-template-columns:1fr; gap:14px; }
  #mb-portal .vc-video{ max-height:none; }
}

/* ============== 开箱兜底补丁：工具面板插图容器 / 入门体验 / 定制页脚 ============== */
#mb-portal .td-info{ min-width:0; }
#mb-portal .td-exp-item .thumb{
  display:grid; place-items:center; color:#fff; font-weight:800;
  font-size:15px; letter-spacing:.04em;
}
footer.footer .f-about p{ color:#94A3B8; font-size:13px; line-height:1.8; margin-top:14px; max-width:280px; text-wrap:pretty; }
footer.footer ul li{ margin-bottom:10px; font-size:13px; }
footer.footer ul li a{ color:#94A3B8; transition:color .2s; }
footer.footer ul li a:hover{ color:#fff; }
footer.footer .footer-bottom .wrap{
  display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap;
  font-size:12px; color:#6B7688; padding:18px 0;
}
@media (max-width: 1024px){
  footer.footer .footer-grid{ grid-template-columns:1fr 1fr; gap:32px; }
}
@media (max-width: 768px){
  footer.footer .footer-grid{ grid-template-columns:1fr; gap:28px; }
  #mb-portal .td-exp-item .thumb{ font-size:13px; }
}

/* ===== 对齐效果图补充 2026-10-06 ===== */
#mb-portal .e-cover.ev-g1{ background:linear-gradient(135deg, #7C5CFC 0%, #5B8CFF 100%); }
#mb-portal .e-cover.ev-g2{ background:linear-gradient(135deg, #1E6FFF 0%, #06B6D4 100%); }
#mb-portal .e-cover.ev-g3{ background:linear-gradient(135deg, #00B386 0%, #1B9ED0 100%); }
#mb-portal .slide-card{ justify-self:center; width:230px; padding:30px 22px; background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.4); border-radius:18px; text-align:center; color:#fff; backdrop-filter:blur(8px); box-shadow:0 20px 50px rgba(9,30,80,.25); }
#mb-portal .slide-card .sc-ico{ font-size:46px; line-height:1; display:block; margin-bottom:12px; }
#mb-portal .slide-card b{ font-size:19px; display:block; margin-bottom:8px; }
#mb-portal .slide-card .sc-sub{ font-size:12px; opacity:.9; display:inline-block; padding:4px 12px; background:rgba(255,255,255,.2); border-radius:999px; }
@media (max-width:768px){ #mb-portal .slide-card{ display:none; } }
#mb-portal .art-item .a-date{ flex-shrink:0; font-size:12px; color:var(--t-4); font-family:var(--ff-mono); padding-top:3px; }
#mb-portal .art-item .a-title{ flex:1; min-width:0; font-size:14px; line-height:1.55; color:var(--t-1); }
#mb-portal .art-item .a-views{ flex-shrink:0; align-self:center; font-size:12px; font-weight:600; color:var(--c-primary); background:var(--c-primary-soft); padding:3px 10px; border-radius:999px; white-space:nowrap; }

/* ============================================================
   创客帮门户 · 对齐设计稿 合并补丁 v3（2026-10-06）
   三大块：① 通栏全幅  ② 页脚6列v2  ③ 导航右侧 / 活动三态
   用法：整段追加到 template/makerband/common/makerband.css 末尾，
        并把 index.htm 里 makerband.css 的版本号改为 ?v=20261007
   全部已对线上真实页面注入实测通过（无 JS 错误、无横向滚动条）
   ============================================================ */

/* ===================== ① 通栏（hero）全幅 ===================== */
/* ============================================================
   创客帮门户 · 通栏(hero) 全幅对齐设计稿
   设计稿实测：通栏 满幅100vw、紧贴导航(上间距0)、内容仍1200居中、
               左右箭头贴屏边、指示点居中、通栏下方约96px白条(线上已有)
   线上现状：1200px 内嵌卡片 + margin-top:64px
   用法：追加到 template/makerband/common/makerband.css 末尾
   ============================================================ */

/* 1) 通栏冲出 1200 容器 → 满幅；上边距归零（紧贴导航）
      margin-left/right: calc(50% - 50vw) 是标准“破框”写法，
      不影响 .wrap(max-width:1200;margin:auto) → 内容依旧居中 */
@media (min-width: 1201px){
  body.dz_pg_index .hero-slider,
  .hero-slider{
    width: 100vw !important;
    max-width: none !important;
    margin-top: 0 !important;
    margin-left: calc(50% - 50vw) !important;
    margin-right: calc(50% - 50vw) !important;
  }
  .hero-slider .slides,
  .hero-slider .slide,
  .hero-slider .s-bg{
    width: 100% !important;
  }
  /* 2) 右箭头改为贴右边（原来 left:1130px 是按 1200 宽算的） */
  .hero-slider .sl-arrow.next{ left: auto !important; right: 24px !important; }
  .hero-slider .sl-arrow.prev{ left: 24px !important; }
  /* 3) 指示点居中（原来 left:600px 是按 1200 宽算的） */
  .hero-slider .sl-dots{ left: 50% !important; transform: translateX(-50%) !important; }
}

/* 4) 满幅用 100vw 会因滚动条多出几像素，clip 掉横向溢出（不影响 sticky/定位） */
html{ overflow-x: clip; }

/* 手机/平板：保持原样（内嵌卡片即设计意图），不参与上述改造 */
@media (max-width: 1200px){
  .hero-slider{ width: auto !important; max-width: none !important; }
}


/* ===================== ② 页脚 v2（6列） ===================== */
/* ============================================================
   创客帮门户 · 页脚 v2 追加样式
   用法：追加到 template/makerband/common/makerband.css 文件末尾，
   并把文件链接的 ?v=20261005 改成 ?v=20261006 以刷新浏览器缓存。
   ============================================================ */

/* 1) 隐藏 Discuz 默认页脚（“建站系统 | 站名”行 + Powered/ICP 行）
      —— 建站系统已移入“创客工具”列，备案号已移入版权条右侧。
      注意：仅隐藏外观，DOM 与脚本输出不受影响，升级安全。 */
#mb-portal ~ .dz_footc,
.dz_footc{ display:none !important; }

/* 2) 版权条：桌面端左右两端对齐（左版权、右备案号），对齐设计稿 */
footer.footer .footer-bottom a{ color:#8A94A6; text-decoration:none; }
footer.footer .footer-bottom a:hover{ color:#fff; }
@media (min-width:1101px){
  footer.footer .footer-bottom .wrap{
    display:flex !important;
    width:100% !important;      /* 线上旧规则 width:fit-content 会把条收窄，撑满 */
    max-width:1200px !important;
    justify-content:space-between;
    align-items:center;
    flex-wrap:wrap;
    gap:8px;
  }
}

/* 3) 社区数据列：数字高亮（对齐设计稿的亮色数字） */
footer.footer ul li.fd b{ color:#E8F1FF; }
footer.footer ul li.fd span{ min-width:4.5em; }

/* 4) 平板断点：6 列 → 3 列，避免挤压 */
@media (max-width:1100px) and (min-width:769px){
  footer.footer .footer-grid{ grid-template-columns:repeat(3,1fr); gap:32px; }
}
/* 5) 桌面端：确保 6 列（线上 CSS 末尾有一条 5 列旧规则会覆盖 6 列定义，
      此处最后声明一次以赢下优先级） */
@media (min-width:1101px){
  footer.footer .footer-grid{
    display:grid !important;
    grid-template-columns:1.3fr 1fr 1fr 1fr 1fr 1.1fr !important;
    gap:40px;
  }
}
/* 手机断点：单列（原样式已有 1fr，此处仅确保覆盖） */
@media (max-width:768px){
  footer.footer .footer-grid{ grid-template-columns:1fr 1fr !important; gap:24px; }
  #mb-portal .f-about{ grid-column:1 / -1; }
}


/* ===================== ③ 导航右侧 / 活动卡片三态 ===================== */
/* ===================================================================
   创客帮 MakerBand · 门户对齐设计稿 补丁 v2（追加到 makerband.css 末尾）
   内容：① 导航右侧（搜索框+登录+免费注册）② Hero 第2张右侧卡片标签
        ③ 活动卡片状态徽章三态 ④ 活动卡片倒计时格 / 已结束按钮
   =================================================================== */

/* ---------- ① 导航右侧 ---------- */
.dz_btm_layer.dz_nav{ flex-wrap:nowrap; }
.dz_btm_layer.dz_nav .dz_layer_dl .header-right{
  display:flex; align-items:center; gap:8px; flex-shrink:0;
}
/* 搜索框（由追加脚本注入） */
.mb-nav-search{
  display:flex; align-items:center; gap:6px;
  width:150px; height:32px; padding:0 12px;
  background:#f2f5f9; border:1px solid #e3e9f2; border-radius:16px;
  transition:border-color .2s, background .2s;
}
.mb-nav-search:focus-within{ border-color:#8fb4f5; background:#fff; }
.mb-nav-search svg{ width:15px; height:15px; color:#9aa7b8; flex:none; }
.mb-nav-search input{
  flex:1; min-width:0; border:0; outline:0; background:transparent;
  font-size:13px; color:#3a4a63;
}
.mb-nav-search input::placeholder{ color:#a7b3c4; }
/* 登录改为白底描边（对齐设计稿）；蓝底在容器 .login_btn 上，必须一并改白，否则蓝底蓝字 */
.dz_btm_layer.dz_nav .login_btn{
  background:#fff !important; border:1.5px solid #c9d9f6 !important;
  box-shadow:none !important; padding:0 !important; overflow:hidden;
}
.dz_btm_layer.dz_nav .login_btn a{
  display:inline-flex; align-items:center; height:31px; padding:0 15px;
  background:transparent !important; color:#2f6fe4 !important;
  border:0 !important; box-shadow:none !important; font-size:14px;
}
.dz_btm_layer.dz_nav .login_btn:hover{ border-color:#2f6fe4 !important; background:#f5f9ff !important; }
.dz_btm_layer.dz_nav .login_btn a:hover{ color:#1d5fd8 !important; background:transparent !important; }
/* 免费注册（由追加脚本注入） */
.mb-reg-btn{
  display:inline-flex; align-items:center; height:32px; padding:0 16px;
  border-radius:16px; background:linear-gradient(135deg,#2f8bff,#2456f0);
  color:#fff !important; font-size:13.5px; font-weight:600;
  box-shadow:0 6px 16px rgba(36,86,240,.35); text-decoration:none;
  transition:transform .15s, box-shadow .15s;
}
.mb-reg-btn:hover{ transform:translateY(-1px); box-shadow:0 9px 20px rgba(36,86,240,.4); color:#fff !important; }
@media (max-width:1200px){ .mb-nav-search{ width:120px; } }
@media (max-width:1000px){ .mb-nav-search{ display:none; } }

/* ---------- ② Hero 第2张：右侧“创客培养工作台”卡片 ---------- */
#mb-portal .slide-card.sc-tools{ background:rgba(255,255,255,.22); }
#mb-portal .sc-tools b{ display:block; font-size:17px; margin:10px 0 6px; letter-spacing:.5px; }
#mb-portal .sc-tools .sc-sub{ display:block; font-size:12px; opacity:.92; line-height:1.6; }
#mb-portal .sc-tools .sc-tags{ display:flex; flex-wrap:wrap; gap:6px; justify-content:center; margin-top:12px; }
#mb-portal .sc-tools .sc-tags i{
  font-style:normal; font-size:11.5px; padding:4px 10px;
  border:1px solid rgba(255,255,255,.65); border-radius:12px;
  background:rgba(255,255,255,.14); white-space:nowrap;
}

/* ---------- ③ 活动卡片状态徽章三态 ---------- */
#mb-portal .event-card .e-cover .status.st-open{ background:#22c074; }
#mb-portal .event-card .e-cover .status.st-soon{ background:#f5a623; }
#mb-portal .event-card .e-cover .status.st-end{ background:rgba(255,255,255,.28); color:rgba(255,255,255,.85); }

/* ---------- ④ 活动卡片倒计时 / 已结束按钮 ---------- */
#mb-portal .event-card .e-count{
  display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin:10px 0 12px;
}
#mb-portal .event-card .e-count b{
  background:#f4f7fb; border:1px solid #e8eef6; border-radius:8px;
  padding:7px 0 3px; text-align:center; font-size:18px; color:#2456f0;
  font-variant-numeric:tabular-nums; line-height:1.1;
}
#mb-portal .event-card .e-count i{
  font-style:normal; display:block; text-align:center;
  font-size:10.5px; color:#98a5b8; margin-top:2px;
}
#mb-portal .event-card .e-end-btn{
  display:block; text-align:center; padding:10px 0; margin:10px 0 12px;
  background:#eef1f6; border-radius:8px; color:#8b97a9; font-size:13.5px; font-weight:600;
  text-decoration:none; transition:background .2s;
}
#mb-portal .event-card .e-end-btn:hover{ background:#e6eaf1; color:#6d7a8e; }
/* 有倒计时/结束按钮时隐藏原“回复/浏览”行 */
#mb-portal .event-card.has-count .e-meta,
#mb-portal .event-card.has-end .e-meta{ display:none; }

/* 登录按钮原 margin-right:24px 收紧 */
.dz_btm_layer.dz_nav .header-user-login .login_btn{ margin-right:0; }


/* ===== 修复：放开 #mb-portal 横向裁剪，让 hero 全幅生效（html 已有 overflow-x:hidden 兜底） ===== */
#mb-portal{ overflow-x: visible !important; }

/* ===== 页脚版权条居中（2026-10-06 用户要求） ===== */
footer.footer .footer-bottom .wrap{
  justify-content:center !important;
  text-align:center;
  flex-direction:column;
  gap:6px;
}
footer.footer-bottom .wrap span{ width:100%; }
#mb-portal .shop-card .sc-price .up{ font-size:12px; color:var(--t-3); margin-left:-2px; }

/* ======================================================================
   创客帮门户 · 社区论坛右侧栏适配补丁 v1 (2026-10-06)
   对齐模板实际标记：div.rank-list > a.rn > span.nm + span.sc（无 li 容器）
   修复：① 排行列表裸文本（原 CSS 选择器带 li 全部落空）
        ② 卡片标题 h5 无样式（原 CSS 只写了 h3）
        ③ .tip 被全局黄色提示样式接管
        ④ 侧栏 CTA 按钮 sb-btn 无样式（原只有 shop-banner 作用域的定义）
   幂等标记：MB-SIDE-PATCH-V1
   ====================================================================== */
#mb-portal .side-card h5,
#mb-portal .side-card h3{
  font-size:16px; margin:0 0 16px; display:flex; align-items:center; gap:8px;
  color:var(--t-1); font-weight:700;
}
#mb-portal .side-card h5::before,
#mb-portal .side-card h3::before{
  content:""; width:4px; height:14px; border-radius:2px; background:var(--c-primary);
}
#mb-portal .side-card .rank-list{ counter-reset:mb-rank; }
#mb-portal .side-card .rank-list .rn{
  display:flex; align-items:center; gap:12px;
  padding:11px 0; border-bottom:1px solid var(--bd);
  font-size:13px; text-decoration:none;
}
#mb-portal .side-card .rank-list .rn:last-child{ border-bottom:none; }
#mb-portal .side-card .rank-list .rn::before{
  counter-increment:mb-rank;
  content:counter(mb-rank);
  width:22px; height:22px; border-radius:6px; flex-shrink:0;
  display:grid; place-items:center; font-weight:700; font-size:12px;
  background:var(--bg-soft); color:var(--t-3);
}
#mb-portal .side-card .rank-list .rn:nth-child(1)::before{ background:var(--c-primary); color:#fff; }
#mb-portal .side-card .rank-list .rn:nth-child(2)::before{ background:var(--c-gold); color:#fff; }
#mb-portal .side-card .rank-list .rn:nth-child(3)::before{ background:#FFB993; color:#fff; }
#mb-portal .side-card .rank-list .rn .nm{
  flex:1; min-width:0; color:var(--t-2);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  transition:color .2s ease;
}
#mb-portal .side-card .rank-list .rn:hover .nm{ color:var(--c-primary); }
#mb-portal .side-card .rank-list .rn .sc{
  flex-shrink:0; color:var(--c-primary); font-weight:700; font-size:12px;
}
#mb-portal .side-card .tip{
  background:var(--bg-soft); color:var(--t-3);
  border:none; border-radius:10px;
  padding:12px 14px; font-size:13px; line-height:1.7;
  margin:0 0 14px;
}
#mb-portal .side-card .sb-btn{
  display:flex; align-items:center; justify-content:center; gap:6px;
  height:44px; border-radius:10px;
  background:var(--c-primary); color:#fff;
  font-size:14px; font-weight:700; text-decoration:none;
  box-shadow:0 4px 12px rgba(0,0,0,.08);
  transition:all .25s ease;
}
#mb-portal .side-card .sb-btn:hover{
  transform:translateY(-2px);
  box-shadow:0 8px 18px rgba(0,0,0,.16);
  color:#fff;
}

/* MB-SIDE-PATCH-V1-FIX: 重置 Discuz 全局 .tip 的 absolute 定位与定宽 */
#mb-portal .side-card .tip{ position:static; width:auto; top:auto; left:auto; right:auto; bottom:auto; }

/* MB-VIDEO-COVER-IMG: 视频封面用 img 承载，绕微信 CDN 防盗链 */
#mb-portal .video-card .vc-cover{ position:relative; }
#mb-portal .video-card .vc-cover-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
#mb-portal .video-card .vc-cover .vc-inner{ position:relative; z-index:1; }

/* ============== 底部版权区（通栏黑底）============== */
.dz_footc_bottom{ background:#14171c !important; color:#7d8695; }
.dz_footc_bottom a{ color:#9aa3ae; }
.dz_footc_bottom a:hover{ color:#fff; }

/* ============== 首页频道导航（内容频道入口） ============== */
#mb-portal .ch-nav{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
#mb-portal .ch-card{ position:relative; display:flex; flex-direction:column; gap:4px; padding:22px 22px 18px; background:#fff; border:1px solid var(--bd); border-radius:14px; text-decoration:none; color:var(--t-1); overflow:hidden; transition:transform .2s, box-shadow .2s, border-color .2s; }
#mb-portal .ch-card::before{ content:""; position:absolute; left:0; top:0; width:100%; height:3px; background:linear-gradient(90deg, var(--c-primary), var(--c-gold)); opacity:0; transition:opacity .2s; }
#mb-portal .ch-card:hover{ transform:translateY(-4px); box-shadow:var(--sh-md); border-color:var(--c-primary); }
#mb-portal .ch-card:hover::before{ opacity:1; }
#mb-portal .ch-ico{ width:46px; height:46px; border-radius:12px; display:grid; place-items:center; font-size:24px; background:var(--c-primary-soft); margin-bottom:4px; }
#mb-portal .ch-card h4{ font-size:17px; font-weight:700; color:var(--t-1); margin:2px 0 0; }
#mb-portal .ch-card p{ font-size:13px; color:var(--t-3); line-height:1.5; margin:0; }
#mb-portal .ch-card .ch-go{ margin-top:8px; font-size:13px; font-weight:600; color:var(--c-primary); display:inline-flex; align-items:center; gap:3px; transition:gap .2s; }
#mb-portal .ch-card:hover .ch-go{ gap:7px; }
@media (max-width:900px){ #mb-portal .ch-nav{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ #mb-portal .ch-nav{ grid-template-columns:1fr; } }

  /* ================= 悬浮快捷按钮修复 v2（QQ客服/返回顶部，2026-10-08） =================
     1) X5 官方 JS new_showTopLink() 依据 #ft 计算 inline left；.dz_footc 被主题隐藏
        → clientWidth=0 → inline left=-50px 飞出左屏，故用 !important 压过 inline left。
     2) 按需求统一固定在屏幕右侧悬浮（fixed=随屏上下滚动）。
     3) 图标自绘（QQ 文本 / 向上箭头），不再依赖 dzicon 字体——移动端浏览器该字体
        渲染失败时会显示白色空心方块（portal touch 页实测）。 */
  .dz_rnav{
    position:fixed !important;
    right:14px !important;
    left:auto !important;
    margin-left:0 !important;
    bottom:calc(96px + env(safe-area-inset-bottom, 0px));
    z-index:300;
  }
  .dz_rnav a{
    display:block; width:46px !important; height:46px !important; line-height:46px !important;
    margin-top:10px; text-align:center; font-family:inherit !important;
    font-size:20px !important; font-weight:700; text-decoration:none;
    color:#2f6fed !important; background:#fff !important;
    border-radius:50%; box-shadow:0 4px 16px rgba(15,30,60,.22);
    position:relative; overflow:hidden;
  }
  .dz_rnav a:hover, .dz_rnav a.dz_light_on{ background:#2f6fed !important; color:#fff !important; }
  .dz_rnav a:before{ font-family:inherit !important; margin-right:0; }
  .dz_rnav a.dz_rqq:before{ content:"QQ"; font-size:15px; letter-spacing:.5px; }
  .dz_rnav a.dz_rtop:before{ content:"\2191"; font-size:26px; font-weight:700; }
  .dz_rnav a .dz_tip_text{ display:none; }
