
  *{margin:0;padding:0;box-sizing:border-box}
  html{-webkit-font-smoothing:antialiased;text-size-adjust:100%;overflow-x:clip}
  body{
    font-family:"PingFang SC","Helvetica Neue","Microsoft YaHei",sans-serif;
    background:#f5f7f6;color:#1f2933;min-height:100vh;
    overflow-x:clip;   /* 顶部导航下拉绝对定位会溢出 35px，裁剪掉避免整页横向滚动 */
  }
  a{text-decoration:none;color:inherit}
  .toolbox-page a:hover,
  .toolbox-page a:focus,
  .toolbox-page a:active{text-decoration:none}
  .toolbox-page a:focus:not(:focus-visible),
  .toolbox-page a:active{outline:none}

  /* 整页滚动条：细、淡、常驻占位。
     系统 overlay 滚动条会盖在满宽页脚卡片的右边缘上、且滚动时才浮现，这里改成独立细条，占 8px 布局宽度 */
  html::-webkit-scrollbar{width:8px;height:8px}
  html::-webkit-scrollbar-track{background:transparent}
  html::-webkit-scrollbar-thumb{background:rgba(15,60,45,.18);border-radius:999px}
  html::-webkit-scrollbar-thumb:hover{background:rgba(15,60,45,.32)}
  @supports (-moz-appearance:none){html{scrollbar-width:thin;scrollbar-color:rgba(15,60,45,.18) transparent}}

  /* 公共导航在工具页滚动时保持吸顶，并保留原有文档流高度。 */
  .toolbox-page #navHead{
    position:sticky;top:0;z-index:990;
    background:#fff;
  }

  /* ===== 顶部导航（完全沿用 AI 工作台 desktop-header） ===== */
