/* ==========================================================================
   医工转化平台 · 设计系统（完全对齐原型）
   第一部分：原型 CSS 全量（政府平台-界面原型.html 逐字提取）
   第二部分：应用适配层（见文件末尾说明）
   生成：2026-10-06 · 请勿手改第一部分，改原型请同步提取脚本
   ========================================================================== */


  :root{
    --bg:#F7F6F2;          /* 米白 */
    --bg-page:#F7F6F2;
    --bg-2:#F0EEE7;        /* 浅米灰 */
    --card:#FFFFFF;
    --glass:rgba(255,255,255,.72);
    --line:#ECEAE2;
    --line-2:#E0DDD2;
    --ink:#1D4ED8;         /* 深蓝·墨黑替换 */
    --ink-2:#4C6FB5;       /* 蓝灰·次级 */
    --ink-3:#93A6C9;       /* 浅蓝灰·三级 */
    --accent:#085BFF;      /* 品牌蓝·仅功能性小点 */
    --accent-soft:rgba(8.4, 90.6, 255.0, .07);
    --shadow:0 10px 36px rgba(41,40,38,.07);
    --shadow-soft:0 4px 18px rgba(41,40,38,.05);
    --r-lg:24px;
    --r-md:16px;
    --r-sm:12px;
    /* ===== 兼容原模板变量（PAGES 内联引用，勿改名） ===== */
    --primary:#085BFF; --primary-light:#EDF3FF; --primary-dark:#1549B1;
    --grad:linear-gradient(135deg,#085BFF,#3877F6);
    --success:#0FA968; --success-light:#E7F6EF;
    --danger:#E5484D; --danger-light:#FDECEC;
    --warning:#E8853C; --warning-light:#FBF1E6;
    --brand:#085BFF; --brand-light:#EDF3FF;
    --blue:#4C7DF0; --blue-light:#EBF1FD;
    --gray-50:#FBFAF8; --gray-100:#F2F1ED; --gray-200:#E8E6E0; --gray-300:#D8D5CC;
    --gray-400:#A9A49A; --gray-500:#8B877D; --gray-600:#6B675E; --gray-700:#4A473F; --gray-800:#2B2926; --gray-900:#1A1814;
    --radius-lg:20px; --radius-md:14px;
    --shadow-hover:0 14px 36px rgba(41,40,38,.12),0 2px 8px rgba(8.4, 90.6, 255.0, .07);
    --dark:#1C212B; --cyan:#6698FB;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html,body{height:100%}
  body{
    font-family:"Inter","PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",-apple-system,sans-serif;
    background:var(--bg);
    color:var(--ink);
    -webkit-font-smoothing:antialiased;
    overflow:hidden;
  }

  /* 极淡中性光斑（几乎隐形，只给层次不给颜色） */
  .blob{position:fixed;border-radius:50%;filter:blur(90px);pointer-events:none;z-index:0;background:rgba(41,40,38,.028)}
  .blob-1{width:520px;height:520px;top:-180px;left:-160px}
  .blob-2{width:480px;height:480px;bottom:-200px;right:-160px}

  .layout{position:relative;z-index:1;display:flex;height:100vh}

  /* ===== 侧边栏（二级导航） ===== */
  .side{
    width:236px;flex:none;
    display:flex;flex-direction:column;
    padding:22px 14px 18px;
    background:var(--glass);
    backdrop-filter:blur(22px);
    -webkit-backdrop-filter:blur(22px);
    border-right:1px solid rgba(255,255,255,.8);
  }
  .logo{display:flex;align-items:center;gap:12px;padding:2px 10px 20px}
  .logo-mark{
    width:40px;height:40px;border-radius:13px;flex:none;
    background:var(--ink);color:#fff;
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 8px 20px rgba(41,40,38,.16);
  }
  .logo-name{font-size:15px;font-weight:700;letter-spacing:.2px;white-space:nowrap}
  .logo-sub{font-size:10.5px;color:var(--ink-3);margin-top:3px;letter-spacing:.6px;white-space:nowrap}

  .nav-head{
    display:flex;align-items:center;gap:7px;
    padding:12px 12px 8px;font-size:11px;font-weight:600;
    color:var(--ink-3);letter-spacing:1.2px;white-space:nowrap;
  }
  .nav-head .idx{font-size:10.5px;color:var(--ink-3);background:var(--bg-2);border-radius:6px;padding:1px 6px}
  .nav{flex:1;display:flex;flex-direction:column;gap:3px;overflow-y:auto}
  .nav-item{
    display:flex;align-items:center;gap:11px;
    padding:10px 13px;border-radius:13px;
    color:var(--gray-600);font-size:13.5px;font-weight:500;
    cursor:pointer;transition:all .2s ease;white-space:nowrap;
  }
  .nav-item svg{width:17px;height:17px;flex:none}
  .nav-item:hover{background:rgba(255,255,255,.8);color:var(--ink)}
  .nav-item.active{background:var(--card);color:var(--ink);box-shadow:var(--shadow-soft);font-weight:600}
  .nav-item.active::before{content:"";width:3px;height:15px;border-radius:99px;background:var(--ink);margin-right:-4px}
  .nav-badge{margin-left:auto;font-size:10.5px;font-weight:600;padding:1px 8px;border-radius:999px;background:var(--bg-2);color:var(--ink-2)}

  .side-user{
    margin-top:10px;padding:12px 13px;border-radius:16px;
    background:var(--card);border:1px solid var(--line);
    display:flex;align-items:center;gap:11px;cursor:pointer;
    transition:box-shadow .2s ease;position:relative;
  }
  .side-user:hover{box-shadow:var(--shadow-soft)}
  .user-menu{position:absolute;left:0;right:0;bottom:calc(100% + 8px);background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:6px;display:none;z-index:60;}
  .user-menu.open{display:block;}
  .user-menu .um-head{font-size:11px;color:var(--ink-3);padding:8px 10px 6px;white-space:nowrap;letter-spacing:.4px;}
  .user-menu .um-item{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:9px;font-size:12.5px;color:var(--gray-700);cursor:pointer;white-space:nowrap;transition:background .15s;}
  .user-menu .um-item:hover{background:var(--bg-2);}
  .user-menu .um-item.danger{color:var(--danger);}
  .user-menu .um-item.danger:hover{background:var(--danger-light);}
  .avatar{
    width:36px;height:36px;border-radius:11px;flex:none;
    background:var(--bg-2);color:var(--ink);
    display:flex;align-items:center;justify-content:center;
    font-size:14px;font-weight:700;
  }
  .side-user b{font-size:13px;font-weight:600;display:block;white-space:nowrap}
  .side-user span{font-size:11px;color:var(--ink-3);display:block;white-space:nowrap}

  /* ===== 主区 ===== */
  .main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}

  /* 顶栏第一行 */
  .top{
    flex:none;display:flex;align-items:center;gap:14px;
    padding:14px 30px 10px;
  }
  .crumb{font-size:13.5px;color:var(--ink-3);white-space:nowrap}
  .crumb b{color:var(--ink);font-weight:600}
  .crumb .sep{margin:0 8px;color:var(--line-2)}
  .top-right{margin-left:auto;display:flex;align-items:center;gap:10px}
  .search{
    display:flex;align-items:center;gap:8px;
    width:264px;padding:8px 13px;border-radius:12px;
    background:var(--glass);border:1px solid var(--line);
    color:var(--ink-3);font-size:13px;
    transition:all .2s ease;cursor:pointer;
  }
  .search:hover{border-color:var(--line-2)}
  .search svg{width:15px;height:15px}
  .search .kbd{margin-left:auto;font-size:10.5px;font-weight:600;color:var(--ink-3);background:var(--bg-2);border:1px solid var(--line);border-radius:5px;padding:1px 5px}
  .icon-btn{
    width:38px;height:38px;border-radius:12px;position:relative;
    display:flex;align-items:center;justify-content:center;
    background:var(--glass);border:1px solid var(--line);
    color:var(--ink-2);cursor:pointer;transition:all .2s ease;
  }
  .icon-btn:hover{color:var(--ink);border-color:var(--line-2);box-shadow:var(--shadow-soft)}
  .icon-btn svg{width:17px;height:17px}
  .dot{position:absolute;top:9px;right:10px;width:6px;height:6px;border-radius:50%;background:var(--ink);box-shadow:0 0 0 3px #fff}
  .ai-btn{
    display:flex;align-items:center;gap:7px;
    padding:9px 16px;border-radius:12px;border:none;cursor:pointer;
    background:var(--ink);color:#fff;font-size:13px;font-weight:600;
    transition:all .2s ease;white-space:nowrap;
  }
  .ai-btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(41,40,38,.20)}
  .ai-btn svg{width:15px;height:15px}
  .avatar-sm{
    width:38px;height:38px;border-radius:12px;
    background:var(--bg-2);color:var(--ink);
    display:flex;align-items:center;justify-content:center;
    font-size:13.5px;font-weight:700;cursor:pointer;
  }

  /* ===== 顶部标签带 ===== */
  .tabs{
    flex:none;position:relative;
    display:flex;align-items:center;gap:4px;
    padding:4px 30px 0;
    overflow-x:auto;scrollbar-width:none;
  }
  .tabs::-webkit-scrollbar{display:none}
  .tab{
    position:relative;flex:none;
    padding:12px 18px 14px;
    font-size:15px;font-weight:600;
    color:var(--gray-600);cursor:pointer;
    transition:color .2s ease;white-space:nowrap;
    border:none;background:none;
    font-family:inherit;
  }
  .tab:hover{color:var(--ink)}
  .tab.active{color:var(--ink)}
  .tab-ind{
    position:absolute;left:0;bottom:0;height:3px;border-radius:99px;
    background:var(--ink);
    transition:left .3s cubic-bezier(.4,0,.2,1),width .3s cubic-bezier(.4,0,.2,1);
  }
  .tabs-line{position:absolute;left:30px;right:30px;bottom:0;height:1px;background:var(--line);z-index:-1}

  /* ===== 内容区 ===== */
  .content{flex:1;overflow-y:auto;padding:26px 30px 44px;scrollbar-width:thin;color:var(--gray-800)}
  .view{display:none;animation:viewIn .34s cubic-bezier(.3,.7,.3,1)}
  .view.active{display:block}
  @keyframes viewIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

  ::-webkit-scrollbar{width:8px;height:8px}
  ::-webkit-scrollbar-thumb{background:rgba(41,40,38,.16);border-radius:99px}
  ::-webkit-scrollbar-track{background:transparent}
/* ===== 登录页（米白浅色） ===== */
.big-screen{--ink:#292826;--ink-2:#6E6A61;--ink-3:#A7A297;}
.login-screen{position:fixed;inset:0;z-index:900;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(ellipse 60% 50% at 20% 0%,rgba(8.4, 90.6, 255.0, .10) 0%,transparent 62%),radial-gradient(ellipse 55% 60% at 100% 100%,rgba(55.8, 119.1, 245.6, .08) 0%,transparent 62%),#F7F6F2;}
.login-screen::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(41,40,38,.032) 1px,transparent 1px),linear-gradient(90deg,rgba(41,40,38,.032) 1px,transparent 1px);background-size:52px 52px;mask-image:radial-gradient(ellipse at 50% 40%,#000 0%,transparent 78%);-webkit-mask-image:radial-gradient(ellipse at 50% 40%,#000 0%,transparent 78%);}
.login-box{position:relative;width:400px;background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:24px;padding:46px 40px 36px;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 24px 80px rgba(41,40,38,.10);}
.login-box .lg{display:flex;align-items:center;gap:14px;margin-bottom:34px;}
.login-box .lg .logo{width:50px;height:50px;border-radius:16px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;padding:0;font-size:22px;font-weight:800;box-shadow:0 8px 24px rgba(41,40,38,.22);flex-shrink:0;}
.login-box .lg .t{font-size:19px;font-weight:800;color:var(--ink);letter-spacing:.3px;white-space:nowrap;}
.login-box .lg .s{font-size:12.5px;color:var(--ink-3);letter-spacing:0;margin-top:5px;white-space:nowrap;text-transform:uppercase;}
.login-box label{display:block;color:var(--gray-600);font-size:12.5px;margin:18px 0 8px;font-weight:500;letter-spacing:.5px;}
.login-box input{width:100%;background:var(--bg-2);border:1px solid var(--line-2);color:var(--gray-600);padding:12px 14px;border-radius:12px;font-size:14px;transition:border .2s,box-shadow .2s,background .2s;outline:none;}
.login-box input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:#fff;}
.login-box .tip{font-size:11px;color:var(--ink-3);margin-top:12px;text-align:center;letter-spacing:.5px;}
.login-box button{width:100%;margin-top:24px;background:var(--ink);border:none;color:#fff;padding:13px;border-radius:12px;font-size:15px;font-weight:700;letter-spacing:6px;cursor:pointer;transition:all .2s;box-shadow:0 8px 24px rgba(41,40,38,.22);}
.login-box button:hover{transform:translateY(-1px);box-shadow:0 12px 32px rgba(41,40,38,.3);}
.login-box .err{color:var(--danger);font-size:12px;margin-top:12px;text-align:center;display:none;}
.login-foot{position:absolute;bottom:26px;left:0;right:0;text-align:center;color:var(--ink-3);font-size:11px;}
.login-back{position:absolute;top:22px;right:26px;z-index:10;display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:1px solid var(--line-2);border-radius:999px;color:var(--gray-600);font-size:13.5px;font-weight:600;letter-spacing:1px;text-decoration:none;background:rgba(255,255,255,.7);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:all .2s;cursor:pointer;}
.login-back:hover{background:#fff;border-color:var(--accent);color:var(--accent);transform:translateY(-1px);}
/* 登录页 → 星空过场：整体缩放模糊淡出 */
.login-screen.leaving{transform:scale(1.1);opacity:0;filter:blur(8px);transition:transform .32s ease-in,opacity .32s ease-in,filter .32s ease-in;}
/* ===== 模块子页签（产业大脑分组） ===== */
.mod-subtabs{display:none;height:50px;background:var(--glass);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-bottom:1px solid var(--line);align-items:center;padding:0 30px;gap:6px;position:relative;z-index:1;}
.ms-tab{position:relative;padding:8px 20px;font-size:13.5px;color:var(--gray-500);cursor:pointer;font-weight:500;transition:all .2s;border-radius:999px;white-space:nowrap;}
.ms-tab:hover{color:var(--accent);background:var(--accent-soft);font-weight:600;}
.ms-tab.on{color:var(--accent);font-weight:700;background:var(--accent-soft);}
.sb-grp.on{color:var(--accent);}
.sb-grp.on::before{background:var(--grad);box-shadow:0 0 6px rgba(8.4, 90.6, 255.0, .4);}
.nav-item.dim{opacity:.5;}
.nav-item.dim:hover{opacity:1;}
@keyframes pageSlideR{from{opacity:0;transform:translateX(56px)}to{opacity:1;transform:translateX(0)}}
@keyframes pageSlideL{from{opacity:0;transform:translateX(-56px)}to{opacity:1;transform:translateX(0)}}
.content.anim-r{animation:pageSlideR .42s cubic-bezier(.2,.8,.2,1);}
.content.anim-l{animation:pageSlideL .42s cubic-bezier(.2,.8,.2,1);}
/* ===== 页面组件 ===== */
.page-h{display:flex;align-items:center;margin-bottom:22px;gap:14px;}
.page-h h2{font-size:24px;color:var(--gray-800);font-weight:700;letter-spacing:-.3px;white-space:nowrap;}
.page-h .actions{margin-left:auto;display:flex;gap:9px;}
.btn{display:inline-flex;align-items:center;gap:6px;background:var(--ink);color:#fff;padding:8px 16px;border-radius:12px;font-size:13px;font-weight:600;box-shadow:0 4px 14px rgba(41,40,38,.16);transition:all .18s;}
.btn:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(41,40,38,.24);}
.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line-2);box-shadow:none;}
.btn.ghost:hover{background:var(--bg-2);border-color:var(--ink-3);transform:none;}
.btn.soft{background:var(--bg-2);color:var(--ink-2);box-shadow:none;}
.btn.soft:hover{background:var(--line-2);color:var(--ink);transform:none;}
.btn.sm{padding:5px 11px;font-size:12px;border-radius:9px;box-shadow:none;}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:22px 24px;box-shadow:var(--shadow-soft);transition:all .22s;}
.card:hover{box-shadow:var(--shadow);border-color:var(--line-2);}
.card-h{display:flex;align-items:center;margin-bottom:16px;}
.card-h .t{font-size:15px;font-weight:700;color:var(--gray-800);display:flex;align-items:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.card-h .t::before{content:"";width:3px;height:13px;border-radius:2px;background:var(--gray-800);}
.card-h .more{margin-left:auto;font-size:12px;color:var(--accent);cursor:pointer;font-weight:500;flex:none;}
.card-h .more:hover{text-decoration:underline;font-weight:700;}
.card-h .tag{display:none;}
.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px;}
.stat-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 22px;display:flex;align-items:center;gap:16px;position:relative;overflow:hidden;box-shadow:var(--shadow-soft);transition:all .2s;cursor:default;}
.stat-card:hover{box-shadow:var(--shadow);transform:translateY(-2px);border-color:var(--line-2);}
.stat-icon{width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;background:var(--bg-2)!important;color:var(--ink-2)!important;transition:transform .2s;}
.stat-icon svg{width:20px;height:20px;display:block;}
.stat-cl .stat-icon{background:var(--stat-bg)!important;color:var(--stat-ic)!important;}
.stat-card:hover .stat-icon{transform:scale(1.06);}
.stat-label{font-size:11.5px;color:var(--gray-400);font-weight:500;white-space:nowrap;}
.stat-value{font-size:26px;font-weight:700;color:var(--ink);line-height:1.2;letter-spacing:-.3px;font-variant-numeric:tabular-nums;white-space:nowrap;}
.stat-trend{font-size:11px;color:var(--gray-400);margin-top:2px;font-weight:500;white-space:nowrap;}
.stat-trend.down{color:var(--gray-500);}
.content .stat-label{color:var(--gray-800);}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:18px;}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:18px;}
.grid-2>*, .grid-3>*{min-width:0;}
table{width:100%;border-collapse:collapse;font-size:13px;}
th{text-align:left;color:var(--gray-400);font-weight:600;font-size:11.5px;padding:9px 12px;border-bottom:1px solid var(--line);letter-spacing:.3px;white-space:nowrap;}
td{padding:11px 12px;border-bottom:1px solid var(--line);color:var(--gray-700);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px;}
tr:last-child td{border-bottom:none;}
tbody tr{transition:background .15s,box-shadow .15s;}
tbody tr:hover td{background:var(--bg-2);}
.badge-s{display:inline-block;padding:2.5px 10px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.2px;background:var(--bg-2);color:var(--gray-500);}
.badge-s.green{background:var(--success-light);color:var(--success);}
.badge-s.blue{background:var(--blue-light);color:var(--blue);}
.badge-s.yellow{background:var(--warning-light);color:var(--warning);}
.badge-s.red{background:var(--danger-light);color:var(--danger);}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:7px;}
.dot{background:var(--gray-400);}.dot.r{background:var(--danger);}.dot.b{background:var(--blue);}.dot.g{background:var(--success);}.dot.y{background:var(--warning);}
.todo-item{display:flex;align-items:center;gap:10px;padding:11px 6px;border-bottom:1px solid var(--line);font-size:13px;color:var(--gray-700);cursor:pointer;transition:all .15s;border-radius:10px;}
.todo-item:hover{color:var(--accent);background:var(--accent-soft);font-weight:600;}
.todo-item:last-child{border-bottom:none;}
.todo-item .t{margin-left:auto;font-size:11.5px;color:var(--gray-400);white-space:nowrap;}
.ic-inline{display:inline-flex;vertical-align:-2.5px;margin-right:6px;flex:none;}
.ic-inline svg{width:15px;height:15px;}
.hl{color:var(--accent);font-weight:600;}
.funnel{display:flex;flex-direction:column;gap:5px;}
.funnel .lv{height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;background:var(--gray-600);color:#fff;font-weight:500;box-shadow:inset 0 1px 1px rgba(255,255,255,.2);transition:filter .18s,transform .18s;}
.funnel .lv:hover{filter:brightness(1.08);transform:scale(1.01);}
.funnel .lv.warn{background:var(--gray-400);}
.funnel .lv.ok{background:var(--gray-500);}
.sub-tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;}
.sub-tabs .st{padding:7px 18px;border:1px solid var(--line-2);border-radius:999px;font-size:12.5px;color:var(--gray-500);cursor:pointer;background:#fff;font-weight:500;transition:all .16s;}
.sub-tabs .st:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);font-weight:600;}
.sub-tabs .st.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:700;}

