/* CAD 在线预览 */
.cad-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:10px 0 2px}
.cad-title{font-size:21px;font-weight:800;line-height:1.35;margin:0;color:#24243a}
.cad-sub{font-size:12.5px;color:#8a8aa3;margin-top:5px}
.cad-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.cad-wrap{position:relative;display:flex;flex-direction:column;height:74vh;min-height:440px;background:#f5f6fa;border:1px solid #2a2d36;border-radius:16px;overflow:hidden;box-shadow:0 12px 40px rgba(70,70,130,.08);margin:14px 0 18px}
.cad-bar{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid #eef0f6;background:#fbfbfe;flex-wrap:wrap}
.cad-pages{display:flex;gap:6px;overflow:auto;min-width:0;flex:1;scrollbar-width:thin}
.cad-pages button{border:1px solid #e3e3f0;background:#fff;color:#555;border-radius:8px;padding:6px 10px;font-size:12.5px;cursor:pointer;white-space:nowrap}
.cad-pages button.on{border-color:#7b5cff;background:#f1edff;color:#5b4be8;font-weight:700}
.cad-tools{display:flex;gap:5px;flex-shrink:0}
.cad-tools button{border:1px solid #e3e3f0;background:#fff;color:#4c4c66;border-radius:8px;min-width:34px;height:32px;padding:0 9px;font-size:13px;cursor:pointer}
.cad-tools button:hover{border-color:#b9aaff;color:#5b4be8}
.cad-stage{position:relative;flex:1;overflow:hidden;background:#fff;cursor:grab;touch-action:none;user-select:none}
.cad-stage.dragging{cursor:grabbing}
.cad-layer{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;background:#fff}
.cad-layer img{position:absolute;width:256px;height:256px;display:block;pointer-events:none;user-select:none;-webkit-user-drag:none;filter:invert(1) hue-rotate(180deg)}
.cad-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:8;background:rgba(30,30,45,.78);color:#fff;border-radius:10px;padding:10px 16px;font-size:13px;pointer-events:none}
.cad-hint.hide{display:none}
.cad-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 12px;border-top:1px solid #eef0f6;background:#fbfbfe;color:#8a8aa3;font-size:12px;flex-wrap:wrap}
.cad-buy-tip{margin:0 0 28px;padding:14px 18px;border:1px solid #ffd9e2;background:#fff6f8;color:#8a3f52;border-radius:12px;font-size:13.5px}
.cad-buy-tip a{color:#e2374c;font-weight:700;margin-left:6px}
.cad-body-embed .cad-wrap{height:100%;min-height:0;margin:0;border:0;border-radius:0;box-shadow:none}
.cad-body-embed .cad-head,.cad-body-embed .cad-buy-tip{display:none}
.cad-wrap:fullscreen{border-radius:0;height:100vh;margin:0}
.cad-wrap:fullscreen .cad-stage{background:#fff}
@media (max-width:640px){
  .cad-wrap{height:66vh;min-height:320px;border-radius:12px}
  .cad-title{font-size:17px}
  .cad-bar{padding:7px}
  .cad-tools button{min-width:31px;height:30px;padding:0 7px}
  .cad-foot span:last-child{display:none}
}
/* 详情页内嵌预览 */
.cad-detail-panel{padding:0;overflow:hidden;margin:0 0 18px}
.cad-detail-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid #eef0f6;background:#fbfbfe;flex-wrap:wrap}
.cad-detail-hd b{font-size:14.5px;color:#2b2b45}
.cad-detail-hd .muted{margin-left:8px}
/* 预览区标题里的渐变小图标。
   优先级要压过 .cad-detail-hd b（0,1,1），这里用 .cad-detail-hd .fj-ic-title（0,2,0） */
.cad-detail-hd .fj-ic-title{display:inline-flex;align-items:center;gap:7px;color:var(--pri)}
.cad-detail-hd .fj-ic-title .fj-ic{display:block;flex:none;filter:drop-shadow(0 2px 5px rgba(91,75,232,.28))}
.cad-detail-frame{display:block;width:100%;height:560px;border:0;background:#fff}
.cad-detail-tip{padding:9px 16px;border-top:1px solid #eef0f6;font-size:12px;color:#8a8aa3;background:#fbfbfe}
.cad-detail-wait{padding:40px 18px;text-align:center;color:#8a8aa3;font-size:13.5px}
@media (max-width:640px){.cad-detail-frame{height:420px}}
/* ---- 轻量矢量预览（本地预转 SVG + svg-pan-zoom） ---- */
.fj-light-wrap{position:relative;width:100%;height:560px;background:#fff;overflow:hidden}
.fj-light-bar{position:absolute;top:10px;right:10px;z-index:3;display:flex;gap:6px;flex-wrap:wrap}
.fj-light-bar button{width:34px;height:34px;border:1px solid #e3e6f0;border-radius:8px;background:rgba(255,255,255,.94);color:#333;font-size:15px;line-height:1;cursor:pointer;box-shadow:0 2px 8px rgba(20,30,60,.08)}
.fj-light-bar button:hover{background:#f0f3ff;border-color:#b9c4ef}
.fj-light-bar button.wide{width:auto;padding:0 10px;font-size:12px}
#fjCadStage{width:100%;height:100%}
#fjCadStage svg{display:block;width:100%;height:100%}
#fjCadMsg{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;align-items:center;justify-content:center;padding:20px;text-align:center;font-size:13px;color:#8a8aa3;background:#fff;z-index:2}
.fj-light-bar~#fjCadMsg{background:transparent}
/* 深色画布：白底黑线反相为黑底浅线，hue-rotate 保留彩色标注色相 */
.fj-light-wrap.is-dark{background:#0b0f14}
.fj-light-wrap.is-dark #fjCadStage svg{filter:invert(1) hue-rotate(180deg)}
.fj-light-wrap.is-dark #fjCadMsg{background:transparent;color:#9aa4bd}
.fj-light-wrap.is-dark .fj-light-bar button{background:rgba(24,30,44,.88);color:#e6ebf7;border-color:#39415a;box-shadow:0 2px 10px rgba(0,0,0,.35)}
.fj-light-wrap.is-dark .fj-light-bar button:hover{background:#222c44;border-color:#5a6a95}
@media (max-width:640px){.fj-light-wrap{height:420px}}
/* 位图预览（超大 SVG 的降级产物）：容器高度自适应，避免上下露出深色空条 */
.fj-light-wrap.is-img{height:auto;min-height:240px;background:#fff}
.fj-light-wrap.is-img #fjCadStage{height:auto;min-height:240px;background:#fff}
.fj-light-wrap.is-img #fjCadStage img{width:100%;height:auto;max-height:none;margin:0;display:block}
/* 矢量 PDF 预览：交给浏览器原生阅读器 */
.fj-light-wrap.is-pdf{height:auto;min-height:560px;background:#fff}
.fj-light-wrap.is-pdf #fjCadStage{height:auto;background:#fff}
.fj-light-wrap.is-pdf .fj-pdf-frame{display:block;width:100%;height:640px;border:0;background:#fff}



/* ==================== PDF 阅读器 ==================== */
/* 容器高度自适应：至少完整显示 1 页，页面更高时内部出滚动条 */
.fj-pdf-wrap{position:relative;width:100%;min-height:560px;background:#eef1f7;border:1px solid #e3e6f0;border-radius:10px;overflow:hidden}
.fj-pdf-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;background:#fff;border-bottom:1px solid #e8ebf3}
.fj-pdf-bar button{height:30px;min-width:32px;padding:0 8px;border:1px solid #e3e6f0;border-radius:7px;background:#fff;color:#333;font-size:13px;line-height:1;cursor:pointer}
.fj-pdf-bar button:hover:not(:disabled){background:#f0f3ff;border-color:#b9c4ef}
.fj-pdf-bar button:disabled{opacity:.4;cursor:default}
.fj-pdf-bar .fj-pdf-page{color:#6b7280;font-size:13px;min-width:64px;text-align:center}
.fj-pdf-bar .fj-pdf-hint{margin-left:auto;color:#9aa4bd;font-size:12px}
/* 画布区：高度锁定在一屏内（预览区不超出视口，底部的购买提示才看得见）。
   页面内容比可视区高时在这个容器内部连续滚动。 */
.fj-pdf-stage{position:relative;height:calc(100vh - 250px);min-height:400px;max-height:1400px;overflow:auto;background:#eef1f7;padding:12px}
/* 连续文档流：所有页纵向堆叠，滚轮就是原生连续滚动 */
.fj-pdf-pages{position:relative;margin:0 auto}
.fj-pdf-sheet{position:absolute;left:0;top:0}
.fj-pdf-sheet canvas{display:block;background:#fff;box-shadow:0 2px 14px rgba(20,30,60,.13);border-radius:2px}
#fjPdfMsg{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;align-items:center;justify-content:center;padding:20px;text-align:center;font-size:13px;color:#8a8aa3;background:#eef1f7;z-index:2}
.fj-pdf-bar~#fjPdfMsg{background:transparent}
/* 未购买用户滚到底时浮出的购买提示。
   这两个浮层放在滚动容器 fj-pdf-stage 之外，定位相对 .fj-pdf-wrap（position:relative），
   用绝对定位贴在预览区底部：既能一直浮在可视区（留在 stage 内会被内容甩走），
   又不占 stage 的文档流高度 —— 显示/隐藏若改变了 scrollHeight，
   「是否滚到底」的判定就会反复翻转，页面跟着跳动。 */
.fj-pdf-lock{position:absolute;left:0;right:0;bottom:0;z-index:4;padding:26px 16px;text-align:center;background:linear-gradient(180deg,rgba(238,241,247,0) 0%,rgba(238,241,247,.96) 42%)}
.fj-pdf-lock .fj-pdf-lock-box{display:inline-block;background:#fff;border:1px solid #e3e6f0;border-radius:12px;padding:16px 22px;box-shadow:0 6px 22px rgba(20,30,60,.12);max-width:420px}
.fj-pdf-lock .t{font-size:15px;font-weight:700;color:#1f2437;margin-bottom:4px}
.fj-pdf-lock .s{font-size:12px;color:#8a8aa3;margin-bottom:12px}
@media (max-width:640px){.fj-pdf-wrap{min-height:420px}.fj-pdf-stage{height:calc(100vh - 190px);min-height:300px;max-height:900px;padding:8px}.fj-pdf-bar .fj-pdf-hint{display:none}}
/* 未购买用户的轻量提示条（显示在 PDF 预览区底部，翻到最后一页时换成完整购买卡片） */
.fj-pdf-lockbar{position:absolute;left:0;right:0;bottom:0;z-index:3;display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;padding:10px 14px;background:linear-gradient(180deg,rgba(238,241,247,0) 0%,rgba(238,241,247,.92) 46%);font-size:13px;color:#5b6478}
.fj-pdf-lockbar .btn{flex:none}
@media (max-width:640px){.fj-pdf-lockbar{font-size:12px;gap:8px;padding:8px 10px}}

/* ==================== Office 文档预览 ==================== */
.fj-doc-tabs{display:flex;gap:6px;padding:8px 14px;border-bottom:1px solid #eee;background:#fafbfe;flex-wrap:wrap}
.fj-doc-tabs button{height:28px;padding:0 14px;border:1px solid #e3e6f0;border-radius:15px;background:#fff;color:#555;font-size:13px;cursor:pointer}
.fj-doc-tabs button:hover{border-color:#b9c4ef;color:#3b5bdb}
.fj-doc-tabs button.on{background:#3b5bdb;border-color:#3b5bdb;color:#fff}
.fj-doc-pane{display:none}
.fj-doc-pane.on{display:block}
.fj-doc-table-wrap{position:relative}
.fj-doc-sheetbar{display:flex;gap:6px;padding:10px 14px 0;flex-wrap:wrap}
.fj-doc-sheetbar button{height:26px;padding:0 12px;border:1px solid #e3e6f0;border-radius:6px;background:#fff;color:#555;font-size:12px;cursor:pointer}
.fj-doc-sheetbar button:hover{border-color:#b9c4ef;color:#3b5bdb}
.fj-doc-sheetbar button.on{background:#eef1ff;border-color:#b9c4ef;color:#3b5bdb;font-weight:600}
/* 表格区：高度自适应 —— 表格短就完整显示（不滚动），表格长才内部滚动 */
.fj-doc-scroll{position:relative;min-height:420px;max-height:1400px;overflow:auto;padding:12px 14px 14px;background:#fff}
.fj-doc-table{border-collapse:separate;border-spacing:0;font-size:13px;min-width:100%}
.fj-doc-table td{border-right:1px solid #e6e9f2;border-bottom:1px solid #e6e9f2;padding:7px 11px;white-space:nowrap;vertical-align:top;color:#333;background:#fff}
.fj-doc-table tr:first-child td{background:#f5f7fd;font-weight:600;color:#1f2437}
.fj-doc-table tr:hover td{background:#fafbff}
.fj-doc-table tr.fj-doc-hd td{z-index:2;background:#f5f7fd}
.fj-doc-table td.fj-doc-rowhead{position:sticky!important;left:0;z-index:3;background:#f5f7fd;border-right:1px solid #d7dcec}
.fj-doc-msg{padding:28px 14px;text-align:center;font-size:13px;color:#8a8aa3}
.fj-doc-cut{padding:8px 14px;text-align:center;font-size:12px;color:#9aa4bd;background:#fafbfe;border-top:1px solid #eef1f7}
.fj-doc-lockbar{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;padding:11px 14px;background:#f5f7fd;border-top:1px solid #e6e9f2;font-size:13px;color:#5b6478}
.fj-doc-lockbar .btn{flex:none}
@media (max-width:640px){.fj-doc-scroll{min-height:300px;max-height:900px;padding:8px}.fj-doc-table{font-size:12px}.fj-doc-table td{padding:5px 8px}}
.fj-doc-locked{padding:40px 20px;text-align:center;font-size:13px;color:#9aa4bd;background:#fafbfe;border:1px dashed #e3e6f0;border-radius:8px;margin:4px}
/* 预览区图标：悬停时轻微上浮 + 辉光增强 */
.cad-detail-hd .fj-ic-title .fj-ic{transition:transform .22s cubic-bezier(.34,1.56,.64,1),filter .22s ease}
.cad-detail-hd .fj-ic-title:hover .fj-ic{transform:translateY(-1px) scale(1.06);filter:drop-shadow(0 4px 9px rgba(91,75,232,.42))}