/* —— 顶部导航（B 端工作台） —— */
  .desktop-header{
    position:sticky;top:0;z-index:30;
    background:#fff;
    border-bottom:1px solid #e8edf5;
    box-shadow:0 1px 0 rgba(22,120,255,.035);
  }
  .desktop-header .header-inner{
    height:56px;min-height:56px;padding:0 24px;
    display:flex;align-items:center;justify-content:space-between;gap:20px;
    overflow:visible;
  }
  .desktop-header .header-left{
    min-width:0;flex:1;display:flex;align-items:center;gap:16px;
    overflow:visible;
  }
  .desktop-header .brand-wrapper{
    width:auto;flex-shrink:0;display:flex;align-items:center;gap:8px;cursor:pointer;
  }
  .desktop-header .brand-wrapper .svg-icon-systemLogoCircle{width:32px!important;height:32px!important}
  .desktop-header .brand-logo{width:32px;height:32px;object-fit:contain}
  .desktop-header .brand-text{display:flex;align-items:center}
  .desktop-header .brand-title{
    font-weight:700;font-size:20px;line-height:1;color:#1678FF;letter-spacing:.4px;
  }
  .desktop-header .brand-divider{
    width:1px;height:16px;background:#e2e8f0;flex-shrink:0;
  }
  /* 参考优设导航：缩窄时靠收紧间距保留全部菜单，不出现「更多」；极窄时横向轻滑（滚动条隐藏） */
  /* 资料仍在 MCP 右侧（list 内）；悬停时临时 overflow:visible，避免裁切分类弹层 */
  .desktop-header .navigation-list{
    min-width:0;flex:1 1 auto;display:flex;align-items:center;gap:0;
    overflow-x:auto;overflow-y:hidden;
    scrollbar-width:none;-ms-overflow-style:none;
    -webkit-overflow-scrolling:touch;
  }
  .desktop-header .navigation-list:has(.upload-metrial:hover),
  .desktop-header .navigation-list:has(.upload-metrial:focus-within){
    overflow:visible;
  }
  .desktop-header .navigation-list::-webkit-scrollbar{width:0;height:0;display:none}
  .desktop-header .upload-metrial{position:relative;margin-left:8px;padding-bottom:12px;margin-bottom:-12px;flex-shrink:0;z-index:40}
  .desktop-header .upload-metrial:hover .upload-category,
  .desktop-header .upload-metrial:focus-within .upload-category{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}
  .desktop-header .top-load{
    height:32px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:4px;
    border-radius:8px;background:#1678FF;box-shadow:0 1px 4px rgba(22,120,255,.22);
    color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s,box-shadow .15s;
  }
  .desktop-header .top-load:hover{background:#0e5fd6;box-shadow:0 2px 8px rgba(22,120,255,.28)}
  .desktop-header .top-load img{width:16px;height:16px;object-fit:contain}
  .desktop-header .top-load span{font-size:13px;font-weight:600;line-height:18px}
  .desktop-header .upload-category{position:absolute;top:calc(100% - 2px);left:0;z-index:50;opacity:0;visibility:hidden;transform:translateY(8px);pointer-events:none;transition:opacity .2s ease,transform .2s ease,visibility .2s ease}
  .desktop-header .upload-category-wrapper{width:180px;margin:0;padding:4px 0;list-style:none;border-radius:10px;background:#fff;box-shadow:0 12px 28px rgba(31,52,88,.12);border:1px solid #eef2f8}
  .desktop-header .upload-category-li{height:40px;padding:0 16px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:background-color .2s ease,color .2s ease}
  .desktop-header .upload-category-li:hover{background:#f4f8ff}
  .desktop-header .upload-category-li:hover span{color:#1678FF}
  .desktop-header .upload-category-li img{width:18px;height:18px;object-fit:contain;flex-shrink:0}
  .desktop-header .upload-category-li span{font-size:13px;line-height:20px;color:#333;transition:color .2s ease;white-space:nowrap}
  .desktop-header .navigation-item,.desktop-header .text-action,.desktop-header .resource-button,.desktop-header .avatar-button{
    border:none;outline:none;background:transparent;cursor:pointer;transition:color .15s ease,background .15s ease;
  }
  .desktop-header .navigation-item{
    height:56px;padding:0 12px;margin:0;font-size:14px;font-weight:500;line-height:20px;
    color:#3d4a5c;white-space:nowrap;position:relative;flex-shrink:0;
    display:inline-flex;align-items:center;
  }
  .desktop-header .navigation-item:hover{color:#1678FF}
  .desktop-header .navigation-item.active{color:#1678FF;font-weight:600}
  .desktop-header .navigation-item.active::after{
    content:"";position:absolute;left:12px;right:12px;bottom:0;height:2px;
    border-radius:2px 2px 0 0;background:#1678FF;
  }
  /* 「AI填写」角标：右上角对话气泡，不遮挡「公示平台」文字 */
  .desktop-header .navigation-item:has(.ai-auto-fill){overflow:visible}
  .desktop-header .ai-auto-fill{
    position:absolute;top:3px;right:0;left:auto;transform:translateX(28%);
    display:inline-flex;align-items:center;gap:2px;
    height:16px;padding:0 5px 0 3px;border-radius:3px;
    background:linear-gradient(90deg,#c084fc,#8b5cf6 55%,#7c3aed);
    font-size:10px;line-height:16px;color:#fff;font-weight:600;white-space:nowrap;
    pointer-events:none;z-index:1;
  }
  /* 三角尾巴贴底边向下伸出，与矩形合成一体气泡（略偏左指向菜单字） */
  .desktop-header .ai-auto-fill::after{
    content:"";position:absolute;left:12px;top:100%;margin-top:-1px;
    width:0;height:0;
    border-left:3.5px solid transparent;border-right:3.5px solid transparent;
    border-top:4px solid #b57bf5; /* 对应角标左侧渐变色，避免色差断层 */
  }
  .desktop-header .ai-auto-fill img{width:11px;height:11px;margin:0;display:block;filter:brightness(0) invert(1);opacity:.95}
  .desktop-header .ai-auto-fill span{line-height:16px}
  .desktop-header .header-right{
    flex-shrink:0;display:flex;align-items:center;gap:4px;
    font-weight:400;font-size:13px;color:#5c6570;
  }
  .desktop-header .header-sep{
    width:1px;height:14px;background:#e2e8f0;margin:0 8px;flex-shrink:0;
  }
  .desktop-header .resource-button{
    height:32px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;
    border-radius:8px;background:#1678FF;box-shadow:0 1px 4px rgba(22,120,255,.2);
    font-size:13px;font-weight:500;color:#fff;
  }
  .desktop-header .text-action{
    margin:0;height:32px;padding:0 10px;display:inline-flex;align-items:center;gap:5px;
    white-space:nowrap;border-radius:6px;color:#5c6570;font-size:13px;
  }
  .desktop-header .text-action:hover{color:#1678FF;background:#f4f8ff}
  .desktop-header .quick-action-wrapper{position:relative;display:inline-flex;align-items:center}
  .desktop-header .quick-action-wrapper.has-dropdown{padding-bottom:16px;margin-bottom:-16px}
  .desktop-header .quick-action-wrapper.has-dropdown:hover .aq-dropdown{opacity:1;visibility:visible;transform:translate(-50%);pointer-events:auto}
  .desktop-header .aq-dropdown{position:absolute;top:100%;left:50%;z-index:40;padding-top:8px;opacity:0;visibility:hidden;transform:translate(-50%,8px);pointer-events:none;transition:opacity .2s ease,transform .2s ease,visibility .2s ease}
  .desktop-header .aq-down-app{width:200px;padding:16px;border-radius:10px;background:#fff;box-shadow:0 12px 28px rgba(31,52,88,.12);border:1px solid #eef2f8;text-align:center}
  .desktop-header .aq-qr-image{width:160px;height:160px;display:block;margin:0 auto;object-fit:cover}
  .desktop-header .download-app-contents{margin-top:12px}
  .desktop-header .download-app-text{margin-bottom:12px;font-size:13px;line-height:20px;font-weight:600;color:#4c535c}
  .desktop-header .gda-btn{width:100%;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #e8eaec;border-radius:6px;background:transparent;color:#333;text-decoration:none;box-sizing:border-box;transition:all .2s ease}
  .desktop-header .gda-btn:hover{color:#1678FF;border-color:#1678FF;background:#f4f8ff}
  .desktop-header .gda-btn-sm{font-size:13px;line-height:20px}
  .desktop-header .avatar-button{padding:0;width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid #e8edf5;background:#e8f1ff;cursor:pointer}
  .desktop-header .avatar-fallback{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:linear-gradient(135deg,#5b9dff,#1678FF);color:#fff;font-size:13px;font-weight:600;line-height:1;user-select:none}
  .desktop-header .user-panel-wrapper{position:relative;display:none;padding-bottom:12px;margin-bottom:-12px;margin-left:4px}
  .desktop-header .user-panel-wrapper.is-visible{display:inline-flex;align-items:center}
  .desktop-header .user-panel-wrapper:hover .user-profile-dropdown,.desktop-header .user-panel-wrapper:focus-within .user-profile-dropdown{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}
  .desktop-header .user-profile-dropdown{position:absolute;top:calc(100% - 4px);right:0;z-index:60;padding-top:0;opacity:0;visibility:hidden;transform:translateY(8px);pointer-events:none;transition:opacity .2s ease,transform .2s ease,visibility .2s ease;overflow:visible}
  .desktop-header .user-profile-panel{width:220px;overflow:visible;border-radius:8px;background:#fff;box-shadow:0 16px 32px rgba(0,0,0,.08);border:1px solid #eef2f8}
  .desktop-header .panel-top{padding:16px 18px;background:url(media/header/msg-bg.png) no-repeat center center;background-size:100% 100%;display:flex;align-items:center;gap:12px;border-radius:8px 8px 0 0}
  .desktop-header .panel-top-right{min-width:0;flex:1}
  .desktop-header .panel-top-right-primary{display:flex;align-items:center;gap:4px}
  .desktop-header .panel-level-badge{height:14px;display:block;object-fit:contain;flex-shrink:0}
  .desktop-header .panel-user-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;font-size:14px;color:#333}
  .desktop-header .panel-vip-badge{line-height:0}
  .desktop-header .panel-vip-badge img{height:14px;display:block;object-fit:contain}
  .desktop-header .panel-top-right-secondary{margin-top:11px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:#757575;line-height:14px}
  .desktop-header .panel-balance-item{display:flex;align-items:center;gap:4px;min-width:0;white-space:nowrap}
  .desktop-header .panel-yundian-icon{flex-shrink:0}
  .desktop-header .panel-status-icon{height:14px;display:block;object-fit:contain;flex-shrink:0}
  .desktop-header .panel-bottom{padding:1px;overflow:visible}
  .desktop-header .panel-menu-item{width:100%;padding:0 20px;border:none;background:transparent;display:flex;align-items:center;gap:10px;height:40px;cursor:pointer;transition:background-color .2s ease;box-sizing:border-box}
  .desktop-header .panel-menu-item:hover{background:#f4f8ff}
  .desktop-header .panel-menu-item:hover .panel-menu-text{color:#1678FF}
  .desktop-header .panel-menu-item-feedback{cursor:default}
  .desktop-header .panel-menu-icon{width:18px;height:18px;display:block;object-fit:contain;flex-shrink:0}
  .desktop-header .panel-menu-icon-upload{width:18px;height:18px}
  .desktop-header .panel-menu-text{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:#333;transition:color .2s ease}
  .desktop-header .panel-menu-text-logout{color:#757575}
  .desktop-header .panel-menu-dot{width:6px;height:6px;border-radius:50%;background:#ff4d4f;flex-shrink:0}
  .desktop-header .avatar-image{width:38px;height:38px;display:block;border-radius:50%;object-fit:cover;border:1px solid #e8edf5;flex-shrink:0}
  .desktop-header .login-button.is-hidden{display:none}
  .desktop-header .text-action .svg-icon,.desktop-header .svg-icon{width:14px;height:14px;padding:0;margin:0;background:transparent;border-radius:0;box-sizing:content-box;fill:currentColor;color:inherit;vertical-align:middle}
  .desktop-header .text-action .svg-icon:hover,.desktop-header .svg-icon:hover{background:transparent;opacity:1}
  .desktop-header .login-button{
    margin:0 0 0 4px;height:32px;padding:0 14px;display:inline-flex;align-items:center;
    border:1px solid #d0dff5;border-radius:8px;background:#f4f8ff;
    color:#1678FF;font-size:13px;font-weight:500;cursor:pointer;
    transition:background .15s,border-color .15s,color .15s;
  }
  .desktop-header .login-button:hover{background:#1678FF;border-color:#1678FF;color:#fff}
  @media screen and (max-width:1600px){
    .desktop-header .header-inner{gap:16px}
    .desktop-header .header-left{gap:12px}
    .desktop-header .navigation-item{padding:0 10px}
    .desktop-header .navigation-item.active::after{left:10px;right:10px}
  }
  @media screen and (max-width:1440px){
    .desktop-header .header-inner{padding:0 16px;gap:12px}
    .desktop-header .header-left{gap:10px}
    .desktop-header .brand-title{font-size:18px}
    .desktop-header .navigation-item{padding:0 8px;font-size:14px}
    .desktop-header .navigation-item.active::after{left:8px;right:8px}
    .desktop-header .header-sep{margin:0 4px}
    .desktop-header .text-action{padding:0 8px}
  }
  /* 中宽：继续压缩字距与右侧文案，菜单项全部保留 */
  @media screen and (max-width:1280px){
    .desktop-header .header-inner{padding:0 12px;gap:8px}
    .desktop-header .header-left{gap:8px}
    .desktop-header .navigation-item{padding:0 6px;font-size:13px}
    .desktop-header .navigation-item.active::after{left:6px;right:6px}
    .desktop-header .upload-metrial{margin-left:4px}
    .desktop-header .top-load{padding:0 10px;height:30px}
    .desktop-header .top-load span{font-size:12px}
    .desktop-header .text-action{font-size:12px;padding:0 6px;gap:4px}
    .desktop-header .text-action span{display:none}
    .desktop-header .header-sep{display:none}
    .desktop-header .login-button{padding:0 10px;font-size:12px}
  }
  @media screen and (max-width:1100px){
    .desktop-header .header-inner{padding:0 10px;gap:6px}
    .desktop-header .header-left{gap:6px}
    .desktop-header .brand-wrapper{gap:6px}
    .desktop-header .brand-wrapper .svg-icon-systemLogoCircle,
    .desktop-header .brand-logo{width:28px!important;height:28px!important}
    .desktop-header .brand-title{font-size:15px}
    .desktop-header .brand-divider{margin:0 2px}
    .desktop-header .navigation-item{padding:0 4px;font-size:13px}
    .desktop-header .navigation-item.active::after{left:4px;right:4px}
    .desktop-header .ai-auto-fill{transform:translateX(18%) scale(.92);transform-origin:top right}
    .desktop-header .upload-metrial{margin-left:2px}
    .desktop-header .top-load{padding:0 8px}
  }
  @media screen and (max-width:960px){
    .desktop-header .brand-title{font-size:14px}
    .desktop-header .navigation-item{padding:0 3px;font-size:12px}
    .desktop-header .navigation-item.active::after{left:3px;right:3px}
    .desktop-header .top-load span{display:none}
    .desktop-header .top-load{padding:0 8px;width:30px}
  }
  /* 仅窄屏隐藏顶部菜单，侧栏承接导航 */
  @media screen and (max-width:768px){
    .desktop-header .navigation-list{display:none}
    .desktop-header .brand-divider{display:none}
    .desktop-header .header-sep{display:none}
  }
.svg-icon[data-v-c083ac58]{cursor:pointer}
.svg-icon[data-v-c083ac58]:hover{opacity:.6}
.svg-icon[data-v-c083ac58]{margin-right:2px}
.svg-icon[data-v-c083ac58]{background-color:#0000000d}
.svg-icon[data-v-c083ac58]{padding:4px;border-radius:8px;box-sizing:content-box}
.svg-icon[data-v-c083ac58]{background-color:#0000000d}
.svg-icon[data-v-c083ac58]{padding:4px;border-radius:8px;box-sizing:content-box}
.svg-icon[data-v-c083ac58]{background-color:#fff}
.svg-icon[data-v-c083ac58]{padding:4px;border-radius:8px;box-sizing:content-box}
.svg-icon[data-v-c083ac58]{background-color:#0000000d}
.svg-icon{width:16px;height:16px}
.svg-icon{flex-shrink:0}
.svg-icon{padding:3px;border-radius:4px;box-sizing:content-box}
.svg-icon:hover{background:#0000000d}
.svg-icon{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden;outline:none}
.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-right-color:#fff}
.el-popper.is-light{margin-left:10px}
.el-popper{left:0!important;box-shadow:0 0 6px #0000001a;border-radius:8px}
.el-popper .el-popper__arrow:before{display:none}
.el-popper[data-v-c083ac58]{cursor:auto}
.el-popper{background:#fff;box-shadow:0 0 6px #0000001a;border-radius:8px;padding:16px}
.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}
.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}
.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}
.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}
.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}
.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}
.el-popper{background:var(--el-cascader-menu-fill)}
.el-popper,.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}
.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}
.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}
.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}
.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}
.el-popper{box-shadow:var(--el-cascader-menu-shadow)}
.el-popper{border:1px solid var(--el-border-color-lighter)}
.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}
.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}
.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}
.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}
.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}
.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}
.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}
.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}
.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}
.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}
.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}
.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}
.el-popper{outline:none}
.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}
.el-popper--plain{padding:var(--el-popover-padding-large)}
.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}
.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}
.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}
.el-popper,.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}
.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}

  /* ===== Hero ===== */
  .hero{
    position:relative;overflow:hidden;text-align:center;
    padding:24px 24px 22px;
    background:linear-gradient(180deg,#eaf5ef 0%,#f5f7f6 100%);
  }
  .hero::before,.hero::after{
    content:'';position:absolute;border-radius:50%;pointer-events:none;
  }
  .hero::before{
    top:-180px;right:-140px;width:460px;height:460px;
    background:radial-gradient(circle,rgba(46,158,99,.12),transparent 70%);
  }
  .hero::after{
    bottom:-160px;left:-120px;width:400px;height:400px;
    background:radial-gradient(circle,rgba(0,150,136,.10),transparent 70%);
  }
  /* 标题行：主标题 + FREE 标签并排 */
  .hero-head{
    display:flex;align-items:center;justify-content:center;
    flex-wrap:wrap;gap:10px 14px;margin-bottom:10px;
  }
  .hero-eyebrow{
    display:inline-flex;align-items:center;gap:8px;
    font-size:12px;font-weight:500;color:#1d7a4f;
    background:rgba(46,158,99,.10);border:1px solid rgba(46,158,99,.22);
    padding:5px 14px;border-radius:20px;letter-spacing:1px;
  }
  .hero-eyebrow i{width:6px;height:6px;border-radius:50%;background:#2e9e63;display:inline-block}
  .hero h1{font-size:32px;font-weight:700;color:#12352a;letter-spacing:2px}
  .hero-desc{font-size:16px;color:#5c6b64;line-height:1.8;margin-bottom:16px}
  .hero-desc b{color:#1d7a4f;font-weight:600}

  /* 搜索框 */
  .search-box{
    position:relative;z-index:1;max-width:720px;margin:0 auto;
  }
  .search-box svg{
    position:absolute;left:18px;top:50%;transform:translateY(-50%);
    width:18px;height:18px;stroke:#8a9992;pointer-events:none;
  }
  .search-box input{
    width:100%;height:50px;border:1px solid rgba(15,60,45,.14);border-radius:14px;
    background:#fff;padding:0 48px 0 46px;font-size:14px;color:#1f2933;
    font-family:inherit;outline:none;
    box-shadow:0 6px 20px rgba(20,80,55,.08);
    transition:border-color .2s,box-shadow .2s;
  }
  .search-box input::placeholder{color:#9aa8a1}
  .search-box input:focus{border-color:#2e9e63;box-shadow:0 6px 24px rgba(46,158,99,.18)}
  .search-clear{
    position:absolute;right:14px;top:50%;transform:translateY(-50%);
    width:22px;height:22px;border:none;border-radius:50%;cursor:pointer;
    background:#e6ede9;color:#5c6b64;font-size:12px;line-height:1;display:none;
    align-items:center;justify-content:center;
  }
  .search-clear:hover{background:#d7e2dc}
  .search-box.has-val .search-clear{display:flex}

  /* ===== 主体 ===== */
  .main{
    max-width:none;margin:0 auto;padding:20px 20px 20px;
    display:flex;flex-wrap:wrap;column-gap:20px;row-gap:0;align-items:flex-start;
    /* 页脚(site-foot)是 100% 宽的折行子项、放在 main 内：
       让侧栏 sticky 的吸附容器一直延伸到页面底部，滚到底时分类卡仍吸顶；
       row-gap 必须为 0，页脚上方间距只由 .site-foot 的 margin-top 决定（30px） */
  }
  .tools-col{flex:1;min-width:0}
  .cate{margin-bottom:44px}
  .cate:last-of-type{margin-bottom:0}   /* 末个版块不留底部外边距，页脚间距只由 .site-foot 的 margin-top 决定 */
  .cate-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:18px}
  .cate-title{font-size:20px;font-weight:600;color:#12352a;display:flex;align-items:center;gap:10px}
  .cate-title::before{content:'';width:4px;height:18px;border-radius:2px;background:linear-gradient(180deg,#2e9e63,#009688)}
  .cate-title .t-heart{font-size:.84em;color:#e5484d;margin:0 6px;display:inline-block;transform:translateY(-.05em)}
  .side-item .sb-heart{color:#e5484d;margin:0 3px}
  .cate-count{font-size:14px;color:#8a9992}
  .tool-tag{
    flex:none;display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:6px;
    font-size:12px;line-height:1;font-weight:400;white-space:nowrap;
    color:#1d7a4f;background:rgba(46,158,99,.10);
  }
  /* 分类标签配色：细分类词表按族归色（制图类走默认绿） */
  .tool-tag[data-t="名录查询"],.tool-tag[data-t="代码查询"],.tool-tag[data-t="数据查询"],.tool-tag[data-t="术语查询"],.tool-tag[data-t="政策问答"],.tool-tag[data-t="报告检索"],.tool-tag[data-t="系数查询"],.tool-tag[data-t="资质查询"],.tool-tag[data-t="知识库"],.tool-tag[data-t="网址导航"],.tool-tag[data-t="编制指南"],.tool-tag[data-t="物质查询"]{color:#0d8484;background:rgba(14,138,138,.10)}
  .tool-tag[data-t="坐标转换"],.tool-tag[data-t="坐标拾取"],.tool-tag[data-t="图层叠加"],.tool-tag[data-t="单位换算"],.tool-tag[data-t="文档转换"],.tool-tag[data-t="清单生成"]{color:#6b4fd8;background:rgba(122,90,245,.10)}
  .tool-tag[data-t="噪声预测"],.tool-tag[data-t="大气预测"],.tool-tag[data-t="地下水模型"],.tool-tag[data-t="地表水模型"],.tool-tag[data-t="土壤模型"],.tool-tag[data-t="气象图件"],.tool-tag[data-t="结果查看"]{color:#1f6fb2;background:rgba(47,127,224,.10)}
  .tool-tag[data-t="防护距离"],.tool-tag[data-t="活性炭核算"],.tool-tag[data-t="辐射核算"],.tool-tag[data-t="安全测算"],.tool-tag[data-t="爆炸测算"],.tool-tag[data-t="通用计算"],.tool-tag[data-t="验收核算"],.tool-tag[data-t="废气核算"],.tool-tag[data-t="雨水核算"],.tool-tag[data-t="事故池核算"],.tool-tag[data-t="排气筒校核"],.tool-tag[data-t="污水处理"],.tool-tag[data-t="泄漏蒸发"],.tool-tag[data-t="碳排放核算"]{color:#b0620f;background:rgba(217,131,36,.13)}
  .tool-tag[data-t="风险评价"],.tool-tag[data-t="合规自查"],.tool-tag[data-t="公示生成"]{color:#bf3b39;background:rgba(214,69,69,.10)}
  .tool-tag[data-t="洗井记录"],.tool-tag[data-t="交易资讯"]{color:#5f6b76;background:rgba(95,107,118,.10)}
  /* 分区头三枚标签：来源 / 作者主页 / 打赏作者 —— 共用同一套盒模型，高度严格一致（24px） */
  .src-pill,
  .act-earn,
  .cate-act{
    box-sizing:border-box;
    display:inline-flex;align-items:center;justify-content:center;
    height:24px;padding:0 10px;border-radius:999px;
    font-family:inherit;font-size:12px;line-height:1;font-weight:500;white-space:nowrap;
    text-decoration:none;
  }
  .src-pill{
    align-self:center;
    color:#2e7d5b;background:#e9f5ef;border:1px solid #cfe8db;
    transition:background .15s,color .15s,border-color .15s;
  }
  .src-pill:hover{background:#2e7d5b;border-color:#2e7d5b;color:#fff}

  /* 分区头：作者主页 / 打赏作者 */
  .cate-acts{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px;align-self:center;margin-left:2px}
  .cate-act{
    gap:5px;cursor:pointer;
    transition:background .15s,color .15s,border-color .15s,box-shadow .15s;
  }
  .cate-act svg{width:13px;height:13px;flex:none}
  /* 作者主页 → 头像 + 云助手昵称（真实头像已下载到 assets/avatars/，缺图时 onerror 回退同名 .svg 首字头像） */
  .act-home{color:#3f5a50;background:#fff;border:1px solid rgba(15,60,45,.14);padding:0 9px 0 3px;gap:6px}
  .act-home img{
    flex:none;width:18px;height:18px;border-radius:50%;
    object-fit:cover;display:block;
    box-shadow:0 0 0 1px rgba(15,60,45,.10);
    transition:box-shadow .15s;
  }
  .act-home .act-name{
    max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .act-home:hover{color:#1d7a4f;background:#f4faf7;border-color:rgba(46,158,99,.45)}
  .act-home:hover img{box-shadow:0 0 0 1px rgba(46,158,99,.45)}
  /* 打赏作者 */
  .act-tip{
    color:#fff;font-weight:600;
    background:linear-gradient(135deg,#f79514,#e07204);
    border:1px solid rgba(186,104,4,.60);
    box-shadow:0 2px 6px rgba(200,118,8,.32);
    text-shadow:0 1px 1px rgba(132,64,0,.26);
  }
  .act-tip svg{filter:drop-shadow(0 1px 1px rgba(146,84,0,.22))}
  .act-tip:hover{
    background:linear-gradient(135deg,#ee8a0a,#c85f02);
    border-color:rgba(168,92,2,.74);
    box-shadow:0 3px 10px rgba(200,118,8,.42);
  }
  .act-tip:active{transform:translateY(.5px)}

  /* 作者累计赏金，按 userId 匹配汇总数据。 */
  .act-earn{align-self:center;gap:3px;color:#8a6a2f;background:#fdf7ec;border:1px solid rgba(217,131,36,.24)}
  .act-earn b{font-weight:600;color:#b0620f;font-variant-numeric:tabular-nums}
  .cate[data-cate="qinghe"] .grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),360px))}

  /* ===== 打赏弹窗 ===== */
  .tip-mask{
    position:fixed;inset:0;z-index:1000;
    display:flex;align-items:center;justify-content:center;padding:24px;
    background:rgba(0,0,0,.5);
    visibility:hidden;opacity:0;pointer-events:none;transition:opacity .2s;
  }
  .tip-mask.is-open{visibility:visible;opacity:1;pointer-events:auto}
  .tip-modal{
    position:relative;width:100%;max-width:420px;
    background:#fff;border-radius:20px;padding:28px 26px 24px;
    box-shadow:0 24px 60px rgba(9,40,30,.26),0 2px 8px rgba(9,40,30,.08);
    transform:translateY(14px) scale(.98);opacity:0;
    transition:transform .24s cubic-bezier(.22,.9,.3,1),opacity .2s;
  }
  .tip-mask.is-open .tip-modal{transform:none;opacity:1}
  .tip-close{
    position:absolute;top:14px;right:14px;width:28px;height:28px;
    display:flex;align-items:center;justify-content:center;
    border:0;border-radius:50%;background:transparent;color:#9aa8a1;
    cursor:pointer;transition:background .15s,color .15s;
  }
  .tip-close:hover{background:#f1f5f3;color:#12352a}
  .tip-modal:focus{outline:none}
  .tip-close:focus{outline:none}
  .tip-close:focus-visible{box-shadow:0 0 0 3px rgba(46,158,99,.22)}
  .tip-title{font-size:18px;font-weight:600;color:#12352a;line-height:1.2}
  .tip-sub{margin-top:6px;font-size:12px;color:#8a9992;line-height:1.6}
  .tip-sub b{color:#b0620f;font-weight:600}
  .tip-who{
    margin-top:16px;display:flex;align-items:center;gap:10px;
    padding:11px 14px;border-radius:12px;background:#f6faf8;
    border:1px solid rgba(15,60,45,.06);
    font-size:14px;color:#3f5a50;
  }
  .tip-who .lab{flex:none;color:#8a9992;font-size:12px}
  .tip-ava{
    flex:none;width:34px;height:34px;border-radius:50%;object-fit:cover;
    background:#e8f0ec;box-shadow:0 0 0 2px #fff,0 0 0 3px rgba(46,158,99,.16);
  }
  .tip-who-main{display:flex;flex-direction:column;gap:1px;min-width:0}
  .tip-who b{
    color:#12352a;font-weight:600;font-size:15px;line-height:1.35;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .tip-from{
    font-size:12px;color:#8a9992;line-height:1.45;
    white-space:normal;word-break:break-word;
  }
  .tip-amts{margin-top:14px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
  .tip-amt{
    height:48px;border-radius:12px;cursor:pointer;
    border:1px solid rgba(15,60,45,.14);background:#fff;
    font-family:inherit;font-size:15px;font-weight:600;color:#3f5a50;
    line-height:1.1;transition:all .15s;
    display:flex;align-items:center;justify-content:center;gap:2px;
  }
  .tip-amt em{font-style:normal;font-size:12px;font-weight:500;color:#9aa8a1}
  .tip-amt:hover{border-color:rgba(217,131,36,.5);color:#b0620f}
  .tip-amt.is-on{
    border-color:#d98324;background:rgba(217,131,36,.10);color:#a3580c;
    box-shadow:0 0 0 3px rgba(217,131,36,.12);
  }
  .tip-amt.is-on em{color:#b0620f}
  .tip-custom{margin-top:12px;display:flex;align-items:center;gap:10px}
  .tip-custom .lab{flex:none;font-size:12px;color:#8a9992}
  .tip-input{
    flex:1;min-width:0;height:44px;padding:0 14px;border-radius:12px;
    border:1px solid rgba(15,60,45,.14);background:#fff;
    font-family:inherit;font-size:14px;color:#12352a;
    transition:border-color .15s,box-shadow .15s;
  }
  .tip-input::placeholder{color:#b3c1ba;font-size:13px}
  .tip-input:focus{outline:none;border-color:#d98324;box-shadow:0 0 0 3px rgba(217,131,36,.14)}
  .tip-input.err{border-color:#d64545;box-shadow:0 0 0 3px rgba(214,69,69,.12)}
  .tip-custom .unit{flex:none;font-size:12px;color:#8a9992}
  .tip-hint{margin-top:10px;font-size:12px;line-height:1.6;color:#d64545}
  .tip-hint:empty{display:none;margin:0}
  .tip-submit{
    margin-top:14px;width:100%;height:48px;border:0;border-radius:13px;
    font-family:inherit;font-size:15px;font-weight:600;color:#fff;cursor:pointer;
    background:linear-gradient(135deg,#e09a35,#c97716);
    box-shadow:0 8px 20px rgba(201,119,22,.26);
    transition:filter .15s,box-shadow .15s,opacity .15s,transform .15s;
  }
  .tip-submit:hover{filter:brightness(1.04);box-shadow:0 10px 24px rgba(201,119,22,.32)}
  .tip-submit:active{transform:translateY(1px)}
  .tip-submit:disabled{background:#d8e0dc;box-shadow:none;color:#9aa8a1;cursor:not-allowed}
  .tip-foot-note{margin-top:12px;text-align:center;font-size:12px;color:#b3c1ba;line-height:1.6}
  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:18px}
  @media (max-width:1080px){
    .grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
  }

  /* ===== 各省「三线一单」公众端（非工具版块：不参与搜索/折叠/热度排名，点击单独计数） ===== */
  .sxyd-sec{margin-bottom:0}   /* 末个版块，页脚间距只由 .site-foot 的 margin-top 决定 */
  .sxyd-desc{margin:-8px 0 16px;font-size:14px;line-height:1.7;color:#8a9992}
  .sxyd-desc a{
    color:#1d7a4f;font-weight:500;text-decoration:none;
  }
  .sxyd-desc a:hover{color:#0f6041}
  .prov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
  .prov-card{
    display:flex;align-items:center;justify-content:space-between;gap:8px;
    padding:13px 14px;border-radius:12px;text-decoration:none;
    background:#fff;border:1px solid rgba(15,60,45,.08);
    box-shadow:0 1px 4px rgba(20,80,55,.04);
    transition:transform .2s,box-shadow .2s,border-color .2s;
  }
  .prov-card:hover{
    transform:translateY(-2px);border-color:rgba(46,158,99,.30);
    box-shadow:0 8px 18px rgba(20,80,55,.10);
  }
  .prov-name{font-size:14px;font-weight:600;color:#12352a;transition:color .15s}
  .prov-card:hover .prov-name{color:#1d7a4f}
  .prov-hits{font-size:12px;color:#a2b0a9;white-space:nowrap}
  .prov-hits b{color:#1d7a4f;font-weight:600}
  @media (max-width:720px){
    .prov-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}
    .prov-card{padding:10px 12px}
  }
  @media (max-width:600px){
    .prov-grid{grid-template-columns:repeat(3,1fr)}
    .prov-card{justify-content:center}
    .prov-hits{display:none}
  }

  /* ===== 侧边栏：两张独立卡片（① 分类列表 ② 广告/社区/入驻/二维码） ===== */
  /* 64px 顶部导航下方保留 20px 间距，底部同样留出 20px。 */
  .side{
    flex:none;width:260px;position:sticky;top:84px;
    display:flex;flex-direction:column;gap:10px;
    /* 侧栏内容（1287px）高于视口：吸顶后限高 + 卡内滚动，
       鼠标停在侧栏上滚轮直接滚侧栏，滚到底自动接续滚页面 */
    max-height:calc(100vh - 104px);
    overflow-y:auto;overflow-x:hidden;
    scrollbar-gutter:stable;
  }
  /* 常驻 4px 极细淡滚动条（.12 / hover .24） */
  .side::-webkit-scrollbar{width:4px}
  .side::-webkit-scrollbar-track{background:transparent}
  .side::-webkit-scrollbar-thumb{background:rgba(15,60,45,.12);border-radius:4px}
  .side:hover::-webkit-scrollbar-thumb{background:rgba(15,60,45,.24)}
  @supports (-moz-appearance:none){.side{scrollbar-width:thin;scrollbar-color:rgba(15,60,45,.12) transparent}}
  /* 侧栏统一卡片外观（分类 / 社区 / 三线一单 / 入驻+二维码 共用） */
  .side-card{
    flex:none;background:#fff;border:1px solid rgba(15,60,45,.08);border-radius:14px;
    padding:16px 12px;box-shadow:0 1px 4px rgba(20,80,55,.04);
  }
  .side-title{
    font-size:14px;font-weight:600;color:#12352a;
    display:flex;align-items:center;gap:8px;padding:0 10px;
  }
  .side-title svg{width:16px;height:16px;stroke:#1d7a4f;flex:none}
  .side-total{font-size:12px;color:#8a9992;padding:0 10px;margin:6px 0 10px}
  .side-total b{color:#1d7a4f;font-weight:600}
  .side-item{
    display:flex;align-items:center;gap:9px;width:100%;
    border:none;background:none;cursor:pointer;font-family:inherit;
    font-size:14px;color:#5c6b64;padding:9px 10px;border-radius:9px;
    transition:background .2s,color .2s;text-align:left;text-decoration:none;
  }
  .side-item:hover{background:rgba(46,158,99,.08);color:#1d7a4f}
  .side-item.active{background:rgba(46,158,99,.12);color:#1d7a4f;font-weight:600}
  .side-item .ico{font-size:14px;width:18px;text-align:center;flex:none}
  .side-item .cnt{margin-left:auto;font-size:12px;color:#8a9992;font-weight:400}
  .side-item.active .cnt{color:#1d7a4f}

  /* 分类卡末尾的跨站入口（MCP 服务中心）：外观完全复用 .side-item，
     只是无 data-cate，脚本计数时会被跳过 */
  .side-item .ext-go{
    margin-left:auto;flex:none;display:inline-flex;align-items:center;
    color:#a8b5ae;transition:transform .2s,color .2s;
  }
  .side-item .ext-go svg{
    width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.2;
    stroke-linecap:round;stroke-linejoin:round;
  }
  .side-item:hover .ext-go{transform:translate(1px,-1px);color:#1d7a4f}

  /* 可展开分类 + 子菜单 */
  .side-group{position:relative}
  .side-item .chev{
    margin-left:6px;display:inline-flex;align-items:center;color:#a8b5ae;
    transition:transform .24s ease,color .2s;
  }
  .side-item .chev svg{width:14px;height:14px}
  .side-item.has-sub:hover .chev{color:#1d7a4f}
  .side-item.has-sub[aria-expanded="true"] .chev{transform:rotate(180deg);color:#1d7a4f}
  .side-sub{
    max-height:0;overflow:hidden;opacity:0;
    transition:max-height .28s cubic-bezier(.4,0,.2,1),opacity .2s ease;
  }
  .side-sub.open{opacity:1}
  .side-sub-inner{
    margin:2px 0 4px 9px;padding-left:10px;
    border-left:1px solid #e4eee9;
  }
  .side-subitem{
    display:flex;align-items:center;gap:8px;width:100%;min-width:0;
    border:none;background:none;cursor:pointer;font-family:inherit;
    font-size:14px;line-height:20px;color:#6b7a72;text-align:left;
    text-decoration:none;
    padding:7px 10px 7px 8px;border-radius:8px;
    transition:background .18s,color .18s;
  }
  .side-subitem .dot{
    flex:none;width:4px;height:4px;border-radius:50%;background:#c2cfc8;
    transition:background .18s;
  }
  .side-subitem .nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .side-subitem:hover{background:rgba(46,158,99,.08);color:#1d7a4f}
  .side-subitem:hover .dot{background:#2e9e63}
  .side-subitem:active{background:rgba(46,158,99,.16)}

  /* ===== 侧栏分组：广告卡 / 交流社区卡 / 三线一单卡 / 入驻+二维码卡 ===== */
  /* 桌面端：与分类卡纵向等距排列；窄屏时整块由脚本挪到工具列表之后 */
  .side-extra{flex:none;display:flex;flex-direction:column;gap:10px}
  .side-extra > *{flex:none}
  .side-sec-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 4px}
  .side-sec-t{
    display:inline-flex;align-items:center;gap:6px;flex:none;
    font-size:14px;font-weight:600;color:#12352a;text-decoration:none;
  }
  .side-sec-t::before{content:'';width:3px;height:12px;border-radius:2px;background:linear-gradient(180deg,#2e9e63,#009688)}
  .side-sec-t:hover{color:#1d7a4f}
  .side-sec-more{
    display:inline-flex;align-items:center;gap:2px;min-width:0;
    font-size:12px;color:#8a9992;text-decoration:none;white-space:nowrap;
    overflow:hidden;text-overflow:ellipsis;
  }
  .side-sec-more:hover{color:#1d7a4f}

  /* 广告位（独立卡片，内容后台配置） */
  .side-ad{
    position:relative;display:block;overflow:hidden;text-decoration:none;
    border-radius:14px;padding:14px 14px 13px;
    background:linear-gradient(150deg,#0f3a2b 0%,#1b6b4b 58%,#2e9e63 100%);
    box-shadow:0 6px 16px rgba(16,70,50,.16);
    transition:box-shadow .2s,transform .2s;
  }
  .side-ad::after{
    content:'';position:absolute;right:-26px;top:-26px;width:78px;height:78px;border-radius:50%;
    background:radial-gradient(circle,rgba(255,255,255,.22),rgba(255,255,255,0) 70%);
  }
  .side-ad:hover{box-shadow:0 10px 22px rgba(16,70,50,.26)}
  .side-ad-flag{
    display:inline-block;
    font-size:12px;line-height:1;padding:3px 6px;border-radius:5px;margin-bottom:8px;
    color:rgba(255,255,255,.82);background:rgba(255,255,255,.16);
  }
  .side-ad-title{display:block;font-size:14px;font-weight:600;color:#fff;line-height:1.5}
  .side-ad-desc{display:block;font-size:12px;color:rgba(255,255,255,.78);line-height:1.6;margin-top:6px}
  .side-ad-cta{display:inline-block;font-size:12px;font-weight:500;color:#fff;line-height:1;margin-top:10px}
  .side-ad:hover .side-ad-cta{text-decoration:none}
  /* 图片版广告位：整图铺满卡片，hover 轻微放大。
     ⚠️ .side 是 overflow:auto 滚动容器且卡满宽，大阴影会在左右被裁——
     这里用与 .side-card 同级的小阴影，hover 不加深阴影只缩放图片 */
  .side-ad-img{
    padding:0;background:#0b2f4a;border-radius:10px;
    box-shadow:0 1px 4px rgba(20,80,55,.08);
  }
  .side-ad-img:hover{box-shadow:0 1px 4px rgba(20,80,55,.08)}
  .side-ad-img img{
    display:block;width:100%;height:auto;aspect-ratio:651/162;object-fit:cover;
    transition:transform .3s ease;
  }
  .side-ad-img:hover img{transform:scale(1.03)}
  .side-ad-mcp img{aspect-ratio:768/192}

  /* 交流社区 */
  .post-list{list-style:none;padding:0;margin:8px 0 0}
  .post-item{padding:6px 4px;border-radius:8px;transition:background .16s}
  .post-item + .post-item{border-top:1px solid rgba(15,60,45,.05)}
  .post-item:hover{background:rgba(46,158,99,.06)}
  .post-t{
    display:block;font-size:12px;line-height:18px;color:#3f4f47;text-decoration:none;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .post-item:hover .post-t{color:#1d7a4f}
  .post-m{display:flex;align-items:center;gap:6px;margin-top:3px;font-size:12px;line-height:1;color:#a3b0a9}
  .post-a{
    flex:0 1 auto;min-width:0;max-width:58px;color:#8a9992;text-decoration:none;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .post-a:hover{color:#1d7a4f;text-decoration:none}
  .post-d{flex:none;color:#a3b0a9;white-space:nowrap;font-variant-numeric:tabular-nums}
  /* 阅读 / 评论：icon + 数字，靠右排列 */
  .post-stats{margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:8px}
  .post-stat{display:inline-flex;align-items:center;gap:3px;color:#a3b0a9;font-variant-numeric:tabular-nums}
  .post-stat b{font-weight:400;color:inherit}
  .post-stat svg{
    flex:none;width:12px;height:12px;fill:none;stroke:currentColor;
    stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;
  }
  .post-item:hover .post-stat{color:#8a9992}
  .post-pager{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:10px}
  .post-pager .pg{
    display:inline-flex;align-items:center;justify-content:center;
    height:24px;padding:0 8px;border-radius:7px;cursor:pointer;
    border:1px solid rgba(15,60,45,.12);background:#fff;
    font-family:inherit;font-size:12px;line-height:1;color:#5c6b64;
    transition:background .15s,color .15s,border-color .15s;
  }
  .post-pager .pg:hover:not(:disabled){color:#1d7a4f;border-color:rgba(46,158,99,.45);background:#f4faf7}
  .post-pager .pg:disabled{color:#c2cfc8;cursor:default;background:#fafcfb;border-color:rgba(15,60,45,.07)}
  .post-pager .pg-info{font-size:12px;color:#8a9992;line-height:1}
  .post-pager .pg-info b{color:#1d7a4f;font-weight:600}

  /* 入驻推广位 */
  .side-join{display:flex;flex-direction:column;gap:10px}
  .side-promo{
    display:block;text-decoration:none;border-radius:12px;padding:12px;
    border:1px dashed rgba(46,158,99,.45);background:rgba(46,158,99,.06);
    transition:background .16s,border-color .16s;
  }
  .side-promo:hover{background:rgba(46,158,99,.10);border-color:rgba(46,158,99,.70)}
  .promo-eyebrow{display:block;font-size:12px;color:#1d7a4f;line-height:1.5}
  /* 标题与「查看入驻说明」同一行：标题左、说明右，按基线对齐（12 号字与 14 号字底边齐平） */
  .promo-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:2px}
  .promo-title{display:block;font-size:14px;font-weight:600;color:#12352a;line-height:1.5;min-width:0;white-space:nowrap}
  .promo-heart{color:#e5484d;margin:0 3px}
  .promo-meta{display:flex;align-items:center;gap:6px;margin-top:0;font-size:12px;line-height:1;color:#1d7a4f;flex:none;white-space:nowrap}
  .promo-meta .go{color:#1d7a4f;font-weight:500}
  .side-promo:hover .promo-meta .go{text-decoration:none}

  /* ===== 工具卡片 ===== */
  .tool-card{
    position:relative;display:flex;flex-wrap:wrap;align-items:center;
    column-gap:16px;row-gap:0;
    background:#fff;border:1px solid rgba(15,60,45,.08);border-radius:14px;
    padding:22px 20px 0;overflow:hidden;
    box-shadow:0 1px 4px rgba(20,80,55,.04);
    transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s,border-color .25s;
  }
  .tool-card::before{
    content:'';position:absolute;top:0;left:0;right:0;height:3px;
    background:linear-gradient(90deg,var(--c1,#2e9e63),var(--c2,#3fb374));
    transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.4,0,.2,1);
  }
  .tool-card:hover{
    transform:translateY(-4px);border-color:rgba(46,158,99,.30);
    box-shadow:0 12px 28px rgba(20,80,55,.12);
  }
  .tool-card:hover::before{transform:scaleX(1)}
  .tool-ico{
    flex:none;width:48px;height:48px;border-radius:12px;
    display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff;
    background:linear-gradient(135deg,var(--c1,#2e9e63),var(--c2,#3fb374));
    box-shadow:0 4px 10px rgba(0,0,0,.10);
    overflow:hidden;
  }
  .tool-ico img{width:30px;height:30px;object-fit:contain;display:block}
  /* 文字型图标（emoji）统一走彩色 emoji 字体，避免部分安卓把 ☁️/🗺️ 渲染成白色单色字形看不见 */
  .tool-ico,.rec-ico{
    font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Segoe UI Symbol",system-ui,-apple-system,sans-serif;
    line-height:1;
  }
  /* 图标图片加载失败：用工具名首字兜底，避免只剩一个空白方块 */
  .tool-ico.is-fb,.rec-ico.is-fb{
    background:rgba(46,158,99,.12);color:#14724a;
    font-size:16px;font-weight:600;box-shadow:none;
  }
  .cate[data-cate="shangyun"] .tool-ico{box-shadow:none}
  /* 知数环保工具箱：图标沿用对方站点（zshb.hbxxhb.cc）的 lucide 图标与配色 */
  .cate[data-cate="zhishu"] .tool-ico svg{width:24px;height:24px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .cate[data-cate="zhishu"] .tool-ico{background:#0e7263;box-shadow:0 4px 10px rgba(0,0,0,.12)}
  .cate[data-cate="zhishu"] .tool-ico.is-soft{background:#eff6ff;color:#2563eb;box-shadow:none}
  /* 南京煦科工具箱：方案 A 细线线性手绘 SVG，底色为 uiGradients 活力渐变 */
  .cate[data-cate="xuke"] .tool-ico svg{width:26px;height:26px;display:block}
  /* CY 工具箱：FA 实底图标视觉偏重，尺寸压小一档（内联 width/height=26 被 CSS 覆盖） */
  .cate[data-cate="cy"] .tool-ico svg{width:22px;height:22px;display:block}
  .tool-body{flex:1;min-width:0}
  .tool-title{
    font-size:16px;font-weight:600;color:#1f2933;line-height:1.4;margin-bottom:6px;
    display:block;
  }
  .tool-title:hover{color:#1d7a4f}
  .badge{
    flex:none;font-size:12px;font-weight:500;color:#fff;
    background:linear-gradient(135deg,#ff9800,#f4511e);
    padding:2px 9px;border-radius:10px;letter-spacing:.5px;white-space:nowrap;
  }
  .badge--blue{background:linear-gradient(135deg,#42a5f5,#1e88e5)}
  .tool-desc{
    font-size:12px;color:#78909c;line-height:1.65;
    display:block;
  }
  /* 卡片底部：分类标签 / 收藏 / 点击次数 */
  .tool-foot{
    flex:0 0 100%;display:flex;align-items:center;gap:12px;
    margin-top:16px;padding:11px 0 13px;
    border-top:1px solid rgba(15,60,45,.10);
    font-size:12px;color:#8a9992;line-height:1;
  }
  /* 收藏：描边星 → 实心星（悬停/已收藏为琥珀色小胶囊） */
  .tool-fav{
    flex:none;display:inline-flex;align-items:center;gap:2px;
    height:22px;padding:0 7px 0 6px;margin:-5px 0 -5px -6px;border-radius:7px;
    font-size:12px;line-height:1;cursor:pointer;user-select:none;
    color:#8a9992;background:transparent;
    transition:color .16s,background .16s;
  }
  .tool-fav .fav-ico{display:inline-flex;width:14px;height:14px;flex:none}
  .tool-fav .fav-ico svg{width:14px;height:14px;display:block}
  .tool-fav .fav-ico path{
    fill:none;stroke:currentColor;stroke-width:1.9;
    stroke-linejoin:round;stroke-linecap:round;
    transition:fill .18s ease,stroke .18s ease;
  }
  .tool-fav:hover{color:#c68a15;background:rgba(224,160,32,.10)}
  .tool-fav:hover .fav-ico path{fill:rgba(224,160,32,.20)}
  .tool-fav:active .fav-ico{transform:scale(.9)}
  .tool-fav.is-on{color:#b8860f;background:rgba(224,160,32,.13)}
  .tool-fav.is-on .fav-ico path{fill:currentColor}
  /* 收藏数：与「收藏」文案用一条细分隔线隔开 */
  .tool-fav .fav-num{
    margin-left:3px;padding-left:0;
    border-left:none;
    color:#9aa8a1;font-variant-numeric:tabular-nums;
    transition:color .16s,border-color .16s;
  }
  /* 收藏按钮只保留星标 + 收藏数，去掉「收藏」二字（星标已表意） */
  .tool-fav .fav-txt{display:none}
  .tool-fav:hover .fav-num{color:#b8860f}
  .tool-fav.is-on .fav-num{color:#b8860f;font-weight:600}
  .tool-fav.is-pop .fav-ico{animation:favPop .38s cubic-bezier(.24,.9,.32,1.35)}
  @keyframes favPop{
    0%{transform:scale(.7)}
    55%{transform:scale(1.24)}
    100%{transform:scale(1)}
  }
  .tool-hits{
    margin-left:auto;display:inline;white-space:nowrap;color:#9aa8a1;
  }
  .tool-hits b{color:#1d7a4f;font-weight:600}
  .toolbox-page mark.search-match{color:#e53935;background:transparent;padding:0;font:inherit}
  .tool-hits i{font-style:normal;color:#c6d2cc;margin:0}

  /* ===== 版块内活动横幅（图片自带文案，12:1 整宽横条） =====
     横幅位于版块最顶部（标题之上），上、下留白取同一个 20px：
     下方由自身 margin-bottom 给出；上方上一个版块带 44px 的 .cate 下外边距，
     故在本版块上加 -24 抵消（相邻外边距折叠后 44 - 24 = 20），见下方 .cate-ad-top */
  .cate-ad{
    display:block;margin-bottom:20px;border-radius:14px;overflow:hidden;
    border:1px solid rgba(15,60,45,.08);background:#eef4ff;
    box-shadow:0 1px 4px rgba(20,80,55,.04);
    transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease;
  }
  /* 只在「带横幅的版块」上抵消，避免影响其它版块之间的 44px 节奏 */
  .cate:has(> .cate-ad),
  .cate:has(> #toolBanner:not([hidden])){margin-top:-24px}
  .cate-ad img{display:block;width:100%;height:auto}
  .cate-ad:hover{border-color:rgba(46,158,99,.4);box-shadow:0 6px 18px rgba(20,80,55,.14);transform:translateY(-1px)}
  .cate-ad:focus-visible{outline:2px solid rgba(46,158,99,.55);outline-offset:3px}

  /* ===== CY工具箱：按原站分类的聚合卡（横向三组 + 标准工具卡） ===== */
  .cate-cy .cy-wrap{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:stretch}
  .cy-group{
    display:flex;flex-direction:column;
    background:#fff;border:1px solid rgba(15,60,45,.08);border-radius:14px;
    overflow:hidden;box-shadow:0 1px 4px rgba(20,80,55,.04);
  }
  .cy-head{
    display:flex;align-items:center;justify-content:center;gap:10px;
    padding:13px 16px;background:linear-gradient(135deg,var(--c1),var(--c2));color:#fff;
  }
  .cy-head .cy-ico{font-size:20px;line-height:1}
  .cy-head .cy-name{font-size:16px;font-weight:600;letter-spacing:.5px}
  .cy-head .cy-cnt{font-size:12px;line-height:1;padding:3px 10px;border-radius:999px;background:rgba(255,255,255,.18)}
  /* 卡片固定高度 = 3 行小卡（86×3 + gap12×2 + 上下 padding24 = 306），超出部分卡内滚动；
     差值刚好对齐整行，第 4 行不会露出半截 */
  .cy-body{
    display:grid;grid-template-columns:repeat(2,1fr);gap:12px;
    padding:12px 6px 12px 12px;   /* 右侧 6px 给常驻滚动条让位，视觉左右均 12 */
    flex:1 1 auto;height:306px;min-height:306px;align-content:start;
    overflow-y:auto;scrollbar-gutter:stable;   /* 不设 overscroll-behavior：滚到底接着滚页面 */
  }
  .cy-body::-webkit-scrollbar{width:6px}
  .cy-body::-webkit-scrollbar-track{background:transparent}
  .cy-body::-webkit-scrollbar-thumb{background:rgba(15,60,45,.14);border-radius:999px}
  .cy-body:hover::-webkit-scrollbar-thumb{background:rgba(15,60,45,.28)}
  @supports (-moz-appearance:none){.cy-body{scrollbar-width:thin;scrollbar-color:rgba(15,60,45,.18) transparent}}
  /* 底部提示条：点一下滚一屏，滚到底变成「回到顶部」 */
  .cy-more{
    flex:none;display:flex;align-items:center;justify-content:center;gap:6px;
    width:100%;height:40px;margin:0;padding:0;
    border:0;border-top:1px dashed rgba(15,60,45,.20);
    background:rgba(15,60,45,.045);
    font-family:inherit;font-size:12px;line-height:1;color:#7b8a83;cursor:pointer;
    transition:background .16s,color .16s;
  }
  .cy-more b{color:#1d7a4f;font-weight:600}
  .cy-more:hover{background:rgba(15,60,45,.085);color:#1f3a30}
  .cy-more svg{width:12px;height:12px;flex:none;transition:transform .2s}
  .cy-more.is-end svg{transform:rotate(180deg)}
  /* 一屏装得下：只报总数，不可点 */
  .cy-more.is-static{cursor:default;color:#95a39c;background:rgba(15,60,45,.03)}
  .cy-more.is-static:hover{background:rgba(15,60,45,.03);color:#95a39c}
  .cy-more.is-static b{color:#7b8a83}
  /* 资料整合：一行一张 */
  .cate-cy .cy-group.cy-group--full .cy-body{grid-template-columns:1fr}
  /* 组内紧凑卡：小图标 + 单行标题 + 底行标签/收藏/次数（去掉描述，2 列 × 3 行） */
  .cate-cy .tool-card{padding:11px 10px 0;border-radius:10px;column-gap:6px;height:86px}
  .cate-cy .tool-ico{width:26px;height:26px;border-radius:7px;font-size:14px;box-shadow:none}
  .cate-cy .tool-card .tool-ico svg{width:14px;height:14px}
  /* 标题只占一行（14px/18px），不换行、超出省略，悬浮 title 看全文；卡片高度随行高收紧 */
  .cate-cy .tool-title{
    display:block;font-size:14px;line-height:18px;height:18px;margin-bottom:0;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .cate-cy .tool-desc{display:none}
  /* 底行锁死单行：卡片最窄时内容宽仅 ~144px，原先 flex-wrap 会让「昨日 N次/总 N次」
     在数字位数多时掉到第二行、位数少时留在第一行，同一排卡片的页脚高度就参差不齐。
     这里改 nowrap + 收紧星标与数字间距，并隐掉两处「次」（完整文案仍在 title 里） */
  .cate-cy .tool-foot{margin-top:9px;padding:8px 0 9px;gap:4px;flex-wrap:nowrap}
  .cate-cy .tool-tag{display:none}
  .cate-cy .tool-fav{height:20px;padding:0 4px 0 3px;margin:-3px 0 -3px -3px;gap:0}
  .cate-cy .tool-fav .fav-num{margin-left:1px;padding-left:0}
  /* 次数整体右对齐并允许收缩，任何宽度下都不会把收藏挤到另一行 */
  .cate-cy .tool-hits{flex:1 1 auto;min-width:0;text-align:right}
  /* 紧凑卡里省掉「次」后缀（昨日 26/总 1.2k），省出约 24px 让单行稳过 144px 临界 */
  .cate-cy .tool-hits .u{display:none}
  .cate-cy .fav-ico,.cate-cy .fav-ico svg{width:12px;height:12px}

  /* ===== 榕晟小站：按原站 12 个一级标题分类（默认只露前 3 组） ===== */
  /* 每组最多露 3 行（86×3 + gap12×2 + padding24 = 306），与 CY 一致；
     但每组工具数 2~7 不等，用 max-height 而不是定高：满 3 行才卡内滚动，不足 3 行按内容收紧，
     否则只有 2 个工具的分类底部会空出两行 */
  .cate-cy[data-cate="rongsheng"] .cy-body{
    height:auto;min-height:0;max-height:306px;
    overflow-y:auto;align-content:start;
    padding:12px;scrollbar-gutter:auto;
  }
  /* 真的溢出时才给常驻滚动条让位（右 padding 12→6，视觉左右仍均 12），没溢出的组不吃 6px 亏 */
  .cate-cy[data-cate="rongsheng"] .cy-body.is-over{
    padding-right:6px;scrollbar-gutter:stable;
  }
  /* 各组工具数不同（2~7 个），卡高按内容走、同行顶部对齐，
     不再被最高的那张（7 个工具）拉齐——否则只有 2 个工具的卡底部会空出一大块 */
  .cate-cy[data-cate="rongsheng"] .cy-wrap{align-items:start}
  /* 列数与「CY的工具」对齐：>1280 三组并排（1600 级笔电每组 ≈416，组内两列标题有 158px，够用），
     1280 以下收两列，900 以下单列 */
  @media (max-width:1280px){
    .cate-cy[data-cate="rongsheng"] .cy-wrap{grid-template-columns:repeat(2,1fr)}
  }
  .cate-cy[data-cate="rongsheng"] .cy-group.is-fold{display:none}
  .cate-cy[data-cate="rongsheng"].is-open .cy-group.is-fold,
  .cate-cy[data-cate="rongsheng"].is-searching .cy-group.is-fold{display:flex}
  /* 搜索结果按实际行数收缩，各分组不再被同排最高项拉伸。 */
  .cate-cy.is-searching .cy-wrap{align-items:start}
  .cate-cy.is-searching .cy-body{height:auto;min-height:0;max-height:none}
  /* 展开横条：与各分区「还有 N 项」提示条同一套淡绿虚线视觉（数字用绿色胶囊） */
  .rs-more{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;height:46px;margin-top:18px;padding:0;
    border:1px dashed rgba(46,158,99,.50);border-radius:12px;cursor:pointer;
    font-family:inherit;font-size:14px;font-weight:600;letter-spacing:.2px;
    color:#14724a;background:rgba(46,158,99,.09);
    transition:background .18s,border-color .18s,color .18s;
  }
  .rs-more:hover{background:rgba(46,158,99,.16);border-color:#2e9e63;color:#0f6b42}
  .rs-more b{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:20px;height:20px;padding:0 6px;margin:0 3px;border-radius:999px;
    background:#2e9e63;color:#fff;font-weight:700;font-size:12px;
  }
  .rs-more svg{width:15px;height:15px;flex:none;transition:transform .25s}
  .rs-more.is-open svg{transform:rotate(180deg)}
  .rs-more[hidden]{display:none}

  /* 分区「还有 N 项」展开提示 */
  .more-bar{
    display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
    margin-top:18px;height:46px;border-radius:12px;cursor:pointer;
    font-family:inherit;font-size:14px;font-weight:600;letter-spacing:.2px;
    color:#14724a;background:rgba(46,158,99,.09);
    border:1px dashed rgba(46,158,99,.50);
    transition:background .18s,border-color .18s,color .18s;
  }
  .more-bar:hover{background:rgba(46,158,99,.16);border-color:#2e9e63;color:#0f6b42}
  .more-bar b{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:20px;height:20px;padding:0 6px;margin:0 3px;border-radius:999px;
    background:#2e9e63;color:#fff;font-weight:700;font-size:12px;
  }
  .more-bar svg{width:15px;height:15px;flex:none;transition:transform .25s}
  .cate.is-expanded .more-bar svg{transform:rotate(180deg)}

  /* ===== 排序控件（独立一行，位于工具推荐下方、尚云工具箱版块上方） ===== */
  .sort-bar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:0 0 22px;padding:11px 14px;background:#f3f9f6;border:1px solid rgba(15,60,45,.08);border-radius:12px}
  .sort-label{font-size:13px;color:#1f3a30;font-weight:600;margin-right:2px;letter-spacing:.3px}
  .sort-opt{
    display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 14px 0 12px;
    border:1px solid rgba(15,60,45,.18);border-radius:9px;background:#fff;
    font-family:inherit;font-size:14px;color:#3f4f48;cursor:pointer;
    transition:border-color .18s,background .18s,color .18s,box-shadow .18s;
  }
  .sort-opt:hover{border-color:rgba(46,158,99,.5);color:#1d7a4f;background:#fbfdfc}
  .sort-box{
    position:relative;flex:none;width:16px;height:16px;border-radius:4px;
    border:1.5px solid #9fb2a8;background:#fff;
    transition:background .16s,border-color .16s;
  }
  .sort-box::after{
    content:'';position:absolute;left:5px;top:1px;width:4px;height:8px;
    border:solid #fff;border-width:0 1.6px 1.6px 0;
    transform:rotate(45deg) scale(0);transform-origin:center;
    transition:transform .16s ease;
  }
  .sort-opt.is-on{border-color:#2e9e63;background:rgba(46,158,99,.10);color:#14724a;font-weight:600;box-shadow:0 1px 4px rgba(46,158,99,.14)}
  .sort-opt.is-on .sort-box{background:#2e9e63;border-color:#2e9e63}
  .sort-opt.is-on .sort-box::after{transform:rotate(45deg) scale(1)}

  /* ===== 工具推荐（收藏 + 热门榜） ===== */
  .rec{
    position:relative;background:#fff;border:1px solid rgba(15,60,45,.08);
    border-radius:16px;padding:20px 22px 14px;margin-bottom:34px;overflow:hidden;
    box-shadow:0 2px 10px rgba(20,80,55,.05);
    background-image:radial-gradient(130% 150% at 0% 0%,rgba(46,158,99,.06),transparent 62%);
  }
  .rec-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
  .rec-badge{
    flex:none;width:26px;height:26px;border-radius:8px;
    display:flex;align-items:center;justify-content:center;
    background:linear-gradient(135deg,#2e9e63,#009688);color:#fff;
    box-shadow:0 3px 8px rgba(46,158,99,.28);
  }
  .rec-badge svg{width:15px;height:15px;display:block}
  .rec-title{font-size:16px;font-weight:600;color:#12352a;letter-spacing:.5px}
  .rec-hint{font-size:12px;color:#9aa8a1;margin-left:2px}
  .rec-cols{display:grid;grid-template-columns:1fr 1fr}
  .rec-col{display:flex;flex-direction:column;min-width:0;padding-right:16px}
  .rec-col + .rec-col{padding-right:0;padding-left:16px;border-left:1px solid rgba(15,60,45,.08)}
  .rec-colhead{display:flex;align-items:center;justify-content:space-between;gap:10px;height:28px;margin-bottom:6px}
  .rec-name{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:600;color:#1f2933}
  .rec-name i{width:5px;height:5px;border-radius:50%;background:#2e9e63;flex:none}
  .rec-cnt{font-size:12px;color:#9aa8a1;white-space:nowrap}
  .rec-tabs{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:8px;background:rgba(15,60,45,.06)}
  .rec-tab{
    border:none;background:none;cursor:pointer;font-family:inherit;
    font-size:12px;line-height:1;color:#6b7a72;padding:6px 10px;border-radius:6px;
    white-space:nowrap;transition:background .18s,color .18s,box-shadow .18s;
  }
  .rec-tab:hover{color:#1d7a4f}
  .rec-tab.is-on{background:#fff;color:#14724a;font-weight:600;box-shadow:0 1px 3px rgba(20,80,55,.14)}
  /* 列表区：列数由可用宽度自动决定（auto-fill，每列最小 220），不再写死断点：
     1440 两栏并排时每栏≈534 → 2 列；1920 每栏≈774 → 3 列；2K 每栏≈1084 → 4 列；
     ≤1080 改上下堆叠、每栏占满 → 3 列；再窄到 ~760 回落 2 列，手机单列。
     高度固定 180 = 恰好 4 整行（42 × 4 + 行距 4 × 3），超出卡内上下滑动。
     行高/行距比早期（50 / 6）更紧，一屏多露一行且卡片总高不变（≈274）。
     ⚠️ 高度必须是整行值（42×N + 4×(N-1)），非整行会把末行裁半截、
     那半张卡看起来比同行高矮不一；要加高就按整行值往上加。
     行距取 4px 是为了给收藏条目的描边留缝，避免上下两张卡的边框贴成一条线 */
  .rec-list{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
    gap:4px;align-content:start;
    height:180px;overflow-y:auto;overscroll-behavior:contain;
    scrollbar-gutter:stable;
  }
  .rec-list::-webkit-scrollbar{width:4px}
  .rec-list::-webkit-scrollbar-track{background:transparent}
  .rec-list::-webkit-scrollbar-thumb{background:rgba(15,60,45,.12);border-radius:999px}
  .rec-list::-webkit-scrollbar-thumb:hover{background:rgba(15,60,45,.24)}
  @supports (-moz-appearance:none){.rec-list{scrollbar-width:thin;scrollbar-color:rgba(15,60,45,.12) transparent}}
  .rec-item{
    display:flex;align-items:center;gap:8px;height:42px;
    padding:4px 8px;border-radius:10px;text-decoration:none;min-width:0;
    border:1px solid transparent;
    transition:background .16s,border-color .16s,box-shadow .16s;
  }
  .rec-item:hover{background:rgba(46,158,99,.075)}
  /* 收藏条目：白底 + 品牌绿淡描边，像一张已收纳的小卡；热榜条目保持无边框的榜单行 */
  .rec-item.is-fav{
    background:#fff;border-color:rgba(46,158,99,.22);
    box-shadow:0 1px 2px rgba(20,80,55,.04);
  }
  .rec-item.is-fav:hover{
    background:rgba(46,158,99,.05);border-color:rgba(46,158,99,.44);
    box-shadow:0 3px 9px rgba(20,80,55,.10);
  }
  .rec-rank{
    flex:none;width:16px;text-align:center;font-size:12px;font-weight:600;color:#bcc8c2;
    font-variant-numeric:tabular-nums;
  }
  .rec-rank.r1{color:#d9891a}
  .rec-rank.r2{color:#8ea3b0}
  .rec-rank.r3{color:#bf7a45}
  .rec-ico{
    flex:none;width:30px;height:30px;border-radius:8px;
    display:flex;align-items:center;justify-content:center;font-size:15px;color:#fff;
    background:linear-gradient(135deg,var(--c1,#2e9e63),var(--c2,#3fb374));
    overflow:hidden;
  }
  .rec-ico img{width:21px;height:21px;max-width:21px;max-height:21px;object-fit:contain;display:block}
  .rec-ico svg{width:18px;height:18px;display:block}
  .rec-ico[data-c="shangyun"]{box-shadow:none}
  .rec-ico[data-c="zhishu"]{background:#0e7263;box-shadow:none}
  .rec-ico[data-c="zhishu"].is-soft{background:#eff6ff;color:#2563eb}
  .rec-ico[data-c="zhishu"] svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .rec-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
  .rec-t{
    font-size:14px;color:#1f2933;line-height:1.35;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .rec-item:hover .rec-t{color:#1d7a4f}
  .rec-m{
    font-size:12px;color:#9aa8a1;line-height:1.3;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .rec-val{flex:none;font-size:12px;color:#9aa8a1;white-space:nowrap;margin-left:4px}
  .rec-val b{color:#1d7a4f;font-weight:600}
  /* 一行两个：宽度减半，先舍副标题与数值前缀，把宽度让给标题 */
  .rec-m{display:none}
  .rec-val .pre,.rec-val .suf.fav{display:none}
  /* 收藏条目行尾：金色实心星（点击即取消收藏，只摘收藏、不跳转） */
  .rec-rm{
    flex:none;display:inline-flex;align-items:center;justify-content:center;
    width:24px;height:24px;margin-left:0;border-radius:7px;cursor:pointer;
    color:#e0a020;opacity:.62;
    transition:opacity .16s,background .16s,color .16s;
  }
  .rec-rm svg{width:16px;height:16px;flex:none;display:block}
  .rec-rm svg path{fill:currentColor}
  .rec-item.is-fav:hover .rec-rm{opacity:1;background:rgba(224,160,32,.12)}
  /* 同权重但写在后面，指针落在星标上时覆盖卡片悬停态 */
  .rec-item.is-fav .rec-rm:hover{opacity:1;color:#c2410c;background:rgba(194,65,12,.10)}
  .rec-rm:focus-visible{outline:2px solid rgba(46,158,99,.5);outline-offset:2px}
  /* 空态：跨全部列并撑满列表（与列表同为 180）；虚线框圆角余量由空态框自身缩进 14px 让出 */
  .rec-list:has(> .rec-empty){grid-template-rows:1fr;height:180px}
  .rec-empty{
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
    grid-column:1 / -1;height:calc(100% - 14px);min-height:0;padding:16px;border-radius:10px;text-align:center;line-height:1.7;
    border:1px dashed rgba(15,60,45,.14);background:rgba(46,158,99,.03);
    font-size:14px;color:#9aa8a1;
  }
  .rec-empty .ico{font-size:20px;color:#c3d0c9;line-height:1}
  .rec-empty .ico svg{width:22px;height:22px;display:block}
  .rec-empty .ico path{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
  .rec-empty b{color:#1d7a4f;font-weight:500}
  .rec-guest{gap:14px}
  .rec-guest p{margin:0;line-height:1.7;color:#8a9992}
  .rec-login{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:88px;height:34px;padding:0 22px;border:0;border-radius:7px;
    background:#1d7a4f;color:#fff;font:inherit;line-height:1;cursor:pointer;
    transition:background .16s,box-shadow .16s;
  }
  .rec-login:hover{background:#176840;box-shadow:0 3px 10px rgba(29,122,79,.16)}
  .rec-login:focus-visible{outline:2px solid rgba(46,158,99,.55);outline-offset:3px}

  /* 轻提示 */
  .toast{
    position:fixed;left:50%;bottom:40px;z-index:999;
    padding:10px 18px;border-radius:10px;
    background:rgba(18,53,42,.92);color:#fff;font-size:14px;line-height:1;
    box-shadow:0 10px 26px rgba(0,0,0,.20);
    opacity:0;transform:translate(-50%,12px);pointer-events:none;
    transition:opacity .22s,transform .22s;
  }
  .toast.show{opacity:1;transform:translate(-50%,0)}

  /* ===== 页脚说明 ===== */
  .site-foot{
    flex:0 0 calc(100% - 288px);margin:30px 0 0 288px;padding:16px 30px 14px;
    /* 左缘对齐上方内容列（侧栏 260 + 列间距 28 = 288），仍是 main 的折行子项以撑住吸顶容器 */
    background:linear-gradient(180deg,#f8fbf9,#edf4f0);
    border:1px solid rgba(15,60,45,.08);border-radius:14px;
    box-shadow:0 1px 4px rgba(20,80,55,.05);
  }
  .foot-inner{display:flex;align-items:center;gap:32px;max-width:1440px;margin:0 auto}
  .foot-main{flex:1;min-width:0;font-size:14px;color:#5c6b64;line-height:1.9}
  .foot-main p{margin:0}
  .foot-url{font-weight:600}
  .foot-desc b{color:#1d7a4f;font-weight:600}
  .foot-contact{margin-top:2px}
  .foot-contact .tel{color:#5c6b64;font-weight:600;letter-spacing:.3px}
  .foot-qr{
    flex:none;display:flex;align-items:center;gap:28px;
  }
  .foot-qr-item{display:flex;align-items:center;gap:14px}
  .foot-qr img{width:82px;height:82px;display:block;border-radius:6px;background:#fff}
  .foot-qr .qr-txt{font-size:12px;color:#8a9992;line-height:1.7;max-width:120px}
  .foot-qr .qr-txt b{display:block;font-size:14px;color:#1f2933;font-weight:600;margin-bottom:2px}
  .foot-copy{
    max-width:1440px;margin:10px auto 0;padding-top:8px;
    border-top:1px dashed rgba(15,60,45,.10);
    font-size:12px;color:#9aa8a1;text-align:center;line-height:1.8;
  }
  @media (max-width:900px){
    .site-foot{flex:0 0 auto;padding:20px 18px 18px;margin:10px 0 0}
    .foot-inner{flex-direction:column;align-items:flex-start;gap:16px;padding-left:0}
    .foot-qr{align-self:stretch;flex-wrap:wrap;gap:18px}
    .foot-qr-item{flex:1 1 auto}
    .foot-qr .qr-txt{max-width:none}
  }

  /* ===== 回到顶部 ===== */
  .to-top{
    position:fixed;right:22px;bottom:28px;z-index:900;
    width:36px;height:36px;padding:0;border:1px solid rgba(15,60,45,.12);border-radius:10px;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.92);color:#1d7a4f;
    box-shadow:0 2px 8px rgba(20,80,55,.10);
    opacity:0;visibility:hidden;transform:translateY(10px) scale(.94);
    transition:opacity .24s ease,transform .24s cubic-bezier(.4,0,.2,1),
               visibility .24s,box-shadow .2s,filter .2s;
  }
  .to-top svg{width:16px;height:16px;display:block}
  .to-top.is-show{opacity:1;visibility:visible;transform:none}
  .to-top:hover{background:#fff;border-color:rgba(46,158,99,.45);box-shadow:0 4px 12px rgba(20,80,55,.16)}
  .to-top:active{transform:translateY(1px)}
  .to-top:focus-visible{outline:2px solid rgba(46,158,99,.55);outline-offset:3px}

  /* 推荐区：窄屏两列改上下；列表列数交给 auto-fill 自行换算（此档每栏占满，约 3 列） */
  @media (max-width:1080px){
    .rec-cols{grid-template-columns:1fr}
    .rec-col{padding-right:0}
    .rec-col + .rec-col{
      padding-left:0;border-left:none;
      border-top:1px solid rgba(15,60,45,.08);margin-top:14px;padding-top:14px;
    }
  }

  /* CY 聚合卡：窄屏三组改单列 */
  @media (max-width:1280px){
    .cate-cy .cy-wrap{grid-template-columns:1fr}
  }
  /* CY 聚合卡：手机端不再卡内滚动（嵌两层滚动难操作），恢复整页展开 */
  @media (max-width:900px){
    .cate-cy .cy-body{height:auto;min-height:0;max-height:none;overflow:visible;padding:12px;scrollbar-gutter:auto}
    .cate-cy .tool-card{height:auto}   /* 单列时不再留固定行高，同行仍等高 */
    /* 触屏没有 hover，标题恢复换行，长名字也能看全 */
    .cate-cy .tool-title{height:auto;white-space:normal;text-overflow:clip}
    .cate-cy .cy-more{display:none!important}
    /* 榕晟：来源里最长的分类名 15 字，窄屏缩小字号与内边距，避免卡头挤爆 */
    .cate-cy[data-cate="rongsheng"] .cy-head{padding:12px 10px;gap:8px}
    .cate-cy[data-cate="rongsheng"] .cy-head .cy-name{font-size:14px;letter-spacing:.2px}
    .cate-cy[data-cate="rongsheng"] .cy-head .cy-ico{font-size:16px}
    .cate-cy[data-cate="rongsheng"] .cy-head .cy-cnt{padding:2px 8px}
    /* 榕晟的选择器比上面那条更具体，得单独放开 max-height（手机端同样整页展开） */
    .cate-cy[data-cate="rongsheng"] .cy-body,
    .cate-cy[data-cate="rongsheng"] .cy-body.is-over{
      max-height:none;overflow:visible;padding:12px;scrollbar-gutter:auto;
    }
    /* 同上：≤1280 的两列规则特异性更高，手机端要单独压回单列 */
    .cate-cy[data-cate="rongsheng"] .cy-wrap{grid-template-columns:1fr}
  }
  /* 手机竖屏：榕晟组内与 CY 一致，保持两列紧凑工具卡。 */
  @media (max-width:520px){
    .cate-cy[data-cate="rongsheng"] .cy-body{grid-template-columns:repeat(2,minmax(0,1fr))}
  }

  /* 搜索无结果 */
  .empty{
    display:none;text-align:center;padding:70px 0 30px;color:#8a9992;
  }
  .empty.show{display:block}
  .empty-ico{font-size:44px;margin-bottom:14px}
  .empty p{font-size:14px;line-height:1.8}
  .empty b{color:#1d7a4f}

  /* 手机 / 竖屏平板：侧边栏整行铺满，内容区单列铺满屏宽 */
  @media (max-width:900px){
    .main{padding-left:16px;padding-right:16px}
    .main{
      flex-direction:column;align-items:stretch;gap:16px;padding-top:22px;
    }
    .main > *{width:100%;min-width:0}

    /* 侧边栏：占满一行，列表样式与网页端保持一致 */
    .side{position:static;width:100%;max-height:none;overflow:visible;display:block;scrollbar-gutter:auto}
    .side-card{padding:12px}
    .side-title{font-size:14px}
    .side-total{margin:4px 0 8px}
    .side-nav,.side-group,.side-item,.side-sub{width:100%}

    /* 侧栏下部区块：挪到工具列表后整行铺满，卡片单列通栏 */
    .side-extra{display:flex;flex-direction:column;gap:10px}
    .post-list{
      display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:column;
      grid-template-rows:repeat(5,auto);column-gap:20px;
    }
    /* grid 子项默认 min-width:auto 会被 nowrap 标题撑开，导致整页横向溢出 */
    .post-list > .post-item{min-width:0}
    .post-item + .post-item{border-top:none}

    .tools-col,.cate,.grid,.tool-card{width:100%}
    .grid{grid-template-columns:1fr}
    .cate{margin-bottom:30px}
    /* 横幅上方的 20px 不变：窄屏版块间距收到 30，抵消量同步改成 -10 */
    .cate:has(> .cate-ad){margin-top:-10px}

    /* 推荐区 / 排序：窄屏收紧 */
    .rec{padding:16px 15px 14px;border-radius:14px;margin-bottom:26px}
    .rec-head{flex-wrap:wrap;gap:8px;margin-bottom:10px}
    .rec-hint{display:none}
    .rec-colhead{height:auto;margin-bottom:6px;flex-wrap:wrap;gap:6px}
    .sort-bar{flex-wrap:wrap;width:100%;gap:6px;margin:0 0 16px;justify-content:flex-start}
    .sort-opt{height:30px;padding:0 8px 0 7px;font-size:12px;gap:6px}

    /* 分类标题：允许换行，标题本身不断字 */
    .cate-head{flex-wrap:wrap;gap:6px 10px;margin-bottom:14px}
    .cate-title{font-size:18px;white-space:nowrap}
    .cate-title::before{height:16px}
    .cate-count{font-size:12px}
    .src-pill,.cate-act{height:22px;padding:0 9px;font-size:12px}
    .act-home{padding:0 8px 0 2px;gap:5px}
    .act-home img{width:16px;height:16px}
    .act-home .act-name{max-width:104px}
    .cate-acts{gap:6px;margin-left:0;flex-wrap:wrap}
    .cate-act{gap:4px}
    .cate-act svg{width:12px;height:12px}

    .tool-card{padding:16px 16px 0;border-radius:12px;column-gap:12px}
    .tool-foot{margin-top:12px;padding:10px 0 12px;gap:10px}
    .more-bar{height:42px;font-size:14px;margin-top:14px}
    .tool-ico{width:44px;height:44px;border-radius:10px;font-size:22px}
    .tool-title{font-size:16px}
    .tool-desc{font-size:12px}
  }

  @media (max-width:720px){
    .hero{padding:22px 16px 20px}
    .hero-head{gap:6px 8px;margin-bottom:8px}
    .hero h1{font-size:24px;letter-spacing:1px}
    .hero-desc{font-size:14px;margin-bottom:14px;line-height:1.75}
    .hero-eyebrow{padding:4px 10px;letter-spacing:.5px}
    .search-box input{height:44px;font-size:14px;padding:0 44px 0 42px}
    .search-box svg{left:16px}
    .grid{gap:12px}

    /* 打赏弹窗 */
    .tip-mask{padding:16px}
    .tip-modal{padding:24px 20px 20px;border-radius:18px}
    .tip-amts{grid-template-columns:repeat(2,1fr);gap:8px}
    .tip-amt{height:46px}

    /* 回到顶部：手机上缩小并贴近右下角 */
    .to-top{width:32px;height:32px;border-radius:9px;right:14px;bottom:18px}
    .to-top svg{width:15px;height:15px}
  }

  /* 手机竖屏：社区帖子回单列 */
  @media (max-width:600px){
    .post-list{display:block}
    .post-item + .post-item{border-top:1px solid rgba(15,60,45,.05)}
    .post-item .post-t{white-space:nowrap}

    /* 活动横幅：12:1 原图整宽只有约 30px 高、字糊，手机改为定高裁切，靠左保住主标题 */
    .cate-ad{height:56px;border-radius:12px}
    .cate-ad img{height:100%;object-fit:cover;object-position:left center}

    /* 推荐面板：单列堆叠后收紧留白、放大触摸区 */
    .rec{padding:14px 12px 14px}
    .rec-title{font-size:15px}
    .rec-colhead{height:auto;margin-bottom:8px}
    .rec-col + .rec-col{margin-top:16px;padding-top:16px}
    .rec-tab{padding:7px 12px;min-height:28px}
    /* 手机单列恢复副标题（标题 + 副标题 ≈37px），42 高装不下，回 48；
       列表同步取 3 整行（48×3 + 行距 4×2 = 152），空态一并跟上 */
    .rec-item{height:48px;padding:4px 8px;gap:9px}
    .rec-list,.rec-list:has(> .rec-empty){height:152px}
    /* 手机窄屏：列数交给 auto-fill（≤450 自然落成单列），副标题与数值前缀一并恢复 */
    .rec-m{display:block}
    .rec-val .pre,.rec-val .suf.fav{display:inline}
    .rec-empty{padding:14px}
  }

/* Host header is supplied by the existing authenticated navigation. */
.toolbox-page .hero{clear:both}
/* 1200 × 100：各屏幕均完整展示，容器和图片使用相同的 12:1 比例。 */
#toolBanner{width:100%;aspect-ratio:12/1;margin:0 0 20px;border-radius:14px;overflow:hidden;background:#eef4ff;box-shadow:0 1px 4px rgba(20,80,55,.04)}
#toolBanner img{display:block;width:100%;height:auto}
#toolBanner[hidden]{display:none!important}
@media (max-width:600px){
  #toolBanner{border-radius:12px}
}
.tool-fav[aria-busy="true"]{opacity:.5;pointer-events:none}
.post-error{padding:16px;color:#8a9992;font-size:13px}
.post-error button{margin-top:8px;color:#14724a;cursor:pointer;border:0;background:transparent}
