:root{--bg:#f4f6fa;--card:#fff;--line:#e3e8f0;--tx:#1c2333;--tx2:#5b6577;--tx3:#9099ab;--pri:#2456e6;--pri2:#eaf0ff;--ok:#0c8a52;--warn:#b96a00;--hd:#16264a}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font:14px/1.55 "Microsoft YaHei",system-ui,sans-serif;background:var(--bg);color:var(--tx);overflow:hidden}
button,input,select{font-family:inherit}
.btn{border:1px solid var(--line);background:#fff;color:var(--tx);padding:6px 13px;border-radius:8px;cursor:pointer;font-size:13px}
.btn:hover{border-color:var(--pri);color:var(--pri)}
.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}
.btn.pri:hover{opacity:.9;color:#fff}
.btn:disabled{opacity:.5;cursor:default}
header{position:sticky;top:0;z-index:40;background:var(--hd);color:#fff;padding:10px 20px;display:flex;align-items:center;gap:16px}
header .logo{font-size:17px;font-weight:700;letter-spacing:.5px;white-space:nowrap}
header .sub{font-size:12px;color:#9fb0d8;white-space:nowrap}
#gsearch{flex:1;max-width:420px;position:relative}
#gq{width:100%;height:34px;padding:0 14px;border:1px solid rgba(255,255,255,.35);border-radius:17px;background:rgba(255,255,255,.14);color:#fff;font-size:13px;outline:none}
#gq::placeholder{color:#aebbdd}
#gq:focus{background:#fff;color:var(--tx)}
#tabs{display:flex;gap:8px;margin-left:auto}
#tabs button{border:1px solid rgba(255,255,255,.42);background:rgba(255,255,255,.08);color:#eaf0ff;padding:7px 16px;border-radius:18px;cursor:pointer;font-size:13.5px;white-space:nowrap}
#tabs button.on{background:#fff;color:var(--hd);font-weight:700}
.page{display:none;height:calc(100vh - 54px)}.page.on{display:flex}
/* 左栏 */
#side{width:340px;flex:none;background:var(--card);border-right:1px solid var(--line);display:flex;flex-direction:column}
.filters{padding:12px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.filters label{font-size:11px;color:var(--tx3);display:block;margin-bottom:3px}
.filters select,.filters input{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:7px;font-size:12.5px;background:#fff;color:var(--tx)}
.filters .full{grid-column:1/-1}
#bookMeta{padding:9px 12px;font-size:12px;color:var(--tx2);border-bottom:1px solid var(--line);background:#fafbfe}
#bookList{flex:1;overflow:auto;padding:8px}
.grp{margin:6px 0 3px;font-size:11.5px;color:var(--tx3);font-weight:600;letter-spacing:.5px}
.bk{display:block;width:100%;text-align:left;border:1px solid transparent;background:#fff;border-radius:8px;padding:7px 10px;margin:2px 0;cursor:pointer;font-size:13px;color:var(--tx)}
.bk:hover{background:var(--pri2)}.bk.on{border-color:var(--pri);background:var(--pri2);font-weight:600}
.bk small{display:block;color:var(--tx3);font-size:11px;font-weight:400;margin-top:2px}
/* 中间图 */
#center{flex:1;min-width:0;display:flex;flex-direction:column;background:#eef1f6}
#figbar{height:42px;flex:none;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;padding:0 12px;font-size:12.5px}
#figbar .sp{flex:1}
#thumbs{height:74px;flex:none;background:#fff;border-bottom:1px solid var(--line);display:flex;gap:6px;overflow-x:auto;padding:8px 10px}
#thumbs img{height:56px;width:auto;border:1px solid var(--line);border-radius:5px;cursor:pointer;flex:none;opacity:.75}
#thumbs img.on{border:2px solid var(--pri);opacity:1}
#stage{flex:1;position:relative;overflow:hidden;cursor:grab;background:#dfe4ee}
#stage.drag{cursor:grabbing}
#canvas{position:absolute;left:0;top:0;transform-origin:0 0}
#canvas img{display:block;max-width:none;user-select:none;-webkit-user-drag:none}
.hs{position:absolute;border:1.5px solid rgba(36,86,230,.55);background:rgba(36,86,230,.08);border-radius:3px;cursor:pointer}
.hs:hover,.hs.hi{background:rgba(255,193,7,.42);border-color:#e08a00;box-shadow:0 0 0 2px rgba(224,138,0,.35)}
.hs::after{content:attr(data-code);position:absolute;left:0;top:-17px;background:#16264a;color:#fff;font-size:10px;padding:1px 5px;border-radius:3px;white-space:nowrap;display:none}
.hs:hover::after,.hs.hi::after{display:block}
#figempty{margin:auto;color:var(--tx3);font-size:14px;text-align:center;line-height:2}
/* 右栏 */
#right{width:420px;flex:none;background:#fff;border-left:1px solid var(--line);display:flex;flex-direction:column}
#rhead{padding:10px 12px;border-bottom:1px solid var(--line);display:flex;gap:8px;align-items:center;font-size:12.5px}
#rhead select{margin-left:auto;padding:5px 8px;border:1px solid var(--line);border-radius:7px;font-size:12px}
#rtable{flex:1;overflow:auto}
table{border-collapse:collapse;width:100%;font-size:12.5px}
th{position:sticky;top:0;background:#f1f5f9;color:var(--tx2);font-weight:600;text-align:left;padding:7px 8px;border-bottom:1px solid var(--line);z-index:2}
td{padding:6px 8px;border-bottom:1px solid #f0f2f6;vertical-align:top}
tr.p_row{cursor:pointer}tr.p_row:hover{background:#f7f9ff}tr.p_row.hi{background:#fff3cd}
td.code{font-family:Consolas,monospace;color:var(--pri);white-space:nowrap}
td.qty{text-align:right;color:var(--tx2)}
.addq{border:1px solid var(--line);background:#fff;border-radius:5px;padding:2px 7px;font-size:11px;cursor:pointer;color:var(--pri)}
.addq:hover{background:var(--pri2)}
#rfoot{padding:8px 12px;border-top:1px solid var(--line);font-size:12px;color:var(--tx3)}
/* 数据页 / 询价页 */
.wide{width:100%;flex-direction:column;overflow:auto;background:var(--bg)}
.toolbar{background:#fff;border-bottom:1px solid var(--line);padding:12px 18px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.toolbar input,.toolbar select{padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px}
.toolbar .hint{font-size:12px;color:var(--tx3)}
.panel{background:#fff;margin:16px 18px;border:1px solid var(--line);border-radius:12px;overflow:auto;max-height:calc(100vh - 170px)}
.panel table{font-size:13px}
.panel td,.panel th{padding:8px 12px}
.pager{padding:10px 18px;display:flex;gap:10px;align-items:center;font-size:13px}
.cards{display:flex;gap:14px;flex-wrap:wrap;margin:16px 18px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 20px;min-width:150px}
.kpi b{font-size:22px;color:var(--pri);display:block}
.kpi span{font-size:12px;color:var(--tx3)}
.inqbox{max-width:560px;margin:18px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px}
.inqbox label{display:block;font-size:12.5px;color:var(--tx2);margin:10px 0 4px}
.inqbox input,.inqbox textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px}
.inqbox textarea{height:80px}
.badge{background:#eaf0ff;color:var(--pri);border-radius:10px;padding:0 7px;font-size:11px;margin-left:4px}
.notice{background:#fffbeb;border-left:4px solid #f0c36d;padding:10px 14px;border-radius:8px;margin:14px 18px;font-size:13px;color:#8a5a00}
/* 零件数据页：整行可点击跳转到图册对应页 */
#dBody tr.d_row{cursor:pointer}
#dBody tr.d_row:hover{background:#f4f7ff}
#dBody tr.d_row.nojump{cursor:default;opacity:.72}
#dBody tr.d_row.nojump:hover{background:#fafbfc}
.jumpico{display:inline-block;margin-left:5px;color:var(--pri);font-size:11px;white-space:nowrap}
#dBody tr.d_row:hover .jumpico{text-decoration:underline}
/* 徐工式机型 / 年份地区 / 大类 / 部类 / 图 多级树 */
.viewsw{display:flex;gap:6px}
.viewsw button{flex:1;padding:6px 4px;font-size:12px;border:1px solid var(--line);background:#fff;color:var(--tx2);border-radius:7px;cursor:pointer}
.viewsw button:hover{border-color:var(--pri);color:var(--pri)}
.viewsw button.on{background:var(--pri);border-color:var(--pri);color:#fff;font-weight:600}
.tnode{position:relative}
.trow{display:flex;align-items:center;gap:5px;min-height:29px;padding:4px 6px;border-radius:6px;cursor:pointer;font-size:12.5px;color:var(--tx);border:1px solid transparent;flex-wrap:wrap}
.trow:hover{background:var(--pri2)}
.trow.op{font-weight:600}
.trow.sel{background:#eaf0ff;border-color:#b9ccff;color:var(--pri)}
.caret{width:12px;flex:none;color:var(--tx3);font-size:12px;text-align:center}
.lv1>.trow{background:#f4f6fb;margin-top:5px;font-size:13px}
.lv1>.trow:hover{background:#e8edfa}
.lv2,.lv3,.lv4{margin-left:11px;border-left:1px dashed #d9e0ee;padding-left:7px}
.lv4{border-left-color:#e6ebf3}
.vname{flex:1;min-width:88px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gcode{font-family:Consolas,monospace;font-size:11px;color:var(--pri);background:#eaf0ff;border-radius:4px;padding:0 4px;flex:none}
.gname{flex:1;min-width:58px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gname.loose{color:var(--tx3);font-style:italic}
.gname.none{color:var(--tx3)}
.tbadge{font-size:10.5px;color:#5b4bb5;background:#efecff;border:1px solid #ddd5ff;border-radius:9px;padding:0 6px;white-space:nowrap;flex:none}
.tbadge.fig{color:#8a5a00;background:#fff4dc;border-color:#f3dfae}
.tload{padding:7px 10px;color:var(--tx3);font-size:11.5px;margin-left:24px}
.tpages{display:flex;flex-wrap:wrap;gap:4px;padding:3px 6px 8px 26px}
.tpage{font-size:11px;padding:2px 7px;border:1px solid var(--line);background:#fff;border-radius:5px;cursor:pointer;color:var(--tx2)}
.tpage:hover{border-color:var(--pri);color:var(--pri)}
.tpage.on{background:var(--pri);border-color:var(--pri);color:#fff}
@media(max-width:1200px){#side{width:270px}#right{width:340px}}

/* ============ 气泡序号热区 ============ */
.hs.bl{border:1.5px solid rgba(12,138,82,.55);background:rgba(12,138,82,.10);border-radius:50%;min-width:18px;min-height:18px;display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:700;color:#0c8a52;font-family:Consolas,monospace}
.hs.bl::before{content:attr(data-num);position:static}
.hs.bl::after{content:attr(data-code);position:absolute;left:50%;top:-20px;transform:translateX(-50%);background:#0c8a52;color:#fff;font-size:10px;padding:1px 5px;border-radius:3px;white-space:nowrap;display:none}
.hs.bl:hover::after,.hs.bl.hi::after{display:block}
.hs.bl:hover,.hs.bl.hi{background:rgba(255,193,7,.5);border-color:#e08a00;color:#8a5a00;box-shadow:0 0 0 2px rgba(224,138,0,.35)}

/* ============ 主页 ============ */
#pageHome{overflow:auto}
.hero{width:100%;background:linear-gradient(135deg,#16264a 0%,#1e3a75 60%,#2456e6 100%);color:#fff;padding:54px 20px 44px;text-align:center;box-sizing:border-box}
.hero h1{font-size:30px;letter-spacing:1px;margin-bottom:10px}
.hero .hsub{font-size:14px;color:#c3d2f5;margin-bottom:26px}
.hsearch{display:flex;max-width:640px;margin:0 auto 18px;gap:10px}
.hsearch input{flex:1;height:46px;border-radius:10px;border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.14);color:#fff;padding:0 16px;font-size:15px;outline:none}
.hsearch input::placeholder{color:#aebbdd}
.hsearch input:focus{background:#fff;color:var(--tx)}
.hsearch .btn{height:46px;padding:0 26px;font-size:15px;border-radius:10px}
.hcta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-bottom:26px}
.cta{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:24px;font-size:14px;font-weight:600;color:#fff;text-decoration:none}
.cta.wa{background:#25d366}
.cta.wa:hover{background:#1fb955}
.cta.em{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.4)}
.cta.em:hover{background:rgba(255,255,255,.28)}
.hstats{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.hstats .kpi{background:rgba(255,255,255,.1);border-color:transparent;color:#fff;min-width:130px}
.hstats .kpi b{color:#fff}
.hstats .kpi span{color:#c3d2f5}
.hsec{width:100%;max-width:1500px;margin:0 auto;padding:30px 22px 10px;box-sizing:border-box}
.hsec h2{font-size:20px;margin-bottom:4px}
.hsec h2 small{font-size:12.5px;color:var(--tx3);font-weight:400;margin-left:10px}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:16px;margin-top:18px}
.mcard{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;cursor:pointer;transition:box-shadow .15s,transform .15s;display:flex;flex-direction:column}
.mcard:hover{box-shadow:0 6px 20px rgba(22,38,74,.14);transform:translateY(-2px);border-color:#b9ccff}
.mcard .mimg{height:150px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}
.mcard .mimg img{max-width:92%;max-height:140px;object-fit:contain}
.mcard .mbody{padding:11px 13px 13px;border-top:1px solid var(--line)}
.mcard .mname{font-size:15.5px;font-weight:700;color:var(--tx)}
.mcard .mmeta{font-size:11.5px;color:var(--tx3);margin-top:4px;line-height:1.7}
.mcard .mmeta b{color:var(--pri);font-weight:600}
.hfoot{margin-top:26px;border-top:1px solid var(--line);background:#fff;padding:22px;text-align:center;font-size:13.5px;color:var(--tx2)}
.hfoot a{color:var(--pri);text-decoration:none}
.hfoot a:hover{text-decoration:underline}
/* 询价页联系方式 */
.contactline{font-size:14px;margin:8px 0}
.contactline a{color:var(--pri);text-decoration:none;font-weight:600}
.contactline a:hover{text-decoration:underline}
/* 浮动咨询按钮 */
#floatContact{position:fixed;right:18px;bottom:64px;z-index:60;display:flex;flex-direction:column;gap:10px}
.fc{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.22);transition:transform .12s}
.fc:hover{transform:scale(1.08)}
.fc.wa{background:#25d366}
.fc.em{background:var(--pri)}
