  /* :root 已由增强层覆盖 */
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
  html,body{margin:0;padding:0;background:var(--bg);}
  html{background:var(--bg);width:100%;min-height:100%;overscroll-behavior:none;}
  body{
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
    background:var(--bg); color:var(--text); line-height:1.55;
    padding-bottom:86px; -webkit-font-smoothing:antialiased;
  }
  /* ===== 应用外壳：左侧栏 + 主区（参照消防验收数智化工具 V3.3 视觉） ===== */
  .app-shell{display:flex;min-height:100vh;background:var(--bg);}
  .sidebar{flex:0 0 248px;width:248px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;align-self:flex-start;height:100vh;}
  .side-logo{display:flex;align-items:center;gap:10px;padding:18px 18px 14px;border-bottom:1px solid var(--line);}
  .side-logo .logo-ic{font-size:26px;line-height:1;}
  .side-logo .logo-tx{font-size:13px;line-height:1.35;color:var(--text);font-weight:600;}
  .side-logo .logo-tx b{color:var(--blue);font-weight:800;}
  .side-nav{flex:1;padding:10px;display:flex;flex-direction:column;gap:4px;overflow-y:auto;}
  .nav-item{display:flex;align-items:center;gap:11px;width:100%;background:none;border:none;border-radius:10px;padding:11px 12px;font-size:14px;color:#0f172a;cursor:pointer;text-align:left;font-weight:600;font-family:inherit;transition:background .12s,color .12s;}
  .nav-item .ni-ic{font-size:18px;line-height:1;}
  .nav-item:hover{background:#f1f5f9;color:#0f172a;}
  .nav-item.active{background:#eff6ff;color:#0f172a;box-shadow:inset 3px 0 0 var(--blue);}
  .nav-group{color:#64748b;}
  .side-foot{padding:13px 18px;font-size:11px;color:#94a3b8;border-top:1px solid var(--line);line-height:1.6;}
  .app-main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:100vh;}
  header{position:sticky;top:0;z-index:30;background:#fff;color:var(--text);padding:12px 18px;border-bottom:1px solid var(--line);box-shadow:0 1px 3px rgba(15,23,42,.04);}
  header .h-title{font-size:15px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:8px;}
  header .h-sub{font-size:11.5px;color:var(--muted);margin-top:2px;}
  /* 左栏功能页面统一铺满整个网页（去除居中 980/1180 限制） */
  main#view{flex:1;width:100%;max-width:100%;margin:0;padding:18px;}
  .app{max-width:none;margin:0 auto;padding:0 14px;}
  main#view{padding-top:14px;max-width:100%;margin:0;}
  /* 工作台仪表盘铺满 */
  main#view.dash-wide{max-width:100%;padding:18px;}
  main#view:has(> .dash-top){max-width:100%;padding:18px;}
  .dash-wide .dash-top, .dash-wide .panel{max-width:none;}
  main#view:has(> .dash-top) .dash-top, main#view:has(> .dash-top) .panel{max-width:none;}

  /* tabbar */
  .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:none;background:#fff;border-top:1px solid var(--line);box-shadow:0 -2px 12px rgba(15,23,42,.06);padding:6px 4px calc(6px + env(safe-area-inset-bottom));}
  .tabbar button{flex:1;background:none;border:none;color:var(--muted);font-size:11.5px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;cursor:pointer;}
  .tabbar button .ic{font-size:22px;line-height:1;}
  .tabbar button.active{color:var(--blue);font-weight:700;}
  @media(max-width:820px){
    .app-shell{flex-direction:column;min-height:auto;width:100%;max-width:100%;}
    .sidebar{display:none;}
    .app-main{min-height:auto;width:100%;max-width:100%;contain:layout style;}
    main#view{padding:12px;padding-bottom:calc(76px + env(safe-area-inset-bottom));width:100%;max-width:100%;}
    .tabbar{display:flex;contain:layout style;width:100%;}
    html,body{width:100%;max-width:100%;overflow-x:hidden;}
    .stat-grid,.dash-top,.dash-row,.dash-acts,.panel,.card,.stat-card,.dash-act{width:100%;max-width:100%;box-sizing:border-box;}
    *{backdrop-filter:none !important;-webkit-backdrop-filter:none !important;}
    .tabbar,.app-main,main#view,.side-nav{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
    /* 手机端规范阅读页：文字铺满全屏，取消边框/卡片式外框 */
    main#view:has(.lib-doc-body){padding-left:0;padding-right:0;padding-top:0;}
    main#view:has(.lib-doc-full){padding-left:0;padding-right:0;padding-top:0;}
    .lib-doc-body,.lib-doc-full{padding:0;margin:0;width:100%;max-width:100%;box-sizing:border-box;}
    .lib-doc-body .cl-ch,.lib-doc-body .cl-sec,.lib-doc-body .cl-sub,.lib-doc-body .cl-subsub,
    .lib-doc-body .cl-sec .cl-item,.lib-doc-body .cl-sub .cl-item,.lib-doc-body .cl-subsub .cl-item
    {margin-left:0;margin-right:0;padding-left:0;padding-right:0;border-left:none;border-right:none;}
    .lib-doc-body .cl-item,.lib-doc-body .cl-sec .cl-item,.lib-doc-body .cl-sub .cl-item,.lib-doc-body .cl-subsub .cl-item{border:none;border-radius:0;padding:8px 10px;margin-bottom:4px;background:transparent;box-shadow:none;}
    .lib-doc-body .cl-ch-h,.lib-doc-body .cl-sec-h,.lib-doc-body .cl-sub-h,.lib-doc-body .cl-subsub-h{border-radius:0;margin-left:0;margin-right:0;padding-left:10px;padding-right:10px;}
    .lib-doc-body .cl-text{font-size:15px;line-height:1.95;color:#1e293b;width:100%;padding:0;}
    .lib-doc-body .lib-table-wrap{border-radius:0;border-left:none;border-right:none;margin-left:0;margin-right:0;width:100%;}
    .lib-doc-body .lib-img{display:block;width:100%;max-width:100%;border-radius:6px;padding:0;margin:8px 0;box-sizing:border-box;}
    .lib-doc-body .lib-imgs{display:flex;flex-direction:column;gap:10px;margin:10px 0;}
    .lib-doc-body .lib-cell-img{display:block;width:100%;max-width:100%;height:auto;margin:6px 0;padding:0;}
    .lib-doc-body .lib-cell-imgs{display:flex;flex-direction:column;gap:8px;}
    /* 手机端图片加载失败占位：占满宽度并给出文字提示 */
    .lib-doc-body .lib-img.img-err,.lib-doc-body .lib-cell-img.img-err{width:100%;min-height:120px;background:#fef2f2;border:2px dashed #fca5a5;display:flex;align-items:center;justify-content:center;color:#b91c1c;font-size:13px;padding:12px;text-align:center;box-sizing:border-box;}
  }
  /* 图片加载失败占位：至少显示红色虚线框和提示，便于排查 */
  .lib-img.img-err,.lib-cell-img.img-err{min-width:120px;min-height:80px;background:#fef2f2;border:2px dashed #fca5a5;display:inline-block;object-fit:none;}

  /* generic */
  .sec-title{font-size:14px;font-weight:700;margin:18px 4px 10px;display:flex;align-items:center;gap:7px;color:#1e293b;}
  .sec-title .dot{width:7px;height:7px;border-radius:50%;background:var(--blue);}
  .hint{font-size:12px;color:var(--muted);margin:0 4px 10px;}
  .btn{display:inline-flex;align-items:center;gap:6px;background:var(--blue);color:#fff;border:none;border-radius:10px;padding:10px 14px;font-size:14px;font-weight:700;cursor:pointer;}
  .btn.block{width:100%;justify-content:center;}
  .btn.ghost{background:#f1f5f9;color:#334155;}
  .btn.danger{background:var(--danger);}
  .btn.sm{padding:7px 11px;font-size:12.5px;}
  .btn-row{display:flex;gap:10px;margin:12px 4px;}

  /* dashboard stat（参照消防验收数智化工具：彩色顶边卡片） */
  .stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:4px;}
  .stat-grid.sg-3{grid-template-columns:repeat(3,1fr);}
  .stat-grid.sg-2{grid-template-columns:repeat(2,1fr);}
  @media(max-width:560px){ .stat-grid.sg-3,.stat-grid.sg-2{grid-template-columns:1fr;} }
  .stat-card{background:var(--card);border-radius:12px;box-shadow:var(--shadow);padding:16px;border-top:3px solid var(--blue);}
  .stat-card.blue{border-top-color:var(--blue);} .stat-card.blue .v{color:var(--blue);}
  .stat-card.red{border-top-color:var(--danger);} .stat-card.red .v{color:var(--danger);}
  .stat-card.green{border-top-color:var(--ok);} .stat-card.green .v{color:var(--ok);}
  .stat-card.orange{border-top-color:var(--warn);} .stat-card.orange .v{color:var(--warn);}
  .stat-card .v{font-size:28px;font-weight:800;color:var(--blue);line-height:1.1;}
  .stat-card .v.sm{font-size:19px;}
  .stat-card .l{font-size:12.5px;color:var(--muted);margin-top:6px;font-weight:600;}
  .stat-card .sub{font-size:11px;color:var(--muted);margin-top:3px;}
  .stat-card .trend{font-size:11px;margin-top:6px;font-weight:700;}
  .stat-card .trend.up{color:var(--ok);} .stat-card .trend.down{color:var(--danger);} .stat-card .trend.flat{color:var(--muted);font-weight:500;}
  .dash-top{display:flex;flex-direction:column;gap:14px;align-items:stretch;margin-bottom:4px;}
  .dash-top .stat-grid{flex:1 1 300px;margin-bottom:0;min-width:240px;}
  .dash-row{display:flex;flex-wrap:wrap;gap:14px;width:100%;align-items:stretch;}
  .dash-row .dash-act{flex:1 1 0;min-width:150px;}
  .dash-row .stat-grid{flex:1 1 100%;min-width:0;margin-bottom:0;}
  .dash-act{flex:1 1 180px;min-width:150px;background:var(--card);border-radius:12px;box-shadow:var(--shadow);padding:14px 16px;display:flex;align-items:center;gap:12px;cursor:pointer;border-top:3px solid var(--blue);transition:.15s;}
  .dash-act:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(2,8,23,.12);}
  .dash-act.act-new{border-top-color:var(--ok);}
  .dash-act .da-ico{font-size:24px;width:42px;height:42px;display:flex;align-items:center;justify-content:center;background:#eff6ff;border-radius:10px;flex:0 0 auto;}
  .dash-act.act-new .da-ico{background:#ecfdf5;}
  .dash-act.act-hazards{border-top-color:var(--danger);}
  .dash-act.act-hazards .da-ico{background:#fef2f2;}
  .dash-act.act-kb{border-top-color:#6366f1;}
  .dash-act.act-kb .da-ico{background:#eef2ff;}
  .dash-acts{display:flex;gap:14px;flex:1 1 360px;min-width:300px;align-items:stretch;flex-wrap:wrap;}
  .dash-acts .dash-act{flex:1 1 0;min-width:150px;}
  .dash-act .da-t{font-size:15px;font-weight:800;color:#0f172a;}
  .dash-act .da-s{font-size:11px;color:var(--muted);margin-top:2px;}
  @media(max-width:560px){ .dash-top{flex-direction:column;} .dash-row{flex-direction:column;} .dash-act{flex:1 1 auto;} .dash-acts{flex-direction:column;} }

  /* panel & rank */
  .panel{background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:14px;margin:12px 0;}
  .panel-h{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:6px;margin-bottom:10px;color:#1e293b;}
  .rank-item{display:flex;align-items:center;gap:10px;margin-bottom:9px;}
  .rank-item .idx{width:20px;height:20px;border-radius:50%;background:var(--chip);color:var(--blue-d);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none;}
  .rank-item .idx.top{background:var(--blue);color:#fff;}
  .rank-item .name{flex:1;font-size:13px;min-width:0;}
  .rank-item .name .t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .rank-item .name .bar{height:7px;border-radius:4px;background:#eef2f7;margin-top:5px;overflow:hidden;}
  .rank-item .name .bar > i{display:block;height:100%;background:linear-gradient(90deg,#3b82f6,#2563eb);border-radius:4px;}
  .rank-item .num{font-size:12.5px;font-weight:700;color:var(--text);flex:none;}
  .tag{display:inline-block;font-size:10.5px;background:#fef3c7;color:#92400e;border-radius:6px;padding:1px 6px;margin-left:6px;vertical-align:middle;}
  .empty{text-align:center;color:var(--muted);font-size:13px;padding:30px 10px;}

  /* project / session */
  .proj-card{background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:14px;margin-bottom:12px;border-left:4px solid var(--blue);cursor:pointer;}
  .proj-card .p-name{font-size:15px;font-weight:700;}
  .proj-card .p-meta{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.5;}
  .proj-card .p-foot{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:12px;color:var(--muted);}
  .chip-count{background:var(--chip);color:var(--blue-d);border-radius:20px;padding:2px 10px;font-weight:700;font-size:11.5px;}
  .session-item{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-bottom:9px;cursor:pointer;}
  .session-item .s-title{font-size:13.5px;font-weight:600;}
  .session-item .s-meta{font-size:11.5px;color:var(--muted);margin-top:2px;}
  .session-item .s-go{color:var(--blue);font-size:13px;flex:none;}

  /* inspect */
  .cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;}
  .cat-card{background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:16px 12px;text-align:center;cursor:pointer;border:1px solid transparent;transition:.15s;}
  .cat-card:active{transform:scale(.97);}
  .cat-card:hover{border-color:var(--chip-b);transform:translateY(-2px);}
  .cat-card .ic{font-size:30px;line-height:1;}
  .cat-card .nm{font-size:14px;font-weight:600;margin-top:8px;}
  .cat-card .ct{font-size:11px;color:var(--muted);margin-top:3px;}
  .cat-card.popular{background:linear-gradient(180deg,#f8fbff,#fff);border-color:var(--chip-b);}
  .cat-card.popular .ct{color:var(--blue);font-weight:600;}
  .inspect-bar{position:sticky;top:62px;z-index:20;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;gap:8px;align-items:center;margin:6px 0 12px;box-shadow:var(--shadow);}
  .inspect-bar .ttl{flex:1;min-width:0;}
  .inspect-bar .ttl .a{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .inspect-bar .ttl .b{font-size:11px;color:var(--muted);}
  .inspect-bar .sp{display:flex;gap:8px;flex:none;}

  /* clause */
  .back{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:7px 12px;font-size:13px;cursor:pointer;box-shadow:var(--shadow);margin:6px 0;color:#334155;}
  .cat-head{font-size:18px;font-weight:800;margin:6px 2px 2px;}
  .cat-sum{font-size:12.5px;color:var(--muted);margin:0 2px 14px;}
  .clause{background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:14px;margin-bottom:14px;border-left:4px solid var(--blue);}
  .clause .c-no{display:inline-block;background:var(--blue);color:#fff;font-size:12px;font-weight:700;border-radius:7px;padding:2px 9px;margin-bottom:8px;}
  .clause .c-std{font-size:14.5px;font-weight:600;line-height:1.6;}
  .c-block{margin-top:10px;}
  .c-label{font-size:12px;font-weight:700;color:var(--blue-d);margin-bottom:4px;display:flex;align-items:center;gap:5px;}
  .c-norm{font-size:12.5px;color:#334155;background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-top:5px;}
  .c-method{font-size:12.5px;color:#475569;}
  .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;}
  .chip{background:var(--chip);border:1px solid var(--chip-b);color:var(--blue-d);font-size:12.5px;border-radius:20px;padding:7px 13px;cursor:pointer;transition:.12s;user-select:none;}
  .chip:active{transform:scale(.95);}
  .chip:hover{background:var(--blue);color:#fff;border-color:var(--blue);}
  .c-advice{font-size:12.5px;color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;padding:8px 10px;margin-top:6px;}
  details{margin-top:10px;}
  details summary{cursor:pointer;font-size:12.5px;color:var(--blue-d);font-weight:600;list-style:none;}
  details summary::-webkit-details-marker{display:none;}
  details summary::before{content:"▸ ";}
  details[open] summary::before{content:"▾ ";}

  /* general hazard */
  .gen-box{background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:12px;margin-top:14px;}
  .gen-box .gh{font-size:12.5px;font-weight:700;color:#c2410c;display:flex;align-items:center;gap:5px;margin-bottom:8px;}
  .gen-box textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 10px;font-size:13px;resize:vertical;min-height:60px;outline:none;font-family:inherit;}
  .gen-box .g-tools{display:flex;gap:8px;margin-top:8px;}

  /* record drawer */
  .overlay{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:50;}
  .overlay.show{display:block;}
  /* 关键修复：抽屉关闭时必须 display:none 彻底移出布局，否则 position:fixed + translateX(100%)
     会永久在视口右侧制造横向溢出区，而 body{overflow-x:hidden} 裁切不了 fixed 溢出 → WebView 黑边。
     关闭态 display:none 根除溢出；打开态 display:flex + 滑入动画保留手感。 */
  .drawer{position:fixed;top:0;right:0;height:100%;width:min(440px,94vw);background:var(--bg);z-index:60;transform:translateX(100%);transition:transform .22s;display:none;flex-direction:column;box-shadow:-6px 0 24px rgba(0,0,0,.18);}
  .drawer.open{display:flex;transform:translateX(0);animation:hz-drawer-in .22s ease both;}
  @keyframes hz-drawer-in{from{transform:translateX(100%)}to{transform:translateX(0)}}
  .drawer .d-head{background:var(--danger);color:#fff;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;}
  .drawer .d-head.hz{background:var(--blue);}
  .drawer .d-head h3{margin:0;font-size:15px;}
  .drawer .d-head button{background:rgba(255,255,255,.2);border:none;color:#fff;border-radius:8px;padding:5px 10px;font-size:13px;cursor:pointer;}
  .drawer .d-body{flex:1;overflow:auto;padding:12px 14px;}
  .drawer .d-foot{padding:10px 14px;border-top:1px solid var(--line);display:flex;gap:10px;background:#fff;flex-wrap:wrap;}
  .drawer .d-foot button{flex:1 1 auto;border:none;border-radius:10px;padding:11px 8px;font-size:13.5px;font-weight:700;cursor:pointer;white-space:nowrap;}
  .btn-report{background:var(--blue);color:#fff;}
  .btn-clear{background:#f1f5f9;color:#475569;}
  .btn-rectify{background:linear-gradient(135deg,#e8a33c,#d97a1e);color:#fff;box-shadow:0 8px 20px -8px rgba(217,122,30,.7);}
  .rec-item{background:#fff;border-radius:12px;box-shadow:var(--shadow);padding:11px 12px;margin-bottom:11px;border-left:4px solid var(--danger);}
  .rec-item.done{border-left-color:var(--ok);opacity:.92;}
  .rec-item .r-top{font-size:12.5px;font-weight:700;color:var(--danger);display:flex;justify-content:space-between;gap:8px;}
  .rec-item .rec-seq{font-size:11.5px;color:#4f46e5;font-weight:800;background:#eef2ff;border-radius:6px;padding:1px 7px;margin-right:4px;vertical-align:1px;white-space:nowrap;}
  .rec-item .rec-time{font-size:11px;color:#94a3b8;font-weight:400;white-space:nowrap;flex:none;}
  .rec-item.done .r-top{color:var(--ok);}
  .rec-item .r-std{font-size:12.5px;color:#334155;margin:4px 0;}
  .rec-item .r-prob{font-size:13px;font-weight:600;margin:3px 0;}
  .rec-item .r-note{width:100%;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:12.5px;margin-top:6px;resize:vertical;min-height:38px;outline:none;font-family:inherit;}
  .rec-item .r-tools{display:flex;gap:8px;align-items:center;margin-top:7px;flex-wrap:wrap;}
  .rec-item .r-tools button{font-size:12px;border:1px solid var(--line);background:#f8fafc;border-radius:8px;padding:5px 10px;cursor:pointer;color:#334155;}
  .rec-item .r-tools .del{color:var(--danger);border-color:#fecaca;}
  .rec-item .r-tools .fix{color:var(--ok);border-color:#bbf7d0;}
  .rec-item img.thumb{width:64px;height:64px;object-fit:cover;border-radius:8px;margin-top:7px;border:1px solid var(--line);}
  .type-badge{font-size:10px;font-weight:700;border-radius:6px;padding:1px 6px;flex:none;}
  .type-badge.major{background:#fee2e2;color:#b91c1c;}
  .type-badge.normal{background:#fef9c3;color:#a16207;}
  /* 检查记录「跳转检查方向」按钮 */
  .rec-item .r-tools .jump{color:#1d4ed8;border-color:#bfdbfe;background:#eff6ff;}
  .rec-item.gen{border-left-color:#eab308;}
  .rec-item.gen .r-top{color:#a16207;}
  /* 检查记录：隐患性质选择（一般=黄 / 重大=红） */
  .rec-item .r-type-sel{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap;}
  .rec-item .r-type-sel .rt{border:1px solid #e2e8f0;background:#fff;color:#64748b;border-radius:8px;padding:5px 11px;font-size:12px;font-weight:700;cursor:pointer;}
  .rec-item .r-type-sel .rt:hover{border-color:#94a3b8;}
  .rec-item .r-type-sel .rt.on-y{background:#fef9c3;color:#a16207;border-color:#fde68a;}
  .rec-item .r-type-sel .rt.on-r{background:#fee2e2;color:#b91c1c;border-color:#fecaca;}
  /* 隐患库卡片记录选择（一般=黄 / 重大=红） */
  .hz-record-box{margin-top:12px;padding:10px 12px;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;}
  .hz-record-h{font-size:13px;font-weight:700;color:#0f172a;margin-bottom:8px;}
  .hz-record-btns{display:flex;gap:10px;flex-wrap:wrap;}
  .hz-btn{border:none;border-radius:9px;padding:9px 14px;font-size:13px;font-weight:700;cursor:pointer;transition:.12s;}
  .hz-btn.hz-general{background:#fef9c3;color:#a16207;border:1px solid #fde68a;}
  .hz-btn.hz-general:hover{background:#fef08a;}
  .hz-btn.hz-major{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca;}
  .hz-btn.hz-major:hover{background:#fecaca;}
  .hz-btn.hz-save{background:#2563eb;color:#fff;}
  .hz-btn.hz-save:hover{filter:brightness(1.06);}
  .hz-btn.hz-cancel{background:#f1f5f9;color:#475569;}
  /* 新增自定义隐患 */
  .hz-add-wrap{margin-top:14px;}
  .hz-add-btn{width:100%;border:1px dashed #94a3b8;background:#f8fafc;color:#475569;font-size:13px;font-weight:700;padding:10px;border-radius:10px;cursor:pointer;}
  .hz-add-btn:hover{border-color:#2563eb;color:#2563eb;}
  .hz-add-form{background:#f8fafc;border:1px solid #cbd5e1;border-radius:10px;padding:10px;}
  .hz-add-ta{width:100%;min-height:62px;border:1px solid #cbd5e1;border-radius:8px;padding:8px;font-size:13px;font-family:inherit;resize:vertical;outline:none;}
  .hz-add-btns{display:flex;gap:8px;margin-top:8px;}
  .hz-add-btns .hz-btn{flex:1;}
  /* 隐患卡片编辑按钮 */
  .item-card .i-row{display:flex;align-items:flex-start;gap:6px;justify-content:space-between;}
  .item-card .i-edit{flex:0 0 auto;border:1px solid #e2e8f0;background:#fff;color:#64748b;border-radius:7px;width:26px;height:26px;font-size:13px;cursor:pointer;line-height:1;padding:0;}
  .item-card .i-edit:hover{color:#2563eb;border-color:#2563eb;}
  .item-card .i-std[contenteditable="true"]{outline:2px solid #2563eb;background:#fff;padding:2px 4px;border-radius:6px;}
  /* 隐患卡片：右侧操作按钮组（编辑/删除整条隐患） */
  .item-card .i-row{align-items:flex-start;}
  .item-card .i-main{display:flex;align-items:flex-start;gap:7px;flex-wrap:wrap;min-width:0;flex:1;}
  .item-card .i-actions{display:flex;gap:5px;flex:0 0 auto;margin-left:6px;}
  .item-card .i-del{border-color:#fecaca;color:#ef4444;}
  .item-card .i-del:hover{background:#fef2f2;color:#b91c1c;border-color:#fca5a5;}
  /* 隐患行为（标题下方小按钮）项：每条可编辑/删除，末尾可新增 */
  .item-card .i-chips{gap:5px 4px;}
  .item-card .i-chips .chip-ct{display:inline-flex;align-items:center;gap:1px;vertical-align:top;}
  .item-card .i-chips .chip-ct .chip{margin:0;}
  .chip-mini{flex:0 0 auto;width:19px;height:19px;border:1px solid #e2e8f0;background:#fff;color:#94a3b8;border-radius:50%;font-size:10px;line-height:1;padding:0;cursor:pointer;}
  .chip-mini:hover{color:#2563eb;border-color:#2563eb;}
  .chip-mini.chip-del:hover{color:#ef4444;border-color:#fecaca;}
  .chip-add{flex:0 0 auto;border:1px dashed #94a3b8;background:#f8fafc;color:#475569;font-size:11px;font-weight:700;border-radius:20px;padding:5px 10px;cursor:pointer;}
  .chip-add:hover{border-color:#2563eb;color:#2563eb;}
  .hz-add-form-inline{display:flex;width:100%;gap:6px;margin-top:5px;align-items:stretch;flex-wrap:wrap;}
  .hz-add-form-inline .hz-add-ta{min-height:46px;flex:1;min-width:160px;}

  /* search modal */
  .modal{position:fixed;inset:0;z-index:60;display:none;align-items:flex-end;justify-content:center;}
  .modal.show{display:flex;}
  .modal .sheet{background:#fff;width:min(640px,100%);max-height:88vh;border-radius:18px 18px 0 0;display:flex;flex-direction:column;box-shadow:0 -6px 24px rgba(0,0,0,.2);animation:up .2s;}
  @media(min-width:680px){.modal{align-items:center;}.modal .sheet{border-radius:18px;max-height:84vh;}}
  @keyframes up{from{transform:translateY(20px);opacity:.6}to{transform:none;opacity:1}}
  .modal .m-head{padding:14px 16px;border-bottom:1px solid var(--line);}
  .modal .m-head .t{font-size:15px;font-weight:800;display:flex;justify-content:space-between;align-items:center;}
  .modal .m-head .t button{background:#f1f5f9;border:none;border-radius:8px;padding:5px 11px;cursor:pointer;font-size:13px;}
  .modal .m-note{font-size:11.5px;color:var(--ok);margin-top:6px;display:flex;align-items:center;gap:5px;}
  .search-box{display:flex;gap:8px;margin-top:10px;}
  .search-box input{flex:1;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14px;outline:none;}
  .search-box input:focus{border-color:var(--blue);}
  .search-box button{background:var(--blue);color:#fff;border:none;border-radius:10px;padding:0 16px;font-weight:700;cursor:pointer;}
  .modal .m-body{overflow:auto;padding:12px 16px 20px;flex:1;min-height:0;}
  .sr{background:#f8fafc;border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-bottom:10px;}
  .sr .sr-cat{font-size:11.5px;color:var(--blue);font-weight:700;}
  .sr .sr-std{font-size:13px;font-weight:600;margin:3px 0;}
  .sr .sr-hit{font-size:12.5px;color:#334155;margin-top:4px;background:#fff;border-radius:7px;padding:6px 8px;border:1px solid var(--line);}
  .sr .sr-hit b{color:var(--danger);}
  .quick{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px;}
  .quick span{font-size:12px;background:#eef2ff;color:var(--blue-d);border-radius:14px;padding:5px 11px;cursor:pointer;}

  /* generic modal */
  .mask{position:fixed;left:0;top:0;width:100%;height:100%;z-index:70;background:rgba(15,23,42,.5);display:none;align-items:center;justify-content:center;padding:18px;overscroll-behavior:contain;}
  .mask.show{display:flex;}
  .mbox{background:#fff;border-radius:16px;width:min(460px,100%);max-height:88vh;overflow:auto;padding:16px;box-shadow:0 12px 40px rgba(0,0,0,.25);}
  .mbox h3{margin:0 0 12px;font-size:16px;}
  .form-row{margin-bottom:11px;}
  .form-row label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px;}
  .form-row input,.form-row select,.form-row textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 10px;font-size:13.5px;outline:none;font-family:inherit;}
  .form-row input:focus,.form-row select:focus,.form-row textarea:focus{border-color:var(--blue);}
  .mbox .mb-foot{display:flex;gap:10px;margin-top:6px;}

  .toast{position:fixed;left:50%;bottom:100px;transform:translateX(-50%);background:rgba(15,23,42,.9);color:#fff;padding:9px 16px;border-radius:10px;font-size:13px;z-index:90;opacity:0;transition:.2s;pointer-events:none;}
  .toast.show{opacity:1;}
/* 资料库 */
.lib-rel{margin:14px 0 4px;background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px;}
.lib-rel .lr-head{font-weight:700;font-size:14px;color:#0f172a;display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.lib-rel .lr-head small{font-weight:400;font-size:11px;color:var(--muted);}
.lib-rel-card{display:flex;align-items:center;gap:8px;padding:9px 10px;background:#fff;border:1px solid var(--line);border-radius:9px;margin-bottom:7px;cursor:pointer;}
.lib-rel-card:hover{border-color:var(--blue);}
.lib-rel-card .lic-ic{font-size:16px;}
.lib-rel-card .lic-t{flex:1;font-size:13px;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lib-rel-card .lic-go{font-size:12px;color:var(--blue);white-space:nowrap;}
.lib-rel-empty{font-size:12px;color:var(--muted);padding:4px 0;}
.lib-intro{font-size:13px;color:#475569;line-height:1.7;margin-bottom:12px;}
.lib-card{background:#fff;border:1px solid var(--line);border-radius:11px;padding:12px 13px;margin-bottom:10px;cursor:pointer;transition:.15s;}
.lib-card:hover{border-color:var(--blue);box-shadow:0 4px 14px rgba(37,99,235,.08);}
.lib-card-t{font-weight:700;font-size:14px;color:#0f172a;line-height:1.5;}
.lib-card-m{margin:7px 0;display:flex;gap:6px;flex-wrap:wrap;}
.lib-card-cats{display:flex;gap:5px;flex-wrap:wrap;}
.cat-chip,.tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:20px;background:#eef2ff;color:#4338ca;}
.tag.grey{background:#f1f5f9;color:#475569;}
.lib-back{margin-bottom:10px;}
.lib-back button{background:none;border:1px solid var(--line);color:var(--blue);padding:5px 12px;border-radius:8px;cursor:pointer;font-size:13px;}
.lib-doc-head{font-weight:700;font-size:15px;color:#0f172a;margin-bottom:8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.lib-doc{white-space:pre-wrap;line-height:1.8;font-size:13.5px;color:#1e293b;background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px;max-height:56vh;overflow:auto;}
.lib-kw{font-size:13px;color:var(--muted);margin:4px 0;}
.lib-doc mark{background:#fde68a;padding:1px 2px;border-radius:3px;color:#7c2d12;}
.inspect-bar .sp{flex-wrap:wrap;}

  /* ===== 三栏检查布局 ===== */
  .insp-top .insp-title{font-size:14px;font-weight:700;flex:1;min-width:130px;}
  .insp3{display:grid;grid-template-columns:208px minmax(0,1fr) 360px;gap:12px;align-items:start;}
  .insp-left{background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:8px;position:sticky;top:82px;max-height:calc(100vh - 98px);overflow:auto;}
  .dir-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:10px;cursor:pointer;font-size:13px;color:#334155;margin-bottom:3px;transition:.12s;}
  .dir-item:hover{background:#f1f5f9;}
  .dir-item .ic{font-size:17px;flex:none;}
  .dir-item.active{background:var(--chip);color:var(--blue-d);font-weight:700;}
  .dir-sep{height:1px;background:var(--line);margin:8px 4px;}
  .dir-item.gen{background:#fff7ed;color:#c2410c;font-weight:700;margin-top:2px;}
  .dir-item.gen.active{background:#ffedd5;}
  .insp-mid{background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:13px;min-height:200px;}
  .insp-right{background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:13px;position:sticky;top:82px;max-height:calc(100vh - 98px);overflow:auto;}
  .insp-right-btn{display:none;}
  /* 检查页 / 法规库 手机端固定浮层按钮（默认隐藏，仅手机端显示） */
  .insp-fab{display:none;position:fixed;right:14px;bottom:92px;z-index:45;flex-direction:column;gap:10px;align-items:flex-end;}
  .law-toc-fab{display:none;position:fixed;right:14px;bottom:92px;z-index:45;width:44px;height:44px;border-radius:50%;border:none;background:var(--blue);color:#fff;font-size:20px;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(37,99,235,.35);cursor:pointer;}
  .fab{width:44px;height:44px;border-radius:50%;border:none;background:var(--blue);color:#fff;font-size:18px;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(37,99,235,.35);cursor:pointer;flex:0 0 auto;}
  .fab:active{transform:scale(.94);}
  /* 全局回顶按钮 top↑：固定左下角，PC + 手机常驻所有功能页（统一替代各功能独立回顶按钮） */
  .top-fab{position:fixed;left:14px;bottom:14px;z-index:48;display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:800;color:#fff;background:var(--blue);border:none;border-radius:22px;padding:8px 14px;cursor:pointer;box-shadow:0 3px 10px rgba(37,99,235,.35);font-family:inherit;}
  .top-fab:active{transform:scale(.96);}
  .mid-head{font-size:14px;font-weight:700;margin:2px 2px 8px;display:flex;align-items:center;gap:6px;}
  .mid-hint{font-size:11.5px;color:var(--muted);margin:0 2px 10px;line-height:1.6;}
  /* 检查方向二级分类标签栏（按图集 cat2 归类） */
  .hz-subbars{display:flex;flex-wrap:wrap;gap:6px;margin:0 2px 10px;padding-bottom:8px;border-bottom:1px solid var(--line);}
  .hz-sub{border:1px solid var(--line);background:#f8fafc;color:#475569;font-size:12px;font-weight:600;padding:4px 11px;border-radius:999px;cursor:pointer;font-family:inherit;transition:.12s;}
  .hz-sub:hover{border-color:var(--blue);color:var(--blue);}
  .hz-sub.hz-sub-on{background:var(--blue);border-color:var(--blue);color:#fff;}

  .item-card{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:9px;cursor:pointer;transition:.12s;scroll-margin-top:66px;}
  .item-card:hover{border-color:var(--chip-b);background:#f8fbff;}
  .item-card.active{border-color:var(--blue);background:#eff6ff;}
  .item-card .i-no{display:inline-block;background:var(--blue);color:#fff;font-size:11px;font-weight:700;border-radius:6px;padding:1px 7px;margin-right:7px;}
  .item-card .i-std{font-size:13.5px;font-weight:600;}
  .item-card .i-chips{margin-top:7px;display:flex;flex-wrap:wrap;gap:5px;}
  .item-card .i-chips .chip-rc{display:block;width:100%;box-sizing:border-box;background:#fff7ed;border-left:3px solid #f97316;color:#9a3412;font-size:12.5px;line-height:1.6;padding:7px 10px;border-radius:6px;font-weight:500;cursor:default;}
  .item-card .i-chips:empty{margin-top:0;}
  /* 安管人员履职卡片：检查内容 + 常见问题（点击记入） */
  .item-card.duty-card .duty-content{margin:8px 0 2px;padding:9px 11px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:9px;color:#334155;font-size:12.5px;line-height:1.65;max-height:150px;overflow:auto;}
  .item-card.duty-card .duty-content[contenteditable="true"]{outline:2px dashed #0d9488;background:#ecfeff;min-height:22px;}
  .item-card.duty-card .i-chips .chip[contenteditable="true"]{outline:1px dashed #0d9488;background:#ecfeff;}
  .item-card.duty-card .duty-probs{margin-top:8px;}
  .item-card.duty-card .duty-probs-h{font-size:12px;font-weight:700;color:var(--hz-st-warn);margin-bottom:5px;}
  .item-card.duty-card .i-chips .chip{font-size:12px;padding:6px 11px;}
  /* 重大隐患（判定标准）：红色主色调突出重要性 */
  .item-card.item-major{border-left:4px solid #ef4444;background:linear-gradient(90deg,#fff5f5,#fff);}
  .item-card.item-major:hover{border-color:#fca5a5;background:#fef2f2;}
  .item-card.item-major.active{border-color:#ef4444;background:#fee2e2;}
  .item-card.item-major .i-no{background:#ef4444;}
  .item-card.item-major .i-std{color:#b91c1c;}
  /* 图集增加的隐患库条目：蓝色主题，与重大隐患区分 */
  .item-card.item-atlas{border-left:4px solid var(--blue);}
  .item-card.item-atlas .i-no{background:var(--blue);}
  /* 隐患库卡片：现场核查 / 风险后果 美术化面板（非纯文字，全局通用） */
  .hz-check{display:block;width:100%;box-sizing:border-box;background:#eff6ff;border:1px solid #bfdbfe;border-left:4px solid #2563eb;color:#1e3a8a;font-size:12.5px;line-height:1.7;padding:8px 10px;border-radius:8px;margin-top:8px;}
  .hz-check .hz-tag{display:inline-block;font-weight:800;color:#1d4ed8;margin-right:7px;font-size:12px;}
  .hz-rc{display:block;width:100%;box-sizing:border-box;background:#fff7ed;border:1px solid #fed7aa;border-left:4px solid #f97316;color:#7c2d12;font-size:12.5px;line-height:1.7;padding:8px 10px;border-radius:8px;margin-top:7px;font-weight:500;}
  .hz-rc .hz-tag{display:inline-block;font-weight:800;color:#c2410c;margin-right:7px;font-size:12px;}
  .hz-advice{display:block;width:100%;box-sizing:border-box;background:#f0fdf4;border:1px solid #bbf7d0;border-left:4px solid #16a34a;color:#166534;font-size:12.5px;line-height:1.7;padding:8px 10px;border-radius:8px;margin-top:8px;}
  .hz-advice .hz-advice-h{display:block;font-weight:800;color:#15803d;font-size:12px;margin-bottom:4px;}
  .hz-advice .hz-advice-b{font-size:13px;line-height:1.7;font-weight:600;}
  /* 左栏隐患库视图：检查方式/要点 美术化面板容器 */
  .hz-method{margin-top:8px;}
  .hz-method .hz-mh{display:block;font-weight:800;color:#1d4ed8;font-size:12.5px;margin-bottom:5px;}
  .hz-method .hz-check{margin-top:0;}
  .hz-method .hz-rc{margin-top:6px;}
  /* 右栏「本方向关联规范」美术化面板（替换默认 details 下拉） */
  .rel-panel{margin-top:10px;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;background:#f8fafc;}
  .rel-panel-h{display:flex;align-items:center;gap:8px;padding:10px 12px;background:linear-gradient(135deg,#eef2ff,#f8fafc);border-bottom:1px solid #e2e8f0;font-weight:800;color:#1e3a8a;font-size:13.5px;}
  .rel-panel-h .rel-ic{font-size:16px;flex:none;}
  .rel-panel-h .rel-tt{display:flex;flex-direction:column;line-height:1.25;}
  .rel-panel-h .rel-sub{font-weight:500;font-size:11.5px;color:#64748b;margin-top:2px;}
  .rel-docs{padding:8px 10px;display:flex;flex-direction:column;gap:8px;}
  .rel-doc{border:1px solid #e2e8f0;border-radius:10px;background:#fff;overflow:hidden;}
  .rel-doc>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:9px 11px;font-weight:700;color:#0f172a;font-size:13px;}
  .rel-doc>summary::-webkit-details-marker{display:none;}
  .rel-doc>summary::-moz-list-bullet{display:none;}
  .rel-doc .rel-doc-ic{flex:none;}
  .rel-doc .rel-doc-tt{flex:1;min-width:0;}
  .rel-doc .rel-cue{margin-left:auto;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #94a3b8;transition:transform .15s;flex:none;}
  .rel-doc[open]>.rel-cue{transform:rotate(180deg);}
  .rel-doc>summary:hover{background:#f1f5f9;}
  .rel-doc-body{padding:2px 11px 11px;}

  .clause-box.cb-major{border-left:4px solid #ef4444;}
  .clause-box.cb-major .cb-head{color:#b91c1c;}
  .clause-box{font-size:13px;line-height:1.7;}
  .clause-box .cb-head{font-weight:700;font-size:14px;margin-bottom:8px;display:flex;align-items:center;gap:6px;}
  .cb-norm{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:8px;padding:7px 10px;font-size:12.5px;margin-bottom:10px;line-height:1.6;}
  .lib-doc-full{white-space:pre-wrap;line-height:1.85;font-size:12.5px;color:#1e293b;background:#fcfcfd;border:1px solid var(--line);border-radius:10px;padding:12px;max-height:46vh;overflow:auto;}
  .right-empty{color:var(--muted);font-size:13px;text-align:center;padding:30px 8px;}
  .gen-list .gen-item{border:1px solid var(--line);border-left:4px solid #f59e0b;border-radius:10px;padding:9px 11px;margin-bottom:8px;cursor:pointer;transition:.12s;}
  .gen-item:hover{background:#fffbeb;}
  .gen-item.active{background:#fffbeb;border-color:#f59e0b;}
  .gen-item .g-tag{display:inline-block;font-size:10.5px;background:#fef3c7;color:#92400e;border-radius:6px;padding:1px 7px;margin-right:6px;font-weight:700;}
  .gen-item .g-prob{font-size:13px;font-weight:600;color:#1e293b;}
  .gen-clause{white-space:pre-wrap;line-height:1.85;font-size:12.5px;color:#1e293b;background:#fffbeb;border:1px solid #fde68a;border-radius:10px;padding:12px;max-height:46vh;overflow:auto;}
  .lib-home{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:10px;}
  @media(max-width:920px){
    .insp3{grid-template-columns:1fr;gap:10px;}
    .insp-left{position:static;max-height:none;display:flex;gap:6px;overflow-x:auto;padding:6px;}
    .insp-left .dir-item{white-space:nowrap;margin-bottom:0;}
    .dir-sep{display:none;}
    .insp-right{position:static;max-height:none;}
    .lib-doc-full,.gen-clause{max-height:60vh;}
  }
  .lib-intro{font-size:13px;color:var(--muted);margin-bottom:10px;line-height:1.6;}
  .lib-toc{position:relative;top:auto;z-index:auto;background:#fff;border-bottom:1px solid var(--line);margin-bottom:6px;padding:6px 0;-webkit-overflow-scrolling:touch;}
  .toc-toggle{display:inline-block;font-size:13px;font-weight:700;color:#0f172a;background:#eef2f7;border:1px solid var(--line);border-radius:20px;padding:5px 14px;cursor:pointer;margin:0 0 2px;}
  .toc-toggle:hover{border-color:var(--blue);color:var(--blue-d);}
  .toc-tree{display:none;max-height:55vh;overflow:auto;padding:4px 0 2px;}
  .toc-tree.open{display:block;}
  .toc-grp{margin:3px 0;}
  .toc-grp>summary.toc-ch{list-style:none;cursor:pointer;font-size:13px;font-weight:700;color:#0f172a;padding:4px 8px;border-radius:8px;background:#f8fafc;border:1px solid var(--line);}
  .toc-grp>summary.toc-ch::-webkit-details-marker{display:none;}
  .toc-grp>summary.toc-ch::before{content:'▾ ';color:#64748b;}
  .toc-grp:not([open])>summary.toc-ch::before{content:'▸ ';}
  .toc-grp>.toc-ch{display:block;font-size:13px;font-weight:700;color:#0f172a;padding:4px 8px;border-radius:8px;background:#f8fafc;border:1px solid var(--line);cursor:pointer;margin-bottom:2px;}
  .toc-grp>.toc-ch:hover,.toc-grp>summary.toc-ch:hover{border-color:var(--blue);color:var(--blue-d);}
  .toc-subs{display:flex;flex-wrap:wrap;gap:5px;padding:6px 0 6px 16px;}
  .toc-sec{font-size:12px;color:#334155;background:#f1f5f9;border:1px solid var(--line);border-radius:14px;padding:3px 10px;cursor:pointer;white-space:nowrap;}
  .toc-sec:hover{border-color:var(--blue);color:var(--blue-d);background:#eef2f7;}
  .lib-doc-body{padding-top:2px;}
  .cl-ch{margin-bottom:14px;}
  .cl-ch-h{font-size:16px;font-weight:800;color:#0f172a;padding:9px 12px;margin:4px 0 10px;border-radius:10px;background:linear-gradient(90deg,#eff6ff,#f8fafc);border-left:5px solid var(--blue);border-bottom:1px solid var(--line);}
  .cl-sec{margin:4px 0 10px 8px;border-left:3px solid var(--line);padding-left:10px;}
  .cl-sec-h{font-size:14px;font-weight:800;color:#0f172a;margin:2px 0 8px;padding:5px 10px;background:#f1f5f9;border-left:4px solid #6366f1;border-radius:8px;}
  .cl-item{border:1px solid var(--line);border-radius:11px;padding:10px 12px;margin-bottom:9px;background:#fff;scroll-margin-top:96px;}
  .cl-item.hit{background:#fffbeb;border-color:#f59e0b;box-shadow:0 0 0 2px rgba(245,158,11,.28);}
  .cl-no{display:inline-block;background:var(--blue);color:#fff;font-size:11px;font-weight:700;border-radius:6px;padding:1px 7px;margin-right:7px;}
  .cl-text{font-size:13.5px;line-height:1.85;color:#1e293b;margin-top:4px;}
  .cl-text b,.cl-note-b b{color:#b91c1c;font-weight:800;}
  .lib-table-wrap{margin:10px 0;overflow-x:auto;border:1px solid var(--line);border-radius:10px;}
  .lib-table{border-collapse:collapse;width:100%;font-size:12.5px;min-width:280px;}
  .lib-table th,.lib-table td{border:1px solid var(--line);padding:6px 9px;text-align:left;vertical-align:middle;line-height:1.5;}
  .lib-table th{background:#eef2f7;font-weight:700;color:#1e293b;}
  .lib-table tr:nth-child(even) td{background:#f8fafc;}
  /* 隐患图集四段说明：每段独占一行，标签加粗，段间留一点呼吸感 */
  .hz-seg{display:block;}
  .hz-seg + .hz-seg{margin-top:5px;}
  .hz-seg-k{font-weight:700;}
  .cl-text .hz-seg-k{color:#1d4ed8;}
  .lib-imgs{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0;}
  .lib-img{max-width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:#fff;padding:6px;box-shadow:0 1px 3px rgba(15,23,42,.06);cursor:pointer;transition:transform .12s;}
  .lib-img:hover{transform:scale(1.015);}
  /* 表格分页容器 + 翻页栏 */
  .lib-table-pag{margin:4px 0;}
  .lib-table-cap{font-size:12px;font-weight:700;color:#2563eb;padding:5px 2px 3px;}
  .lib-tbl-nav{display:flex;align-items:center;justify-content:center;gap:12px;margin:10px 0 2px;flex-wrap:wrap;}
  .lib-tbl-btn{appearance:none;border:1px solid var(--blue);background:#fff;color:var(--blue);font-weight:700;font-size:13px;border-radius:20px;padding:6px 16px;cursor:pointer;transition:all .14s;}
  .lib-tbl-btn:hover:not([disabled]){background:var(--blue);color:#fff;box-shadow:0 8px 18px -10px rgba(37,99,235,.6);}
  .lib-tbl-btn[disabled]{opacity:.4;cursor:not-allowed;border-color:var(--line);color:var(--muted);}
  .lib-tbl-page{font-size:12.5px;color:var(--muted);font-weight:600;}
  /* 单元格内图片（来自 docx 表格单元格） */
  .lib-cell-imgs{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
  .lib-cell-img{max-width:100%;height:auto;max-height:240px;width:auto;border:1px solid var(--line);border-radius:8px;background:#fff;padding:4px;box-shadow:0 1px 3px rgba(15,23,42,.06);cursor:pointer;transition:transform .12s;}
  .lib-cell-img:hover{transform:scale(1.04);}
  .cl-note{margin:8px 0 4px 18px;background:#f0f9ff;border:1px solid #bfdbfe;border-left:4px solid #1d4ed8;border-radius:10px;padding:9px 11px;}
  .cl-note-h{font-size:12.5px;font-weight:800;color:#1d4ed8;margin-bottom:4px;}
  .cl-note-b{font-size:13px;line-height:1.75;color:#1e3a8a;}
  /* 强制性条文：加粗 + 红色左侧标识 + 徽标 */
  .cl-item.cl-mandatory{ border-left:3px solid #dc2626 !important; background:#fff7f7; }
  .cl-item.cl-mandatory .cl-text{ font-weight:700; color:#7f1d1d; }
  .cl-mand-tag{ display:inline-block; background:#fee2e2; color:#b91c1c; border:1px solid #fecaca; font-size:11px; font-weight:700; border-radius:6px; padding:1px 7px; margin-left:6px; vertical-align:middle; }
  /* 条文说明：默认折叠，点击标题展开 */
  .cl-note > summary{ cursor:pointer; list-style:none; margin-bottom:0; outline:none; }
  .cl-note > summary::-webkit-details-marker{ display:none; }
  .cl-note > summary::after{ content:'▶'; float:left; font-size:10px; color:#1d4ed8; margin-top:2px; margin-right:8px; }
  .cl-note[open] > summary::after{ content:'▼'; }
  .law-body .cl-note > summary::after{ color:var(--hz-st-warn); }
  .cl-sec .cl-item{border-left:3px dashed #cbd5e1;}
  .cl-sub{margin:4px 0 10px 16px;border-left:3px solid #a5b4fc;padding-left:10px;}
  .cl-sub-h{font-size:13.5px;font-weight:800;color:#1e293b;margin:2px 0 8px;padding:5px 10px;background:#eef2ff;border-left:4px solid #6366f1;border-radius:8px;}
  .cl-subsub{margin:4px 0 10px 24px;border-left:2px solid #c7d2fe;padding-left:10px;}
  .cl-subsub-h{font-size:13px;font-weight:700;color:#334155;margin:2px 0 7px;padding:4px 9px;background:#f1f5f9;border-left:3px solid #818cf8;border-radius:7px;}
  .cl-sub .cl-item,.cl-subsub .cl-item{border-left:3px dashed #c7d2fe;}
  .cl-appx{font-size:13px;line-height:1.8;color:#334155;background:#f8fafc;border:1px solid var(--line);border-radius:9px;padding:9px 11px;margin-bottom:8px;}
  .lib-note-tip{font-size:12px;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:9px;padding:8px 11px;margin:10px 0;line-height:1.6;}
  .mid-sep{font-size:12.5px;font-weight:700;color:#c2410c;margin:12px 2px 7px;display:flex;align-items:center;gap:5px;}
  .gen-item{border:1px solid var(--line);border-left:4px solid #f59e0b;border-radius:10px;padding:9px 11px;margin-bottom:8px;cursor:pointer;transition:.12s;background:#fff;}
  .gen-item:hover{background:#fffbeb;}
  .gen-item.active{background:#fffbeb;border-color:#f59e0b;}
  .gen-item.gen-sel{background:linear-gradient(135deg,#16a34a,#22c55e);border-color:#16a34a;border-left-color:#15803d;color:#fff;box-shadow:0 2px 10px rgba(22,163,74,.3);}
  .gen-item.gen-sel .g-prob{color:#fff;font-weight:700;}
  .gen-item.gen-sel:hover{background:linear-gradient(135deg,#15803d,#16a34a);border-color:#15803d;}
  .gen-item .g-prob{font-size:13px;font-weight:600;color:#1e293b;}
  .gen-item .g-tag{display:inline-block;font-size:10.5px;background:#fef3c7;color:#92400e;border-radius:6px;padding:1px 7px;margin-right:6px;font-weight:700;}
  .gen-clause{white-space:pre-wrap;line-height:1.85;font-size:12.5px;color:#1e293b;background:#fcfcfd;border:1px solid var(--line);border-radius:10px;padding:12px;max-height:60vh;overflow:auto;}
  .dir-sep{height:1px;background:var(--line);margin:8px 0;}
  mark{background:#fde68a;padding:1px 2px;border-radius:3px;color:#7c2d12;}
  @media(max-width:680px){
    .cl-ch-h{top:33px;}
    .lib-table{min-width:340px;}
  }

/* —— 隐患/方向 → 《指引》对应精确条文 —— */
.guide-clause{margin-top:10px;border:1px solid #e2e8f0;border-left:4px solid #2563eb;background:#f8fafc;border-radius:8px;padding:10px 12px;}
.gc-head{font-size:12px;color:#64748b;margin-bottom:4px;}
.gc-ref{font-size:13px;font-weight:700;color:#1d4ed8;margin-bottom:4px;}
.gc-title{font-size:15px;font-weight:700;color:#0f172a;margin-bottom:6px;line-height:1.5;}
.gc-content{font-size:13px;color:#334155;line-height:1.7;}
.gc-content b{color:#b91c1c;}
/* 重大隐患「常见问题」已选高亮 */
/* 隐患库卡片：已进入检查记录后的选中态（绿底 + 已选） */
.item-card.item-sel{position:relative;border-color:#f97316;background:linear-gradient(180deg,#fff7ed,#fff);box-shadow:0 2px 14px rgba(249,115,22,.22);}
.item-card.item-sel .i-no{background:#f97316;}
.sel-flag{display:inline-flex;align-items:center;gap:4px;margin-top:8px;background:linear-gradient(135deg,#f97316,#fb923c);color:#fff;font-size:11px;font-weight:700;border-radius:20px;padding:3px 11px;box-shadow:0 2px 8px rgba(249,115,22,.35);align-self:flex-start;}
/* 履职检查：问题已记入 → 整卡变红（压过橙色 item-sel） */
.item-card.duty-sel{position:relative;border-color:#dc2626;background:linear-gradient(180deg,#fef2f2,#fff);box-shadow:0 2px 14px rgba(220,38,38,.22);}
.item-card.duty-sel .i-no{background:#dc2626;}
.item-card.duty-sel .i-std{color:#7f1d1d;}
/* 检查任务列表：标题独占上方整行，操作按钮统一置于底部整行，避免挤压文本 */
.session-item{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 10px;}
.session-item .s-chk{flex:none;}
.session-item .s-main{flex:1 1 200px;min-width:0;}
.session-item .s-foot{flex:1 1 100%;display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px;}
.session-item .s-go{margin-left:auto;}
.session-item .s-acts{display:flex;gap:6px;flex:none;margin-right:2px;}
.s-btn{border:1px solid var(--line);background:#fff;color:#475569;border-radius:9px;padding:6px 10px;font-size:12px;cursor:pointer;white-space:nowrap;}
.s-btn:hover{background:#f1f5f9;}
.s-btn.danger{color:#dc2626;border-color:#fecaca;}
.s-btn.danger:hover{background:#fef2f2;}
/* v1.9.20 协同任务来源标记（高对比浅色胶囊，无 emoji） */
.s-cotag{margin-top:3px;min-height:0;}
.co-tag{display:inline-flex;align-items:center;gap:4px;background:#eef2ff;color:#3730a3;border:1px solid #c7d2fe;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:500;line-height:1.5;margin-right:6px;}
.co-tag::before{content:'';width:6px;height:6px;border-radius:50%;background:#4f7cff;flex:none;}
/* v1.9.34 已选隐患标签：红底白字（此前绿色渐变在浅色背景下对比不足、已选状态不明显）
   【关键】必须用 .chip.chip-sel（权重 0,2,0）而非 .chip-sel（0,1,0）：
   后加载的 theme-v3.css 定义了 .chip{background/color}，同权重下靠后加载的规则会覆盖 .chip-sel，
   导致已选只剩 box-shadow 光晕（表现为"淡淡的一圈颜色"）——提高权重才能稳定生效。 */
.chip.chip-sel{background:linear-gradient(135deg,#dc2626,#ef4444);color:#fff;border-color:#dc2626;box-shadow:0 2px 10px rgba(220,38,38,.32);position:relative;font-weight:700;}
.chip.chip-sel:hover{background:linear-gradient(135deg,#b91c1c,#dc2626);color:#fff;border-color:#b91c1c;box-shadow:0 2px 10px rgba(185,28,28,.38);}
/* —— 整改建议醒目卡片 —— */
.advice-box{margin-top:10px;border:1.5px solid #f59e0b;border-left:5px solid #f59e0b;background:linear-gradient(180deg,#fff7ed,#fffbeb);border-radius:10px;padding:9px 12px;}
.advice-h{font-size:13px;font-weight:800;color:#c2410c;margin-bottom:4px;display:flex;align-items:center;gap:5px;}
.advice-b{font-size:13.5px;line-height:1.8;color:#7c2d12;font-weight:600;}
/* —— 面包屑（当前位置，B/C 持久显示） —— */
.lib-crumb{font-size:12px;color:#475569;background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:5px 10px;margin:0 0 8px;line-height:1.4;word-break:break-word;}

/* 资料库标题栏：两端对齐，回顶按钮常驻框内可见 */
.lib-doc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.lib-doc-title{min-width:0;flex:1 1 auto;}
.lib-crumb b{color:#0f172a;}
/* —— 目录当前位置高亮（C） —— */
.toc-sec.active{background:var(--blue);color:#fff;border-color:var(--blue);font-weight:700;}
.toc-sec.active:hover{background:var(--blue-d);color:#fff;}
.toc-ch.active,.toc-grp>summary.toc-ch.active{background:#dbeafe;border-color:var(--blue);color:var(--blue-d);}

/* ============================================================
   检查三栏：独立滚动 + 栏宽可拖拉（2026-07-14 改造）
   ============================================================ */
.insp3{display:flex;align-items:stretch;gap:0;height:calc(100vh - 140px);min-height:360px;}
.insp-left{position:static;top:auto;max-height:none;flex:0 0 auto;width:210px;overflow-y:auto;overflow-x:hidden;background:var(--card);box-shadow:var(--shadow);border-radius:14px;padding:8px;}
.insp-mid{position:static;top:auto;flex:1 1 auto;min-width:220px;overflow-y:auto;overflow-x:hidden;background:var(--card);box-shadow:var(--shadow);border-radius:14px;padding:13px;}
.insp-right{position:static;top:auto;max-height:none;flex:0 0 auto;width:360px;overflow-y:auto;overflow-x:hidden;background:var(--card);box-shadow:var(--shadow);padding:13px;}
/* 栏间拖拽分隔条 */
.insp-resizer{flex:0 0 9px;align-self:stretch;cursor:col-resize;position:relative;z-index:6;background:transparent;}
.insp-resizer::before{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:3px;height:38px;border-radius:3px;background:#cbd5e1;transition:.12s;}
.insp-resizer:hover::before,.insp-resizer.dragging::before{background:var(--blue);height:64px;box-shadow:0 0 0 3px rgba(37,99,235,.12);}
.insp-noselect,.insp-noselect *{user-select:none !important;}
/* 检查方式：与「整改建议」同款醒目卡片（蓝系区分） */
.method-box{margin-top:10px;border:1.5px solid #93c5fd;border-left:5px solid #2563eb;background:linear-gradient(180deg,#eff6ff,#f8fafc);border-radius:10px;padding:9px 12px;}
/* 南昌指导手册：处罚依据 / 关联表格 / 折叠条文 */
.penalty-box{margin-top:10px;border:1.5px solid #fca5a5;border-left:5px solid #dc2626;background:linear-gradient(180deg,#fef2f2,#fff5f5);border-radius:10px;padding:9px 12px;}
.penalty-h{font-size:13px;font-weight:800;color:#b91c1c;margin-bottom:4px;display:flex;align-items:center;gap:5px;}
.rel-tables-box{margin-top:10px;border:1.5px solid #cbd5e1;border-left:5px solid #475569;background:#f8fafc;border-radius:10px;padding:9px 12px;}
.rel-tables-h{font-size:13px;font-weight:800;color:#334155;margin-bottom:4px;display:flex;align-items:center;gap:5px;}
.nc-ref{margin:7px 0;padding:8px 10px;background:#f8fafc;border-left:3px solid #2563eb;border-radius:6px;}
.nc-ref-h{font-weight:700;color:#0f172a;font-size:13px;margin-bottom:2px;}
.nc-line{color:#334155;font-size:13px;line-height:1.7;}
.nc-empty{color:#94a3b8;font-size:12.5px;font-style:italic;}
.nc-fold{margin:3px 0;}
.nc-fold-h{font-size:12.5px;color:#475569;cursor:pointer;font-weight:600;}
.nc-fold-h:hover{color:#1d4ed8;}
.nc-fold-b{color:#334155;font-size:13px;line-height:1.7;margin-top:3px;padding:4px 8px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;}
.nc-vline{color:#1e3a8a;font-size:13.5px;line-height:1.8;font-weight:600;}
.nc-tbl{margin:6px 0;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;}
.nc-tbl-h{font-size:12.5px;font-weight:700;color:#334155;cursor:pointer;padding:6px 8px;background:#eef2f7;}
.nc-tbl-b{padding:6px 8px;}
.nc-tbl-b .lib-table{font-size:12px;}
.method-h{font-size:13px;font-weight:800;color:#1d4ed8;margin-bottom:4px;display:flex;align-items:center;gap:5px;}
.method-b{font-size:13.5px;line-height:1.8;color:#1e3a8a;font-weight:600;}
  /* 检查方式/要点：现场核查 / 风险后果 美术化（非纯文字） */
  .method-b .mz-row{margin:7px 0;padding:8px 10px;border-radius:8px;}
  .method-b .mz-check{background:#eff6ff;border-left:4px solid #2563eb;}
  .method-b .mz-rc{background:#fff7ed;border-left:4px solid #f97316;}
  .method-b .mz-tag{display:inline-block;font-weight:800;margin-right:7px;font-size:12.5px;}
  .method-b .mz-check .mz-tag{color:#1d4ed8;}
  .method-b .mz-rc .mz-tag{color:#c2410c;}
  .method-b .mz-body{color:#1e293b;line-height:1.7;font-size:13.5px;}
/* 手机端：三栏竖向堆叠，分隔条隐藏 */
@media(max-width:920px){
  .insp3{flex-direction:column;height:auto;min-height:0;gap:10px;}
  .insp-left{width:auto;flex:none;max-height:none;display:flex;gap:6px;overflow-x:auto;overflow-y:hidden;padding:6px;}
  .insp-left .dir-item{white-space:nowrap;margin-bottom:0;}
  .insp-mid{width:auto;flex:none;overflow:visible;}
  .insp-right{width:auto;flex:none;max-height:none;overflow:visible;}
  .insp-resizer{display:none;}
  .lib-doc-full,.gen-clause{max-height:60vh;}
}
/* —— 重大隐患 → 《建筑施工安全检查标准》JGJ59-2011 精准条文对照（绿系） —— */
.jgj59-box{margin-top:10px;border:1px solid #bbf7d0;border-radius:10px;overflow:hidden;background:#f0fdf4;}
.jgj59-h{font-size:13px;font-weight:800;color:#166534;padding:8px 11px;background:#dcfce7;border-bottom:1px solid #bbf7d0;display:flex;align-items:center;gap:5px;}
.jgj59-item{padding:8px 11px;border-top:1px solid #d9f99e;}
.jgj59-item:first-of-type{border-top:none;}
.jgj59-no{font-size:13px;font-weight:800;color:#15803d;margin-bottom:3px;}
.jgj59-sec{font-size:11px;font-weight:400;color:#64748b;margin-left:6px;}
.jgj59-txt{font-size:13px;line-height:1.7;color:#334155;}

/* —— 资料库章节导航：常驻弹窗右侧「目录大纲」栏（参照法规查询页样式） —— */
/* 采用 flex 双栏布局：.lib-main 为 flex 容器，正文(.m-body)与导航(.lib-toc-side)并排；
   导航作为 flex 子项必然可见，不依赖任何 position:absolute 与外部定位基准，杜绝“看不到”问题。 */
.lib-main{display:flex;flex:1;min-height:0;overflow:hidden;}
.lib-toc-side{flex:0 0 248px;min-height:0;overflow-y:auto;background:#f8fafc;border-left:1px solid var(--line);padding:12px 8px;}
.lib-toc-side .toc-side-h{font-size:13px;font-weight:800;color:#0f172a;margin:0 6px 8px;padding-bottom:8px;border-bottom:1px solid var(--line);}
.lib-toc-side .toc-cnt{float:right;font-weight:600;color:#64748b;font-size:12px;}
.lib-toc-side .toc-tree{display:block;max-height:none;padding:0;font-size:13px;}
.lib-toc-side a{display:block;text-decoration:none;color:#334155;border-radius:8px;cursor:pointer;line-height:1.5;transition:background .12s,color .12s;}
.lib-toc-side .toc-ch{font-weight:800;color:#0f172a;padding:8px 8px 4px;font-size:13px;}
.lib-toc-side .toc-sec-h{font-weight:700;color:#1e293b;padding:4px 8px 4px 14px;font-size:12.5px;margin-left:4px;border-left:2px solid #cbd5e1;}
.lib-toc-side .toc-item{font-size:12px;color:#475569;padding:3px 8px 3px 24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lib-toc-side a:hover{background:#eef2f7;color:#0f172a;}
.lib-toc-side a.active{background:#e6f0fb;color:#1d4ed8 !important;font-weight:700;}
/* 窄屏/移动端：双栏太挤，改为竖向排列，导航置于顶部常驻（自带滚动），正文在下方独立滚动 */
@media(max-width:820px){
  .lib-main{flex-direction:column;}
  .lib-toc-side{flex:0 0 auto;max-height:38vh;order:-1;border-left:none;border-bottom:1px solid var(--line);}
}

/* ========== 法律法规整页（一比一复刻 47.120.36.157:8444 /#/library/laws） ========== */
.laws-wrap{max-width:none;margin:0 auto;padding:18px 22px 40px;}
.laws-h{font-size:26px;font-weight:800;color:#0f172a;letter-spacing:.5px;}
.law-back{display:inline-block;margin-bottom:14px;padding:8px 14px;background:#eef2ff;border:1px solid #c7d2fe;color:#4338ca;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;}
.law-back:hover{background:#e0e7ff;}
.laws-sub{margin-top:6px;color:#64748b;font-size:14px;}
.laws-badge{display:inline-flex;gap:8px;margin:16px 0 22px;flex-wrap:wrap;}
.laws-badge .lb{background:#eef2ff;color:#4338ca;border:1px solid #e0e7ff;font-size:13px;padding:4px 13px;border-radius:999px;font-weight:600;}
/* 卡片容器：横向 Flex 排列，可横向滚动 */
.laws-cards-container{display:grid;grid-template-columns:1fr;gap:14px;padding:4px 2px 18px;}
/* 检索弹窗：双模式 Tab + 关键词上下跳转 */
.search-tabs{display:flex;gap:8px;margin:10px 0 6px}
.search-tabs .stab{flex:1;padding:9px 10px;border:1px solid #e2e8f0;background:#f8fafc;color:#475569;font-size:13.5px;font-weight:700;border-radius:10px;cursor:pointer;transition:.15s;display:flex;align-items:center;justify-content:center;gap:6px}
.search-tabs .stab.active{background:#2563eb;border-color:#2563eb;color:#fff;box-shadow:0 4px 12px rgba(37,99,235,.18)}
.search-nav{display:flex;align-items:center;gap:8px;margin:8px 0 2px;padding:6px 8px;background:#f1f5f9;border-radius:9px}
.search-nav button{border:1px solid #cbd5e1;background:#fff;color:#334155;font-size:13px;font-weight:700;padding:6px 12px;border-radius:8px;cursor:pointer;transition:.12s}
.search-nav button:hover{border-color:#2563eb;color:#2563eb;background:#f8faff}
.search-nav #search-hit-count{min-width:54px;text-align:center;font-size:12.5px;font-weight:700;color:#475569;font-variant-numeric:tabular-nums}
.m-detail{display:none;flex-direction:column;flex:1;min-height:0;}
.m-detail .back-detail{margin:4px 2px 8px;align-self:flex-start;border:1px solid #cbd5e1;background:#fff;color:#334155;font-size:13px;font-weight:600;padding:6px 12px;border-radius:8px;cursor:pointer}
.m-detail .back-detail:hover{border-color:#2563eb;color:#2563eb}
.sr-hz{padding:12px 13px;border:1px solid #e2e8f0;border-left:3px solid #f59e0b;border-radius:10px;margin-bottom:10px;background:#fff;cursor:pointer;transition:.15s}
.sr-hz:hover{border-color:#2563eb;box-shadow:0 4px 12px rgba(37,99,235,.08)}
.sr-hz .sr-cat{font-size:12.5px;color:#64748b;font-weight:600;margin-bottom:4px}
.sr-hz .sr-tt{font-size:14px;font-weight:700;color:#0f172a;line-height:1.5}
.sr-hz .sr-std{font-size:13px;color:#334155;line-height:1.7;margin-top:4px}
.kw-hl{background:#fde68a;color:#1f2937;font-weight:700;border-radius:3px;padding:0 2px}
.kw-hl-cur{background:#f59e0b;color:#fff;box-shadow:0 0 0 2px rgba(245,158,11,.4)}
/* 单张卡片：固定宽 320px、白底、1px 浅灰边框、8px 圆角、左侧 4px 高亮竖条、轻微阴影 */
/* 隐患库页面：卡片参照政策文件库美术，隐患条目点击展开「依据 / 检查方式」 */
.hz-card{cursor:pointer;}
.hz-card .hz-row{display:flex;gap:10px;align-items:flex-start;}
.hz-card .card-ic{font-size:18px;}
.hz-no{display:inline-block;font-weight:800;color:#4a6fa5;margin-right:5px;}
.hz-major .card-ic{background:rgba(220,38,38,.10);color:#dc2626;}
.hz-major .hz-no{color:#dc2626;}
.hz-detail{margin-top:10px;padding-top:10px;border-top:1px dashed #e2e8f0;}
.hz-basis{font-size:13px;line-height:1.6;color:#334155;margin-bottom:10px;}
.hz-basis div{margin:6px 0;padding:8px 10px;background:#f8fafc;border-left:3px solid #2563eb;border-radius:6px;}
.hz-method{font-size:13px;line-height:1.7;color:#334155;}
.hz-card.open{box-shadow:0 6px 18px rgba(15,23,42,.10),0 10px 28px rgba(15,23,42,.06);}
.card{--accent:#4a6fa5;position:relative;min-height:120px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;padding:12px 12px 12px 14px;box-shadow:0 1px 3px rgba(15,23,42,.06),0 4px 12px rgba(15,23,42,.04);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;display:flex;flex-direction:column;gap:6px;}
.card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:#4a6fa5;}
.card.t-gb{--accent:#2563eb;}
.card.t-guide{--accent:#d97706;}
.card.t-jgj59{--accent:#059669;}
.card.t-jgjt46{--accent:#ea580c;}
.card.t-gb::before{background:#2563eb;}
.card.t-guide::before{background:#d97706;}
.card.t-jgj59::before{background:#059669;}
.card.t-jgjt46::before{background:#ea580c;}
.card:hover{transform:translateY(-3px);border-color:#cbd5e1;box-shadow:0 6px 18px rgba(15,23,42,.10),0 10px 28px rgba(15,23,42,.06);}
.card:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(74,111,165,.18);}
.card-ic{width:40px;height:40px;flex:0 0 40px;border-radius:10px;background:linear-gradient(135deg,#eef2f7,#e2e8f0);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:20px;align-self:flex-start;}
.card-main{min-width:0;}
.card-head{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;}
.badge{font-size:11px;padding:3px 10px;border-radius:999px;font-weight:600;white-space:nowrap;}
.badge.type{color:#4a6fa5;background:rgba(74,111,165,.10);border:1px solid rgba(74,111,165,.25);}
.badge.status{color:#15803d;background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.25);}
.badge.tag{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;}
.card-title{font-size:15px;font-weight:700;color:#0f172a;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.card-summary{margin-top:4px;font-size:12px;line-height:1.45;color:#64748b;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.card-summary .dot{color:#cbd5e1;}
.card-tags{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap;}
.card-side{flex:0 0 auto;display:flex;flex-direction:row;align-items:center;justify-content:space-between;margin-top:auto;padding-top:4px;}
.card-count{font-size:20px;font-weight:800;color:var(--accent);line-height:1;}
.card-count small{font-size:11px;font-weight:600;color:#94a3b8;margin-left:2px;}
.card-go{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:700;color:#fff;background:var(--accent);padding:7px 14px;border-radius:999px;transition:.15s;}
.card:hover .card-go{filter:brightness(1.06);}

/* 详情页 */
.law-detail{max-width:none;margin:0 auto;padding:18px 24px 44px;}
/* 法规详情页铺满主内容区（突破 #view 980 限宽，让规范正文+右侧大纲占满可用宽度） */
main#view.law-wide{max-width:none;padding-left:18px;padding-right:18px;}
main#view.law-wide .law-detail{max-width:none;}
main#view.insp-wide{max-width:none;padding-left:18px;padding-right:18px;}
main#view.proj-wide{max-width:none;padding-left:18px;padding-right:18px;}
.proj-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:4px 0 14px;}
.proj-head h2{margin:0;font-size:22px;font-weight:800;color:#0f172a;letter-spacing:.5px;}
.proj-search{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:9px 12px;flex:1;max-width:440px;box-shadow:var(--shadow);}
.proj-search .ps-ic{opacity:.55;font-size:14px;}
.proj-search input{border:none;outline:none;flex:1;font-size:14px;background:transparent;min-width:160px;}
.proj-card{position:relative;padding-right:64px;}
.p-edit{position:absolute;top:10px;right:10px;z-index:2;border:none;background:rgba(241,245,249,.92);color:#334155;font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;cursor:pointer;transition:.15s;}
.p-edit:hover{background:#e2e8f0;color:#0f172a;}
.law-crumb{font-size:13px;color:#64748b;margin-bottom:10px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.law-crumb a{color:#2563eb;cursor:pointer;text-decoration:none;}
.law-crumb a:hover{text-decoration:underline;}
.law-topbar{display:flex;justify-content:flex-end;gap:10px;margin-bottom:14px;}
.law-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid #cbd5e1;background:#fff;color:#334155;font-size:13px;font-weight:600;padding:7px 14px;border-radius:9px;cursor:pointer;transition:.15s;}
.law-btn:hover{border-color:#2563eb;color:#2563eb;background:#f8faff;}
.law-ret{display:inline-flex;align-items:center;gap:4px;background:#2563eb;color:#fff;border:1px solid #2563eb;font-size:13px;font-weight:600;padding:5px 12px;border-radius:8px;cursor:pointer;transition:.15s;white-space:nowrap;}
.law-ret:hover{filter:brightness(1.08);}
.law-head{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:20px 22px;margin-bottom:16px;}
.law-head .lh-title{font-size:22px;font-weight:800;color:#0f172a;line-height:1.35;}
.law-head .lh-org{margin-top:10px;font-size:13.5px;color:#475569;display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.law-head .lh-org span{display:inline-flex;align-items:center;gap:5px;}
.law-tags{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap;}
.law-tags .lt{font-size:12.5px;font-weight:600;padding:4px 12px;border-radius:999px;}
.law-tags .lt.ok{background:rgba(34,197,94,.12);color:#15803d;}
.law-tags .lt.c{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0;}

.law-full{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:16px 18px;}
.law-full-h{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
.law-full-h .lfh-title{font-size:15px;font-weight:700;color:#0f172a;display:inline-flex;align-items:center;gap:6px;}
.law-full-h .lfh-cnt{font-size:12px;font-weight:700;color:#1d4ed8;background:#eff6ff;padding:2px 10px;border-radius:999px;}
.law-search{position:relative;flex:1;min-width:200px;display:flex;align-items:center;gap:6px;}
.law-search .ls-ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:#94a3b8;pointer-events:none;}
.law-search input{flex:1;width:auto;padding:8px 12px 8px 34px;height:38px;font-size:13.5px;border:1px solid #e2e8f0;border-radius:9px;background:#fff;color:#334155;outline:none;transition:.15s;}
.law-search input:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12);}
.law-search-nav{display:flex;align-items:center;gap:3px;flex:0 0 auto;}
.law-search .ls-btn{width:30px;height:32px;border:1px solid #e2e8f0;background:#fff;border-radius:8px;cursor:pointer;color:#475569;font-size:15px;line-height:1;display:flex;align-items:center;justify-content:center;transition:.12s;}
.law-search .ls-btn:hover{border-color:#2563eb;color:#2563eb;background:#f8fafc;}
.law-search .ls-btn:disabled{opacity:.4;cursor:not-allowed;}
.law-search .ls-count{font-size:12px;color:#64748b;min-width:40px;text-align:center;font-variant-numeric:tabular-nums;}
.laws-search{display:flex;align-items:center;gap:6px;margin:4px 0 14px;position:relative;}
.laws-search .ls-ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:#94a3b8;pointer-events:none;}
.laws-search input{flex:1;width:auto;padding:9px 12px 9px 34px;height:42px;font-size:14px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;color:#334155;outline:none;transition:.15s;}
.laws-search input:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12);}
.laws-search .ls-go{flex:0 0 auto;height:42px;padding:0 18px;border:none;border-radius:10px;background:var(--blue);color:#fff;font-size:14px;font-weight:700;cursor:pointer;}
.hz-search{display:flex;align-items:center;gap:6px;margin:10px 0 4px;position:relative;}
.hz-search .hs-ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:#94a3b8;pointer-events:none;}
.hz-search input{flex:1;width:auto;padding:8px 12px 8px 34px;height:38px;font-size:13.5px;border:1px solid #e2e8f0;border-radius:9px;background:#fff;color:#334155;outline:none;transition:.15s;}
.hz-search input:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12);}
.hz-search .ls-btn{width:30px;height:32px;border:1px solid #e2e8f0;background:#fff;border-radius:8px;cursor:pointer;color:#475569;font-size:15px;line-height:1;display:flex;align-items:center;justify-content:center;transition:.12s;}
.hz-search .ls-btn:hover{border-color:#2563eb;color:#2563eb;background:#f8fafc;}
.hz-search .ls-count{font-size:12px;color:#64748b;min-width:42px;text-align:center;font-variant-numeric:tabular-nums;}

/* 法规正文与右侧目录等高、同高：两者 height:100% 共享同一固定高度容器，正文区尽量占满单屏以展示更多条文 */
.law-body-wrap{display:flex;gap:18px;align-items:stretch;margin-top:14px;height:calc(100vh - 150px);}
.law-body{flex:1;min-width:0;height:100%;overflow:auto;background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:22px 26px;scroll-behavior:auto;}
.law-toc{width:280px;flex:0 0 280px;height:100%;overflow:auto;background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:14px 12px;}
.law-toc .toc-head{display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:14px;color:#0f172a;padding-bottom:8px;border-bottom:1px solid #eef2f7;margin-bottom:8px;}
.law-toc .toc-head .x{cursor:pointer;color:#94a3b8;border:none;background:none;font-size:18px;line-height:1;}
.law-toc .toc-head .x:hover{color:#ef4444;}
.law-toc .toc-tree{display:block;max-height:none;overflow:visible;padding:2px 0;}
.law-toc .toc-tree a{display:block;padding:6px 10px;border-radius:8px;font-size:13px;color:#475569;text-decoration:none;cursor:pointer;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .12s,color .12s;}
.law-toc .toc-tree a:hover{background:#f1f5f9;color:#2563eb;}
  .law-toc .toc-tree .toc-ch{font-weight:700;color:#1e293b;margin-top:8px;}
  .law-toc .toc-tree .toc-sec-h{color:#334155;padding-left:18px;}
  /* V2.1.30：htmlDoc 两级目录——节行（N.N 编号）缩进小字 */
  .law-toc .toc-tree .toc-sub{padding-left:24px;font-size:12px;color:#64748b;white-space:normal;line-height:1.4;margin-top:1px;}
  .law-toc .toc-tree .toc-sub:hover{color:#2563eb;background:#eff6ff;}
  .law-toc .toc-tree .toc-sub{color:#4f46e5;padding-left:26px;font-weight:600;}
  .law-toc .toc-tree .toc-subsub{color:#6366f1;padding-left:34px;font-weight:600;}
  .law-toc .toc-tree .toc-item{padding-left:30px;}
  /* 目录：按「部分」折叠（多部分规范，如图册 5 部分） */
  .law-toc .toc-tree .toc-part{margin:4px 0;}
  .law-toc .toc-tree .toc-part-h{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:700;color:#1e293b;padding:7px 8px;border-radius:8px;background:#f8fafc;border:1px solid var(--line);margin-top:8px;position:sticky;top:0;z-index:5;box-shadow:0 2px 6px rgba(15,23,42,.06);transition:background .12s,border-color .12s;}
  .law-toc .toc-tree .toc-part-h:hover{border-color:var(--blue);color:var(--blue-d);}
  .law-toc .toc-tree .toc-caret{display:inline-block;color:#64748b;font-size:11px;line-height:1;transform:rotate(0);transition:transform .15s;}
  .law-toc .toc-tree .toc-part[data-open="1"] .toc-caret{transform:rotate(90deg);}
  .law-toc .toc-tree .toc-part-h .toc-ch{display:inline;padding:0;margin:0;background:none;border:none;color:inherit;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .law-toc .toc-tree .toc-part-body{display:none;padding:2px 0 2px 2px;}
  .law-toc .toc-tree .toc-part[data-open="1"] .toc-part-body{display:block;}
  .law-toc .toc-tree .toc-part.active > .toc-part-h{background:#dbeafe;border-color:var(--blue);color:var(--blue-d);}
  /* 单部分视图：📌 按钮 + 正文只显示锁定部分，其余隐藏 */
  .law-toc .toc-tree .toc-pin{margin-left:auto;cursor:pointer;font-size:13px;opacity:.5;transition:opacity .12s,transform .12s;user-select:none;line-height:1;}
  .law-toc .toc-tree .toc-part-h:hover .toc-pin{opacity:1;}
  .law-toc .toc-tree .toc-pin:hover{transform:scale(1.18);}
  .law-body.single-part .cl-ch{display:none;}
  .law-body.single-part .cl-ch.active-part{display:block;}
  #single-part-banner{position:sticky;top:0;z-index:9;display:flex;justify-content:space-between;align-items:center;gap:10px;background:#dbeafe;border:1px solid var(--blue);color:var(--blue-d);padding:8px 12px;font-size:13px;font-weight:600;border-radius:8px;margin-bottom:10px;box-shadow:0 2px 8px rgba(37,99,235,.12);}
  #single-part-banner button{background:var(--blue);color:#fff;border:none;border-radius:7px;padding:5px 11px;font-size:12px;cursor:pointer;white-space:nowrap;}
  #single-part-banner button:hover{background:var(--blue-d);}
/* 目录弹窗（#toc-body 复制自 .law-toc 内容，需显式展开；base .toc-tree 为 display:none 会导致章节隐藏） */
#toc-body .toc-head{display:none;}
#toc-body .toc-tree{display:block;max-height:none;overflow:visible;padding:2px 0;}
#toc-body .toc-tree a{display:block;text-decoration:none;color:#334155;padding:5px 8px;border-radius:7px;cursor:pointer;font-size:13px;line-height:1.5;}
#toc-body .toc-tree .toc-ch{font-weight:700;color:#1e293b;margin-top:8px;}
#toc-body .toc-tree .toc-sec-h{color:#334155;padding-left:18px;}
#toc-body .toc-tree .toc-item{color:#64748b;padding-left:30px;}
  /* 目录弹窗同样支持「部分」折叠 */
  #toc-body .toc-tree .toc-part{margin:4px 0;}
  #toc-body .toc-tree .toc-part-h{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:700;color:#1e293b;padding:7px 8px;border-radius:8px;background:#f8fafc;border:1px solid var(--line);margin-top:8px;position:sticky;top:0;z-index:5;box-shadow:0 2px 6px rgba(15,23,42,.06);}
  #toc-body .toc-tree .toc-caret{display:inline-block;color:#64748b;font-size:11px;line-height:1;transform:rotate(0);transition:transform .15s;}
  #toc-body .toc-tree .toc-part[data-open="1"] .toc-caret{transform:rotate(90deg);}
  #toc-body .toc-tree .toc-part-h .toc-ch{display:inline;padding:0;margin:0;background:none;border:none;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  #toc-body .toc-tree .toc-part-body{display:none;padding:2px 0 2px 2px;}
  #toc-body .toc-tree .toc-part[data-open="1"] .toc-part-body{display:block;}
#toc-body .toc-tree a:hover{background:#f1f5f9;}
#toc-body .toc-tree a.active{background:var(--blue);color:#fff;}
.law-toc .toc-tree a.active{background:#eff6ff;color:#1d4ed8;font-weight:600;}

/* 复刻 § 蓝色条文（作用于整页 .law-body 作用域，不影响原弹窗） */
  .law-body .cl-ch-h{font-weight:800;font-size:17px;color:#0f172a;border-bottom:2px solid #93c5fd;padding-bottom:7px;margin:22px 0 12px;}
  .law-body .cl-sec-h{font-weight:700;font-size:15px;color:#334155;margin:16px 0 8px;}
  .law-body .cl-sub-h{font-weight:700;font-size:14px;color:#4f46e5;margin:14px 0 7px;padding-left:8px;border-left:4px solid #6366f1;}
  .law-body .cl-subsub-h{font-weight:600;font-size:13px;color:#6366f1;margin:10px 0 6px;padding-left:8px;border-left:3px solid #a5b4fc;}
  .law-body .cl-item{margin-bottom:14px;}
  .law-body .cl-ch,.law-body .cl-sec,.law-body .cl-sub,.law-body .cl-subsub,.law-body .cl-item{scroll-margin-top:12px;}
.law-body .cl-no{display:inline-block;font-weight:800;font-size:14.5px;color:#fff;margin-bottom:4px;}
.law-body .cl-no::before{content:'§ ';font-weight:800;}
.law-body .cl-text{line-height:1.85;color:#334155;font-size:14px;white-space:normal;}
.law-body .cl-note{margin-top:8px;background:#f8fafc;border:1px solid #eef2f7;border-left:3px solid #fbbf24;border-radius:8px;padding:10px 14px;font-size:12.5px;color:#64748b;}
.law-body .cl-note-h{font-weight:700;color:var(--hz-st-warn);margin-bottom:4px;}
.law-body .lib-table-wrap{margin:10px 0;}
.law-body .lib-table{border-collapse:collapse;width:100%;font-size:13px;}
.law-body .lib-table th,.law-body .lib-table td{border:1px solid #e2e8f0;padding:7px 10px;text-align:left;vertical-align:middle;color:#334155;}
.law-body .cl-item.hl{background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;padding:6px 10px;}
.law-body .cl-item.hl-cur{background:#fef3c7;border-color:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.30);}
/* 搜索关键字文本高亮（仅高亮命中文字本身） */
.law-body mark.kw-hl{background:#f59e0b;color:#fff;font-weight:700;border-radius:3px;padding:0 2px;box-shadow:0 0 0 1px rgba(245,158,11,.55);}

/* 响应式 */
@media (max-width:860px){
  .laws-wrap,.law-detail{padding:14px 14px 32px;}
  .laws-cards-container{grid-template-columns:1fr;}
  .card{width:auto;flex:none;min-height:auto;}
  .law-body-wrap{flex-direction:column;}
  .law-body{height:auto;min-height:300px;max-height:70vh;}
  .law-toc{width:100%;flex:none;position:static;max-height:none;}
}
@media print{
  .sidebar,.tabbar,.law-topbar,.law-search,.law-toc,.top-fab,.insp-fab,.law-toc-fab{display:none !important;}
  .law-detail,.laws-wrap{max-width:none;padding:0;}
  .law-body{height:auto;overflow:visible;border:none;}
  .law-head,.law-full{border:none;box-shadow:none;}
  .law-head .lh-title,.law-head .lh-org{color:#000;}
  .law-tags .lt.ok,.law-tags .lt.c{color:#000;border:1px solid #999;background:none;}
  .law-body .cl-no{color:#000;}
  .law-body .cl-no::before{color:#000;}
}
/* ============================================================
   手机端（≤820px）表现优化 · 2026-07-16 自检增补
   范围：放大触控目标 / 防止 iOS 输入聚焦缩放 / 提升小屏可读性
   ============================================================ */
@media(max-width:820px){
  /* 1) 输入框与可编辑区字号≥16px，避免 iOS 聚焦时整页自动放大 */
  input,textarea,select,[contenteditable="true"]{font-size:16px;}
  /* 2) 卡片内编辑 / 删除按钮放大，降低误触 */
  .item-card .i-edit,.item-card .i-del{width:34px;height:34px;font-size:15px;}
  /* 3) chip 删除小圆圈放大，便于手指点按 */
  .chip-mini,.chip-del{width:26px;height:26px;font-size:13px;line-height:1;}
  /* 4) 卡片正文、编号、标签字号略放大 */
  .item-card .i-std{font-size:14px;}
  .item-card .i-no{font-size:13px;padding:2px 9px;}
  .chip{font-size:13.5px;padding:8px 14px;}
  .duty-content{font-size:14px;line-height:1.75;}
  .duty-probs{font-size:13.5px;}

  .sel-flag{font-size:12px;padding:4px 12px;}
  /* 5) 操作按钮加大点击区 */
  .btn.sm{padding:9px 12px;min-height:38px;}
  .s-btn,.search-nav button{padding:8px 14px;font-size:13.5px;min-height:36px;}
  .drawer .d-head button{padding:6px 13px;}
  /* 6) 去除点击灰色高亮、约束滚动链、禁止文字自动缩放 */
  html{-webkit-text-size-adjust:100%;text-size-adjust:100%;}
  *{-webkit-tap-highlight-color:transparent;}
  .insp-mid,.insp-left,.insp-right{overscroll-behavior:contain;}
  /* 7) 手机端检查右栏改为弹窗：隐藏底部右栏，显示「关联规范」触发按钮（PC 端右栏照常原位显示） */
  .insp-right{display:none !important;}
  .insp-right-btn{display:inline-flex !important;}
  /* 8) 政策文件库：列表页检索框整行；详情页文中检索框整行更醒目 */
  .laws-search{margin:8px 0 14px;}
  .law-full-h{flex-direction:column;align-items:stretch;gap:8px;}
  .law-search{min-width:0;width:100%;}
  /* 9) 手机端法规全文放大：去除卡片边框与多余内边距，让条文铺满可用宽度（不影响 PC 端卡片观感） */
  .law-body{padding:0;border:none;border-radius:0;background:transparent;}
  .law-detail,.laws-wrap{padding:0;}
  .law-body .cl-ch-h{padding:10px 8px;margin:16px 0 8px;}
  .law-body .cl-sec-h{padding:7px 8px;margin:12px 0 6px;}
  .law-body .cl-sub-h,.law-body .cl-subsub-h{margin-left:0;padding-left:8px;border-left:none;}
  .law-body .cl-item{border:none;background:none;border-radius:0;padding:9px 6px;margin-bottom:0;border-top:1px solid #eef2f7;}
  .law-body .cl-item:first-child{border-top:none;}
  .law-body .cl-text{font-size:15px;line-height:1.9;width:100%;padding:0;}
  .law-body .cl-note{border-radius:0;padding:9px 10px;margin:8px 0;}
  .law-body .lib-img,.law-body .lib-cell-img{display:block;width:100%;max-width:100%;height:auto;padding:0;margin:8px 0;}
  .law-body .lib-imgs,.law-body .lib-cell-imgs{display:flex;flex-direction:column;gap:10px;margin:10px 0;}
  /* 10) 检查页：记录 / 关联规范 改为右下固定浮层；回顶已统一为左下角全局 top↑ 按钮，此处隐藏原重复按钮
     v2.1.18续：insp-fab 仅在履职/常见问题检查页显示（body.insp-fab-on 由 renderInspect 控制） */
  body.insp-open.insp-fab-on .insp-fab{display:flex !important;}
  .fab-rec{display:none !important;}
  /* v2.1.20：悬浮组显示时放行记录按钮（上一行旧规则是 v2.1.6 emoji 浮层退场遗留，会把 insp-fab 内的检查记录按钮一并藏掉） */
  body.insp-fab-on .insp-fab .fab-rec{display:inline-flex !important;}
  .insp-right-btn{display:none !important;}
  /* 11) 政策文件库目录改为右下固定浮层触发 + 弹窗展示；仅法规详情页（body.law-detail-open）出现；隐藏原 static 目录与顶部目录按钮 */
  body.law-detail-open .law-toc-fab{display:flex !important;}
  .law-toc{display:none !important;}
  .law-toc-btn{display:none !important;}
  /* 全局回顶按钮 top↑ 固定左下角；手机端抬高到底部 tabbar 之上避免遮挡 */
  .top-fab{bottom:92px;}
  /* 18) 移动端性能优化：关闭所有 backdrop-filter、动画、阴影、3D transform，避免低端机卡顿 */
  *{backdrop-filter:none !important;-webkit-backdrop-filter:none !important;}
  .top-ai .spark{animation:none !important;}
  @keyframes blink{0%,60%,100%{opacity:.3}30%{opacity:1}}
  .stat-card,.panel,.dash-act,.card{transition:none !important;}
  .stat-card:hover,.card:hover,.dash-act:hover,.proj-card:hover{transform:none !important;box-shadow:0 1px 2px rgba(15,23,42,.04) !important;}
  .stat-card::after{display:none !important;}
  body.gated .app-shell, body.gated .tabbar{filter:none !important;}
  /* 16) 修复工作台右侧黑边：手机端强制所有卡片/统计区占满 100% 宽，禁止 min-width 撑爆；
         sg-2/sg-3 强制 1fr 等分，dash-act 强制 100% 宽，禁止 1fr auto 把窄卡片挤到左半边 */
  body{overflow-x:hidden;}
  main#view.dash-wide,.dash-top,.dash-row,.stat-grid,.dash-acts{width:100%;max-width:100%;}
  .stat-grid.sg-2,.stat-grid.sg-3{grid-template-columns:1fr 1fr !important;}
  .stat-grid{width:100%;}
  .stat-card{width:100%;box-sizing:border-box;}
  .dash-acts{flex-direction:column;min-width:0;}
  .dash-act{flex:1 1 100%;min-width:0;width:100%;box-sizing:border-box;}
  .panel{width:100%;box-sizing:border-box;}
  /* 17) 手机端主内容区不再因为 inset 而有右侧黑边 */
  .app-main,.app-shell{width:100%;max-width:100%;}
  /* 12) 手机端法规全文继续放大：压缩外层内边距、放宽高度、增大字号（不影响 PC 端卡片观感） */
  .laws-wrap,.law-detail{padding:0;}
  .law-full{padding:0;}
  .law-body{padding:0;border:none;border-radius:0;background:transparent;max-height:none;}
  .law-body .cl-item{padding:9px 6px;}
  .law-body .cl-text{font-size:15.5px;line-height:2;}
  .law-body .cl-note{padding:8px 10px;}
  /* 13) Issue3 修复：手机端「锁定到部分」banner 改为全宽紧凑布局，文字允许换行，按钮另起一行；
         解决 banner 蓝色边框在 .law-body 窄宽度内被挤成两条竖线、占据约 25% 宽度的视觉问题 */
  #single-part-banner{flex-direction:column;align-items:stretch;gap:8px;padding:10px 12px;font-size:12.5px;line-height:1.5;border-radius:8px;width:100%;box-sizing:border-box;margin:0 0 10px;}
  #single-part-banner span{white-space:normal;word-break:break-all;}
  #single-part-banner button{align-self:flex-start;padding:6px 14px;}
  /* 14) 调整 top-fab 位置，避免与 banner 同时出现遮挡。
         居中改用 left/right + margin:auto + width:fit-content，彻底避开 transform 冲突导致的点击位移。 */
  .top-fab{bottom:80px;left:0;right:0;margin:0 auto;width:fit-content;transform:none;}
  .top-fab:active{transform:scale(.94);}
  /* 15) 法规正文区域在手机端完全消除外侧 padding 与边框，让条文铺满屏幕 */
  .law-body{border-radius:0;}
  .law-body-wrap{margin-top:0;height:auto;}
  /* 手机端法规详情页：app header + 面包屑 双固定，便于随时返回/切换 */
  header{position:sticky;top:0;z-index:50;background:#fff;}
  .law-crumb{position:sticky;top:52px;z-index:40;background:#f8fafc;border-bottom:1px solid var(--line);padding:8px 14px;margin:0 -12px 8px;width:calc(100% + 24px);box-shadow:0 2px 8px rgba(15,23,42,.05);font-size:12px;}
  .law-body .cl-item,.law-body .cl-ch,.law-body .cl-sec,.law-body .cl-sub,.law-body .cl-subsub{scroll-margin-top:110px;}
}


/* =====================================================================
   增强层（设计系统 v2 · 顶级审美）
   设计语言：住建安全科技蓝（#2563eb）+ 深蓝墨（#0f172a），
   辅以 AI 青（#06b6d4）、隐患红/黄/绿语义色；玻璃拟态、柔和阴影、
   圆角、微交互；完整适配 PC 与移动端。
   ===================================================================== */
:root{
  --blue:#2563eb; --blue-d:#1d4ed8; --blue-700:#1e40af; --blue-50:#eff6ff; --blue-100:#dbeafe;
  --cyan:#06b6d4; --cyan-600:#0891b2;
  --bg:#f3f6fb; --card:#ffffff;
  --text:#0f172a; --ink-2:#1e293b; --muted:#64748b; --muted-2:#94a3b8;
  --danger:#dc2626; --danger-soft:#fef2f2; --ok:#16a34a; --ok-soft:#f0fdf4; --warn:#d97706; --warn-soft:#fffbeb;
  --line:#e6ebf2; --line-soft:#eef2f7;
  --chip:#eff6ff; --chip-b:#bfdbfe;
  --radius:var(--hz-r-md); --radius-sm:var(--hz-r-sm); --radius-lg:var(--hz-r-lg);
  --shadow:0 1px 2px rgba(15,23,42,.06), 0 10px 30px -14px rgba(15,23,42,.22);
  --shadow-lg:0 24px 60px -24px rgba(15,23,42,.40);
  --ring:0 0 0 3px rgba(37,99,235,.30);
  --sidebar-w:250px;
}
html,body{ -webkit-text-size-adjust:100%; }
body{
  background:
    radial-gradient(1100px 560px at 100% -12%, rgba(37,99,235,.10), transparent 60%),
    radial-gradient(900px 520px at -8% -4%, rgba(6,182,212,.08), transparent 55%),
    var(--bg);
  color:var(--text); letter-spacing:.1px;
}

/* ---------- 侧边栏（白底黑字） ---------- */
.sidebar{
  flex:0 0 var(--sidebar-w); width:var(--sidebar-w);
  background:#fff;
  border-right:1px solid var(--line);
  box-shadow:6px 0 28px -10px rgba(15,23,42,.10);
  color:#0f172a;
}
.side-logo{ border-bottom:1px solid var(--line); padding:20px 18px 16px; }
.side-logo .logo-ic{ font-size:30px; }
.side-logo .logo-tx{ color:#0f172a; font-size:14px; line-height:1.4; }
.side-logo .logo-tx b{ color:var(--blue); font-weight:800; }
.side-nav{ gap:6px; padding:14px 12px; }
.nav-item{ color:#0f172a; border-radius:12px; padding:12px 13px; font-size:14px; transition:background .15s, color .15s, transform .12s; }
.nav-item .ni-ic{ font-size:19px; }
.nav-item:hover{ background:#f1f5f9; color:#0f172a; transform:translateX(2px); }
.nav-item.active{
  background:#eff6ff;
  color:#0f172a; box-shadow:inset 3px 0 0 var(--blue);
}
.nav-item.active .ni-ic{ filter:none; }
.side-foot{ color:#64748b; border-top:1px solid var(--line); font-size:11px; }

/* ---------- 顶栏（毛玻璃） ---------- */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(255,255,255,.74);
  backdrop-filter:saturate(170%) blur(14px);
  -webkit-backdrop-filter:saturate(170%) blur(14px);
  border-bottom:1px solid var(--line);
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:12px 20px;
}
.h-title{ font-size:16.5px; font-weight:800; color:var(--ink-2); letter-spacing:.2px; }
.h-sub{ color:var(--muted); font-size:12px; margin-top:1px; }
.h-actions{ display:flex; align-items:center; gap:10px; }
.h-search{
  display:flex; align-items:center; gap:8px; background:#f1f5f9; border:1px solid var(--line);
  border-radius:12px; padding:8px 12px; color:var(--muted); font-size:13px; cursor:pointer; min-width:200px;
  transition:border-color .15s, box-shadow .15s, background .15s;
}
.h-search:hover{ border-color:var(--chip-b); box-shadow:var(--ring); background:#fff; }
.h-avatar{
  width:36px; height:36px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,var(--blue),var(--cyan)); color:#fff; font-weight:800; font-size:14px;
  box-shadow:0 6px 16px -6px rgba(37,99,235,.7); cursor:pointer;
}
.top-ai{
  display:inline-flex; align-items:center; gap:7px; border:none; cursor:pointer;
  background:linear-gradient(135deg,#2563eb,#06b6d4); color:#fff; font-weight:700; font-size:13.5px;
  padding:9px 14px; border-radius:12px; box-shadow:0 8px 20px -8px rgba(6,182,212,.7);
  transition:transform .15s, box-shadow .15s;
}
.top-ai:hover{ transform:translateY(-1px); box-shadow:0 12px 26px -10px rgba(6,182,212,.8); }
.top-ai .spark{ animation:spin 6s linear infinite; display:inline-block; }
@keyframes spin{ to{ transform:rotate(360deg);} }

/* ---------- 通用组件 ---------- */
.sec-title{ font-size:15px; color:var(--ink-2); letter-spacing:.2px; }
.sec-title .dot{ box-shadow:0 0 0 4px rgba(37,99,235,.14); }
.hint{ color:var(--muted); }
.btn{
  border-radius:12px; padding:11px 16px; font-size:14px; box-shadow:0 8px 18px -10px rgba(37,99,235,.65);
  transition:transform .15s, box-shadow .15s, background .15s, filter .15s; letter-spacing:.3px;
}
.btn:hover{ transform:translateY(-1px); filter:brightness(1.03); }
.btn:active{ transform:translateY(0); }
.btn.ghost{ box-shadow:none; color:#334155; background:#f1f5f9; }
.btn.ghost:hover{ background:#e8eef6; }
.btn.danger{ box-shadow:0 8px 18px -10px rgba(220,38,38,.7); }
.btn.sm{ padding:8px 12px; font-size:12.5px; border-radius:10px; }

/* 统计卡（渐变顶边 + 悬停浮起 + 语义辉光） */
.stat-grid{ gap:16px; }
.stat-card{
  border-radius:var(--radius); border-top:4px solid var(--blue); padding:18px;
  box-shadow:var(--shadow); transition:transform .2s, box-shadow .2s; position:relative; overflow:hidden;
}
.stat-card::after{ content:""; position:absolute; inset:0 0 auto 0; height:60px; background:linear-gradient(180deg,rgba(37,99,235,.06),transparent); pointer-events:none; }
.stat-card:hover{ transform:translateY(-4px); box-shadow:var(--shadow-lg); }
.stat-card.blue{ box-shadow:var(--shadow), 0 16px 34px -18px rgba(37,99,235,.5); }
.stat-card.red{ box-shadow:var(--shadow), 0 16px 34px -18px rgba(220,38,38,.45); }
.stat-card.green{ box-shadow:var(--shadow), 0 16px 34px -18px rgba(22,163,74,.45); }
.stat-card.orange{ box-shadow:var(--shadow), 0 16px 34px -18px rgba(217,119,6,.45); }
.stat-card .v{ font-size:30px; letter-spacing:-.5px; }
.stat-card .l{ font-size:13px; }

/* 面板 / 卡片 */
.panel{ border-radius:var(--radius); box-shadow:var(--shadow); padding:16px; border:1px solid var(--line-soft); }
.panel-h{ font-size:14px; color:var(--ink-2); }
.proj-card{ border-radius:var(--radius); box-shadow:var(--shadow); border-left:4px solid var(--blue); transition:transform .18s, box-shadow .18s; }
.proj-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-lg); }
.rank-item .idx{ background:var(--chip); color:var(--blue-700); }
.rank-item .name .bar > i{ background:linear-gradient(90deg,#60a5fa,#2563eb); }

/* 抽屉 / 遮罩（更柔和、更大圆角） */
.overlay, .modal-mask, #rec-overlay, #right-overlay, #toc-overlay, #search-overlay, #img-overlay, #modal-mask, #cam-overlay{
  background:rgba(15,23,42,.46); backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px);
}
.drawer{
  border-radius:20px 0 0 20px; box-shadow:-24px 0 70px -24px rgba(15,23,42,.5);
  border-left:1px solid var(--line);
}
.d-head{ border-bottom:1px solid var(--line); padding:16px 18px; }
.d-head h3{ font-size:16px; }
input, textarea, select{
  border:1px solid var(--line); border-radius:12px; padding:11px 13px; font-size:14px; font-family:inherit;
  transition:border-color .15s, box-shadow .15s; background:#fff; color:var(--text); width:100%;
}
input:focus, textarea:focus, select:focus{ outline:none; border-color:var(--blue); box-shadow:var(--ring); }

/* Toast */
#toast{
  background:rgba(15,23,42,.92); color:#fff; border-radius:12px; padding:11px 18px; font-size:13.5px;
  box-shadow:var(--shadow-lg); backdrop-filter:blur(6px);
}

/* 自定义滚动条 */
*::-webkit-scrollbar{ width:10px; height:10px; }
*::-webkit-scrollbar-thumb{ background:#cbd5e1; border-radius:8px; border:2px solid transparent; background-clip:padding-box; }
*::-webkit-scrollbar-thumb:hover{ background:#94a3b8; background-clip:padding-box; }

/* =====================================================================
   新增：AI 智能问答抽屉 / LMM 隐患识别抽屉 / 悬浮按钮 / 登录
   ===================================================================== */
.fab-ai{
  position:fixed; right:18px; bottom:96px; z-index:45; width:58px; height:58px; border-radius:50%;
  border:none; cursor:pointer; display:none; align-items:center; justify-content:center; font-size:26px;
  background:linear-gradient(135deg,#2563eb,#06b6d4); color:#fff;
  box-shadow:0 14px 30px -8px rgba(6,182,212,.7); animation:pulse 2.4s ease-in-out infinite;
}
@keyframes pulse{ 0%,100%{ box-shadow:0 14px 30px -8px rgba(6,182,212,.7);} 50%{ box-shadow:0 14px 40px -4px rgba(6,182,212,.95);} }

.ai-drawer, .lmm-drawer{
  position:fixed; top:0; right:0; height:100%; width:min(460px, 94vw); background:#fff; z-index:60;
  transform:translateX(100%); transition:transform .32s cubic-bezier(.22,1,.36,1);
  display:flex; flex-direction:column; box-shadow:-24px 0 70px -24px rgba(15,23,42,.5);
}
.ai-drawer.open, .lmm-drawer.open{ transform:translateX(0); }
/* 合并抽屉内的标签页：智能问答 / 隐患识别 */
.ai-tabs{ display:flex; gap:6px; padding:10px 14px 0; background:#fff; border-bottom:1px solid var(--line); }
.ai-tab{ flex:1; border:none; background:#f1f5f9; color:#475569; font-size:13.5px; font-weight:700; padding:10px 8px; border-radius:10px 10px 0 0; cursor:pointer; font-family:inherit; }
.ai-tab.active{ background:#fff; color:var(--blue); box-shadow:inset 0 -2px 0 var(--blue); }
.ai-tab .ic{ margin-right:4px; }
.ai-panel{ flex:1; min-height:0; display:flex; flex-direction:column; overflow:hidden; }
.ai-panel#lmm-panel{ display:none; }
.ai-head, .lmm-head{
  display:flex; align-items:center; gap:12px; padding:16px 18px; border-bottom:1px solid var(--line);
  background:linear-gradient(135deg,#0f1f4d,#123a8a); color:#fff;
}
.ai-head .ai-ic, .lmm-head .lmm-ic{ width:40px; height:40px; border-radius:12px; display:flex; align-items:center; justify-content:center; background:rgba(255,255,255,.14); font-size:22px; }
.ai-head h3, .lmm-head h3{ font-size:16px; margin:0; flex:1; }
.ai-head .ai-sub, .lmm-head .lmm-sub{ font-size:11.5px; opacity:.8; margin-top:2px; }
.ai-head button, .lmm-head button{ background:rgba(255,255,255,.16); color:#fff; border:none; border-radius:10px; width:34px; height:34px; font-size:18px; cursor:pointer; }
.ai-body{ flex:1; overflow-y:auto; padding:18px; display:flex; flex-direction:column; gap:14px; background:#f7f9fc; }
.ai-msg{ display:flex; gap:10px; max-width:100%; }
.ai-msg .av{ width:32px; height:32px; border-radius:10px; flex:none; display:flex; align-items:center; justify-content:center; font-size:17px; }
.ai-msg.user{ flex-direction:row-reverse; }
.ai-msg .bubble{ padding:11px 14px; border-radius:14px; font-size:13.5px; line-height:1.65; box-shadow:var(--shadow); }
.ai-msg.bot .av{ background:linear-gradient(135deg,#2563eb,#06b6d4); color:#fff; }
.ai-msg.bot .bubble{ background:#fff; border:1px solid var(--line); border-top-left-radius:4px; }
.ai-msg.user .av{ background:#e2e8f0; color:#475569; }
.ai-msg.user .bubble{ background:linear-gradient(135deg,#2563eb,#1d4ed8); color:#fff; border-top-right-radius:4px; }
.ai-msg .bubble p{ margin:0 0 8px; } .ai-msg .bubble p:last-child{ margin-bottom:0; }
.ai-msg .bubble ul{ margin:6px 0; padding-left:18px; } .ai-msg .bubble li{ margin:3px 0; }
.cite{ display:inline-block; font-size:11px; background:var(--chip); color:var(--blue-700); border:1px solid var(--chip-b); border-radius:6px; padding:1px 7px; margin:0 2px; cursor:pointer; }
.src-list{ margin-top:6px; display:flex; flex-direction:column; gap:6px; }
.src-item{ font-size:12px; background:#fff; border:1px solid var(--line); border-left:3px solid var(--blue); border-radius:10px; padding:8px 10px; }
.src-item .s-cat{ color:var(--blue-700); font-weight:700; }
.src-item .s-score{ float:right; color:var(--muted-2); font-size:11px; }
.src-item .s-norm{ color:var(--ink-2); font-size:11.5px; }
.norm-link{ color:var(--blue); font-weight:700; cursor:pointer; text-decoration:none; border-bottom:1px dashed var(--blue); }
.norm-link:hover{ background:var(--blue-100); }
.norm-plain{ color:var(--muted); }
.ai-followups{ display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.fu-chip{ background:#eff6ff; color:var(--blue-700); border:1px solid var(--chip-b); border-radius:20px; padding:6px 13px; font-size:12.5px; font-weight:600; cursor:pointer; transition:.15s; font-family:inherit; }
.fu-chip:hover{ background:var(--blue); color:#fff; }
.typing{ display:inline-flex; gap:4px; padding:12px 14px; }
.typing i{ width:7px; height:7px; border-radius:50%; background:#94a3b8; animation:blink 1.2s infinite; }
.typing i:nth-child(2){ animation-delay:.2s; } .typing i:nth-child(3){ animation-delay:.4s; }
@keyframes blink{ 0%,60%,100%{ opacity:.3; transform:translateY(0);} 30%{ opacity:1; transform:translateY(-3px);} }
.ai-input{ display:flex; gap:10px; padding:14px; border-top:1px solid var(--line); background:#fff; }
.ai-input textarea{ resize:none; min-height:44px; max-height:120px; }
.ai-quick{ display:flex; flex-wrap:wrap; gap:8px; padding:0 18px 14px; background:#f7f9fc; }
.ai-quick span{ font-size:12px; background:#fff; border:1px solid var(--line); color:var(--ink-2); border-radius:20px; padding:6px 12px; cursor:pointer; transition:.15s; }
.ai-quick span:hover{ border-color:var(--blue); color:var(--blue); }

/* LMM */
.lmm-drop{ border:2px dashed var(--chip-b); border-radius:16px; padding:26px 18px; text-align:center; color:var(--muted); background:#f7f9fc; cursor:pointer; transition:.15s; }
.lmm-drop:hover{ border-color:var(--blue); background:#eef5ff; }
.lmm-drop.drag{ border-color:var(--blue); background:#e3efff; }
.lmm-preview{ position:relative; border-radius:14px; overflow:hidden; box-shadow:var(--shadow); }
.lmm-preview img{ width:100%; display:block; }
.lmm-badge{ position:absolute; top:10px; left:10px; background:rgba(15,23,42,.7); color:#fff; font-size:11px; padding:4px 9px; border-radius:8px; }
.lmm-result .hz-card{ background:#fff; border:1px solid var(--line); border-left:4px solid var(--warn); border-radius:12px; padding:12px 14px; margin-bottom:10px; box-shadow:var(--shadow); }
.lmm-result .hz-card.major{ border-left-color:var(--danger); }
.lmm-result .hz-card.minor{ border-left-color:var(--warn); }
.lmm-result .hz-card .hz-top{ display:flex; align-items:center; gap:8px; }
.lmm-result .hz-card .hz-name{ font-weight:700; font-size:14px; color:var(--ink-2); flex:1; }
.sev{ font-size:11px; font-weight:800; padding:2px 9px; border-radius:20px; }
.sev.major{ background:var(--danger-soft); color:var(--danger); } .sev.minor{ background:var(--warn-soft); color:var(--warn); }
.hz-clause{ font-size:12px; color:var(--muted); margin-top:6px; }
.hz-clause b{ color:var(--blue-700); }
.hz-advice{ font-size:12.5px; margin-top:6px; line-height:1.6; }
.conf{ font-size:11px; color:var(--muted-2); }

/* 登录 */
.login-mask{ position:fixed; left:0; top:0; width:100%; height:100%; z-index:80; display:none; align-items:center; justify-content:center; background:radial-gradient(900px 500px at 70% -10%, rgba(37,99,235,.18), transparent), rgba(15,23,42,.55); overscroll-behavior:contain; }
.login-mask.show{ display:flex; }
.login-card{ width:min(380px,92vw); background:#fff; border-radius:22px; padding:28px 26px; box-shadow:var(--shadow-lg); }
.login-logo{ text-align:center; margin-bottom:6px; font-size:38px; }
.login-card h2{ text-align:center; margin:6px 0 2px; font-size:20px; color:var(--ink-2); }
.login-card .ls{ text-align:center; color:var(--muted); font-size:12.5px; margin-bottom:18px; }
.login-card label{ font-size:12.5px; color:var(--ink-2); font-weight:600; display:block; margin:12px 0 6px; }
.login-err{ color:var(--danger); font-size:12.5px; min-height:18px; margin-top:8px; text-align:center; }
.login-card .guest{ display:block; text-align:center; margin-top:14px; color:var(--blue); font-size:13px; cursor:pointer; }

/* 顶部小标识 */
.badge-ai{ font-size:10.5px; background:linear-gradient(135deg,#2563eb,#06b6d4); color:#fff; border-radius:6px; padding:1px 7px; margin-left:6px; vertical-align:middle; font-weight:700; }

/* 移动端微调 */
@media(max-width:820px){
  header{ padding:11px 14px; }
  .h-search{ display:none; }
  .h-title{ font-size:14.5px; }
  main#view{ padding:12px; padding-bottom:calc(84px + env(safe-area-inset-bottom)); }
  .fab-ai{ display:flex; bottom:calc(86px + env(safe-area-inset-bottom)); }
  .top-ai span{ display:none; } .top-ai{ padding:9px 11px; }
  .stat-card .v{ font-size:26px; }
}
@media(min-width:821px){ .fab-ai{ display:flex; bottom:26px; } }

/* =====================================================================
   知识库栏目 / 系统管理 / 登录门禁 —— 追加样式（kb.js 使用）
   ===================================================================== */

/* 侧边栏分组标题 */
.nav-group{ font-size:11px; font-weight:800; letter-spacing:.08em; color:#7c8db0; padding:14px 14px 6px; }

/* 登录门禁：未登录时主界面锁定 */
body.gated .app-shell, body.gated .tabbar{ filter:blur(3px); pointer-events:none; user-select:none; }
body.gated .fab-ai, body.gated .top-fab, body.gated .law-toc-fab{ display:none !important; }
.login-card .btn.block{ margin-top:16px; padding:12px; font-size:15px; }
.login-card input{ width:100%; box-sizing:border-box; padding:11px 12px; border:1px solid var(--line); border-radius:10px; font-size:14px; font-family:inherit; background:#fff; color:var(--text); }
.login-card input:focus{ outline:none; border-color:var(--blue); box-shadow:0 0 0 3px var(--blue-100); }

/* 通用页容器 */
.kb-wrap{ max-width:none; width:100%; margin:0; padding:20px 22px 60px; }
.kb-page-h{ font-size:20px; font-weight:800; color:var(--text); margin-bottom:6px; display:flex; align-items:center; gap:10px; }
.kb-back{ font-size:13px; font-weight:700; color:var(--blue); cursor:pointer; background:var(--chip); padding:4px 10px; border-radius:20px; }
.kb-back:hover{ background:var(--blue-100); }
.kb-page-sub{ font-size:13px; color:var(--muted); line-height:1.6; margin-bottom:18px; }
.kb-page-sub b{ color:var(--blue-d); }
.kb-chip{ display:inline-block; background:var(--chip); color:var(--blue-d); border-radius:20px; padding:3px 11px; font-size:11.5px; font-weight:700; }

/* 知识库首页 */
.kb-hero{ display:flex; align-items:center; gap:16px; background:linear-gradient(120deg,#1d4ed8,#2563eb 55%,#06b6d4); color:#fff; border-radius:20px; padding:22px 24px; box-shadow:0 18px 40px -20px rgba(37,99,235,.7); }
.kb-hero-ic{ font-size:42px; }
.kb-hero-t{ font-size:22px; font-weight:800; }
.kb-hero-s{ font-size:13px; opacity:.92; margin-top:4px; }
.kb-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:18px 0; }
.kb-stat{ background:var(--card); border:1px solid var(--line-soft); border-radius:14px; padding:16px; text-align:center; box-shadow:var(--shadow); }
.kb-stat b{ display:block; font-size:24px; font-weight:800; color:var(--blue); line-height:1.1; }
.kb-stat span{ font-size:12px; color:var(--muted); font-weight:600; }
.kb-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px; }
.kb-card{ background:var(--card); border:1px solid var(--line-soft); border-radius:16px; padding:18px 18px 14px; box-shadow:var(--shadow); cursor:pointer; transition:transform .16s, box-shadow .16s, border-color .16s; }
.kb-card:hover{ transform:translateY(-3px); box-shadow:0 20px 44px -22px rgba(15,23,42,.4); border-color:var(--chip-b); }
.kb-card-ic{ font-size:30px; }
.kb-card-t{ font-size:16px; font-weight:800; color:var(--text); margin-top:8px; }
.kb-card-d{ font-size:12.5px; color:var(--muted); line-height:1.6; margin-top:5px; min-height:38px; }
.kb-card-f{ display:flex; justify-content:space-between; align-items:center; margin-top:12px; }
.kb-go{ font-size:12.5px; font-weight:700; color:var(--blue); }

/* 技术标准库 */
.std-list{ display:flex; flex-direction:column; gap:12px; }
.std-card{ display:flex; align-items:center; gap:14px; background:var(--card); border:1px solid var(--line-soft); border-radius:14px; padding:16px 18px; box-shadow:var(--shadow); cursor:pointer; transition:transform .14s, box-shadow .14s; }
.std-card:hover{ transform:translateX(3px); box-shadow:0 16px 36px -20px rgba(15,23,42,.4); }
.std-ic{ font-size:30px; flex:none; }
.std-main{ flex:1; min-width:0; }
.std-t{ font-size:15px; font-weight:700; color:var(--text); }
.std-tags{ margin-top:6px; }
.std-go{ font-size:13px; font-weight:700; color:var(--blue); flex:none; }

/* 技术标准库 · 分类筛选条 */
.std-filter{ display:flex; flex-wrap:wrap; gap:8px; margin:4px 0 16px; }
.std-fbtn{ display:inline-flex; align-items:center; gap:6px; background:var(--card); color:var(--text); border:1px solid var(--line-soft); border-radius:20px; padding:7px 14px; font-size:13px; font-weight:700; cursor:pointer; transition:all .14s; }
.std-fbtn:hover{ border-color:var(--blue); color:var(--blue); transform:translateY(-1px); }
.std-fbtn.active{ background:linear-gradient(135deg,var(--blue),var(--blue-d)); color:#fff; border-color:transparent; box-shadow:0 8px 20px -10px rgba(37,99,235,.6); }
.std-fcnt{ display:inline-block; min-width:18px; text-align:center; background:rgba(255,255,255,.22); border-radius:10px; padding:0 6px; font-size:11px; }
.std-fbtn:not(.active) .std-fcnt{ background:var(--chip); color:var(--muted); }

/* 常见问题库 */
.faq-list{ display:flex; flex-direction:column; gap:10px; }
.faq-item{ background:var(--card); border:1px solid var(--line-soft); border-radius:14px; overflow:hidden; box-shadow:var(--shadow); }
.faq-q{ display:flex; align-items:center; gap:10px; padding:15px 16px; font-size:14px; font-weight:700; color:var(--text); cursor:pointer; }
.faq-qic{ width:22px; height:22px; border-radius:6px; background:var(--blue); color:#fff; font-size:12px; font-weight:800; display:flex; align-items:center; justify-content:center; flex:none; }
.faq-arrow{ margin-left:auto; color:var(--muted); transition:transform .2s; }
.faq-item.open .faq-arrow{ transform:rotate(180deg); }
.faq-a{ max-height:0; overflow:hidden; transition:max-height .28s ease; padding:0 16px; font-size:13px; color:var(--ink-2); line-height:1.7; }
.faq-item.open .faq-a{ max-height:400px; padding:0 16px 15px 48px; }
.faq-a b{ color:var(--danger); }
.faq-more{ margin-top:16px; text-align:center; background:var(--chip); color:var(--blue-d); border-radius:12px; padding:13px; font-size:13.5px; font-weight:700; cursor:pointer; }
.faq-more:hover{ background:var(--blue-100); }

/* LLM 知识库 */
.llm-status{ background:var(--card); border:1px solid var(--line-soft); border-radius:12px; padding:12px 16px; font-size:13px; color:var(--ink-2); margin-bottom:16px; box-shadow:var(--shadow); }
.llm-dot{ display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:6px; vertical-align:middle; }
.llm-dot.on{ background:var(--ok); box-shadow:0 0 0 3px var(--ok-soft); }
.llm-dot.off{ background:var(--muted-2); box-shadow:0 0 0 3px var(--line-soft); }
.llm-cols{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.llm-panel{ background:var(--card); border:1px solid var(--line-soft); border-radius:16px; padding:18px; box-shadow:var(--shadow); }
.llm-panel-t{ font-size:14px; font-weight:800; color:var(--text); margin-bottom:14px; }
.llm-bars{ display:flex; flex-direction:column; gap:9px; }
.llm-bar{ display:flex; align-items:center; gap:10px; font-size:12.5px; }
.llm-bar-n{ flex:0 0 108px; color:var(--ink-2); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.llm-bar-track{ flex:1; height:9px; background:var(--line-soft); border-radius:6px; overflow:hidden; }
.llm-bar-track i{ display:block; height:100%; background:linear-gradient(90deg,#2563eb,#06b6d4); border-radius:6px; }
.llm-bar-v{ flex:0 0 34px; text-align:right; color:var(--muted); font-weight:700; }
.llm-steps{ margin:0; padding-left:20px; font-size:13px; color:var(--ink-2); line-height:1.9; }
.llm-steps code{ background:var(--chip); color:var(--blue-d); padding:1px 6px; border-radius:5px; font-size:12px; }
.llm-tip{ margin-top:14px; background:var(--warn-soft); border-left:3px solid var(--warn); border-radius:8px; padding:10px 12px; font-size:12.5px; color:#92600a; line-height:1.6; }
/* ★ 知识图谱牌面与「当前语料构成」排行表 **一行左右分布**（V2.3.8 改版：图谱不再是整宽大卡）。
   两栏同高自适应，不留死白：
     · 左栏富余的高度被星图吃掉（.kg-stage 用 flex:1，星图越大越好看）；
     · 右栏排行条目用 space-between 撑开（条目少/栏高时自动分布，不挤在顶部）。 */
.llm-cols-kg{ align-items:stretch; }
.llm-cols-kg #kg-hero{ min-width:0; display:flex; flex-direction:column; }
.llm-cols-kg .kg-hero{ flex:1; margin:0; display:flex; flex-direction:column; }
.llm-cols-kg .llm-panel{ display:flex; flex-direction:column; min-width:0; }
.llm-cols-kg .llm-bars{ flex:1; justify-content:space-between; gap:7px; }
/* 「如何扩充这个知识库」＝ 上述两者的备注，整宽垫在下方 */
.llm-panel-note{ margin-top:14px; }

/* 用户管理 */
.usr-form{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:16px; }
.usr-form input, .usr-form select{ flex:1 1 150px; padding:10px 12px; border:1px solid var(--line); border-radius:10px; font-size:13.5px; font-family:inherit; background:#fff; color:var(--text); }
.usr-form input:focus, .usr-form select:focus{ outline:none; border-color:var(--blue); box-shadow:0 0 0 3px var(--blue-100); }
.usr-form .btn{ flex:0 0 auto; }
.usr-table-wrap{ background:var(--card); border:1px solid var(--line-soft); border-radius:14px; overflow:hidden; box-shadow:var(--shadow); }
.usr-table{ width:100%; border-collapse:collapse; font-size:13.5px; }
.usr-table th{ text-align:left; background:var(--chip); color:var(--blue-d); font-weight:700; padding:12px 16px; font-size:12.5px; }
.usr-table td{ padding:13px 16px; border-top:1px solid var(--line-soft); color:var(--text); }
.usr-empty{ text-align:center; color:var(--muted); padding:26px !important; }
.role-badge{ display:inline-block; border-radius:20px; padding:3px 11px; font-size:11.5px; font-weight:700; }
.role-admin{ background:#fef2f2; color:#dc2626; }
.role-lead{ background:#eff6ff; color:#2563eb; }
.role-staff{ background:#f0fdf4; color:#16a34a; }
.usr-del{ background:var(--danger-soft); color:var(--danger); border:none; border-radius:8px; padding:6px 12px; font-size:12.5px; font-weight:700; cursor:pointer; }
.usr-del:hover{ background:#fee2e2; }
.usr-lock{ color:var(--muted-2); }
.usr-tip{ background:var(--blue-50); border-left:3px solid var(--blue); border-radius:8px; padding:11px 14px; font-size:12.5px; color:var(--blue-700); line-height:1.6; margin-bottom:14px; }
.usr-tip.err{ background:var(--danger-soft); border-color:var(--danger); color:var(--danger); }

/* 移动端适配 */
@media(max-width:760px){
  .kb-wrap{ padding:16px 14px 80px; }
  .kb-stats{ grid-template-columns:repeat(2,1fr); }
  .kb-grid{ grid-template-columns:1fr; }
  .llm-cols{ grid-template-columns:1fr; }
  .kb-hero-t{ font-size:19px; }
  .usr-form input, .usr-form select{ flex:1 1 100%; }
}

/* 文档简洁阅读器（政策文件库非标准类文档：手册/指引/清单） */
.std-detail{ background:var(--card); border:1px solid var(--line-soft); border-radius:14px; padding:20px 22px; box-shadow:var(--shadow); font-size:14px; color:var(--ink-2); line-height:1.9; }
.std-detail br{ line-height:1.9; }
/* 文档全文页内联检索条 + 命中高亮（与标准阅读器 law-search 风格一致） */
.doc-searchbar{ position:sticky; top:0; z-index:36; display:flex; align-items:center; gap:8px; background:#fff; border:1px solid var(--line); border-radius:12px; padding:10px 14px; margin:0 0 14px; box-shadow:0 2px 10px rgba(15,23,42,.06); }
.doc-searchbar .ds-ic{ opacity:.6; font-size:15px; flex:none; }
.doc-searchbar input{ flex:1; min-width:160px; border:1px solid #cbd5e1; border-radius:9px; padding:9px 12px; font-size:14px; font-family:inherit; outline:none; color:var(--ink-2); }
.doc-searchbar input:focus{ border-color:var(--blue); box-shadow:0 0 0 3px rgba(37,99,235,.12); }
.doc-searchbar .ds-count{ font-size:12.5px; color:var(--muted); min-width:46px; text-align:center; font-variant-numeric:tabular-nums; flex:none; }
.doc-searchbar .ds-btn{ width:32px; height:34px; border:1px solid #cbd5e1; background:#fff; border-radius:8px; cursor:pointer; color:#475569; font-size:15px; line-height:1; display:flex; align-items:center; justify-content:center; transition:.12s; flex:none; }
.doc-searchbar .ds-btn:hover{ border-color:var(--blue); color:var(--blue); background:#f8faff; }
.doc-searchbar .ds-btn:disabled{ opacity:.4; cursor:not-allowed; }
.doc-h{ font-weight:800; color:var(--ink); margin:14px 0 4px; font-size:15px; line-height:1.5; }
.doc-hl{ background:#fde68a; color:#1f2937; font-weight:700; border-radius:3px; padding:0 2px; }
.doc-hl.cur{ background:#f59e0b; color:#fff; box-shadow:0 0 0 2px rgba(245,158,11,.4); }

/* 隐患判定标准（FAQ 内嵌，原隐患库内容） */
.haz-section{ margin-top:26px; }
.haz-sec-h{ font-size:15px; font-weight:800; color:var(--text); margin-bottom:12px; }
.haz-cat{ background:var(--card); border:1px solid var(--line-soft); border-radius:14px; margin-bottom:10px; box-shadow:var(--shadow); overflow:hidden; }
.haz-cat-h{ display:flex; align-items:center; gap:10px; padding:14px 16px; cursor:pointer; font-size:14px; font-weight:700; color:var(--text); }
.haz-cat-h:hover{ background:var(--chip); }
.haz-cat-ic{ font-size:20px; flex:none; }
.haz-cat-t{ flex:1; min-width:0; }
.haz-cat-n{ flex:none; background:var(--chip); color:var(--blue-d); border-radius:20px; padding:3px 11px; font-size:11.5px; font-weight:700; }
.haz-cat-arrow{ flex:none; color:var(--muted); transition:transform .2s; }
.haz-cat.open .haz-cat-arrow{ transform:rotate(180deg); }
.haz-cat-body{ padding:4px 16px 14px; }
.haz-row{ border-left:3px solid var(--blue); background:var(--chip); border-radius:10px; padding:10px 12px; margin-bottom:8px; }
.haz-no{ font-weight:800; color:var(--blue-d); margin-right:6px; }
.haz-t{ font-size:13px; color:var(--text); font-weight:700; }
.haz-advice{ font-size:12.5px; color:var(--ink-2); margin-top:5px; line-height:1.7; }
.haz-advice b{ color:var(--danger); }
@media(max-width:760px){ .std-detail{ padding:16px 15px; } }

/* LMM 抽屉内智能问答 */
.lmm-split{ display:flex; align-items:center; gap:10px; margin:18px 0 10px; font-size:13px; font-weight:700; color:var(--text); }
.lmm-split::before,.lmm-split::after{ content:''; flex:1; height:1px; background:var(--line); }
.lmm-chat{ display:flex; flex-direction:column; gap:10px; max-height:260px; overflow-y:auto; padding-right:4px; }
.lmm-input{ display:flex; gap:8px; margin-top:10px; }
.lmm-input textarea{ flex:1; min-height:42px; max-height:90px; padding:10px 12px; border:1px solid var(--line); border-radius:12px; font-size:13.5px; font-family:inherit; resize:vertical; background:#fff; color:var(--text); }
.lmm-input textarea:focus{ outline:none; border-color:var(--blue); box-shadow:0 0 0 3px var(--blue-100); }
.lmm-input .btn{ flex:none; align-self:flex-end; }

/* ---------- 手机端工作台精简 ---------- */
@media(max-width:780px){
  .dash-top .stat-grid.sg-2{ grid-template-columns:1fr 1fr; }
  .dash-rectify{ display:none !important; }
}
/* ---------- 应用内确认弹窗（替代被部分环境拦截的原生 confirm） ---------- */
.cf-modal{ position:fixed; left:50%; top:50%; transform:translate(-50%,-50%) scale(.96); z-index:200; background:#fff; border-radius:14px; padding:22px 22px 16px; width:min(420px,92vw); box-shadow:0 18px 50px rgba(15,23,42,.28); opacity:0; pointer-events:none; transition:.16s; }
.cf-modal.show{ opacity:1; pointer-events:auto; transform:translate(-50%,-50%) scale(1); }
.cf-msg{ font-size:15px; color:#1e293b; line-height:1.65; margin-bottom:18px; white-space:pre-wrap; }
.cf-btns{ display:flex; gap:10px; }
.cf-btns button{ flex:1; border:none; border-radius:10px; padding:11px; font-size:14px; font-weight:700; cursor:pointer; }
.cf-cancel{ background:#f1f5f9; color:#334155; }
.cf-ok{ background:#dc2626; color:#fff; }

/* 移动端去除页面右上/左上蓝色装饰渐变（用户反馈影响观感）；
   同步简化卡片/面板的 box-shadow，避免在浅色背景上呈现"右侧阴影条"的视觉错觉 */
@media (max-width: 920px){
  body{ background: var(--bg); }
  .stat-card{ box-shadow: 0 1px 2px rgba(15,23,42,.04); }
  .stat-card::after{ display:none; }
  .stat-card.blue,.stat-card.red,.stat-card.green,.stat-card.orange{ box-shadow: 0 1px 2px rgba(15,23,42,.04); }
  .panel{ box-shadow: 0 1px 2px rgba(15,23,42,.04); }
  .dash-act{ box-shadow: 0 1px 2px rgba(15,23,42,.04); }
  .card{ box-shadow: 0 1px 2px rgba(15,23,42,.04); }
  .lib-img,.lib-cell-img{ box-shadow: 0 1px 2px rgba(15,23,42,.04); }
  header{ box-shadow: none; }
}

/* 竖屏锁定：手机横屏时覆盖全屏提示旋转回竖屏，主内容隐藏避免错位（PC 横屏不受影响） */
#rotate-tip{ display:none; }
@media (orientation: landscape) and (max-width: 900px){
  #rotate-tip{
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    position:fixed; inset:0; z-index:100000; background:#1d4ed8; color:#fff; text-align:center; padding:24px;
  }
  #rotate-tip .rt-ic{ font-size:60px; margin-bottom:14px; }
  #rotate-tip .rt-tx{ font-size:21px; font-weight:700; }
  #rotate-tip .rt-sub{ font-size:13px; opacity:.8; margin-top:6px; }
  body > .app-shell, body > .tabbar, body > .insp-fab, body > .top-fab, body > .law-toc-fab,
  body > .overlay, body > .drawer, body > .login-mask, body > .ai-drawer, body > .toast,
  body > .modal, body > #cam-overlay, body > #img-overlay, body > #search-overlay, body > #modal-mask{ visibility:hidden; }
}

/* ===== AI 方案审查页 ===== */
.scheme-wrap{max-width:960px;margin:0 auto;padding:4px 2px 40px;}
.scheme-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;}
.sh-l .sh-t{font-size:19px;font-weight:800;color:#0f172a;}
.sh-l .sh-s{font-size:12.5px;color:#64748b;margin-top:3px;line-height:1.5;}
.sh-badge{font-size:12px;font-weight:700;padding:6px 12px;border-radius:999px;white-space:nowrap;}
.sh-badge.on{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0;}
.sh-badge.off{background:#fef3c7;color:var(--hz-st-warn);border:1px solid #fde68a;}
.scheme-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:16px;box-shadow:0 1px 3px rgba(15,23,42,.04);}
.scheme-card label{display:block;font-size:13px;font-weight:700;color:#334155;margin:4px 0 7px;}
.scheme-card #scheme-title{width:100%;border:1px solid #cbd5e1;border-radius:9px;padding:10px 12px;font-size:14px;font-family:inherit;margin-bottom:14px;}
.scheme-card #scheme-text{width:100%;min-height:240px;resize:vertical;border:1px solid #cbd5e1;border-radius:10px;padding:12px;font-size:14px;line-height:1.6;font-family:inherit;color:#0f172a;}
.scheme-card #scheme-text:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12);}
.sc-tools{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap;}
.btn-file{background:#f1f5f9;color:#334155;border:1px solid #e2e8f0;border-radius:9px;padding:9px 14px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;}
.btn-file:hover{background:#e2e8f0;}

/* --- Word 上传拖拽区 --- */
.sc-drop{border:2px dashed #cbd5e1;border-radius:12px;background:#f8fafc;padding:26px 16px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;}
.sc-drop:hover{border-color:#93c5fd;background:#f0f7ff;}
.sc-drop.over{border-color:#2563eb;background:#eff6ff;}
.sc-drop .sd-ic{font-size:32px;line-height:1;}
.sc-drop .sd-t{font-size:14.5px;font-weight:800;color:#1e293b;margin-top:9px;}
.sc-drop .sd-s{font-size:12px;color:#94a3b8;margin-top:5px;line-height:1.6;}
.sc-file{margin-top:11px;border-radius:10px;padding:11px 13px;font-size:13.5px;display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.sc-file.ok{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;}
.sc-file.bad{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;display:block;font-weight:700;}
.sc-file .scf-ic{font-size:16px;}
.sc-file .scf-n{font-weight:800;word-break:break-all;flex:1;min-width:120px;}
.sc-file .scf-sz{font-size:12px;color:#059669;background:#d1fae5;padding:2px 8px;border-radius:6px;}
.sc-file .scf-x{background:transparent;border:1px solid #6ee7b7;color:#047857;border-radius:7px;padding:4px 10px;font-size:12px;cursor:pointer;font-family:inherit;font-weight:700;}
.sc-file .scf-x:hover{background:#d1fae5;}
.sc-file .scf-tip{font-weight:400;font-size:12.5px;color:#7f1d1d;margin-top:6px;line-height:1.6;}
.sc-more{margin:4px 0 2px;}
.btn-toggle{background:transparent;border:none;color:#2563eb;font-size:12.5px;font-weight:700;cursor:pointer;padding:4px 0;font-family:inherit;}
.btn-toggle:hover{text-decoration:underline;}
.scheme-card .sc-row{margin-top:14px;}
.scheme-filemeta{margin:14px 0 0;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:10px 13px;font-size:13px;color:#475569;display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.scheme-filemeta b{color:#0f172a;word-break:break-all;}
.scheme-filemeta .sfm-t{background:#eff6ff;color:#1d4ed8;font-size:11.5px;padding:2px 8px;border-radius:6px;font-weight:700;}
.scheme-filemeta .sfm-c{background:#f1f5f9;color:#475569;font-size:11.5px;padding:2px 8px;border-radius:6px;}
.scheme-filemeta .sfm-w{color:var(--hz-st-warn);font-size:12px;width:100%;}
.sc-hint{font-size:12px;color:#94a3b8;flex:1;min-width:160px;}
.btn-run{margin-left:auto;background:#2563eb;color:#fff;border:none;border-radius:9px;padding:10px 20px;font-size:14px;font-weight:800;cursor:pointer;font-family:inherit;box-shadow:0 2px 8px rgba(37,99,235,.35);}
.btn-run:hover{background:#1d4ed8;}
.btn-run:disabled{opacity:.6;cursor:wait;}
.scheme-loading{padding:30px;text-align:center;color:#64748b;font-size:14px;}
.scheme-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0;}
.ss-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:13px 12px;text-align:center;}
.ss-card .ss-n{font-size:26px;font-weight:800;color:#2563eb;line-height:1.1;}
.ss-card .ss-l{font-size:12px;color:#64748b;margin-top:4px;}
.ss-card .ss-tags{margin-top:7px;display:flex;flex-wrap:wrap;gap:4px;justify-content:center;}
.ss-card .ss-tags span{background:#eff6ff;color:#1d4ed8;font-size:11px;padding:2px 7px;border-radius:6px;}
.ss-card.crit .ss-n{color:#dc2626;}
.ss-card.miss .ss-n{color:#d97706;}
.scheme-over{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:12px 14px;margin-bottom:14px;}
.so-h{font-size:13px;font-weight:800;color:var(--hz-st-warn);margin-bottom:6px;}
.so-i{font-size:12.5px;color:#92400e;line-height:1.7;}
.scheme-ai-overview{background:linear-gradient(135deg,#eef4ff,#f5f3ff);border:1px solid #c7d7fe;border-radius:14px;padding:14px 16px;margin:4px 0 14px;}
.sao-h{font-size:13.5px;font-weight:800;color:#4338ca;margin-bottom:8px;display:flex;align-items:center;gap:6px;}
.sao-b{font-size:13.5px;color:#1e293b;line-height:1.85;white-space:normal;word-break:break-word;}
.sao-b br{line-height:1.85;}

/* ── 结构内容审查清单（48号 指南，绝对核心）── */
.scheme-struct-head{font-size:15px;font-weight:800;color:#0f172a;margin:6px 0 10px;display:flex;align-items:center;gap:8px;}
.scheme-struct{background:#fff;border:1px solid #e2e8f0;border-left:5px solid #4f46e5;border-radius:12px;padding:13px 15px;margin-bottom:12px;}
.ss-type{font-size:13.5px;color:#334155;margin-bottom:8px;}
.ss-single{font-size:11.5px;font-weight:600;color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;padding:2px 8px;margin-left:4px;}
.ss-type b{color:#4f46e5;}
.ss-chaps{display:flex;flex-wrap:wrap;gap:7px;}
.ss-ch{font-size:12.5px;padding:4px 10px;border-radius:8px;display:inline-flex;align-items:center;gap:4px;font-weight:600;}
.ss-ch.ok{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0;}
.ss-ch.miss{background:#fef2f2;color:#dc2626;border:1px solid #fecaca;}
.ss-kp{margin-top:9px;font-size:12.5px;color:var(--hz-st-warn);background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:7px 10px;}
.ss-detail{margin-top:9px;font-size:12.5px;color:#475569;}
.ss-detail summary{cursor:pointer;color:#4338ca;font-weight:700;padding:4px 0;}
.ssd-ch{margin-top:7px;font-weight:700;color:#334155;}
.ssd-items{padding-left:2px;}
.ssd-it{font-size:12px;color:#64748b;line-height:1.6;}

/* 新增等级配色 */
.sf-item.lv-norm{border-left-color:#2563eb;background:#eff6ff;}
.lv-norm .sf-level{color:#1d4ed8;}
.sf-item.lv-hint{border-left-color:#7c3aed;background:#f5f3ff;}
.lv-hint .sf-level{color:#6d28d9;}

/* 汇总卡片配色 */
.ss-card.norm .ss-n{color:#1d4ed8;}
.ss-card.hint .ss-n{color:#6d28d9;}
.scheme-find-head{font-size:15px;font-weight:800;color:#0f172a;margin:6px 0 12px;display:flex;align-items:center;gap:10px;}
.sf-mode{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;}
.sf-mode.on{background:#ecfdf5;color:#047857;}
.sf-mode.off{background:#fef3c7;color:var(--hz-st-warn);}
.scheme-list{display:flex;flex-direction:column;gap:12px;}
.sf-item{border-radius:12px;padding:13px 14px;background:#fff;border:1px solid #e2e8f0;border-left:5px solid #94a3b8;}
.sf-item.lv-crit{border-left-color:#dc2626;background:#fef2f2;}
.sf-item.lv-sev{border-left-color:#ea580c;background:#fff7ed;}
.sf-item.lv-miss{border-left-color:#d97706;background:#fffbeb;}
.sf-item.lv-gen{border-left-color:#2563eb;background:#eff6ff;}
.sf-item.lv-vague{border-left-color:#7c3aed;background:#f5f3ff;}
.sf-item.lv-opt{border-left-color:#0891b2;background:#ecfeff;}
.sf-top{display:flex;align-items:center;gap:9px;margin-bottom:9px;}
.sf-no{width:22px;height:22px;border-radius:50%;background:#0f172a;color:#fff;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;}
.sf-level{font-size:13px;font-weight:800;}
.lv-crit .sf-level{color:#dc2626;}
.lv-sev .sf-level{color:#ea580c;}
.lv-miss .sf-level{color:#d97706;}
.lv-gen .sf-level{color:#1d4ed8;}
.lv-vague .sf-level{color:#7c3aed;}
.lv-opt .sf-level{color:#0891b2;}
.sf-grid{display:grid;grid-template-columns:84px 1fr;gap:6px 10px;font-size:13px;}
.sf-k{color:#64748b;font-weight:700;align-self:start;}
.sf-v{color:#0f172a;line-height:1.65;word-break:break-word;}
.sf-v.ev{background:#f8fafc;border-radius:7px;padding:7px 9px;color:#475569;font-size:12.5px;}
.scheme-ref-head{font-size:14px;font-weight:800;color:#0f172a;margin:18px 0 10px;}
.scheme-refs{display:flex;flex-direction:column;gap:9px;}
.sr-item{background:#fff;border:1px solid #e2e8f0;border-radius:11px;padding:11px 13px;}
.sr-cat{font-size:11px;font-weight:700;color:#2563eb;background:#eff6ff;display:inline-block;padding:2px 8px;border-radius:6px;margin-bottom:5px;}
.sr-std{font-size:13.5px;font-weight:700;color:#0f172a;}
.sr-norms{font-size:12px;color:#475569;margin-top:4px;line-height:1.6;}
.sr-adv{font-size:12px;color:#64748b;margin-top:3px;line-height:1.6;}
.scheme-actions{display:flex;gap:10px;margin-top:18px;}
.btn-copy{background:#0f172a;color:#fff;border:none;border-radius:9px;padding:10px 18px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;}
.btn-clear{background:#f1f5f9;color:#334155;border:1px solid #e2e8f0;border-radius:9px;padding:10px 18px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;}
.scheme-note{background:#f8fafc;border:1px solid #e2e8f0;border-radius:11px;padding:12px 14px;font-size:12.5px;color:#475569;line-height:1.7;margin-top:14px;}
.scheme-note.ok{background:#ecfdf5;border-color:#a7f3d0;color:#047857;}
.scheme-note.warn{background:#fffbeb;border-color:#fde68a;color:var(--hz-st-warn);}

/* ── 证据：原方案内容佐证 + 关键部位高亮（黄底红字 / 加黑）── */
.sf-ev{display:flex;flex-direction:column;gap:7px;margin-top:2px;}
.ev{font-size:12.5px;line-height:1.7;color:#334155;border-radius:8px;padding:8px 10px;background:#f8fafc;border:1px solid #e9eef5;word-break:break-word;}
.ev b{color:#0f172a;}
.ev-hit{background:#fef08a;color:#7f1d1d;font-weight:800;padding:0 3px;border-radius:3px;}
.ev-absent{background:#fef2f2;border:1px solid #fecaca;border-left:4px solid #dc2626;color:#b91c1c;}
.ev-absent b{color:#991b1b;}

/* ── 逐条明细（48号 每条/关键要点）── */
.ss-checklist{margin-top:12px;}
.ss-checklist>summary{font-size:13.5px;font-weight:800;color:#0f172a;cursor:pointer;padding:9px 12px;background:#f1f5f9;border-radius:9px;}
.ssc-ch{font-size:13px;font-weight:800;color:#334155;margin:14px 0 6px 2px;}
.ssc-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
@media (max-width:900px){.ssc-items{grid-template-columns:1fr;}}
.ssc-it{display:flex;flex-direction:column;gap:6px;font-size:12.5px;line-height:1.6;padding:10px 12px;border-radius:9px;background:#fff;border:1px solid #e2e8f0;box-shadow:0 1px 2px rgba(15,23,42,.04);}
.ssc-it.ok{background:#f6fef9;border-color:#d9f2e4;}
.ssc-it.miss{background:#fff7f7;border-color:#fbd5d5;}
.ssc-it.crit{border-left:3px solid #dc2626;}
.ssc-head{display:flex;gap:8px;align-items:flex-start;}
.ssc-ic{flex:0 0 auto;font-weight:800;font-size:13px;line-height:1.5;}
.ssc-t{flex:1;color:#0f172a;word-break:break-word;}
.ssc-tag{display:inline-block;font-size:10px;font-weight:800;color:#fff;background:#dc2626;border-radius:4px;padding:1px 5px;margin-left:4px;vertical-align:middle;}
.ssc-it .ev{margin:0;width:auto;}
.ssc-it.miss .ev{background:#fff5f5;border-color:#fbd5d5;}

/* ── 63号 判定标准参考面板 ── */
.scheme-std63-head{font-size:14px;font-weight:800;color:#0f172a;margin:18px 0 10px;}
.scheme-std63{background:#fff;border:1px solid #e2e8f0;border-left:5px solid #7c3aed;border-radius:11px;padding:12px 14px;margin-bottom:10px;}
.s63-type{font-size:13px;color:#475569;margin-bottom:6px;}
.s63-list{display:flex;flex-direction:column;gap:5px;}
.s63-it{font-size:12.5px;line-height:1.65;color:#1e293b;padding:6px 9px;background:#faf5ff;border-radius:7px;}
.s63-no{display:inline-block;font-weight:800;color:#6d28d9;margin-right:6px;}

/* ── 原方案全文（交叉核对）── */
.scheme-origin{margin-top:16px;border:1px solid #e2e8f0;border-radius:11px;background:#fff;overflow:hidden;}
.scheme-origin>summary{font-size:13.5px;font-weight:800;color:#0f172a;cursor:pointer;padding:11px 14px;background:#f8fafc;}
.so-text{font-size:12.5px;line-height:1.8;color:#334155;white-space:pre-wrap;word-break:break-word;max-height:420px;overflow:auto;padding:12px 14px;border-top:1px solid #eef2f7;}

@media (max-width:640px){
  .scheme-summary{grid-template-columns:repeat(2,1fr);}
  .sf-grid{grid-template-columns:70px 1fr;}
  /* 手机端：检查记录底部按钮两行两列，防止溢出 */
  .drawer .d-foot{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;}
  .drawer .d-foot button{width:100%;padding:11px 6px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
}

/* =====================================================================
   清单检查版（JGJ59）样式 —— 与隐患清单版并存
   ===================================================================== */
.j59-tgroup{border:1px solid var(--line);border-radius:12px;margin-bottom:8px;background:#fff;overflow:hidden}
.j59-tghead{padding:9px 12px;display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;cursor:pointer;user-select:none}
.j59-tghead:hover{background:#f6f9ff}
.j59-tarrow{width:0;height:0;border-left:5px solid var(--ink3,#94a3b8);border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .15s;flex:none}
.j59-tgroup.open .j59-tarrow{transform:rotate(90deg)}
.j59-ttab{color:#94a3b8;font-size:10.5px;background:#eef4ff;border-radius:6px;padding:0 6px;font-weight:400}
.j59-tprog{margin-left:auto;font-size:11px;color:#94a3b8;font-weight:400}
.j59-tprog.hasviol{color:#dc2626;font-weight:700}
.j59-tsubs{display:none;border-top:1px solid var(--line)}
.j59-tgroup.open .j59-tsubs{display:block}
.j59-tsub{padding:8px 12px 8px 26px;font-size:12.5px;cursor:pointer;color:#475569;display:flex;align-items:center;gap:6px}
.j59-tsub:hover{background:#f6f9ff}
.j59-tsub.active{background:#eef4ff;color:#4a7fe0;font-weight:700}
.j59-tsub.disabled{opacity:.45;cursor:not-allowed}
.j59-na{margin-left:auto;font-size:10px;color:#94a3b8;border:1px solid var(--line);border-radius:6px;padding:0 5px}
.j59-subprog{margin-left:auto;font-size:10.5px;color:#94a3b8}
.j59-subprog.hasviol{color:#dc2626;font-weight:700}
.j59-hd-meta{margin-left:auto;font-size:12px;color:#94a3b8}
.j59-secbar{font-size:12px;font-weight:800;color:#475569;margin:12px 0 6px;padding:4px 10px;background:#f1f5f9;border-radius:8px}
.j59-secbar.major{color:#b91c1c;background:#fef2f2}
.j59-card{display:block;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.j59-card:hover{border-color:#c3d6f7;box-shadow:var(--shadow)}
.j59-card.j59-is-vio{border-color:#fda4af;background:#fff5f6}
.j59-card.j59-is-ok{border-color:#a7f3d0}
.j59-card.j59-is-na{border-color:#e9d5ff;background:#faf5ff}
.j59-ck-no{display:inline-flex;width:24px;height:24px;border-radius:8px;background:linear-gradient(135deg,#7aa6ff,#38c6d9);color:#fff;font-weight:700;font-size:12px;align-items:center;justify-content:center;margin-right:8px;flex:none}
.j59-ck-no.mj{background:linear-gradient(135deg,#f43f5e,#fb7185)}
.j59-ck-name{font-weight:600;font-size:13.5px}
.j59-st{float:right;border-radius:8px;padding:2px 10px;font-size:11.5px;font-weight:700}
.j59-st.un{background:#f1f5f9;color:#94a3b8}
.j59-st.ok{background:#d1fae5;color:#059669}
.j59-st.vio{background:#fee2e2;color:#dc2626}
.j59-st.na{background:#f3e8ff;color:#7c3aed}
/* ===== P1 · 检查方案圈范围（v2.1.3） ===== */
.j59-tsub.outscope,.j59-dtbl.outscope{opacity:.52}
.j59-tsub.outscope .j59-oos,.j59-dtbl.outscope .j59-oos{background:#f1f5f9;color:#94a3b8;border-radius:7px;padding:1px 7px;font-size:10.5px;font-weight:700;margin-left:6px}
.j59-oos-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:linear-gradient(90deg,#f8fafc,#f1f5f9);border:1px dashed #cbd5e1;border-radius:11px;padding:8px 12px;margin-bottom:10px;font-size:12.5px;color:#64748b}
.j59-scope-tip{font-size:12.5px;color:#64748b;background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:8px 11px;margin-bottom:11px;line-height:1.6}
.j59-scope-modes{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:9px}
.j59-scope-mode{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;background:#f6f9ff;border:1px solid var(--line);border-radius:9px;padding:5px 11px;cursor:pointer}
.j59-scope-mode input{accent-color:#5b8def}
.j59-scope-gname{font-size:12px;color:#64748b;margin:7px 0 4px;font-weight:700}
.j59-scope-chips{display:flex;flex-wrap:wrap;gap:5px}
.j59-scope-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:3px 9px;cursor:pointer}
.j59-scope-chip input{accent-color:#5b8def}
.j59-scope-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:#475569;background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:8px 11px;margin-bottom:11px}
.j59-scope-lb{background:linear-gradient(135deg,#7c3aed,#5b8def);color:#fff;border-radius:7px;font-size:11px;padding:2px 8px;font-weight:700;flex:none}
.j59-scope-edit{border:none;background:none;color:#5b8def;font-size:12px;cursor:pointer;text-decoration:underline;padding:0}
/* ===== v2.1.3 任务 2+4：检查页顶栏 UI 重构 + 分栏说明文字 ===== */
.insp-top{
  display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"left right" "title title";
  gap:10px 14px; align-items:center; margin:2px 0 10px;
  padding:12px 14px; background:linear-gradient(180deg,#fff,#fafbff);
  border:1px solid var(--line); border-radius:14px; box-shadow:0 4px 16px -10px rgba(15,23,42,.1);
}
.insp-top-left{display:flex; align-items:center; gap:12px; min-width:0; grid-area:left}
.insp-top-right{display:flex; align-items:center; gap:8px; flex-wrap:wrap; justify-content:flex-end; grid-area:right}
.insp-title{grid-area:title; font-size:14px; font-weight:700; color:var(--ink-2); padding-top:2px; border-top:1px dashed var(--line); padding-top:8px; margin-top:2px}
.insp-back{
  display:inline-flex; align-items:center; gap:3px; padding:7px 14px 7px 10px; border:none;
  background:linear-gradient(135deg,#f8fafc,#eef2f7); color:#334155; font-size:13px; font-weight:700;
  border-radius:999px; cursor:pointer; transition:all .15s; flex:none;
  box-shadow:inset 0 0 0 1px var(--line), 0 1px 2px rgba(15,23,42,.04);
}
.insp-back:hover{background:linear-gradient(135deg,#eef2f7,#dde6f0); box-shadow:inset 0 0 0 1px #c3d6f7, 0 2px 8px -4px rgba(91,141,239,.3)}
.insp-back-arr{font-size:18px; line-height:1; font-weight:900}
.insp-back-tx{font-weight:700}
.ipi-card{
  display:flex; align-items:center; gap:11px; padding:5px 14px 5px 5px;
  background:linear-gradient(135deg,#f6f9ff,#fafbff);
  border:1px solid #dbe7fb; border-radius:12px;
  flex:1; min-width:0; transition:border-color .15s, box-shadow .15s;
}
.ipi-card:hover{border-color:#c3d6f7; box-shadow:0 2px 10px -4px rgba(91,141,239,.18)}
/* v2.1.14：原 .ipi-cube「建」方块规则已随元素一并删除 */
.ipi-tx{flex:1; min-width:0}
.ipi-name{font-size:14.5px; font-weight:800; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.ipi-meta{display:flex; gap:8px; margin-top:4px; flex-wrap:wrap}
.ipi-meta-i{
  display:inline-flex; align-items:center; gap:5px;
  font-size:11.5px; color:var(--ink-2);
  background:#fff; border:1px solid var(--line); border-radius:7px;
  padding:2px 9px 2px 2px; white-space:nowrap;
}
.ipi-meta-lb{
  display:inline-flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#eef2f7,#dde6f0); color:#475569;
  border-radius:5px; padding:1px 6px;
  font-size:10.5px; font-weight:800;
}
/* 主按钮：记录 */
.btn.sm.primary{background:linear-gradient(135deg,#4f7cff,#a855f7); color:#fff; border:none; box-shadow:0 2px 8px -4px rgba(91,141,239,.5)}
.btn.sm.primary:hover{transform:translateY(-1px); box-shadow:0 6px 16px -6px rgba(91,141,239,.7)}
/* 次按钮：圈定范围 / 检查结论（与主按钮美术风格区分但和谐） */
.j59-scope-btn{background:linear-gradient(135deg,#f0f5ff,#faf5ff); color:#5b8def; border:1px solid #c3d6f7}
.j59-scope-btn:hover{transform:translateY(-1px); box-shadow:0 4px 12px -6px rgba(91,141,239,.4); border-color:#a4c2f0}
.j59-concl-btn{background:linear-gradient(135deg,#ecfdf5,#f0fdfa); color:#059669; border:1px solid #a7f3d0}
.j59-concl-btn:hover{transform:translateY(-1px); box-shadow:0 4px 12px -6px rgba(5,150,105,.4); border-color:#6ee7b7}
/* ⋮ 更多 按钮 + 下拉菜单 */
.insp-more{position:relative; flex:none}
.insp-more-btn{font-size:18px; line-height:1; padding:6px 13px !important; letter-spacing:1px; font-weight:700}
.insp-more-menu{
  display:none; position:absolute; right:0; top:calc(100% + 6px); z-index:50;
  min-width:210px; padding:6px;
  background:#fff; border:1px solid var(--line); border-radius:12px;
  box-shadow:0 12px 32px -8px rgba(15,23,42,.22);
  flex-direction:column; gap:2px;
}
.insp-more.open .insp-more-menu{display:flex}
.insp-more-menu button{
  display:flex; align-items:center; gap:9px; width:100%; padding:8px 12px;
  border:none; background:transparent;
  font-size:13px; color:#334155; border-radius:8px;
  cursor:pointer; text-align:left; transition:background .12s;
}
.insp-more-menu button:hover{background:#f1f5f9}
.imm-ic{
  display:inline-flex; align-items:center; justify-content:center;
  width:24px; height:24px; border-radius:6px;
  background:linear-gradient(135deg,#eef2f7,#dde6f0); color:#475569;
  font-size:10.5px; font-weight:800; flex:none;
}
.imm-sep{height:1px; background:var(--line); margin:4px 4px}
.imm-danger{color:#dc2626 !important}
.imm-danger:hover{background:#fef2f2 !important}
.imm-danger .imm-ic{background:#fef2f2; color:#dc2626}
/* 分栏条 v2.1.3：保证项目/一般项目 右侧加说明 */
.j59-secbar{
  display:flex; align-items:center; gap:10px;
  font-size:12.5px; font-weight:800; color:#475569;
  margin:12px 0 6px; padding:6px 12px;
  background:linear-gradient(90deg,#f1f5f9,#fafbff);
  border-radius:9px; border-left:3px solid #94a3b8;
}
.j59-secbar.major{color:#b91c1c; background:linear-gradient(90deg,#fef2f2,#fff5f6); border-left-color:#dc2626}
.j59-sec-name{flex:none}
.j59-sec-note{
  margin-left:auto; flex:none;
  font-weight:600; font-size:11px; color:#64748b;
  background:rgba(255,255,255,.75); border:1px solid var(--line); border-radius:999px;
  padding:2px 10px;
}
.j59-secbar.major .j59-sec-note{color:#dc2626; border-color:#fecaca; background:rgba(254,242,242,.85)}
.j59-ck-sub{font-size:11.5px;color:#94a3b8;margin-top:4px}
.j59-major-top{margin-top:6px;background:#fef2f2;border:1px solid #fecaca;border-radius:9px;padding:5px 9px;font-size:11.5px;color:#b91c1c}
.j59-mt-badge{background:linear-gradient(135deg,#dc2626,#ef4444);color:#fff;border-radius:6px;font-size:10px;padding:1px 7px;font-weight:700;margin-right:5px}
.j59-vio-hint{margin-top:5px;color:#dc2626;font-size:11.5px;background:#fff5f6;border-radius:8px;padding:4px 9px}
.j59-guide-strip{margin-top:6px;background:linear-gradient(90deg,#f0f5ff,#f6fffd);border:1px dashed #c3d6f7;border-radius:9px;padding:4px 9px;font-size:11px;color:#3b5bdb;display:flex;align-items:center;gap:6px;flex-wrap:wrap;cursor:pointer}
.j59-guide-strip.big{font-size:11.8px;padding:8px 12px}
.j59-guide-strip.none{color:#94a3b8;cursor:default}
.j59-gs-tag{background:linear-gradient(135deg,#5b8def,#38c6d9);color:#fff;border-radius:5px;font-size:9.5px;padding:0 6px;font-weight:700;flex:none}
.j59-gs-btn{margin-left:auto;flex:none;border:1px solid #c3d6f7;background:#fff;color:#4a7fe0;border-radius:7px;padding:1px 8px;font-size:10.5px;font-weight:600;cursor:pointer}
.j59-dt-label{font-size:11.5px;font-weight:700;color:#475569;margin-bottom:6px;display:flex;align-items:center;gap:6px}
.j59-dt-label::before{content:"";width:3px;height:12px;border-radius:2px;background:linear-gradient(135deg,#5b8def,#38c6d9);display:inline-block}
.j59-vio-row{display:flex;gap:8px;align-items:flex-start;border:1.5px solid var(--line);border-radius:11px;padding:8px 10px;margin-bottom:6px;cursor:pointer;font-size:12.3px;transition:border-color .15s;user-select:none}
.j59-vio-row:hover{border-color:#c3d6f7}
.j59-vio-row.on{border-color:#fda4af;background:#fff5f6}
.j59-vio-row input{margin-top:3px;accent-color:#f43f5e}
.j59-vio-txt{flex:1}
.j59-verdict{margin-top:9px;background:#fff7ed;border:1.5px dashed #fdba74;border-radius:12px;padding:9px 12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.j59-v-txt{font-size:12.3px;color:#c2410c;font-weight:600;flex:1;min-width:120px}
.j59-meth-tags{display:flex;gap:6px;flex-wrap:wrap}
.j59-mtag{border:1.5px solid var(--line);border-radius:8px;padding:2px 11px;font-size:11.5px;color:#94a3b8;cursor:pointer;user-select:none}
.j59-mtag.on{border-color:#c3d6f7;color:#4a7fe0;background:#eef4ff;font-weight:700}
.j59-sec-tag{font-size:10.5px;color:#4a7fe0;background:#eef4ff;border-radius:6px;padding:1px 8px;margin-left:6px}
.j59-sec-tag.mj{color:#dc2626;background:#fee2e2}
.j59-lg-item{border:1px solid var(--line);border-radius:11px;padding:9px 12px;margin-bottom:7px;font-size:12.3px}
.j59-lg-item.major{border:1px solid #fecaca;border-left:3px solid #ef4444;background:#fffbfb}
.j59-lg-no{font-size:10.5px;color:#dc2626;font-weight:700}
.j59-lg-item:not(.major) .j59-lg-no{color:#4a7fe0}
.j59-lg-std{font-weight:600;margin:3px 0}
.j59-lg-chips{display:flex;gap:5px;flex-wrap:wrap;margin:5px 0}
.j59-lg-chip{background:#fee2e2;color:#b91c1c;border-radius:6px;font-size:10.5px;padding:1px 8px}
.j59-lg-method,.j59-lg-advice,.j59-lg-norms{font-size:11.5px;color:#475569;margin-top:4px}
.j59-lg-ops{margin-top:6px}
.j59-lg-empty{font-size:12px;color:#94a3b8;padding:8px 0}
.j59-drawer-mask{display:none;position:fixed;inset:0;background:rgba(30,41,59,.45);z-index:1200;backdrop-filter:blur(2px)}
.j59-drawer-mask.on{display:block}
.j59-drawer{display:none;position:fixed;top:5vh;bottom:5vh;left:50%;transform:translateX(-50%);width:min(720px,94vw);background:#fff;border-radius:22px;z-index:1201;box-shadow:0 24px 64px rgba(30,41,59,.3);overflow:hidden;flex-direction:column}
.j59-drawer.on{display:flex}
.j59-dw-head{padding:16px 22px;background:linear-gradient(135deg,#f0f5ff,#f6fffd);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.j59-dw-head b{font-size:15.5px}
.j59-dw-sub{color:#94a3b8;font-size:11.5px;flex-basis:100%}
.j59-dw-close{margin-left:auto;border:none;background:#f1f5f9;color:#475569;width:30px;height:30px;border-radius:10px;font-size:17px;cursor:pointer}
.j59-dw-tabs{display:flex;gap:6px;padding:10px 22px 0;border-bottom:1px solid var(--line);background:#fbfcff;flex-wrap:wrap}
.j59-dw-tab{border:1.5px solid transparent;background:transparent;border-radius:10px 10px 0 0;padding:7px 16px;font-size:13px;color:#475569;cursor:pointer;font-weight:600}
.j59-dw-tab.on{background:#fff;border-color:var(--line);border-bottom-color:#fff;color:#4a7fe0}
.j59-dw-body{padding:16px 22px;overflow-y:auto;flex:1}
.j59-dw-pane{display:none}
.j59-dw-pane.on{display:block;animation:fadeIn .2s}
.j59-dw-pane p{font-size:13.5px;margin-bottom:8px}
.j59-dw-tip{font-size:11.5px;color:#3b5bdb;background:#eef4ff;border-radius:8px;padding:4px 10px;margin-bottom:10px;display:inline-block}
.j59-dw-empty{color:#94a3b8;font-size:13px}
.j59-concl-tbl{width:100%;border-collapse:collapse;font-size:12.8px;margin:8px 0 12px}
.j59-concl-tbl th{background:#f6f9ff;padding:7px 10px;text-align:left;border:1px solid var(--line);font-weight:700;color:#475569}
.j59-concl-tbl td{padding:7px 10px;border:1px solid var(--line)}
.j59-concl-tbl .num{font-weight:800;color:#4a7fe0}
.j59-concl-tbl .num.r{color:#dc2626}
.j59-concl-box{background:#f0fdf4;border:1.5px solid #86efac;border-radius:14px;padding:14px 18px;font-size:13.5px;color:#166534}
@media(max-width:780px){.j59-drawer{width:100vw;top:0;bottom:0;left:0;transform:none;border-radius:0}}

/* 清单检查版右栏 checkbox 修复：theme-v3 的全局 input{width:100%;padding:10px} 会把勾选框拉满一行，
   文字被挤到最右。用复合选择器提高权重收窄 checkbox（v1.9.35） */
.j59-vio-row input[type="checkbox"]{width:16px;height:16px;min-width:16px;padding:0;margin:3px 0 0;flex:0 0 auto;accent-color:#f43f5e;border-radius:4px;border:1.5px solid #cbd5e1;background:#fff;cursor:pointer}
.j59-vio-row input[type="checkbox"]:checked{background:#f43f5e;border-color:#f43f5e}
.j59-vio-row{align-items:flex-start}
.j59-vio-txt{flex:1 1 0;min-width:0;word-break:break-word;line-height:1.55}
.j59-vio-row .chip{font-size:11.5px;padding:2px 10px;margin:2px 4px 2px 0;display:inline-block}
.j59-lg-chips .chip{margin:2px 4px 2px 0}

/* 指南媒体（附图/表格）还原样式 */
.j59-media-img{margin:10px 0;text-align:center}
.j59-media-img img{max-width:100%;max-height:420px;border:1px solid var(--line);border-radius:10px;box-shadow:0 2px 8px rgba(91,141,239,.08);cursor:zoom-in;background:#fff}
.j59-media-cap{font-size:11px;color:#94a3b8;margin-top:4px}
.j59-media-tbl-wrap{margin:10px 0;overflow-x:auto}
.j59-media-tbl{width:100%;border-collapse:collapse;font-size:12px;background:#fff}
.j59-media-tbl th{background:#f0f5ff;border:1px solid #dbe4f3;padding:6px 8px;font-weight:700;color:#1e293b;text-align:center;white-space:nowrap}
.j59-media-tbl td{border:1px solid #e8edf7;padding:6px 8px;color:#334155;vertical-align:top}

/* 依据结构化引用弹窗 */
.j59-basis-norm{border:1.5px solid var(--line);border-radius:12px;padding:6px 10px;margin-bottom:8px}
.j59-basis-clause:hover{background:#f6f9ff!important}
.j59-basis-preview{margin-top:10px}
.j59-basis-pv-h{font-size:12px;font-weight:700;color:#475569;margin-bottom:4px}
.j59-basis-pv-t{background:#f0fdf4;border:1.5px solid #86efac;border-radius:10px;padding:9px 12px;font-size:12.5px;color:#166534;white-space:pre-wrap;line-height:1.6}
/* 公式块 */
.j59-media-fm{background:#f8fafc;border-left:3px solid #5b8def;border-radius:0 10px 10px 0;padding:8px 14px;margin:8px 0;font-family:Consolas,'Courier New',monospace;font-size:13.5px;color:#0f172a}

/* 违规情形勾选框：显示状态由数据渲染，禁止直接点击（点击统一走行级 j59VioClick） */
.j59-vio-row input[type="checkbox"]{pointer-events:none}

/* 清单检查版移动端：左栏栏目树恢复纵向块状布局（覆盖旧版横向 chips 样式 v2.2） */
@media(max-width:780px){
  .insp-left.j59-left{display:block!important;overflow-x:hidden!important;overflow-y:auto;width:100%;flex:none!important;max-height:46vh;padding:6px;}
  .insp-left.j59-left .j59-tgroup{min-width:0;margin-bottom:6px;}
  .insp-left.j59-left .j59-tghead{flex-wrap:nowrap}
  .insp-left.j59-left .j59-tprog{margin-left:auto;white-space:nowrap}
  .insp-left.j59-left .j59-tsub{padding:9px 12px 9px 24px;font-size:13px}
}

/* v2.0.1 手机端检查方向折叠选择器（j59BuildLeftMobile）
   默认只显示「当前检查方向 + 切换方向」一条，点开才列全部分项，
   选中即收起并跳到该方向开始检查，避免长列表把检查内容挤出屏幕。 */
@media(max-width:780px){
  .insp-left.j59-left{max-height:none!important;overflow:visible!important;padding:0!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;}
  .j59-dirbar{display:flex;align-items:center;gap:10px;background:var(--card,#fff);border-radius:13px;box-shadow:var(--shadow);padding:9px 12px;}
  .j59-dirbar-cur{flex:1;min-width:0;}
  .j59-dirbar-lb{display:block;font-size:11px;color:var(--muted,#8a96b3);line-height:1.4}
  .j59-dirbar-name{display:block;font-size:14.5px;font-weight:800;color:#0f172a;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .j59-dirbtn{flex:none;border:1px solid var(--chip-b,#bfd3fa);background:linear-gradient(135deg,rgba(91,141,239,.12),rgba(56,198,217,.10));color:var(--blue-700,#1d4ed8);border-radius:999px;padding:8px 15px;font-size:12.5px;font-weight:800;min-height:38px;cursor:pointer;font-family:inherit;white-space:nowrap}
  .j59-dirbtn:active{transform:scale(.96)}
  .j59-dirpanel{margin-top:8px;background:var(--card,#fff);border-radius:13px;box-shadow:var(--shadow);padding:8px 8px 4px;max-height:56vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
  .j59-dtables{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:7px}
  .j59-dtables:last-child{margin-bottom:0}
  .j59-dglb{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;color:#64748b;padding:0 3px;min-height:28px}
  .j59-dgprog{font-weight:600;font-size:10.5px;color:var(--muted,#8a96b3)}
  .j59-dgprog.hasviol{color:#dc2626}
  .j59-dtbl{display:inline-flex;align-items:center;gap:4px;flex:0 1 auto;max-width:100%;border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600;color:#334155;background:var(--card,#fff);min-height:28px;cursor:pointer;line-height:1.25;box-sizing:border-box}
  .j59-dtbl:active{transform:scale(.97)}
  .j59-dtbl.active{border-color:#5b8def;background:linear-gradient(135deg,#eef4ff,#e9f8fb);color:#1d4ed8;font-weight:800}
  .j59-dtbl.disabled{opacity:.45;cursor:not-allowed}
  .j59-dtbl.outscope{opacity:.62}
  .j59-dtbl .j59-subprog{margin-left:0;flex:none;font-size:10px;font-weight:700;color:#94a3b8;background:#f1f5f9;border-radius:999px;padding:1px 6px;white-space:nowrap}
  .j59-dtbl .j59-subprog.hasviol{background:#fee2e2;color:#dc2626}
  .j59-dtbl .j59-na{margin-left:0;font-size:10px;color:#94a3b8;white-space:nowrap}
  .j59-dtbl .j59-oos{margin-left:0;font-size:10px;padding:1px 6px}
}

/* 清单检查版 v2.4：手机端违规情形选择窗口 + 保证项目标签不换行 */
.j59-mv-sub{font-size:12px;color:#64748b;margin-top:4px}
.j59-mv-row{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);border-radius:11px;padding:10px 12px;margin-bottom:7px;cursor:pointer;font-size:12.8px;transition:.15s}
.j59-mv-row:hover{border-color:#c3d6f7;background:#f6f9ff}
.j59-mv-row.on{border-color:#fda4af;background:#fff5f6}
.j59-mv-txt{flex:1}
.j59-mv-badge{flex:none;font-size:10.5px;border-radius:7px;padding:2px 9px;font-weight:700;background:#f1f5f9;color:#94a3b8;white-space:nowrap}
.j59-mv-badge.done{background:#d1fae5;color:#059669}
.j59-secbar{white-space:nowrap}
.j59-sec-tag{white-space:nowrap}

/* ===== 清单检查版 v2.7（2026-09-01）：依据弹窗（勾选适用的规范与条文）手机端专属适配 =====
   标签布局样式由 app.js 内联迁移至此（桌面基础值=原内联值，媒体查询可按端覆写）；
   手机端（≤780px）弹窗改 flex 纵向：头部/预览/底部固定，仅条款列表滚动；头部含「回到上级」返回键。 */
.j59-basis-head{display:flex;align-items:center;gap:8px;margin:0 0 10px}
.j59-basis-back{display:flex;align-items:center;gap:2px;border:1.5px solid var(--line);background:#f8fafc;color:#334155;font-size:13px;font-weight:700;padding:7px 12px 7px 9px;border-radius:999px;cursor:pointer;flex:none}
.j59-basis-back:hover{border-color:#c3d6f7;background:#f6f9ff}
.j59-bb-ic{font-size:17px;line-height:1;font-weight:700;color:#5b8def;margin-top:-1px}
.j59-basis-ht{flex:1;min-width:0;font-size:16px;font-weight:800;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.j59-basis-sub{font-size:12px;color:#64748b;margin:-6px 0 8px}
.j59-basis-none{display:flex;gap:8px;align-items:center;background:#f8fafc;border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13px;font-weight:700;cursor:pointer;margin-bottom:8px}
.j59-basis-norm>label{display:flex;gap:8px;align-items:center;font-weight:700;cursor:pointer;padding:6px 4px}
.j59-bn-cnt{font-weight:400;color:#94a3b8;font-size:11px}
.j59-basis-clause{display:flex;gap:8px;align-items:flex-start;padding:5px 8px 5px 26px;font-size:12.5px;cursor:pointer;border-radius:8px}
#j59-basis-list{max-height:44vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
@media(max-width:780px){
  /* ★★ 2026-11-04 修复「清单检查记入弹窗无法退出」：
     PC 端 body{zoom:1.35}，而 **vh 不参与 zoom 换算** ⇒ 86vh 实际渲染成 116vh，
     弹窗高度冲出屏幕 ⇒ flex:none 的 .mb-foot（取消/确认按钮）落在视口外，用户点不到。
     ⇒ 用 --hz-page-zoom 反算（该变量只在 PC 断点定义，兜底 1）。 */
  .mbox.j59-basis-mbox{display:flex;flex-direction:column;
    max-height:calc(min(86vh,820px) / var(--hz-page-zoom,1));overflow:hidden;padding:12px}
  .mbox.j59-basis-mbox .j59-basis-head,.mbox.j59-basis-mbox .j59-basis-sub,.mbox.j59-basis-mbox .j59-basis-preview,.mbox.j59-basis-mbox .mb-foot{flex:none}
  .mbox.j59-basis-mbox #j59-basis-list{flex:1;min-height:120px;max-height:none;overflow-y:auto}
  .mbox.j59-basis-mbox .j59-basis-clause{padding:9px 10px 9px 30px;font-size:13px}
  .mbox.j59-basis-mbox .j59-basis-norm>label{padding:9px 4px}
  .mbox.j59-basis-mbox .j59-basis-none{padding:11px 12px}
  .mbox.j59-basis-mbox .mb-foot{margin:10px 0 0;padding-top:10px;border-top:1.5px solid var(--line)}
  .mbox.j59-basis-mbox .mb-foot .btn{flex:1;min-height:44px;font-size:15px}
}

/* =====================================================================
   站内信（v1.9.38）：顶栏/侧栏入口 + 面板（会话列表/聊天）+ 写消息/群发
   风格：无 emoji、高对比度、渐变蓝粉胶囊按钮、1.5px 线性图标
   ===================================================================== */
/* ---- 顶栏入口 ---- */
.h-mail{
  display:flex;align-items:center;justify-content:center;position:relative;
  width:36px;height:36px;border-radius:50%;border:1px solid var(--line);
  background:#f8fafc;color:#334155;cursor:pointer;padding:0;
  transition:border-color .15s, box-shadow .15s, background .15s, transform .12s;
}
.h-mail:hover{border-color:var(--chip-b);box-shadow:var(--ring);background:#fff;transform:translateY(-1px)}
.h-mail-badge,.side-mail-badge{
  position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;box-sizing:border-box;
  border-radius:999px;background:#ef4444;color:#fff;font-size:10.5px;font-weight:800;
  align-items:center;justify-content:center;border:2px solid #fff;line-height:1;
}
/* ---- 侧栏入口 ---- */
.side-mail-badge{ position:static; margin-left:auto; border:none; font-size:10.5px; }
/* ---- 面板遮罩 ---- */
.mail-mask{ position:fixed; inset:0; z-index:1200; background:rgba(15,23,42,.5); display:none; align-items:center; justify-content:center; padding:20px; box-sizing:border-box; backdrop-filter:blur(2px); }
.mail-mask.show{ display:flex; }
.mail-panel{ width:min(760px,100%); height:min(86vh,780px); background:#fff; border-radius:16px; box-shadow:0 24px 60px -12px rgba(15,23,42,.35); display:flex; flex-direction:column; overflow:hidden; }
/* v2.1.3 修复「站内信无法向下滚动查看历史消息」：
   根因 = 4 个视图容器是普通 block，内层的 .mail-list / .mail-chat-body 写的 flex:1 完全失效，
   内容把视图撑到 3000+px，被 .mail-panel 的 overflow:hidden 裁掉且无法滚动。
   修复 = 视图容器本身变成 flex 列容器 + min-height:0（flex 子项默认 min-height:auto 会被内容撑开）。 */
#mail-view-list,#mail-view-chat,#mail-view-compose,#mail-view-broadcast{
  display:flex; flex-direction:column; flex:1 1 auto; min-height:0; overflow:hidden;
}
#mail-view-compose,#mail-view-broadcast{ overflow-y:auto; -webkit-overflow-scrolling:touch; }
/* ---- 头部 ---- */
.mail-head{ display:flex; align-items:center; gap:10px; padding:14px 16px; border-bottom:1.5px solid var(--line); flex:none; }
.mail-head-t{ flex:1; min-width:0; font-size:16.5px; font-weight:800; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mail-head-actions{ display:flex; align-items:center; gap:8px; flex:none; }
.mail-act{ border:none; cursor:pointer; font-size:12.5px; font-weight:700; padding:7px 14px; border-radius:999px;
  background:linear-gradient(90deg,#4f7cff,#a855f7); color:#fff; transition:transform .12s, box-shadow .12s; }
.mail-act:hover{ transform:translateY(-1px); box-shadow:0 6px 14px -6px rgba(91,141,239,.7); }
.mail-act.bcast{ background:linear-gradient(90deg,#f59e0b,#ef4444); }
.mail-act.danger{ background:#fef2f2; color:#dc2626; }
.mail-act.danger:hover{ background:#fee2e2; box-shadow:none; }
.mail-close{ border:none; background:#f1f5f9; color:#475569; width:30px; height:30px; border-radius:50%; cursor:pointer; font-size:14px; font-weight:700; line-height:1; transition:background .15s; }
.mail-close:hover{ background:#e2e8f0; }
.mail-back{ border:1.5px solid var(--line); background:#f8fafc; color:#334155; width:30px; height:30px; border-radius:50%; cursor:pointer; font-size:17px; font-weight:800; line-height:1; flex:none; }
.mail-back:hover{ border-color:#c3d6f7; background:#f6f9ff; }
/* ---- 筛选 tab ---- */
.mail-tabs{ display:flex; gap:6px; padding:10px 16px 0; flex:none; }
.mtab{ border:1.5px solid var(--line); background:#f8fafc; color:#475569; font-size:12.5px; font-weight:700; padding:6px 16px; border-radius:999px; cursor:pointer; transition:all .15s; }
.mtab.active{ background:linear-gradient(90deg,#4f7cff,#a855f7); color:#fff; border-color:transparent; }
/* ---- 会话列表 ---- */
.mail-list{ flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:8px 10px 14px; }
.mail-empty{ text-align:center; color:var(--muted); font-size:13.5px; padding:56px 20px; line-height:2; }
.mail-item{ display:flex; align-items:center; gap:12px; padding:11px 12px; border-radius:12px; cursor:pointer; transition:background .12s; position:relative; }
.mail-item:hover{ background:#f6f9ff; }
.mail-item.unread{ background:#f0f6ff; }
.mail-ava{ width:42px; height:42px; border-radius:50%; flex:none; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#4f7cff,#38c6d9); color:#fff; font-weight:800; font-size:16px; }
.mail-ava.bcast{ background:linear-gradient(135deg,#f59e0b,#ef4444); }
.mail-it-tx{ flex:1; min-width:0; }
.mail-it-row{ display:flex; align-items:center; gap:8px; }
.mail-it-name{ font-size:14px; font-weight:700; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mail-it-time{ margin-left:auto; flex:none; font-size:11px; color:var(--muted); }
.mail-it-last{ font-size:12.5px; color:var(--muted); margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mail-unread-badge{ flex:none; min-width:19px; height:19px; padding:0 5px; box-sizing:border-box; border-radius:999px;
  background:#ef4444; color:#fff; font-size:11px; font-weight:800; display:flex; align-items:center; justify-content:center; line-height:1; }
.mail-type-tag{ flex:none; font-size:10.5px; font-weight:700; color:var(--hz-st-warn); background:#fef3c7; border:1px solid #fde68a; border-radius:999px; padding:1px 7px; }
/* ---- 聊天视图 ---- */
.mail-chat-body{ flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:14px 14px 8px; background:#f6f8fb; }
.mail-chat-date{ text-align:center; font-size:11px; color:var(--muted); margin:2px 0 14px; }
.mail-msg{ display:flex; align-items:flex-end; gap:8px; margin-bottom:12px; }
.mail-msg.mine{ flex-direction:row-reverse; }
.mail-msg-ava{ width:30px; height:30px; border-radius:50%; flex:none; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#4f7cff,#38c6d9); color:#fff; font-size:12px; font-weight:800; }
.mail-bubble{ max-width:74%; background:#fff; border:1px solid var(--line); border-radius:14px 14px 14px 4px; padding:9px 12px; box-shadow:0 2px 6px rgba(15,23,42,.05); }
.mail-msg.mine .mail-bubble{ background:linear-gradient(135deg,#4f7cff,#7c5cf0); color:#fff; border:none; border-radius:14px 14px 4px 14px; }
.mail-bubble-who{ font-size:11px; font-weight:700; color:var(--hz-st-warn); margin-bottom:4px; }
.mail-bubble-tx{ font-size:13.5px; line-height:1.6; word-break:break-word; }
.mail-bubble-time{ font-size:10.5px; color:var(--muted); margin-top:5px; text-align:right; }
.mail-msg.mine .mail-bubble-time{ color:rgba(255,255,255,.75); }
.mail-chat-end{ text-align:center; font-size:11px; color:#cbd5e1; padding:6px 0 12px; }
/* ---- 聊天输入 ---- */
.mail-chat-input{ display:flex; gap:10px; padding:10px 14px; border-top:1.5px solid var(--line); background:#fff; flex:none; align-items:flex-end; }
.mail-chat-input textarea{ flex:1; min-height:42px; max-height:120px; resize:none; border:1.5px solid var(--line); border-radius:12px; padding:10px 12px; font-size:13.5px; font-family:inherit; outline:none; background:#f8fafc; color:var(--ink-2); box-sizing:border-box; }
.mail-chat-input textarea:focus{ border-color:var(--chip-b); background:#fff; box-shadow:var(--ring); }
.mail-chat-input .btn{ flex:none; border:none; cursor:pointer; border-radius:999px; padding:10px 20px; font-size:13.5px; font-weight:800;
  background:linear-gradient(90deg,#4f7cff,#a855f7); color:#fff; transition:transform .12s, box-shadow .12s; }
.mail-chat-input .btn:hover{ transform:translateY(-1px); box-shadow:0 6px 14px -6px rgba(91,141,239,.7); }
/* ---- 写消息 / 群发公告（面板下级视图，v1.9.37 去 modal 化） ---- */
.mail-form{ flex:1; overflow-y:auto; padding:16px 18px; }
.mail-form .form-row{ margin-bottom:14px; }
.mail-form .form-row label{ font-size:12.5px; color:var(--muted); font-weight:700; margin-bottom:6px; }
.mail-form .form-row input,.mail-form .form-row select,.mail-form .form-row textarea{ border:1.5px solid var(--line); border-radius:12px; padding:11px 12px; font-size:13.5px; background:#f8fafc; color:var(--ink-2); box-sizing:border-box; }
.mail-form .form-row input:focus,.mail-form .form-row select:focus,.mail-form .form-row textarea:focus{ border-color:var(--chip-b); background:#fff; box-shadow:var(--ring); }
.mail-form .form-row textarea{ resize:vertical; min-height:96px; }
.mail-form-foot{ flex:none; padding:12px 18px; border-top:1.5px solid var(--line); background:#fff; display:flex; }
.mail-form-foot .mail-act{ flex:1; padding:12px; font-size:14.5px; min-height:46px; }
/* ---- 手机端：面板全屏 ---- */
@media(max-width:780px){
  .mail-mask{ padding:0; }
  .mail-panel{ width:100%; height:100%; border-radius:0; }
  .mail-head{ padding:12px 12px; }
  .mail-act{ padding:8px 14px; min-height:36px; font-size:13px; }
  .mail-back{ width:34px; height:34px; }
  .mail-item{ padding:13px 10px; }
  .mail-ava{ width:44px; height:44px; font-size:17px; }
  .mail-bubble{ max-width:82%; }
  .mail-chat-input textarea{ min-height:44px; font-size:14px; }
  .mail-chat-input .btn{ min-height:44px; padding:10px 22px; font-size:14.5px; }
  .mail-form{ padding:14px 14px; }
  .mail-form .form-row input,.mail-form .form-row select,.mail-form .form-row textarea{ font-size:14px; padding:12px; }
  .mail-form .form-row textarea{ min-height:120px; }
  .mail-form-foot .mail-act{ min-height:48px; font-size:15px; }
}

/* ===== v2.1.3 #3 右栏逐条违规情形四态（未查/隐患/合格/不涉及） ===== */
.j59-vio-row{display:flex;align-items:flex-start;gap:10px;position:relative;padding:10px 12px 10px 12px;margin:0 0 8px;
  border:1px solid #e2e8f0;border-radius:10px;background:#fff;transition:background .15s,border-color .15s;}
.j59-vio-row:last-child{margin-bottom:0}
.j59-vio-row::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:transparent;transition:background .15s}
.j59-vio-row .j59-vio-idx{flex:0 0 auto;width:20px;height:20px;line-height:20px;text-align:center;font-size:11px;font-weight:700;
  border-radius:6px;background:#f1f5f9;color:#64748b;user-select:none}
.j59-vio-row .j59-vio-body{flex:1 1 auto;min-width:0}
.j59-vio-row .j59-vio-txt{font-size:13px;line-height:1.6;color:#1e293b;cursor:pointer}
.j59-vio-row .j59-vio-txt:hover{color:#2563eb}
.j59-vio-row .j59-vio-ops{display:flex;gap:6px;margin-top:8px}
.j59-vio-row .j59-vo{appearance:none;cursor:pointer;font-size:11px;line-height:1;padding:5px 11px;border-radius:999px;
  border:1.5px solid #cbd5e1;background:#fff;color:#64748b;font-weight:600;letter-spacing:.2px;
  transition:all .14s ease}
.j59-vio-row .j59-vo:hover{transform:translateY(-1px)}
.j59-vio-row .j59-vo.ok:hover{border-color:#16a34a;color:#16a34a;background:#f0fdf4}
.j59-vio-row .j59-vo.na:hover{border-color:#475569;color:#334155;background:#f8fafc}
.j59-vio-row .j59-vo.ok.on{border-color:#16a34a;background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;box-shadow:0 2px 6px rgba(22,163,74,.28)}
.j59-vio-row .j59-vo.na.on{border-color:#475569;background:linear-gradient(135deg,#64748b,#475569);color:#fff;box-shadow:0 2px 6px rgba(71,85,105,.26)}
.j59-vio-row .j59-vio-flag{flex:0 0 auto;align-self:center;font-size:11px;font-weight:700;line-height:1;padding:5px 10px;border-radius:999px;white-space:nowrap}
.j59-vio-row .j59-vio-flag.violation{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}
.j59-vio-row .j59-vio-flag.ok{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}
.j59-vio-row .j59-vio-flag.na{background:#f1f5f9;color:#64748b;border:1px solid #e2e8f0}
/* 行级状态底纹 */
.j59-vio-row.v-violation{background:#fffbfb;border-color:#fecaca}
.j59-vio-row.v-violation::before{background:#ef4444}
.j59-vio-row.v-ok{background:#fafffb;border-color:#bbf7d0}
.j59-vio-row.v-ok::before{background:#22c55e}
.j59-vio-row.v-ok .j59-vio-txt{color:#334155}
.j59-vio-row.v-na{background:#f8fafc;border-color:#e2e8f0}
.j59-vio-row.v-na::before{background:#94a3b8}
.j59-vio-row.v-na .j59-vio-txt{color:#94a3b8;text-decoration:line-through;text-decoration-color:#cbd5e1}
.j59-vio-row.v-na .j59-vio-idx{background:#e2e8f0;color:#94a3b8}
/* 判定区按钮微调（合格绿 / 不涉及灰） */
.j59-verdict .mini-btn.ok{border-color:#bbf7d0;color:#16a34a}
.j59-verdict .mini-btn.ok:hover{background:#f0fdf4}
.j59-verdict .mini-btn.na{border-color:#e2e8f0;color:#475569}
.j59-verdict .mini-btn.na:hover{background:#f8fafc}
/* 覆盖旧版整行可点击态：v2.1.3 起仅文本区可点，整行不再呈现 pointer/hover 蓝框 */
.j59-vio-row{cursor:default}
.j59-vio-row:hover{border-color:#e2e8f0}
.j59-vio-row.v-ok:hover{border-color:#bbf7d0}
.j59-vio-row.v-na:hover{border-color:#e2e8f0}
.j59-vio-row.v-violation:hover{border-color:#fecaca}
.j59-vio-row.on{border-color:#fecaca;background:#fffbfb}

/* ==================== v2.1.4 检查页顶栏全展开 + 工程卡瘦身 + 检查部位栏 ====================
   v2.1.14：以下旧覆盖已由 theme-v3.css 接管（且「建」方块已删除），仅保留失效安全值 */
.insp-top .ipi-card{padding:7px 16px; gap:0; flex:1 1 auto; max-width:93%}
.insp-top .ipi-name{font-size:14px}
.insp-top .ipi-meta{margin-top:2px; gap:5px}
.insp-top .ipi-meta-i{font-size:11.5px; padding:1px 7px 1px 2px}
.insp-top .ipi-meta-lb{font-size:9.5px; padding:0 5px}
/* 顶栏按钮全部平铺（不再折叠） */
.insp-top-right{gap:6px}
.insp-top-right .btn.sm{padding:6px 12px !important; font-size:12.5px}
.insp-ai-btn .imm-ic{width:20px; height:20px; font-size:9.5px; border-radius:5px}
.insp-del-btn{color:#dc2626 !important; border-color:#fecaca !important; background:#fff7f7 !important}
.insp-del-btn:hover{background:#fef2f2 !important; box-shadow:0 4px 12px -6px rgba(220,38,38,.35)}
/* ==================== v2.1.6 检查页顶栏全专项统一 + 移动端加固 ==================== */
/* 全部专项（日常安全清单检查/专项检查/安管人员履职检查/常见问题检查 旧任务）共享同一美术顶栏：
   返回工程胶囊 + 工程信息卡 + 按钮组（记录/AI记录隐患/本次检查范围/关联规范/协同/删除） + 标题。 */
.insp-top-left{flex:1 1 auto; min-width:0}
.insp-top-right{flex:0 1 auto; min-width:0}
/* 手机端顶栏改为单列布局：左侧（返回工程 + 信息卡）占满首行；按钮组换到次行；标题最后。
   解决旧 .insp-proj-info/.back/.sp 与 v2.1.3 grid 不匹配导致的竖排/重叠问题。 */
@media(max-width:780px){
  .insp-top{
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"left" "right" "title";
    padding:10px 11px;
  }
  .insp-top-left{flex-wrap:wrap; gap:8px}
  .insp-top-left .insp-back{flex:none}
  .insp-top-left .ipi-card{flex:1 1 auto; min-width:0; max-width:100%; padding:5px 12px 5px 5px}
  .insp-top-right{justify-content:flex-start; width:100%}
  .insp-top-right .btn.sm{padding:7px 12px !important; font-size:12.5px; flex:0 0 auto; min-height:36px}
  .insp-title{padding-top:6px; margin-top:0; font-size:13px}
}
/* 极窄屏（≤420px）进一步压紧按钮文字与卡片（v2.1.14：ipi-cube 已删除，移除其规则） */
@media(max-width:420px){
  .insp-top-left .ipi-name{font-size:12.5px}
  .insp-top-left .ipi-meta-i{font-size:10px; padding:1px 6px 1px 2px}
  .insp-top-left .ipi-meta-lb{font-size:9px; padding:0 4px}
  .insp-top-right .btn.sm{padding:6px 10px !important; font-size:12px}
}
/* v2.1.6 追加：顶栏内「记录 / 关联规范」按钮在手机端放行。
   历史 820px 块（styles.css:933-935）为右下 emoji 浮层让路而 display:none；
   统一顶栏后按钮已齐全，右下 emoji 浮层（📝📑）同步退场，避免双入口 + 禁 emoji 规范冲突。
   v2.1.18续（用户反馈还原）：履职/常见问题检查页恢复 insp-fab 固定悬浮按钮
   （顶栏按钮随页面滚动消失，手机端操作不便）——该容器仅这两个专项渲染，j59 不受影响。

   ★★ v2.3.43【涛哥要求·改回隐藏】上面这段逻辑现已反转：
   手机端（≤820px）右下角 **insp-fab 固定悬浮组**里已经有
     「检查记录」（.fab-rec，带计数徽标）与「查看依据」（.insp-fab-guide，
      打开的正是「关联规范与核查要点」抽屉）
   两个常驻入口 ⇒ 上栏这两个按钮**功能完全重复**，删掉以节省上栏空间。
   实测（390×844，v2.3.42）上栏展开后可见 4 钮：
     检查记录(1) / AI记录隐患 / 本次检查范围 / 关联规范
   其中 ① 与 ④ 与 FAB 重复 ⇒ 本块改为 display:none。
   ⚠ 只在 ≤820px 隐藏：**PC 端没有 insp-fab**（styles.css:356 默认 display:none，
     仅 body.insp-open.insp-fab-on 放行且该块本身也在手机端媒体查询内），
     若全局删除按钮，PC 端将失去「检查记录 / 关联规范」入口 ⇒ 必须走媒体查询。
   ⚠ 计数徽标不受影响：refreshRecBadge 查的是 **所有 .fab-rec**
     （app-core.js:851），FAB 内那颗仍在，数字照常联动。 */
@media(max-width:820px){
  /* ★ v2.3.43：真正的「隐藏 + 重排」统一收口到 theme-ios.css 第三十二节
     （它最后加载，且与「返回工程 / AI记录隐患」的隐藏放在一起，单一真相）。
     此处同步改为 none 只作兜底：万一 theme-ios.css 未加载也不至于露出双入口。 */
  .insp-top-right .fab-rec{display:none !important;}
  .insp-top-right .insp-right-btn{display:none !important;}
}
/* 中栏顶部：检查部位输入栏（按检查方向录入） */
.j59-part-bar{
  display:flex; align-items:center; gap:8px; margin:0 0 10px;
  padding:7px 10px; background:linear-gradient(135deg,#f6f9ff,#fafbff);
  border:1px solid #dbe7fb; border-radius:10px;
}
.j59-part-lb{
  flex:none; font-size:11.5px; font-weight:800; color:#4f6ef2;
  background:linear-gradient(135deg,#eef2ff,#f5f0ff); border:1px solid #dbe7fb;
  border-radius:7px; padding:3px 9px; letter-spacing:.5px;
}
#j59-part-input,.j59-part-input{
  flex:1; min-width:0; border:none; outline:none; background:transparent;
  font-size:12.5px; color:var(--ink-2,#0f172a); padding:2px 0;
}
#j59-part-input::placeholder,.j59-part-input::placeholder{color:#a3b1c6}


/* =====================================================================
   知识图谱牌面（LLM 知识库页 hero）—— V2.3.8
   设计：深色星图卡 + 高对比 KPI + 可交互 SVG 星网（零依赖、离线可用）
   数据：frontend/assets/data/kg-stats.json / kg-view.json（由 _06_tools/kg_export.py 生成）
   ===================================================================== */
.kg-hero{
  position:relative; margin:0; border-radius:18px; overflow:hidden;
  background:radial-gradient(120% 140% at 12% 0%,#1b2a55 0%,#131e3d 42%,#0d1630 100%);
  border:1px solid rgba(120,150,255,.22);
  box-shadow:0 20px 46px -24px rgba(9,16,38,.72), inset 0 1px 0 rgba(255,255,255,.05);
  color:#e9eeff;
}
.kg-hero::after{ /* 顶部细高光 */
  content:''; position:absolute; inset:0 0 auto 0; height:1px;
  background:linear-gradient(90deg,transparent,rgba(160,190,255,.55),transparent);
}
.kg-head{ padding:16px 18px 0; display:flex; align-items:flex-start; gap:14px; flex-wrap:wrap; }
/* 半栏宽度下左侧文字块占满整行，徽标自动换到下一行（避免与标题抢宽被压成两行） */
.kg-head-l{ flex:1 1 100%; min-width:0; }
.kg-eyebrow{
  display:flex; align-items:center; gap:7px; width:100%;
  font-size:11px; font-weight:800; letter-spacing:1.4px; text-transform:uppercase;
  color:#9db6ff; margin-bottom:8px;
}
.kg-eyebrow i{
  width:6px; height:6px; border-radius:50%; background:#6f9bff;
  box-shadow:0 0 0 3px rgba(111,155,255,.22); flex:none;
}
.kg-title{ font-size:19px; font-weight:800; letter-spacing:-.2px; color:#f2f6ff; line-height:1.25; }
.kg-sub{ margin-top:6px; font-size:12px; line-height:1.65; color:#a9b8db; }
.kg-sub b{ color:#dbe6ff; font-weight:700; }
/* 徽标已挂进 eyebrow 行内（margin-left:auto 右推）：**不新增一行高度**。
   半栏里 eyebow 的 letter-spacing / uppercase 会串进来，故显式重置。 */
.kg-badge{
  flex:none; margin-left:auto; display:inline-flex; align-items:center; gap:5px;
  font-size:11px; font-weight:700; letter-spacing:normal; text-transform:none; color:#bfe0ff;
  background:rgba(76,125,255,.16); border:1px solid rgba(122,160,255,.32);
  border-radius:999px; padding:3px 10px;
}
.kg-badge svg{ width:12px; height:12px; }

/* ★ 半栏紧凑 KPI：5 列一行到底（只有「数值 + 标签」），不换行、不留孤格 */
.kg-kpis{
  display:grid; grid-template-columns:repeat(5,1fr); gap:1px; margin:14px 0 0;
  background:rgba(140,170,255,.14); border-top:1px solid rgba(140,170,255,.16);
}
.kg-kpi{ background:rgba(10,18,40,.42); padding:11px 6px 12px; text-align:center; }
.kg-kpi b{
  display:block; font-size:19px; font-weight:800; line-height:1.1; letter-spacing:-.5px;
  color:#fff; font-variant-numeric:tabular-nums;
}
.kg-kpi span{ display:block; margin-top:4px; font-size:10.8px; font-weight:700; color:#c3d0ee; white-space:nowrap; }

/* ★ 星图用**显式高度**把牌面尺寸收住（涛哥要求「图谱不要那么大」）。
   `flex:1 1 auto` + `height` 组合 = 平时就是 300px；万一右栏更高则自动长大吃满、不留死白。
   ★ 高度必须有确定基准值：纯 flex 高度会随右栏内容变化，导致「重置」重建出的 viewBox
     与首屏不一致（曾害重置断言假 FAIL：873.1 → 894.03）。 */
.kg-stage{
  position:relative; flex:1 1 auto; height:300px; min-height:240px; margin-top:0;
  background:radial-gradient(80% 90% at 50% 46%,rgba(60,96,190,.30) 0%,rgba(11,18,40,0) 72%);
  border-top:1px solid rgba(140,170,255,.10);
  cursor:grab; touch-action:none;
  overflow:hidden;   /* v2.4.3：交互信息（tooltip 等）不得溢出图谱窗格 */
}
.kg-stage.dragging{ cursor:grabbing; }
.kg-stage svg{ display:block; width:100%; height:100%; }
/* ★ v2.4.4 科幻 HUD 装饰：四角括号 + 底部扫描标签（不拦事件） */
.kg-hud{ position:absolute; inset:8px; pointer-events:none; z-index:4; }
.kg-hud i{ position:absolute; width:14px; height:14px; border:1px solid rgba(110,231,255,.42); }
.kg-hud i:nth-child(1){ left:0; top:0; border-right:0; border-bottom:0; }
.kg-hud i:nth-child(2){ right:0; top:0; border-left:0; border-bottom:0; }
.kg-hud i:nth-child(3){ left:0; bottom:0; border-right:0; border-top:0; }
.kg-hud i:nth-child(4){ right:0; bottom:0; border-left:0; border-top:0; }
.kg-hud-tag{
  position:absolute; left:12px; bottom:9px; z-index:4; pointer-events:none;
  font-size:9.5px; letter-spacing:1.6px; font-weight:700; color:rgba(110,231,255,.42);
  font-family:ui-monospace,Menlo,Consolas,monospace;
}
/* ★ v2.4.7：个人设置页「有新版本」小标签（主动更新通道；与全量推送弹窗无关） */
.hz-newver-tag{
  display:inline-flex; align-items:center; gap:3px;
  padding:1px 8px; border-radius:999px;
  font-size:10.5px; font-style:normal; font-weight:700; line-height:1.7;
  color:#B54708; background:#FFF4E5; border:1px solid #FEDF89;
  white-space:nowrap;
}
.hz-newver-tag::before{
  content:''; width:5px; height:5px; border-radius:50%; background:#F79009;
  box-shadow:0 0 0 2px rgba(247,144,9,.22);
}

/* ★ v2.4.2：知识图谱 3D 化 —— Canvas 透视星图（旧 SVG 保留为降级实现）
   ★ v2.4.3（涛哥桌面端实测）：canvas 必须是**绝对定位填满容器**：
     旧写法 JS 设 inline width/height + CSS width:100% 打架 ⇒ 显示宽 670 vs 父卡片 498，
     画布右侧溢出 173px、球体看着"靠右"、tooltip 也跟着溢出窗格。
     现在显示尺寸完全交给 CSS（100%），JS 只设绘制缓冲区（cvs.width/height）。 */
.kg-stage canvas.kg3d{
  position:absolute; left:0; top:0; width:100%; height:100%;
  display:block; cursor:grab; touch-action:none; outline:none;
}
.kg-stage canvas.kg3d:active{ cursor:grabbing; }
.kg-stage circle{ transition:opacity .16s ease, r .16s ease; }
.kg-stage.focus circle{ opacity:.22; }
.kg-stage.focus circle.hot{ opacity:1; }
.kg-stage.focus path.kg-edges{ opacity:.14; }
.kg-stage.focus path.kg-edges-far{ opacity:.04; }
.kg-edges,.kg-edges-far{ transition:opacity .16s ease; }

.kg-tip{
  position:absolute; left:0; top:0; z-index:5; pointer-events:none; opacity:0;
  transform:translate(-50%,-124%); transition:opacity .12s ease;
  /* ★ v2.4.3：min-width 防塌缩（实测桌面端被压成 30px 竖排窄条）+ 内容换行兜底 */
  min-width:132px; max-width:280px; width:max-content; box-sizing:border-box;
  padding:8px 11px; border-radius:9px;
  background:rgba(8,14,32,.94); border:1px solid rgba(130,165,255,.35);
  box-shadow:0 12px 28px -10px rgba(0,0,0,.7);
  white-space:normal; word-break:break-word;
}
.kg-tip.on{ opacity:1; }
.kg-tip-t{ font-size:12.5px; font-weight:700; color:#eaf1ff; line-height:1.45; word-break:break-word; }
.kg-tip-m{ margin-top:4px; font-size:11px; color:#93a6ce; display:flex; gap:8px; flex-wrap:wrap; }
.kg-tip-m code{ background:rgba(120,155,255,.16); color:#cfe0ff; border-radius:4px; padding:1px 5px; }

.kg-tools{ position:absolute; right:12px; top:12px; z-index:6; display:flex; gap:7px; }
.kg-tool{
  width:30px; height:30px; display:flex; align-items:center; justify-content:center;
  background:rgba(16,26,54,.82); border:1px solid rgba(130,165,255,.28); border-radius:9px;
  color:#c9d8ff; cursor:pointer; transition:background .15s,border-color .15s,transform .15s;
}
.kg-tool:hover{ background:rgba(46,74,150,.9); border-color:rgba(150,185,255,.5); transform:translateY(-1px); }
.kg-tool svg{ width:15px; height:15px; }

.kg-foot{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  padding:11px 18px 13px; border-top:1px solid rgba(140,170,255,.12);
  background:rgba(8,14,32,.34);
}
.kg-legend{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.kg-lg{ display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:#b3c2e4; font-weight:600; }
.kg-lg i{ width:8px; height:8px; border-radius:50%; flex:none; }
.kg-hubs{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-left:auto; }
.kg-hubs-lb{ font-size:11px; color:#7d8db4; font-weight:700; }
.kg-chip{
  font-size:11px; color:#cddcff; background:rgba(90,125,220,.18);
  border:1px solid rgba(130,165,255,.26); border-radius:999px; padding:3px 9px; white-space:nowrap;
}
/* ★ 半栏里「枢纽概念」不再右对齐（否则右侧留大空档），紧跟在图例后换行排布；
   同时把图例/芯片整体瘦身 —— 半栏宽度下它们是折行主力，原尺寸会把卡片撑高 170px。 */
.llm-cols-kg .kg-hubs{ margin-left:0; gap:5px; }
.llm-cols-kg .kg-hubs-lb{ font-size:10.5px; }
.llm-cols-kg .kg-chip{ font-size:10.5px; padding:2px 8px; }
.llm-cols-kg .kg-legend{ gap:10px; }
.llm-cols-kg .kg-lg{ font-size:11px; }
.llm-cols-kg .kg-foot{ gap:8px; }
.kg-note{ padding:0 18px 14px; font-size:10.8px; line-height:1.7; color:#6f7fa6; }
.kg-note b{ color:#9db6ff; font-weight:700; }
.kg-fallback{
  padding:18px 22px; font-size:12.5px; color:#9db6ff;
  background:rgba(76,125,255,.10); border-top:1px dashed rgba(130,165,255,.3);
}

/* 响应式：中屏起两栏过窄 ⇒ 图谱与排行表改为上下堆叠（KPI 仍保持 5 列一行，不会出现孤格） */
@media(max-width:1000px){
  .llm-cols-kg{ grid-template-columns:1fr; }
  .llm-cols-kg .kg-hero{ min-height:0; }
  .llm-cols-kg .llm-bars{ flex:none; justify-content:flex-start; gap:9px; }
  .kg-stage{ height:340px; }
}
@media(max-width:760px){
  .kg-head{ padding:14px 14px 0; }
  .kg-title{ font-size:17px; }
  .kg-sub{ font-size:11.5px; }
  .kg-kpi{ padding:10px 3px 11px; }
  .kg-kpi b{ font-size:15.5px; }
  .kg-kpi span{ font-size:9.6px; }
  .kg-stage{ height:260px; }
  .kg-foot{ padding:10px 14px 12px; gap:9px; }
  .kg-note{ padding:0 14px 12px; }
  .kg-badge{ display:none; }
}
/* ===== 示范样板库（ZCode 功能线 P0 试点 2026-10-01，照涛哥参考样式） ===== */
.sl-wrap{display:flex;gap:14px;align-items:flex-start}
.sl-tree{width:280px;flex:none;background:#fff;border:1px solid var(--line,#e2e8f0);border-radius:12px;padding:8px;max-height:calc(100vh - 150px);overflow-y:auto}
.sl-group{font-size:12px;font-weight:800;color:#64748b;padding:8px 8px 4px}
.sl-item{display:block;width:100%;text-align:left;border:none;background:none;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:12.8px;color:#334155;line-height:1.45}
.sl-item:hover{background:#f6f9ff}
.sl-item.on{background:#eef4ff;color:#1d4ed8;font-weight:700}
.sl-no{font-weight:700;margin-right:6px}
.sl-main{flex:1;min-width:0;background:#fff;border:1px solid var(--line,#e2e8f0);border-radius:12px;padding:16px}
.sl-crumb{font-size:12px;color:#94a3b8;margin-bottom:8px}
.sl-title{font-size:17px;font-weight:800;color:#0f172a;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sl-tag{font-size:11px;font-weight:700;border-radius:999px;padding:2px 10px}
.sl-tag.bad{background:#fee2e2;color:#b91c1c}
.sl-tag.ok{background:#d1fae5;color:#059669}
.sl-src{font-size:12px;color:#64748b;background:#f8fafc;border:1px solid var(--line,#e2e8f0);border-radius:8px;padding:8px 12px;margin:10px 0;line-height:1.6}
.sl-sec{margin:14px 0 6px;font-size:13.5px;font-weight:800;color:#334155}
.sl-desc{background:#f8fafc;border:1px solid var(--line,#e2e8f0);border-radius:10px;padding:10px 12px;font-size:13px;color:#334155;line-height:1.7;white-space:pre-wrap}
.sl-norms{background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:10px 12px;font-size:12.8px;color:#7f1d1d;line-height:1.7}
.sl-norms div{margin-bottom:4px}
.sl-pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:8px}
.sl-ph{position:relative;border:1px solid var(--line,#e2e8f0);border-radius:10px;overflow:hidden;background:#f8fafc;cursor:zoom-in}
.sl-ph img{width:100%;height:150px;object-fit:cover;display:block}
.sl-ph .sl-cap{font-size:11.5px;color:#475569;padding:6px 8px;line-height:1.4}
.sl-ph .sl-verdict{position:absolute;top:6px;left:6px;font-size:10.5px;font-weight:700;border-radius:6px;padding:1px 7px;color:#fff;z-index:1}
.sl-v-bad{background:#dc2626}.sl-v-ok{background:#059669}.sl-v-mix{background:#d97706}.sl-v-ill{background:#64748b}
/* ══ 低置信「待复核」单独标记（2026-10-01 涛哥要求）══════════════════════════════════
   为什么需要：示范样板库的判定有三种来源，其可信度**不在一个量级**——
   作者表头/图注/AI 高置信（定论） vs  AI 自认低置信 9 张 + 构建期规则推导 279 张。
   三者混在一起展示，用户会把"机器猜的"当"看过图确认的"，这是**误导性展示**。
   ⇒ 低置信的一律加琥珀色角标 + 卡片描边；未判定的（verdict 为空）另给灰标与独立分区。
   配色理由：琥珀 #b45309/#f59e0b 与既有语义色（红=错误/绿=正确/橙=正误对照/灰=图解）不冲突，
   且在白底上对比度足够（不用 emoji，符合项目 UI 规范）。 */
.sl-ph-hold{border-color:#f59e0b !important;box-shadow:inset 0 0 0 1px #fde68a}
.sl-ph .sl-hold{position:absolute;top:6px;right:6px;font-size:10.5px;font-weight:800;border-radius:6px;padding:1px 7px;background:#fef3c7;color:#b45309;border:1px solid #fcd34d;z-index:2}
.sl-ph .sl-hold-todo{background:#eef1f6;color:#475569;border-color:#cbd5e1}
.sl-conftip{background:#fffbeb;border:1px solid #fde68a;border-radius:10px;padding:8px 11px;font-size:12.5px;color:#7c4a03;line-height:1.7;margin-top:8px}
.sl-stat{display:inline-block;font-size:12.5px;font-weight:700;border-radius:8px;padding:3px 10px;margin:0 8px 4px 0}
.sl-stat.ok{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}
.sl-stat.hold{background:#fef3c7;color:#b45309;border:1px solid #fcd34d}
.sl-stat.todo{background:#eef1f6;color:#475569;border:1px solid #cbd5e1}
.sl-back{margin-top:14px}
@media(max-width:820px){
  .sl-wrap{flex-direction:column}
  .sl-tree{width:100%;max-height:38vh}
  .sl-ph img{height:120px}
}

/* ══ 示范样板库左栏导航 v2（2026-10-02 涛哥要求重做：方案树突出+折叠+搜索）══════════
   设计：方向组=可折叠节点（CSS三角箭头+条目计数徽标），当前组自动展开，顶部搜索框实时过滤，
   命中组强制展开、回车跳转第一条。替换原 .sl-tree 平铺 947 条的版式（旧规则保留未删，防其他处引用）。
   配色沿用既有语义色，仅追加、不改旧行；深色主题 2026-09-29 已整体下线（M3），按浅色写。 */
.sl-nav{width:290px;flex:none;background:#fff;border:1px solid var(--line,#e2e8f0);border-radius:12px;padding:8px;position:sticky;top:66px;max-height:calc(100vh - 150px);display:flex;flex-direction:column}
.sl-navsearch{position:relative;margin-bottom:6px;flex:none}
.sl-navsearch input{width:100%;box-sizing:border-box;height:34px;border:1px solid #d7dee9;border-radius:9px;padding:0 30px 0 10px;font-size:12.5px;color:#334155;background:#f8fafc;outline:none}
.sl-navsearch input:focus{border-color:#93b4f5;background:#fff}
.sl-navsearch .sl-navhint{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10.5px;color:#94a3b8;pointer-events:none}
.sl-navtree{overflow-y:auto;min-height:0;flex:1 1 auto}
.sl-navgroup{border-bottom:1px solid #eef2f7}
.sl-navgroup:last-child{border-bottom:none}
.sl-navhead{display:flex;width:100%;align-items:center;gap:7px;border:none;background:none;cursor:pointer;padding:9px 6px;border-radius:8px;font-size:13px;font-weight:800;color:#334155;text-align:left}
.sl-navhead:hover{background:#f6f9ff}
.sl-caret{width:0;height:0;border-left:5px solid #94a3b8;border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .15s;flex:none}
.sl-navgroup.open .sl-caret{transform:rotate(90deg);border-left-color:#1d4ed8}
.sl-navname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sl-navgroup.open .sl-navname{color:#1d4ed8}
.sl-navcount{flex:none;font-size:10.5px;font-weight:700;color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;padding:1px 8px}
.sl-navgroup.open .sl-navcount{background:#eef4ff;color:#1d4ed8;border-color:#dbe7ff}
.sl-navitems{display:none;padding:0 2px 6px}
.sl-navgroup.open .sl-navitems{display:block}
.sl-navitems .sl-item{padding:6px 8px 6px 22px;font-size:12.3px}
@media(max-width:820px){
  .sl-nav{position:static;width:100%;max-height:40vh}
}


/* ══ 示范样板库：图片加载失败提示（2026-10-06）══════════════════════════
   原先 onerror 只把图变淡（opacity=.35），用户看到灰图却没有任何提示，
   也不知道点「重试」有没有用。现在失败 3 次后显示明确角标 + 可点的重试按钮。 */
.sl-img-fail{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:rgba(248,250,252,.92);font-size:11.5px;color:#b42318;text-align:center;z-index:2}
.sl-img-fail b{font-weight:700}
.sl-img-retry{min-height:24px;padding:0 10px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#344054;font-size:11.5px;font-weight:600;cursor:pointer}
.sl-img-retry:hover{background:#f1f5f9;border-color:#94a3b8}
.sl-big-fail{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:rgba(15,23,42,.86);color:#fff;padding:10px 16px;border-radius:8px;font-size:12.5px;z-index:99}

/* ============================================================================
   v2.3.66 左栏图标系统 + 可拖拽缩窄（涛哥 2026-10-21 定稿）
   ---------------------------------------------------------------------------
   ① 品牌标：A2 方肩圆底盾 + 不规则斜切 + K1 三角点宝盖头 + 小房子（蓝占 45%）
   ② 19 个栏目图标：24 网格 / 1.6 描边 / currentColor，随 active 变蓝
   ③ 右边缘 6px 拖拽手柄：64~320px 可调，<112px 自动切「图标态」
   ④ 图标态：只留图标 + 分组标题收敛为分隔线 + hover 浮出名称气泡 + 宽度记忆
   ============================================================================ */
.side-logo .logo-svg{ flex:none; border-radius:7px; box-shadow:0 1px 3px rgba(15,23,42,.14); }
.nav-item .ni-ic{ display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; flex:none; color:#64748b; transition:color .15s; }
.nav-item .ni-ic svg{ width:20px; height:20px; display:block; }
.nav-item:hover .ni-ic{ color:#334155; }
.nav-item.active .ni-ic{ color:var(--blue); }

/* 拖拽手柄 */
.side-grip{ position:absolute; top:0; right:0; bottom:0; width:6px; cursor:col-resize; z-index:9;
  display:flex; align-items:center; justify-content:center; }
/* ★ 手柄必须**在 sidebar 内部**：sidebar 有 overflow:hidden（shell-fit.css），
   right:-3px 会被裁掉 ⇒ elementFromPoint 命不中，用户也点不到。 */
.side-grip::before{ content:''; width:3px; height:38px; border-radius:3px; background:transparent; transition:background .15s; }
.sidebar:hover .side-grip::before{ background:#e2e8f0; }
.side-grip:hover::before,.side-grip:focus-visible::before{ background:var(--blue); }
.side-grip:focus-visible{ outline:none; }

/* 图标态 */
body.side-mini .sidebar{ width:64px; flex:0 0 64px; }
body.side-mini .side-logo{ padding:13px 0 11px; justify-content:center; }
body.side-mini .side-logo .logo-tx,
body.side-mini .side-welcome,
body.side-mini .side-foot,
body.side-mini .nav-item .ni-tx,
body.side-mini .side-mail-badge{ display:none; }
body.side-mini .side-nav{ padding:10px 6px; }
body.side-mini .nav-item{ justify-content:center; padding:11px 0; position:relative; }
body.side-mini .nav-item .ni-ic{ width:22px; height:22px; }
body.side-mini .nav-item .ni-ic svg{ width:22px; height:22px; }
body.side-mini .nav-group{ height:1px; padding:0; margin:8px 16px; background:var(--line);
  font-size:0; line-height:0; overflow:hidden; color:transparent; }
body.side-mini .nav-item::after{ content:attr(data-label); position:absolute; left:calc(100% + 9px); top:50%;
  transform:translateY(-50%); background:#0f172a; color:#fff; font-size:12px; font-weight:500; line-height:1;
  padding:7px 11px; border-radius:8px; white-space:nowrap; pointer-events:none;
  opacity:0; visibility:hidden; transition:opacity .16s .05s, visibility .16s .05s; z-index:40; }
body.side-mini .nav-item:hover::after,
body.side-mini .nav-item:focus-visible::after{ opacity:1; visibility:visible; }

/* ============================================================================
   v2.3.67（涛哥 2026-10-21 反馈修正）
   ---------------------------------------------------------------------------
   ① 去掉侧栏「彩色圆点」：theme-v3 的 .nav-item::before（9px 圆点，选中态还带光晕）
      —— 图标态下它正好压在图标上，视觉脏；同时它让 nav-item 有 padding-left:32px，
      白占左侧 19px ⇒ 去掉后展开宽度可从 248 收到 228
   ② 左栏改「展开 / 缩进」两档固定宽度，不再连续拖拽
   ③ 中部最右侧新增吸附按钮：展开态显示「‹| 收起」，图标态显示「|› 展开」
   ============================================================================ */
.nav-item::before{ display:none !important; }
.side-nav > .nav-item{ padding-left:13px !important; }

.side-toggle{ position:absolute; right:6px; top:50%; transform:translateY(-50%);
  width:26px; height:26px; padding:0; border-radius:8px; border:1px solid var(--line);
  background:#fff; color:#64748b; cursor:pointer; display:flex; align-items:center; justify-content:center;
  z-index:10; box-shadow:0 1px 3px rgba(15,23,42,.08);
  transition:background .15s, color .15s, border-color .15s, right .18s, bottom .18s; }
.side-toggle:hover{ background:#f1f5f9; color:var(--blue); border-color:#bfdbfe; }
.side-toggle:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
.side-toggle svg{ width:15px; height:15px; display:block; }
.side-toggle .ic-collapse{ display:block; }
.side-toggle .ic-expand{ display:none; }
/* 图标态：按钮移到**底部居中**，避免压住中部图标 */
body.side-mini .side-toggle{ top:auto; bottom:14px; transform:none; right:calc(50% - 13px); }
body.side-mini .side-toggle .ic-collapse{ display:none; }
body.side-mini .side-toggle .ic-expand{ display:block; }

/* v2.3.67 补充：按钮避让
   · 图标态：按钮在底部居中（bottom:14 + 26 高），nav 底部留 52px，最后一个图标可滚上来不被压
   · 展开态：nav-item 右侧留 36px（按钮 26 + 右距 6 + 间隙 4），文字超长用省略号，不压按钮 */
/* v2.3.68：图标态排版重做
   · 取消横向滚动条（overflow-y:auto 会把 overflow-x 也算成 auto，内容稍宽就冒出推动条）
   · 图标靠左、吸附按钮靠右——两者水平不重叠，按钮回到「左栏右侧」
   · 分组线隐藏、gap 统一 4px ⇒ 上下图标等距（原来分组 1px 线 + 16px margin 造成忽宽忽窄） */
.side-nav{ overflow-x:hidden; }
body.side-mini .side-nav{ padding:10px 4px 12px; gap:4px; overflow-x:hidden; }
body.side-mini .nav-group{ display:none; }
/* ★ 必须 !important：.side-nav > .nav-item{padding-left:13px !important}（去圆点那条）会串到图标态，
   把图标顶偏右 13px，正好撞上右侧吸附按钮。 */
body.side-mini .side-nav > .nav-item{ justify-content:center; padding:9px 0 !important; }
/* ★ 图标态放开 sidebar 的 overflow：按钮要**一半探出右边缘**（真正的"吸附"感），
   而 .sidebar 默认 overflow:hidden 会把它裁掉；滚动仍由内部 .side-nav 承担，不受影响。 */
body.side-mini .sidebar{ overflow:visible; }
body.side-mini .side-toggle{ position:absolute; right:-8px; top:50%; transform:translateY(-50%);
  margin:0; order:0; flex:none; z-index:12; box-shadow:0 2px 8px -2px rgba(15,23,42,.22); }
.side-nav > .nav-item{ padding-right:36px !important; }
.nav-item .ni-tx{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
body.side-mini .side-nav > .nav-item{ padding-right:0 !important; }

/* v2.3.68 图标态名称气泡：用 body 下的全局 fixed tooltip
   —— 之前用 .nav-item::after 必然被 .sidebar{overflow:hidden} 裁掉（与拖拽手柄同一个坑）。
   ::before 是小三角，指向图标。 */
#hz-side-tip{ position:fixed; z-index:9999; display:none; pointer-events:none;
  background:#0f172a; color:#fff; font-size:12px; font-weight:500; line-height:1;
  padding:8px 11px; border-radius:8px; white-space:nowrap;
  box-shadow:0 8px 22px -10px rgba(15,23,42,.55); }
#hz-side-tip::before{ content:''; position:absolute; left:-4px; top:50%; margin-top:-4px;
  border:4px solid transparent; border-right-color:#0f172a; }
/* 旧的 ::after 气泡停用（会被裁切） */
body.side-mini .nav-item::after{ content:none !important; }

/* ============================================================================
   v2.5.0（涛哥 2026-10-27）：知识库全库搜索 —— 内联搜索框 / 历史下拉 / 独立搜索页
   ============================================================================ */
.h-search-live{ position:relative; display:flex; align-items:center; gap:8px; padding:0 12px; }
.h-search-live input{ border:0; background:transparent; outline:none; font-size:13px; width:100%; color:var(--text); font-family:inherit; }
.h-search-live input::placeholder{ color:#94a3b8; }
.hz-hist-pop{ position:absolute; left:0; top:calc(100% + 8px); z-index:60; width:min(430px,92vw); display:none;
  background:#fff; border:1px solid var(--line); border-radius:12px;
  box-shadow:0 18px 40px -18px rgba(15,23,42,.32); padding:6px; }
.hz-hist-pop.on{ display:block; }
.hh-h{ display:flex; justify-content:space-between; align-items:center; padding:5px 8px; font-size:12px; color:var(--muted); font-weight:700; }
.hh-clear{ border:0; background:transparent; color:var(--muted); font-size:12px; cursor:pointer; font-family:inherit; }
.hh-it{ display:flex; align-items:center; gap:8px; padding:7px 8px; border-radius:8px; cursor:pointer; }
.hh-it:hover{ background:#f1f5f9; }
.hh-t{ font-size:13px; color:var(--text); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.hh-s{ font-size:11px; color:var(--muted); max-width:38%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.hh-k{ flex:none; font-size:10.5px; font-style:normal; font-weight:700; padding:1px 6px; border-radius:5px; line-height:1.7; }
.hh-k-clause{ background:#eef2ff; color:#3730a3; }
.hh-k-doc{ background:#ecfdf5; color:#047857; }
.hh-k-faq{ background:#fdf4ff; color:#a21caf; }
.hh-k-sample{ background:#fff7ed; color:#c2410c; }
.hh-more{ text-align:center; padding:7px; font-size:12.5px; color:#3b5bdb; cursor:pointer; border-top:1px solid var(--line-soft); margin-top:4px; }
.kb-home-search-live{ position:relative; }
.kb-home-search-live input{ flex:1; }
/* 独立搜索页（主流搜索引擎布局：大搜索条 + 分类 chips + 结果列表） */
.srch-wrap{ max-width:840px; margin:0 auto; }
.srch-bar{ display:flex; gap:10px; margin:6px 0 12px; }
.srch-inp{ flex:1; min-width:0; height:44px; padding:0 16px; font-size:15px; border:1px solid var(--line);
  border-radius:999px; background:#fff; color:var(--text); outline:none; font-family:inherit; }
.srch-inp:focus{ border-color:var(--chip-b); box-shadow:var(--ring); }
.srch-btn{ height:44px; padding:0 22px; border-radius:999px; border:0;
  background:linear-gradient(135deg,#4c7dff,#7c5cff); color:#fff; font-size:14px; font-weight:700;
  cursor:pointer; font-family:inherit; }
.srch-chips{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
.srch-chip{ border:1px solid var(--line); background:#fff; color:#475569; border-radius:999px;
  padding:5px 14px; font-size:12.5px; font-weight:700; cursor:pointer; font-family:inherit; }
.srch-chip.on{ background:var(--hz-brand-soft,#eaf0fe); border-color:var(--hz-brand,#4c7dff); color:var(--hz-brand-ink,#3b5bdb); }
.srch-meta{ font-size:12px; color:var(--muted); margin:2px 0 10px; }
.srch-it{ background:#fff; border:1px solid var(--line-soft); border-radius:12px; padding:11px 14px;
  margin-bottom:10px; cursor:pointer; transition:border-color .15s, box-shadow .15s; }
.srch-it:hover{ border-color:var(--chip-b); box-shadow:0 6px 18px -12px rgba(15,23,42,.3); }
.srch-it-h{ display:flex; align-items:center; gap:8px; }
.srch-it-t{ font-size:14px; font-weight:700; color:var(--text); flex:1; }
.srch-it-sc{ font-size:11.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.srch-it-s{ margin-top:6px; font-size:12.5px; color:#64748b; line-height:1.65;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.srch-loading{ padding:26px 0; text-align:center; color:var(--muted); font-size:13px; }
.srch-spin{ display:inline-block; width:12px; height:12px; border:2px solid #cbd5e1;
  border-top-color:#4c7dff; border-radius:50%; animation:srchspin .8s linear infinite; vertical-align:-1px; }
@keyframes srchspin{ to{ transform:rotate(360deg); } }
.srch-empty,.srch-hint{ padding:22px 4px; font-size:13px; color:var(--text); line-height:1.85; }
.srch-empty-s{ padding:8px 0; font-size:12.5px; color:var(--muted); }
.srch-hist-h{ display:flex; justify-content:space-between; font-size:12.5px; font-weight:700; color:var(--muted); padding:4px 0 8px; }
.srch-hist-clr{ color:var(--muted); cursor:pointer; font-weight:400; }
.srch-hist-it{ display:flex; align-items:center; gap:8px; padding:9px 2px; border-bottom:1px solid var(--line-soft);
  font-size:13px; color:var(--text); cursor:pointer; }
.srch-hist-it:hover{ color:#3b5bdb; }

/* ============================================================================
   v2.5.2（涛哥 2026-10-27）：全库检索体验优化
   ① 相关度改胶囊标签（原来是个裸数字，连百分号都没有）
   ② 搜索关键词历史 chips（与「最近打开的结果」相互独立）
   ③ 目标页顶部「← 返回检索结果」条（检索跳转专用）
   ============================================================================ */
/* ① 相关度胶囊：数字 + % 号，浅蓝底圆角 */
.srch-it-sc{
  flex:none; display:inline-flex; align-items:center; justify-content:center;
  min-width:44px; padding:2px 9px; border-radius:999px;
  font-size:11px; font-weight:800; letter-spacing:.2px;
  color:#3b5bdb; background:linear-gradient(135deg,#eef4ff,#e6ecff);
  border:1px solid rgba(76,125,255,.22); font-variant-numeric:tabular-nums;
}
.srch-it[data-kind="faq"] .srch-it-sc{ color:#a21caf; background:linear-gradient(135deg,#fdf4ff,#f8ecff); border-color:rgba(162,28,175,.18); }
.srch-it[data-kind="sample"] .srch-it-sc{ color:#c2410c; background:linear-gradient(135deg,#fff7ed,#ffedd5); border-color:rgba(194,65,12,.18); }
.srch-it[data-kind="doc"] .srch-it-sc{ color:#047857; background:linear-gradient(135deg,#ecfdf5,#dcfce7); border-color:rgba(4,120,87,.18); }
/* ② 关键词历史 chips */
.hh-kws{ display:flex; flex-wrap:wrap; gap:6px; padding:4px 8px 8px; }
.srch-kws{ padding:2px 0 4px; }
.hh-kw{
  display:inline-block; padding:4px 11px; border-radius:999px; cursor:pointer;
  font-size:12px; font-weight:600; color:#475569;
  background:#f8fafc; border:1px solid var(--line-soft);
  max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.hh-kw:hover{ color:#3b5bdb; border-color:var(--chip-b); background:#eef4ff; }
.hh-h2{ margin-top:6px; border-top:1px solid var(--line-soft); padding-top:8px; }
/* ③ 「返回检索结果」条（目标页顶部） */
.srch-backbar{
  display:flex; align-items:center; gap:8px; cursor:pointer;
  margin:0 0 12px; padding:10px 14px; border-radius:12px;
  background:linear-gradient(135deg,#f5f8ff,#eef4ff);
  border:1px solid rgba(76,125,255,.22);
  font-size:13px; font-weight:700; color:#3b5bdb;
}
.srch-backbar:hover{ border-color:rgba(76,125,255,.45); }
.srch-backbar-i{ font-size:15px; font-weight:800; line-height:1; }
.srch-backbar-h{ margin-left:auto; font-size:11.5px; font-weight:500; color:#64748b; }
@media (max-width:560px){ .srch-backbar-h{ display:none; } }

/* ============================================================================
   v2.5.2：常见问题「聚焦视图」—— 由全库检索跳来时直接给答案卡片
   ============================================================================ */
.faq-focus-head{ margin:2px 0 10px; }
.faq-focus-t{ font-size:19px; font-weight:800; color:var(--text); line-height:1.4; }
.faq-focus-s{ margin-top:4px; font-size:12.5px; color:var(--muted); }
.faq-focus-s b{ color:#3b5bdb; font-size:14px; }
.faq-cards{ margin-top:12px; }
.faq-card{
  background:#fff; border:1px solid var(--line-soft); border-radius:14px;
  padding:14px 16px; margin-bottom:12px;
  box-shadow:0 1px 2px rgba(15,23,42,.03);
}
.faq-card-h{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
.faq-badge-major{
  display:inline-block; padding:1px 9px; border-radius:999px;
  font-size:10.5px; font-weight:800; color:#B42318;
  background:#FEF3F2; border:1px solid #FECDCA;
}
.faq-card-cat{ font-size:11.5px; font-weight:700; color:#475569; background:#f1f5f9; padding:1px 8px; border-radius:6px; }
.faq-card-no{ font-size:11.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.faq-card-t{ font-size:14.5px; font-weight:700; color:var(--text); line-height:1.75; }
.faq-card-row{ display:flex; gap:10px; margin-top:9px; font-size:12.5px; line-height:1.75; align-items:flex-start; }
.faq-card-row > b{ flex:none; width:64px; color:#94a3b8; font-weight:700; font-size:11.5px; padding-top:1px; }
.faq-card-row > span{ flex:1; min-width:0; color:#334155; }
.faq-chips{ display:flex; flex-wrap:wrap; gap:5px; }
.faq-chips i{
  display:inline-block; font-style:normal; font-size:11.5px; font-weight:600;
  padding:1px 8px; border-radius:6px; color:#475569; background:#f8fafc; border:1px solid var(--line-soft);
}
.faq-chips i.faq-chip-n{ color:#3b5bdb; background:#eef4ff; border-color:rgba(76,125,255,.2); }
.faq-more{ text-align:center; font-size:12.5px; color:var(--muted); padding:4px 0 10px; }
.faq-focus-foot{ margin-top:16px; text-align:center; }
.faq-focus-foot .ar-btn{ display:inline-block; padding:9px 18px; }
@media (max-width:560px){
  .faq-focus-t{ font-size:17px; }
  .faq-card{ padding:12px 13px; border-radius:12px; }
  .faq-card-row{ flex-direction:column; gap:3px; }
  .faq-card-row > b{ width:auto; }
}

/* v2.5.3：条文跳转的临时高亮（按文本 Range 定位时把编号标出来，9 秒后自动还原） */
.law-jump-mark{
  background:linear-gradient(180deg, rgba(255,214,102,.15), rgba(255,196,0,.45));
  color:inherit; border-radius:3px; padding:0 1px;
  box-shadow:0 0 0 3px rgba(255,196,0,.18);
  animation:hzLawMarkIn .5s ease-out;
}
@keyframes hzLawMarkIn{ from{ background:rgba(255,196,0,.85); } to{ background:rgba(255,196,0,.42); } }