/* ===== 深色驾驶舱头（仅驾驶舱页 · 保留深色 hero 特色） ===== */
.hero-dark{position:relative;margin:-26px -30px 18px;padding:26px 30px;background:var(--dark);overflow:hidden;}
.hero-dark::before{content:"";position:absolute;top:-140px;right:-60px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(8.4, 90.6, 255.0, .34) 0%,rgba(8.4, 90.6, 255.0, 0) 65%);}
.hero-dark::after{content:"";position:absolute;bottom:-200px;left:12%;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle,rgba(55.8, 119.1, 245.6, .18) 0%,rgba(55.8, 119.1, 245.6, 0) 65%);}
.hero-dark .hd-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse at 72% 0%,#000 0%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse at 72% 0%,#000 0%,transparent 75%);}
.hero-dark .hd-head{position:relative;z-index:2;display:flex;align-items:flex-end;gap:18px;margin-bottom:18px;}
.hero-dark .hd-t{font-size:21px;font-weight:700;color:#fff;letter-spacing:.3px;white-space:nowrap;}
.hero-dark .hd-s{font-size:12.5px;color:rgba(255,255,255,.5);margin-top:5px;white-space:nowrap;}
.hero-dark .hd-actions{margin-left:auto;display:flex;gap:9px;}
.hero-dark .stat-row{position:relative;z-index:2;margin-bottom:0;}
.hero-dark .stat-card{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:none;border-radius:16px;}
.hero-dark .stat-card:hover{background:rgba(255,255,255,.10);border-color:rgba(102.1, 151.8, 251.3, .5);box-shadow:0 10px 30px rgba(8.4, 90.6, 255.0, .25);transform:translateY(-3px);}
.hero-dark .stat-icon{background:rgba(255,255,255,.1)!important;color:#CCDDFF!important;}
.hero-dark .stat-label{color:rgba(255,255,255,.6);}
.hero-dark .stat-value{color:#fff;text-shadow:0 0 24px rgba(55.8, 119.1, 245.6, .35);}
.hero-dark .stat-trend{color:#A5D8FF;}
.hero-dark .stat-trend.down{color:#FFB3C8;}
.hero-dark .btn.soft{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.22);}
.hero-dark .btn.soft:hover{background:rgba(255,255,255,.17);}
/* 深色头内漏斗适配 */
.hero-dark .f3d-layer{box-shadow:0 6px 24px rgba(8.4, 90.6, 255.0, .35);}
.hero-dark .f3d-layer:hover{filter:brightness(1.1);}
/* ===== 今日日程 · 时间轴 ===== */
.sched{display:flex;flex-direction:column;gap:2px;}
.sched .it{display:flex;gap:12px;position:relative;padding:10px;border-radius:12px;transition:background .16s,transform .16s;cursor:pointer;}
.sched .it:hover{background:var(--bg-2);transform:translateX(3px);}
.sched .tm{width:42px;flex-shrink:0;font-size:13px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;padding-top:2px;text-align:right;white-space:nowrap;}
.sched .nd{width:11px;flex-shrink:0;position:relative;}
.sched .nd::before{content:"";position:absolute;left:50%;top:6px;transform:translateX(-50%);width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3.5px var(--accent-soft);transition:transform .18s;}
.sched .it:hover .nd::before{transform:translateX(-50%) scale(1.25);}
.sched .nd::after{content:"";position:absolute;left:50%;top:23px;bottom:-12px;width:2px;transform:translateX(-50%);background:var(--line);}
.sched .it:last-child .nd::after{content:none;}
.sched .bd{flex:1;min-width:0;}
.sched .tx{font-size:13.5px;font-weight:600;color:var(--ink);white-space:nowrap;display:flex;align-items:center;gap:8px;}
.sched .meta{font-size:11.5px;color:var(--gray-400);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sched .it.done .tm{color:var(--gray-300);}
.sched .it.done .nd::before{width:7px;height:7px;background:#fff;border:2px solid var(--success);box-shadow:none;}
.sched .it.done .tx{color:var(--gray-400);font-weight:500;}
.sched .it.next{background:var(--accent-soft);box-shadow:inset 0 0 0 1px rgba(8.4, 90.6, 255.0, .14);}
.sched .it.next:hover{transform:none;}
.sched .it.next .tm{color:var(--accent);}
.st-chip{font-size:10.5px;font-weight:600;padding:1.5px 8px;border-radius:999px;white-space:nowrap;}
.st-chip{background:var(--bg-2);color:var(--gray-500);}
.st-chip.next{background:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(8.4, 90.6, 255.0, .3);}
/* ===== 驾驶舱 Bento 组件（移植自 MiniMax 样例） ===== */
@keyframes fadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes drawLine{to{stroke-dashoffset:0}}
@keyframes ringDraw{from{stroke-dashoffset:439.8}to{stroke-dashoffset:96.8}}
@keyframes growW{from{width:0}}
@keyframes layerIn{from{opacity:0;transform:rotateX(64deg) translateY(-22px)}to{opacity:1;transform:rotateX(16deg) translateY(0)}}
@keyframes beamDrop{0%{opacity:0;transform:translateY(-6px) scaleY(.4)}45%{opacity:1}100%{opacity:0;transform:translateY(6px) scaleY(1)}}
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;}
.b-8{grid-column:span 8;}
.b-4{grid-column:span 4;}
.chart-tabs{display:flex;gap:4px;background:var(--bg-2);border-radius:11px;padding:3px;}
.chart-tabs span{font-size:12px;color:var(--gray-400);padding:5px 14px;border-radius:8px;cursor:pointer;transition:all .18s;font-weight:500;white-space:nowrap;}
.chart-tabs span:hover{color:var(--ink);}
.chart-tabs span.on{background:#fff;color:var(--accent);font-weight:600;box-shadow:var(--shadow-soft);}
.chart-legend{display:flex;gap:16px;font-size:12px;color:var(--gray-400);white-space:nowrap;}
.chart-legend span{display:flex;align-items:center;gap:6px;}
.chart-legend i{width:14px;height:3px;border-radius:2px;display:inline-block;}
.chart-wrap{position:relative;padding-top:8px;}
.y-labels{position:absolute;left:0;top:8px;bottom:26px;display:flex;flex-direction:column;justify-content:space-between;font-size:11px;color:var(--gray-400);font-family:'Inter',sans-serif;}
.chart-body{margin-left:38px;position:relative;}
.chart-x{display:flex;justify-content:space-between;font-size:11px;color:var(--gray-400);font-family:'Inter',sans-serif;margin-top:10px;padding-left:38px;}
.chart-line{stroke-dasharray:1700;stroke-dashoffset:1700;animation:drawLine 1.8s .5s cubic-bezier(.4,0,.2,1) forwards;}
.chart-line2{stroke-dasharray:1700;stroke-dashoffset:1700;animation:drawLine 1.8s .7s cubic-bezier(.4,0,.2,1) forwards;}
.chart-area{opacity:0;animation:fadeIn 1s 1.2s forwards;}
.chart-dot{opacity:0;animation:fadeIn .4s 2.1s forwards;}
.chart-tip{position:absolute;background:var(--dark);color:#fff;font-size:12px;padding:7px 12px;border-radius:9px;box-shadow:0 6px 20px rgba(24,30,37,.25);font-family:'Inter',sans-serif;white-space:nowrap;z-index:3;opacity:0;animation:fadeUp .45s 2.2s both;}
.chart-tip::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--dark);}
.chart-tip b{font-size:14px;font-weight:700;}
.chart-tip small{color:rgba(255,255,255,.55);display:block;font-size:10.5px;}
.goal-wrap{display:flex;flex-direction:column;align-items:center;padding:2px 0 0;}
.ring-box{position:relative;width:168px;height:168px;}
.ring-box svg{transform:rotate(-90deg);}
.ring-arc{stroke-dasharray:439.8;stroke-dashoffset:439.8;animation:ringDraw 1.5s .6s cubic-bezier(.4,0,.2,1) forwards;}
.ring-knob{opacity:0;animation:fadeIn .4s 1.9s forwards;}
.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.ring-center b{font-family:'Inter',sans-serif;font-size:36px;font-weight:700;letter-spacing:-1px;line-height:1;background:linear-gradient(135deg,#085BFF,#3877F6);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.ring-center span{font-size:12px;color:var(--gray-400);margin-top:6px;white-space:nowrap;}
.goal-items{width:100%;margin-top:18px;}
.goal-item{margin-bottom:13px;}
.goal-item:last-child{margin-bottom:0;}
.goal-row{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:6px;white-space:nowrap;}
.goal-row .g-name{color:var(--gray-400);}
.goal-row .g-val{font-family:'Inter',sans-serif;font-weight:600;}
.goal-row .g-val em{font-style:normal;color:var(--gray-400);font-weight:400;font-size:11.5px;}
.goal-track{height:6px;background:var(--bg-2);border-radius:99px;overflow:hidden;}
.goal-fill{height:100%;border-radius:99px;width:var(--w);animation:growW 1.2s .8s cubic-bezier(.4,0,.2,1) both;}
.funnel-flex{display:flex;gap:32px;align-items:stretch;}
.funnel3d{flex:1.1;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;padding:2px 6px 8px;position:relative;}
.f3d-layer{width:100%;height:44px;display:flex;align-items:center;gap:12px;padding:0 22px;color:#fff;position:relative;white-space:nowrap;clip-path:polygon(0 0,100% 0,calc(100% - 16px) 100%,16px 100%);animation:fadeUp .5s cubic-bezier(.3,.7,.3,1) both;animation-delay:var(--d);transition:filter .2s,transform .2s;cursor:pointer;}
.f3d-layer:hover{filter:brightness(1.06);transform:translateX(3px);}
.f3d-layer.f1{width:100%;--d:.5s;background:linear-gradient(135deg,#184FBB,#085BFF);}
.f3d-layer.f2{width:84%;--d:.62s;background:linear-gradient(135deg,#085BFF,#2E74FF);}
.f3d-layer.f3{width:66%;--d:.74s;background:linear-gradient(135deg,#2E74FF,#5E94FF);}
.f3d-layer.f4{width:48%;--d:.86s;background:linear-gradient(135deg,#5E94FF,#B8D0FF);color:#273E6B;}
.f3d-num{font-family:'Inter',sans-serif;font-size:19px;font-weight:700;letter-spacing:-.3px;font-variant-numeric:tabular-nums;text-shadow:0 1px 8px rgba(0,0,0,.14);}
.f3d-lb{font-size:12.5px;font-weight:500;opacity:.92;}
.f3d-pct{margin-left:auto;font-family:'Inter',sans-serif;font-size:11px;font-weight:700;background:rgba(255,255,255,.22);color:#fff;border-radius:999px;padding:2.5px 11px;text-shadow:none;}
.f3d-layer.f4 .f3d-num{text-shadow:none;}
.f3d-layer.f4 .f3d-pct{background:rgba(8.4, 90.6, 255.0, .12);color:#085BFF;}
.f3d-beam{display:none;}
/* 转化监管页布局：左明细 + 右图表，两列等高 */
.mon-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:stretch;}
.mon-grid>.card{display:flex;flex-direction:column;}
.mon-grid .card .todo-item{flex:1;}
.mon-grid .tl-row{flex:none;}
.mon-grid .tl-bars{flex:none;}
.mon-grid .tl-metrics{flex:none;margin-top:auto;}
/* 十级紧凑漏斗（V5 紫色梯形渐变） */
.fv10{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:4px 4px 10px;}
.fv10 .lv{width:100%;height:34px;display:flex;align-items:center;gap:10px;padding:0 16px;color:#fff;font-size:12px;white-space:nowrap;border-radius:9px;clip-path:polygon(0 0,100% 0,calc(100% - 10px) 100%,10px 100%);transition:filter .18s,transform .18s;cursor:pointer;}
.fv10 .lv:hover{filter:brightness(1.07);transform:translateX(2px);}
.fv10 .no{font-family:'Inter',sans-serif;font-size:11px;font-weight:700;opacity:.72;width:17px;flex:none;}
.fv10 .nm{font-weight:600;overflow:hidden;text-overflow:ellipsis;}
.fv10 .cnt{margin-left:auto;font-family:'Inter',sans-serif;font-weight:700;font-variant-numeric:tabular-nums;}
.fv10 .pct{font-size:10.5px;opacity:.78;min-width:36px;text-align:right;font-weight:600;}
.fv10 .lv.dk{color:#273E6B;}
.fv10 .lv.dk .pct{opacity:.72;}
.fv10 .c1{background:linear-gradient(135deg,#0E3D99,#184FBB);width:100%;}
.fv10 .c2{background:linear-gradient(135deg,#184FBB,#1A55CC);width:92%;}
.fv10 .c3{background:linear-gradient(135deg,#1A55CC,#085BFF);width:84%;}
.fv10 .c4{background:linear-gradient(135deg,#085BFF,#1664FF);width:76%;}
.fv10 .c5{background:linear-gradient(135deg,#1664FF,#2E74FF);width:68%;}
.fv10 .c6{background:linear-gradient(135deg,#2E74FF,#4684FF);width:60%;}
.fv10 .c7{background:linear-gradient(135deg,#4684FF,#6095FF);width:52%;}
.fv10 .c8{background:linear-gradient(135deg,#6095FF,#7BA7FF);width:44%;}
.fv10 .c9{background:linear-gradient(135deg,#7BA7FF,#B8D0FF);width:36%;}
.fv10 .c10{background:linear-gradient(135deg,#B8D0FF,#E3ECFF);width:28%;}
/* 红绿灯分布（转化监管右列图表） */
.tl-row{display:flex;align-items:center;gap:22px;padding:8px 4px 6px;}
.tl-ring{flex:none;}
.tl-legend{flex:1;display:flex;flex-direction:column;gap:13px;min-width:0;}
.tl-item{display:flex;align-items:center;gap:11px;}
.tl-item .tl-dot{width:10px;height:10px;border-radius:3px;flex:none;}
.tl-item b{font-family:'Inter',sans-serif;font-size:22px;font-weight:700;letter-spacing:-.5px;line-height:1;}
.tl-item span{font-size:11.5px;color:var(--ink-3);margin-top:3px;display:block;white-space:nowrap;}
.tl-bars{display:flex;flex-direction:column;gap:12px;padding:14px 4px 4px;border-top:1px solid var(--line);margin-top:8px;}
.tl-bar{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--gray-600);white-space:nowrap;}
.tl-bar .track{flex:1;height:6px;background:var(--gray-100);border-radius:3px;overflow:hidden;}
.tl-bar .fill{height:100%;border-radius:3px;}
.tl-bar b{font-family:'Inter',sans-serif;font-size:12px;font-weight:700;min-width:36px;text-align:right;}
.tl-metrics{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;padding:14px 4px 2px;border-top:1px solid var(--line);margin-top:14px;}
.tl-metrics div{text-align:center;background:var(--bg-page);border:1px solid var(--line);border-radius:12px;padding:11px 6px;transition:border-color .18s,transform .18s;}
.tl-metrics div:hover{border-color:var(--accent);transform:translateY(-1px);}
.tl-metrics b{font-family:'Inter',sans-serif;font-size:17px;font-weight:700;letter-spacing:-.3px;display:block;}
.tl-metrics span{font-size:10.5px;color:var(--ink-3);margin-top:3px;display:block;white-space:nowrap;}
.funnel-detail{flex:1;border-left:1px solid var(--line);padding-left:28px;display:flex;flex-direction:column;justify-content:center;}
.fd-item{display:flex;align-items:center;gap:12px;padding:9px 8px;border-bottom:1px solid var(--line);border-radius:10px;transition:background .15s,transform .15s;}
.fd-item:hover{background:var(--bg-2);transform:translateX(4px);}
.fd-item:last-child{border-bottom:none;}
.fd-dot{width:10px;height:10px;border-radius:4px;flex-shrink:0;background:var(--line-2);transition:transform .2s;}
.fd-item:hover .fd-dot{transform:scale(1.25) rotate(45deg);}
.fd-name{font-size:13.5px;font-weight:600;white-space:nowrap;}
.fd-sub{font-size:11.5px;color:var(--gray-400);margin-top:1px;white-space:nowrap;}
.fd-rate{margin-left:auto;text-align:right;flex-shrink:0;}
.fd-rate b{font-family:'Inter',sans-serif;font-size:16px;font-weight:700;display:block;line-height:1.2;}
.fd-rate span{font-size:10.5px;color:var(--gray-400);white-space:nowrap;}
.fd-rate.warn b{color:var(--warning);}
.fd-rate.ok b{color:var(--accent);}
.side-stack{display:flex;flex-direction:column;gap:16px;}
.side-stack .card{flex:1;display:flex;flex-direction:column;}
.risk-list{list-style:none;flex:1;margin:0;padding:0;}
.risk-item{display:flex;align-items:flex-start;gap:12px;padding:12px 6px;border-bottom:1px solid var(--line);border-radius:10px;transition:background .15s,transform .15s;}
.risk-item:hover{background:var(--bg-2);transform:translateX(3px);}
.risk-item:last-child{border-bottom:none;}
.risk-dot{width:9px;height:9px;border-radius:50%;margin-top:6px;flex-shrink:0;transition:transform .2s;}
.risk-item:hover .risk-dot{transform:scale(1.3);}
.risk-dot.high{background:var(--danger);box-shadow:0 0 0 3.5px rgba(229,72,77,.14);}
.risk-dot.mid{background:var(--warning);box-shadow:0 0 0 3.5px rgba(232,133,60,.14);}
.risk-dot.low{background:var(--blue);box-shadow:0 0 0 3.5px rgba(76,125,240,.14);}
.risk-body{flex:1;min-width:0;}
.risk-title{font-size:13px;font-weight:600;white-space:nowrap;}
.risk-desc{font-size:12px;color:var(--gray-400);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dept-mini{display:grid;grid-template-columns:1fr 1fr;gap:10px;flex:1;}
.dept-cell{border:1px solid var(--line);border-radius:14px;padding:13px 14px;transition:border-color .18s,box-shadow .18s,transform .18s;cursor:pointer;display:flex;flex-direction:column;justify-content:center;}
.dept-cell:hover{border-color:var(--accent);box-shadow:0 6px 18px rgba(8.4, 90.6, 255.0, .10);transform:translateY(-2px);}
.dept-cell .d-top{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--gray-400);font-weight:500;white-space:nowrap;}
.dept-cell .d-ico{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .22s cubic-bezier(.34,1.56,.64,1);}
.dept-cell .d-ico svg{width:14px;height:14px;}
.dept-cell:hover .d-ico{transform:scale(1.08);}
.dept-cell b{font-family:'Inter',sans-serif;font-size:21px;font-weight:700;letter-spacing:-.4px;margin-top:9px;line-height:1;}
.dept-cell span.d-unit{font-size:11px;color:var(--gray-400);margin-top:4px;white-space:nowrap;}
.rank-row{display:flex;align-items:center;gap:12px;padding:11px 6px;border-bottom:1px solid var(--line);border-radius:10px;transition:background .15s,transform .15s;}
.rank-row:hover{background:var(--bg-2);transform:translateX(3px);}
.rank-row:last-child{border-bottom:none;}
.rank-no{font-family:'Inter',sans-serif;font-size:13px;font-weight:700;width:16px;flex-shrink:0;}
.rank-fill{height:100%;border-radius:99px;width:var(--w);animation:growW 1.1s cubic-bezier(.4,0,.2,1) both;animation-delay:var(--d);}
.co{display:flex;align-items:center;gap:11px;}
.co-logo{width:32px;height:32px;border-radius:10px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--bg-2);color:var(--ink);font-size:13px;font-weight:700;transition:transform .22s cubic-bezier(.34,1.56,.64,1);}
tbody tr:hover .co-logo{transform:scale(1.06);}
.td-main{font-weight:600;font-size:13.5px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px;}
.td-sub{font-size:11.5px;color:var(--gray-400);margin-top:2px;white-space:nowrap;}
.td-num{font-family:'Inter',sans-serif;font-variant-numeric:tabular-nums;}
.td-time{font-family:'Inter',sans-serif;font-size:12px;color:var(--gray-400);}
.bdg{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;padding:3px 10px;border-radius:999px;white-space:nowrap;transition:transform .15s;}
tbody tr:hover .bdg{transform:scale(1.05);}
.bdg::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor;}
.bdg.b-purple,.bdg.b-blue,.bdg.b-green,.bdg.b-orange{background:var(--bg-2);color:var(--ink-2);}
.bdg.b-gray{background:var(--bg-2);color:var(--gray-500);}
/* ===== 知识库卡片 ===== */
.kb-card{border:1px solid var(--line);border-radius:18px;padding:20px;background:#fff;cursor:pointer;transition:all .2s;box-shadow:var(--shadow-soft);}
.kb-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--line-2);}
.kb-card .kb-ico{width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:12px;transition:transform .2s;}
.kb-card:hover .kb-ico{transform:scale(1.1);}
.kb-card h4{font-size:14.5px;font-weight:700;color:var(--ink);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.kb-card p{font-size:12px;color:var(--gray-500);line-height:1.7;margin-bottom:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.kb-card .kb-meta{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--gray-400);gap:8px;min-width:0;}
.kb-card .kb-meta span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.kb-card .kb-meta b{color:var(--accent);font-size:12px;}
/* ===== 医械江湖 ===== */
.jh-hero{background:linear-gradient(135deg,#1F2738,#193B80 55%,#085BFF);border-radius:18px;padding:28px 30px;color:#fff;position:relative;overflow:hidden;margin-bottom:16px;}
.jh-hero::after{content:"⚔";position:absolute;right:30px;top:10px;font-size:90px;opacity:.12;}
.jh-hero h2{font-size:24px;font-weight:800;letter-spacing:2px;}
.jh-hero .slogan{font-size:13px;opacity:.85;margin-top:8px;letter-spacing:1px;}
.jh-stats{display:flex;gap:26px;margin-top:16px;flex-wrap:wrap;}
.jh-stats .n{font-size:22px;font-weight:800;font-family:Consolas,monospace;}
.jh-stats .l{font-size:11px;opacity:.75;}
.jh-card{border:1px solid var(--line);border-radius:18px;padding:16px;background:#fff;cursor:pointer;transition:all .2s;box-shadow:var(--shadow-soft);}
.jh-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--line-2);}
.jh-card .ico{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:18px;margin-bottom:10px;}
.jh-card h4{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.jh-card p{font-size:12px;color:var(--gray-500);line-height:1.6;margin-bottom:10px;}
.jh-card .go{font-size:12px;color:var(--accent);font-weight:600;}
.jh-card:hover .go{text-decoration:underline;}
.bounty{border:1px solid var(--line);border-radius:14px;padding:13px 15px;margin-bottom:10px;background:#fff;display:flex;align-items:center;gap:12px;transition:all .18s;cursor:pointer;}
.bounty:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateX(3px);}
.bounty .tag{font-size:11px;color:#fff;background:var(--warning);border-radius:5px;padding:2px 6px;font-weight:700;flex-shrink:0;}
.bounty .t{font-size:13px;color:var(--gray-700);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bounty .amt{font-size:13px;font-weight:700;color:var(--warning);white-space:nowrap;}
.news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;}
.news-card{border:1px solid var(--line);border-left-width:4px;border-radius:16px;padding:15px 16px;background:#fff;display:flex;flex-direction:column;transition:all .2s;box-shadow:var(--shadow-soft);}
.news-card:hover{box-shadow:var(--shadow);transform:translateY(-3px);}
.news-card .tag{align-self:flex-start;font-size:11px;color:#fff;padding:2px 9px;border-radius:999px;margin-bottom:8px;font-weight:600;}
.news-card h3{font-size:14.5px;line-height:1.5;color:var(--ink);margin-bottom:7px;}
.news-card .info{font-size:11.5px;color:var(--gray-400);margin-bottom:7px;}
.news-card .summary{font-size:12.5px;color:var(--gray-600);flex:1;line-height:1.7;}
.news-card .more{margin-top:9px;font-size:12px;color:var(--accent);font-weight:600;cursor:pointer;}
.news-head{display:flex;align-items:center;gap:10px;margin:18px 0 12px;}
.news-head .dot{width:11px;height:11px;border-radius:3px;flex-shrink:0;}
.news-head h3{font-size:16px;font-weight:700;color:var(--ink);}
.news-head .cnt{font-size:11.5px;color:var(--gray-400);background:var(--bg-2);padding:2px 9px;border-radius:10px;}
.news-mode{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:4px 12px;border-radius:999px;font-weight:600;}
.news-mode.live{background:var(--success-light);color:var(--success);}
.news-mode.cache{background:var(--warning-light);color:var(--warning);}
.news-mode.loading{background:var(--bg-2);color:var(--gray-500);}
/* ===== AI 助手 ===== */
.ai-fab{position:fixed;right:26px;bottom:26px;z-index:400;width:56px;height:56px;border-radius:18px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;box-shadow:0 12px 30px rgba(41,40,38,.28);cursor:pointer;transition:transform .2s;}
.ai-fab:hover{transform:translateY(-2px) scale(1.04);}
.ai-fab::after{content:"";position:absolute;inset:-4px;border-radius:20px;border:1.5px solid rgba(8.4, 90.6, 255.0, .35);animation:pulse 2.4s infinite;}
@keyframes pulse{0%{transform:scale(.88);opacity:1;}70%{transform:scale(1.28);opacity:0;}100%{opacity:0;}}
.ai-fab .bubble{position:absolute;right:66px;top:10px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:7px 12px;font-size:12px;color:var(--gray-700);box-shadow:var(--shadow-soft);white-space:nowrap;}
.ai-panel{position:fixed;top:0;right:-460px;width:440px;height:100vh;background:#fff;z-index:500;box-shadow:-12px 0 40px rgba(41,40,38,.14);display:flex;flex-direction:column;transition:right .32s cubic-bezier(.4,0,.2,1);}
.ai-panel.ai-panel.open{right:0;}
.ai-overlay{position:fixed;inset:0;background:rgba(41,40,38,.30);z-index:450;display:none;}
.ai-overlay.open{display:block;}
.ai-head{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:11px;background:#fff;color:var(--ink);position:relative;}
.ai-head .logo{width:36px;height:36px;border-radius:12px;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;padding:0;font-size:14px;font-weight:800;letter-spacing:.5px;position:relative;z-index:1;box-shadow:0 3px 12px rgba(8.4, 90.6, 255.0, .28);}
.ai-head .t1{font-size:14.5px;font-weight:700;color:var(--ink);white-space:nowrap;position:relative;z-index:1;}
.ai-head .t2{font-size:11px;color:var(--ink-3);white-space:nowrap;position:relative;z-index:1;}
.ai-head .close{margin-left:auto;font-size:17px;color:var(--ink-3);cursor:pointer;padding:0 6px;position:relative;z-index:1;transition:color .15s;}
.ai-head .close:hover{color:var(--ink);}
.ai-sugg{padding:13px 18px;display:flex;gap:7px;flex-wrap:wrap;border-bottom:1px solid var(--line);}
.ai-sugg span{font-size:11.5px;padding:6px 13px;border:1px solid var(--line-2);border-radius:999px;color:var(--gray-600);cursor:pointer;background:#fff;transition:all .15s;}
.ai-sugg span:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);font-weight:600;}
.ai-agents{padding:12px 18px;border-bottom:1px solid var(--line);background:var(--bg-page);}
.ai-agents-t{font-size:11.5px;color:var(--ink-2);font-weight:700;margin-bottom:9px;letter-spacing:.5px;}
.ai-agents-list{display:flex;gap:7px;flex-wrap:wrap;}
.ai-agents-list span{font-size:11.5px;padding:6px 13px;border:1px solid var(--line-2);border-radius:999px;color:var(--gray-600);cursor:pointer;background:#fff;transition:all .15s;}
.ai-agents-list span:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);font-weight:600;transform:translateY(-1px);}
.ai-body{flex:1;overflow-y:auto;padding:16px 18px;background:var(--bg-page);}
.ai-msg{display:flex;gap:10px;margin-bottom:12px;}
.ai-msg .head{width:29px;height:29px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;font-weight:700;}
.ai-msg.u .head{background:var(--gray-300);}
.ai-msg.a .head{background:var(--ink);}
.ai-msg .bubble{background:#fff;border:1px solid var(--line);border-radius:14px;padding:11px 14px;font-size:12.5px;line-height:1.8;max-width:100%;box-shadow:var(--shadow-soft);}
.ai-msg.u .bubble{background:var(--bg-2);border-color:var(--line-2);color:var(--ink);}
.ai-msg .act{display:flex;gap:7px;margin-top:10px;flex-wrap:wrap;}
.ai-msg .act span{font-size:11.5px;padding:5px 12px;border-radius:999px;cursor:pointer;font-weight:500;}
.ai-msg .act .go{background:var(--ink);color:#fff;}
.ai-msg .act .view{background:#fff;border:1px solid var(--line-2);color:var(--gray-600);}
.ai-in{display:flex;gap:9px;padding:13px 16px;border-top:1px solid var(--line);background:#fff;}
.ai-in input{flex:1;border:1px solid var(--line-2);border-radius:12px;padding:10px 14px;font-size:13px;background:var(--bg-page);}
.ai-in input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:#fff;}
.ai-in button{background:var(--ink);color:#fff;border-radius:12px;padding:0 18px;font-size:13px;font-weight:600;}
/* ===== AI 助手 · 能力分组 / 来源徽标 / 动作按钮（wb.ai.js） ===== */
.ai-tabs{display:flex;gap:6px;padding:11px 18px 0;background:#fff;}
.ai-tab{font-size:11.5px;padding:5px 12px;border-radius:8px;color:var(--ink-2);cursor:pointer;background:var(--bg-page);border:1px solid transparent;transition:all .15s;white-space:nowrap;}
.ai-tab:hover{color:var(--accent);}
.ai-tab.on{background:var(--accent-soft);color:var(--accent);border-color:rgba(8.4,90.6,255,.28);font-weight:700;}
.ai-chips{display:flex;gap:7px;flex-wrap:wrap;padding:10px 18px 12px;border-bottom:1px solid var(--line);background:#fff;}
.ai-chip{font-size:11.5px;padding:6px 12px;border:1px solid var(--line-2);border-radius:999px;color:var(--gray-600);cursor:pointer;background:#fff;transition:all .15s;}
.ai-chip:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);font-weight:600;}
.ai-msg .bubble p{margin:0 0 6px;}
.ai-msg .bubble p:last-child{margin-bottom:0;}
.ai-msg .bubble ul,.ai-msg .bubble ol{margin:4px 0 6px;padding-left:18px;}
.ai-msg .bubble li{margin:2px 0;}
.ai-src{display:inline-block;margin-top:8px;padding:2px 9px;border-radius:999px;font-size:10.5px;font-weight:600;color:var(--ink-3);background:var(--bg-page);border:1px solid var(--line-2);}
.ai-acts{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px;}
.ai-act{font-size:11.5px;padding:5px 12px;border-radius:999px;cursor:pointer;border:1px solid var(--line-2);background:#fff;color:var(--gray-700);font-family:inherit;transition:all .15s;}
.ai-act:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}
.ai-act.pri{background:var(--ink);border-color:var(--ink);color:#fff;}
.ai-act.pri:hover{filter:brightness(1.12);color:#fff;}
/* ===== 内置大屏（旧版 · 保留原样，默认隐藏） ===== */
.big-screen{position:fixed;inset:0;z-index:600;background:radial-gradient(ellipse 80% 60% at 20% 0%,#0a3a7a 0%,transparent 60%),radial-gradient(ellipse 70% 80% at 100% 100%,#08306b 0%,transparent 60%),linear-gradient(135deg,#021634 0%,#04224e 50%,#031c44 100%);color:#e8f4ff;display:none;flex-direction:column;overflow:hidden;}
.big-screen.open{display:flex;}
.big-screen::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(56,232,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(56,232,255,.05) 1px,transparent 1px);background-size:60px 60px;pointer-events:none;}
.big-head{position:relative;z-index:1;text-align:center;padding:16px 40px 8px;}
.big-head h1{font-size:30px;letter-spacing:10px;font-weight:900;background:linear-gradient(135deg,#fff,#6698FB);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.big-head .sub{font-size:11px;color:#6f9be0;letter-spacing:6px;margin-top:5px;}
.big-head .toolbar{position:absolute;right:30px;top:16px;display:flex;gap:8px;align-items:center;}
.big-head .toolbar span{padding:4px 13px;border:1px solid rgba(56,232,255,.3);border-radius:6px;font-size:11.5px;color:#cfe3ff;cursor:pointer;background:rgba(10,40,90,.5);}
.big-head .toolbar span.on{background:rgba(0,212,255,.15);border-color:var(--cyan);color:#fff;}
.big-body{flex:1;display:grid;grid-template-columns:1.5fr 2fr 1.5fr;gap:14px;padding:10px 26px 14px;position:relative;z-index:1;}
.big-panel{background:rgba(10,40,90,.5);border:1px solid rgba(56,232,255,.18);border-radius:10px;padding:14px;min-height:0;overflow:hidden;}
.big-panel h4{font-size:12.5px;color:#6698FB;letter-spacing:2px;margin-bottom:10px;display:flex;align-items:center;gap:8px;}
.big-panel h4::before{content:"";width:4px;height:13px;background:var(--cyan);border-radius:2px;}
.big-num{text-align:center;}
.big-num .v{font-size:32px;font-weight:700;color:#fff;text-shadow:0 0 26px rgba(0,212,255,.6);font-family:Consolas,monospace;}
.big-num .t{font-size:11.5px;color:#8fb4e8;margin-top:3px;}
.big-list{font-size:11.5px;}
.big-list .r{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed rgba(56,232,255,.12);}
.big-list .r:last-child{border-bottom:none;}
.big-list .r b{font-family:Consolas,monospace;color:#6698FB;}
.big-close{position:absolute;top:14px;left:18px;z-index:3;padding:5px 13px;border:1px solid rgba(56,232,255,.3);border-radius:6px;font-size:11.5px;color:#cfe3ff;cursor:pointer;background:rgba(10,40,90,.5);}

/* ===== 内置态势大屏（iframe 全屏覆盖） ===== */
#dashBig{position:fixed;inset:0;z-index:950;display:none;background:#070d1f;overflow:hidden;transition:opacity .3s ease;}
#dashBig.open{display:block;animation:dashIn .45s ease-out both;}
#dashBig.out{opacity:0;}
@keyframes dashIn{from{opacity:0;transform:scale(.99)}to{opacity:1;transform:scale(1)}}
#dashBig.open{display:block}
#dashBig iframe{width:100%;height:100%;border:0;display:block}

  /* ===== V5 融合桥接 ===== */
  button{cursor:pointer;border:none;outline:none;font-family:inherit}
  input,textarea{font-family:inherit;outline:none}
  body{font-size:14px}
  /* 侧栏分组标题（V5 灰阶化） */
  .sb-grp{padding:14px 13px 4px;font-size:10.5px;color:var(--ink-3);letter-spacing:1.4px;font-weight:700;white-space:nowrap}
  .sb-grp.on{color:var(--accent)}
  .nav-item.dim{opacity:.5}
  .nav-item.dim:hover{opacity:1}
  /* 顶栏铃铛红点（界面原型 .dot 为状态点，此处用特异性恢复 V5 通知点） */
  .icon-btn .dot{position:absolute;top:9px;right:10px;width:6px;height:6px;border-radius:50%;background:var(--ink);box-shadow:0 0 0 3px #fff}



/* ================= 应用适配层 ================= */

/* ==========================================================================
   应用适配层（wb.css 第二部分）
   —— 原型 CSS 之上，本演示系统所需的补充与适配：
      ① 页面网格 / 标题 / 段落（原型没有的布局工具类）
      ② 组件适配（WB.ui 输出的类 → 原型视觉）
      ③ 弹层（抽屉 / 弹窗 / Toast —— 原型未含）
      ④ 新闻卡片 · 登录页补充 · AI 助手补充
   —— 所有值均取自原型设计令牌，不引入新色
   ========================================================================== */

/* ---------- ① 布局工具 ---------- */
.grid { display: grid; gap: 16px; }
.g2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.g3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.g4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.g-2-1 { grid-template-columns: 2fr 1fr; }
.g-1-2 { grid-template-columns: 1fr 2fr; }
.grid > * { min-width: 0; }
@media (max-width: 1100px) {
    .g4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .g-2-1, .g-1-2 { grid-template-columns: 1fr; }
}
.flex { display: flex; align-items: center; }
.gap6 { gap: 6px; } .gap8 { gap: 8px; } .gap10 { gap: 10px; } .gap14 { gap: 14px; }
.ml-auto { margin-left: auto; }
.mt8 { margin-top: 8px; } .mt14 { margin-top: 14px; } .mt20 { margin-top: 20px; }
.mb0 { margin-bottom: 0; }
.fs12 { font-size: 12px; } .fs13 { font-size: 13px; }
.b500 { font-weight: 500; } .b600 { font-weight: 600; }
.muted { color: var(--ink-3); }
.num { font-variant-numeric: tabular-nums; font-family: 'Inter', sans-serif; }
.hide { display: none !important; }

.page { animation: viewIn .34s cubic-bezier(.3, .7, .3, 1); }
.page-h .sub { font-size: 12.5px; color: var(--ink-3); margin-top: 4px; }

h3.sec { display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 700; color: var(--gray-800); margin: 26px 0 16px; }
h3.sec:first-child { margin-top: 0; }
h3.sec::before { content: ""; width: 3px; height: 13px; border-radius: 2px; background: var(--gray-800); flex: none; }
h3.sec .more { margin-left: auto; font-size: 12px; color: var(--accent); cursor: pointer; font-weight: 500; }
h3.sec .more:hover { text-decoration: underline; font-weight: 700; }

/* 深色 hero 内 actions 对齐 */
.hero-dark .hd-head .actions { margin-left: auto; display: flex; gap: 9px; flex: none; }

/* ---------- ② 组件适配 ---------- */

/* 统计卡补充（结构走原型 .stat-card） */
.stat-value small { font-size: 13px; font-weight: 600; color: var(--ink-2); margin-left: 3px; letter-spacing: 0; }
.hero-dark .stat-value small { color: rgba(255, 255, 255, .55); }
.s-src { font-size: 10.5px; color: var(--ink-3); margin-top: 3px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; gap: 5px; }
.s-src::before { content: ""; width: 3px; height: 3px; border-radius: 50%; background: currentColor; flex: none; opacity: .7; }
.hero-dark .s-src { color: rgba(255, 255, 255, .45); }

/* 表格框（原型为 card 内裸表格；本系统表格独立成卡） */
.tbl-wrap { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-soft); padding: 10px 22px 6px; overflow: hidden; }
.tbl { width: 100%; border-collapse: collapse; }
.td-main { font-weight: 600; color: var(--gray-800); }
.td-sub { font-size: 11.5px; color: var(--ink-3); margin-top: 2px; }
.td-time { color: var(--gray-400); font-size: 12px; white-space: nowrap; }
.link { color: var(--accent); cursor: pointer; font-weight: 600; }
@media (hover: hover) and (pointer: fine) {
    .link:hover { text-decoration: underline; }
}

/* 徽章（对齐原型 badge-s 视觉） */
.bdg { display: inline-flex; align-items: center; gap: 5px; padding: 2.5px 10px; border-radius: 999px; font-size: 11px; font-weight: 600; letter-spacing: .2px; background: var(--bg-2); color: var(--gray-500); white-space: nowrap; }
.bdg::before { display: none; }
.bdg .dot { width: 5px; height: 5px; border-radius: 50%; background: currentColor; display: inline-block; margin-right: 0; }
.bdg.blue { background: var(--blue-light); color: var(--blue); }
.bdg.green { background: var(--success-light); color: var(--success); }
.bdg.orange { background: var(--warning-light); color: var(--warning); }
.bdg.red { background: var(--danger-light); color: var(--danger); }
.bdg.purple { background: #F3EEFF; color: #7C5CFF; }
.bdg.teal { background: #E4F6F8; color: #0E9AA7; }
.bdg.gray { background: var(--bg-2); color: var(--gray-500); }

/* 分段选择器（对齐原型 sub-tabs 药丸样式） */
.seg { display: inline-flex; gap: 8px; flex-wrap: wrap; }
.seg > span { padding: 7px 18px; border: 1px solid var(--line-2); border-radius: 999px; font-size: 12.5px; color: var(--gray-500); cursor: pointer; background: #fff; font-weight: 500; transition: all .16s; }
.seg > span:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); font-weight: 600; }
.seg > span.on { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); font-weight: 700; }

/* 表单（输入控件对齐原型登录框输入样式） */
.field { margin-bottom: 16px; }
.field > label { display: block; color: var(--gray-600); font-size: 12.5px; margin-bottom: 8px; font-weight: 500; letter-spacing: .5px; }
.field > label em { color: var(--danger); font-style: normal; margin-left: 3px; }
.inp, .sel, .txa { width: 100%; background: var(--bg-2); border: 1px solid var(--line-2); color: var(--gray-700); padding: 10px 14px; border-radius: 12px; font-size: 13.5px; font-family: var(--font); outline: none; transition: border .2s, box-shadow .2s, background .2s; -webkit-appearance: none; appearance: none; }
.txa { min-height: 88px; resize: vertical; line-height: 1.6; }
.inp:focus, .sel:focus, .txa:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); background: #fff; }
.inp::placeholder, .txa::placeholder { color: var(--gray-400); }
.sel { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2393A6C9' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 34px; }
.hint { font-size: 11.5px; color: var(--ink-3); margin-top: 6px; line-height: 1.6; }

/* 进度 / 空态 / 分隔 / 键值 / 时间线 / 状态点 */
.progress { height: 6px; border-radius: 99px; background: var(--bg-2); overflow: hidden; }
.progress > i { display: block; height: 100%; border-radius: 99px; background: var(--grad); transition: width .6s cubic-bezier(.4, 0, .2, 1); }
.progress.green > i { background: linear-gradient(90deg, #0FA968, #34C77B); }
.progress.orange > i { background: linear-gradient(90deg, #E8853C, #F0A868); }
.empty { padding: 48px 20px; text-align: center; color: var(--ink-3); font-size: 13px; }
.empty .e-ico { margin-bottom: 10px; display: flex; justify-content: center; color: var(--gray-300); }
.divider { height: 1px; background: var(--line); margin: 18px 0; border: none; }
.kv { display: flex; flex-direction: column; gap: 11px; }
.kv-row { display: flex; gap: 12px; font-size: 13px; }
.kv-row > span { width: 112px; flex: none; color: var(--ink-3); }
.kv-row > b { font-weight: 600; color: var(--gray-800); }
.timeline { position: relative; display: flex; flex-direction: column; gap: 2px; }
.tl-item { position: relative; padding: 10px 10px 10px 26px; border-radius: 12px; transition: background .16s, transform .16s; }
.tl-item:hover { background: var(--bg-2); transform: translateX(3px); }
.tl-item::before { content: ""; position: absolute; left: 8px; top: 15px; width: 9px; height: 9px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 3.5px var(--accent-soft); }
.tl-item.done::before { background: #fff; border: 2px solid var(--success); box-shadow: none; width: 7px; height: 7px; }
.tl-item.now::before { box-shadow: 0 0 0 4px var(--accent-soft); }
.tl-item::after { content: ""; position: absolute; left: 12px; top: 27px; bottom: -5px; width: 1.5px; background: var(--line); }
.tl-item:last-child::after { display: none; }
.tl-t { font-size: 13.5px; font-weight: 600; color: var(--gray-800); }
.tl-s { font-size: 11.5px; color: var(--gray-400); margin-top: 3px; }
.sdot { display: inline-flex; align-items: center; }
.sdot::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--gray-400); }
.sdot.green::before { background: var(--success); }
.sdot.orange::before { background: var(--warning); }
.sdot.red::before { background: var(--danger); }
.sdot.blue::before { background: var(--blue); }

/* 侧栏兼容（旧页面引用的 sn-* 类 → 原型 nav-item 视觉） */
.sn-item { display: flex; align-items: center; gap: 11px; padding: 10px 13px; border-radius: 13px; color: var(--gray-600); font-size: 13.5px; font-weight: 500; cursor: pointer; transition: all .2s ease; white-space: nowrap; }
@media (hover: hover) and (pointer: fine) {
    .sn-item:hover { background: rgba(255, 255, 255, .8); color: var(--ink); }
}
.sn-item.on, .sn-item.active { background: #fff; color: var(--ink); box-shadow: var(--shadow-soft); font-weight: 600; }
.sn-item .sn-ico { width: 18px; display: flex; justify-content: center; color: var(--gray-500); flex: none; }
.sn-item.on .sn-ico { color: var(--ink); }
.sn-badge { margin-left: auto; font-size: 10.5px; font-weight: 600; padding: 1px 8px; border-radius: 999px; background: var(--bg-2); color: var(--ink-2); }
.sn-badge.red { background: var(--danger-light); color: var(--danger); }

/* 演示标识小签（顶栏） */
.chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border-radius: 999px; font-size: 11px; font-weight: 600; background: var(--bg-2); color: var(--gray-500); white-space: nowrap; }
.chip.demo { background: var(--warning-light); color: var(--warning); }

/* ---------- ③ 弹层（抽屉 / 弹窗 / Toast） ---------- */
.mask { position: fixed; inset: 0; background: rgba(41, 40, 38, .30); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); z-index: 600; opacity: 0; pointer-events: none; transition: opacity .22s cubic-bezier(.4, 0, .2, 1); }
.mask.show { opacity: 1; pointer-events: auto; }
.drawer { position: fixed; top: 0; right: 0; bottom: 0; width: 500px; max-width: 92vw; background: #fff; z-index: 610; box-shadow: -18px 0 60px rgba(41, 40, 38, .14); transform: translateX(100%); transition: transform .34s cubic-bezier(.4, 0, .2, 1); display: flex; flex-direction: column; }
.drawer.show { transform: none; }
.drawer-l { position: fixed; top: 0; left: 0; bottom: 0; width: 500px; max-width: 92vw; background: #fff; z-index: 615; box-shadow: 18px 0 60px rgba(41, 40, 38, .14); transform: translateX(-100%); transition: transform .34s cubic-bezier(.4, 0, .2, 1); display: flex; flex-direction: column; }
.drawer-l.show { transform: none; }
.modal { position: fixed; left: 50%; top: 50%; width: 540px; max-width: 92vw; max-height: 84vh; background: #fff; border-radius: var(--r-lg); box-shadow: 0 24px 80px rgba(41, 40, 38, .18); z-index: 620; transform: translate(-50%, -50%) scale(.97); opacity: 0; pointer-events: none; transition: transform .24s cubic-bezier(.2, .8, .2, 1), opacity .24s cubic-bezier(.2, .8, .2, 1); display: flex; flex-direction: column; overflow: hidden; }
.modal.show { transform: translate(-50%, -50%) scale(1); opacity: 1; pointer-events: auto; }
.layer-h { flex: none; display: flex; align-items: center; gap: 10px; padding: 18px 24px 14px; }
.layer-h .t { font-size: 16px; font-weight: 700; color: var(--gray-800); display: flex; align-items: center; gap: 8px; }
.layer-h .x { margin-left: auto; width: 30px; height: 30px; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: var(--ink-3); cursor: pointer; transition: all .18s; }
.layer-h .x:hover { background: var(--bg-2); color: var(--ink); }
.layer-b { flex: 1; overflow-y: auto; padding: 6px 24px 20px; }
.layer-f { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 9px; padding: 14px 24px; border-top: 1px solid var(--line); background: var(--gray-50); }
.toasts { position: fixed; top: 18px; left: 50%; transform: translateX(-50%); z-index: 700; display: flex; flex-direction: column; align-items: center; gap: 8px; pointer-events: none; }
.toast { display: flex; align-items: center; gap: 9px; padding: 10px 18px; border-radius: 13px; background: var(--dark); color: #fff; font-size: 12.5px; font-weight: 500; box-shadow: 0 12px 36px rgba(24, 30, 37, .28); animation: toastIn .3s cubic-bezier(.2, .8, .2, 1); }
.toast.out { animation: toastOut .22s cubic-bezier(.4, 0, .2, 1) forwards; }
.toast .ti { display: flex; color: #fff; }
.toast.ok .ti { color: #4ADE80; }
.toast.warn .ti { color: #FBBF24; }
.toast.err .ti { color: #F87171; }
@keyframes toastIn { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: none; } }
@keyframes toastOut { to { opacity: 0; transform: translateY(-8px); } }

/* ---------- ④ 新闻卡片 ---------- */
.news-head { display: flex; align-items: center; gap: 10px; margin: 24px 0 14px; }
.news-head:first-child { margin-top: 0; }
.news-head .cnt { font-size: 11.5px; color: var(--gray-400); }
.news-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 16px; }
.news-card { background: #fff; border: 1px solid var(--line); border-radius: var(--r-md); padding: 18px 20px; display: flex; flex-direction: column; gap: 8px; cursor: pointer; box-shadow: var(--shadow-soft); transition: all .22s; }
@media (hover: hover) and (pointer: fine) {
    .news-card:hover { box-shadow: var(--shadow); transform: translateY(-2px); border-color: var(--line-2); }
}
.news-card h3 { font-size: 14px; font-weight: 700; line-height: 1.55; color: var(--gray-800); letter-spacing: -.1px; white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.news-card .info { font-size: 11.5px; color: var(--ink-3); display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.news-card .summary { font-size: 12.5px; color: var(--gray-500); line-height: 1.65; white-space: normal; display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* ---------- ⑤ 登录页补充 ---------- */
.login-box .sub-tabs { margin-bottom: 0; }
.login-box .sel { margin-top: 0; }
.login-box .login-pills { display: flex; gap: 8px; }
.login-box .login-pills .st { padding: 9px 22px; border: 1px solid var(--line-2); border-radius: 12px; font-size: 13px; color: var(--gray-600); cursor: pointer; background: var(--bg-2); font-weight: 500; transition: all .16s; flex: 1; text-align: center; }
.login-box .login-pills .st:hover { border-color: var(--accent); color: var(--accent); }
.login-box .login-pills .st.on { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); font-weight: 700; }

/* ---------- ⑥ AI 助手补充 ---------- */
.ai-body { flex: 1; overflow-y: auto; padding: 16px 18px; background: var(--bg-page); }
.ai-msg .src { font-size: 10.5px; color: var(--ink-3); margin-top: 6px; }
.ai-in { display: flex; gap: 8px; padding: 13px 16px; border-top: 1px solid var(--line); background: #fff; }
.ai-in input { flex: 1; background: var(--bg-2); border: 1px solid var(--line-2); border-radius: 12px; padding: 10px 14px; font-size: 13px; color: var(--gray-700); outline: none; font-family: var(--font); transition: border .2s, box-shadow .2s, background .2s; }
.ai-in input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); background: #fff; }
.ai-in button { background: var(--ink); color: #fff; border: none; border-radius: 12px; padding: 10px 18px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: var(--font); transition: all .18s; }
.ai-in button:hover { transform: translateY(-1px); box-shadow: 0 8px 22px rgba(41, 40, 38, .24); }
.ai-typing .bubble::after { content: "…"; animation: blink 900ms steps(2) infinite; display: inline-block; }
@keyframes blink { 50% { opacity: 0; } }

/* 全局搜索行 */
#gsR .sn-item { border-radius: 10px; }
#gsR .sn-item:hover { background: var(--bg-2); }

/* ---------- ⑦ 壳层细节补充 ---------- */
.logo-mark svg { width: 20px; height: 20px; display: block; }
.nav-head { display: flex; align-items: center; }
.nav-item { position: relative; }
/* 政策库列表：名称多露字（两行） */
.td-main.pl-lib-title{
  max-width:none;
  white-space:normal;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  line-clamp:2;
  overflow:hidden;
  text-overflow:ellipsis;
  line-height:1.4;
}
td:has(.pl-lib-title){
  max-width:none;
  white-space:normal;
  overflow:hidden;
}
/* 政策库列表：适用阶段截断时悬停看全 */
.pl-lib-stage{
  display:inline-block;
  max-width:100%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  vertical-align:bottom;
}

