
:root{
  --bg:#f5f7fa;
  --card:#ffffff;
  --line:#e6ebf2;
  --ink:#2c4260;
  --ink2:#4a4a4a;
  
  --muted:#24313f;
  --err:#d62828;
  --r-card:22px;
  --r-inp:14px;
  
  --t1:#2e9e4f;   
  --t2:#0e8fb8;   
  --t3:#0f62c4;   
  --t4:#c07806;   
  --t5:#b3261e;   
  --t6:#7326a8;   
  --t7:#067a68;   
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  font-size:17px;line-height:1.6;
  
  padding:6px 12px 8px;
}

.wrap{
  max-width:920px;margin:0 auto;
  font-size:17px;
  line-height:1.6;
  -webkit-text-size-adjust:100% !important;
  text-size-adjust:100% !important;
}

.stickyhead{
  position:sticky;top:0;z-index:60;
  background:var(--bg);
  padding-top:4px;
  margin:0 0 2px;
}
.head{text-align:center;padding:4px 0 9px;position:relative}

.acct{display:inline-flex;align-items:baseline;justify-content:flex-end;gap:10px;flex:0 0 auto;min-width:132px;margin-left:4px}
.acct-btn{
  padding:0;border:none;background:none;color:#1e6fd9;
  font-size:16px;font-weight:800;cursor:pointer;font-family:inherit;
  line-height:1.2;white-space:nowrap;text-decoration:none;
}
.acct-btn:hover{text-decoration:underline}
.acct-btn.acct-reg{color:#1e6fd9}
.acct-btn.acct-reg::before{
  content:'';display:inline-block;width:1px;height:12px;background:#cdd8e6;
  margin-right:10px;vertical-align:-1px;
}

.acct-tip{
  display:none;margin:7px auto 0;max-width:520px;
  background:#fff8e6;border:1px solid #f0dcb4;color:#5c3d00;
  border-radius:11px;padding:9px 13px;font-size:15.5px;font-weight:700;line-height:1.5;
}

.head-row{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:nowrap;min-width:0}
.head-row>*{min-width:0}
.head .brand{flex:0 0 auto;display:block;width:76px;height:49px;opacity:.95}
.head h1{margin:0;font-size:32px;font-weight:800;color:var(--ink);letter-spacing:.4px;line-height:1.22;white-space:nowrap}

.h1sub{display:none}
@media (min-width:769px){.h1sub{display:inline}}

.head .sub{margin-top:4px;font-size:13px;color:var(--ink2);line-height:1.35;white-space:nowrap}
.head .sub i{font-style:normal;color:#c4ccd8;margin:0 5px}

.tabsbar{
  display:block;
  background:transparent;border:0;border-radius:0;
  padding:4px 0 2px;margin-bottom:6px;
  position:relative;z-index:60;
  box-shadow:none;
  -webkit-backdrop-filter:none;backdrop-filter:none;
}

.tabs{
  display:flex;gap:0;justify-content:space-between;align-items:flex-start;
  overflow-x:auto;overflow-y:visible;padding:2px 0 4px;margin:0;
  scrollbar-width:none;-ms-overflow-style:none;
  -webkit-overflow-scrolling:touch;
}
.tabs::-webkit-scrollbar{display:none;height:0}

.tab{
  flex:1 1 0;min-width:0;max-width:104px;
  display:flex;flex-direction:column;align-items:center;
  gap:7px;                 
  background:transparent;border:0;box-shadow:none;
  position:relative;
  padding:5px 0 8px;margin:0;border-radius:10px;
  min-height:70px;         
  font-family:inherit;cursor:pointer;-webkit-appearance:none;appearance:none;
  opacity:.72;
  transition:opacity .18s,transform .18s;
}
.tab:active{transform:scale(.95)}

.tab-ico{
  width:40px;height:40px;border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  transition:transform .18s,box-shadow .18s;
}
.tab-ico svg{width:22px;height:22px;display:block}

.tab-tx{
  
  
  
  font-size:clamp(8.6px,calc(0.895vw + 6.8px),12px);
  font-weight:700;color:#5a6b7a;letter-spacing:-.4px;
  line-height:1.15;text-align:center;
  white-space:nowrap;max-width:100%;padding:0;display:block;
}

.tab[data-i="1"] .tab-ico{background:var(--t1)}
.tab[data-i="2"] .tab-ico{background:var(--t2)}
.tab[data-i="3"] .tab-ico{background:var(--t3)}
.tab[data-i="4"] .tab-ico{background:var(--t4)}
.tab[data-i="5"] .tab-ico{background:var(--t5)}
.tab[data-i="6"] .tab-ico{background:var(--t6)}
.tab[data-i="7"] .tab-ico{background:var(--t7)}

.tab.on{opacity:1}
.tab.on .tab-ico{transform:translateY(-2px) scale(1.06);box-shadow:0 6px 14px rgba(24,45,72,.22)}
.tab.on .tab-tx{font-weight:800}

.tab[data-i="1"].on .tab-tx{color:var(--t1)}
.tab[data-i="2"].on .tab-tx{color:var(--t2)}
.tab[data-i="3"].on .tab-tx{color:var(--t3)}
.tab[data-i="4"].on .tab-tx{color:var(--t4)}
.tab[data-i="5"].on .tab-tx{color:var(--t5)}
.tab[data-i="6"].on .tab-tx{color:var(--t6)}
.tab[data-i="7"].on .tab-tx{color:var(--t7)}

.tab.on::after{
  content:'';position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:16px;height:3px;border-radius:2px;opacity:.92;
}
.tab[data-i="1"].on::after{background:var(--t1)}
.tab[data-i="2"].on::after{background:var(--t2)}
.tab[data-i="3"].on::after{background:var(--t3)}
.tab[data-i="4"].on::after{background:var(--t4)}
.tab[data-i="5"].on::after{background:var(--t5)}
.tab[data-i="6"].on::after{background:var(--t6)}
.tab[data-i="7"].on::after{background:var(--t7)}

@media(max-width:480px){
  .tab{gap:6px;padding:4px 0 7px;min-height:64px}
  .tab-ico{width:36px;height:36px;border-radius:11px}
  .tab-ico svg{width:20px;height:20px}
}

@media(max-width:344px){
  .tab-tx{font-size:8.6px;letter-spacing:-.5px}
  .tab-ico{width:30px;height:30px;border-radius:9px}
  .tab-ico svg{width:17px;height:17px}
}
@media(max-width:360px){
  .tab{gap:5px;min-height:58px}
  .tab-ico{width:32px;height:32px;border-radius:9px}
  .tab-ico svg{width:18px;height:18px}
  .tab.on::after{width:14px}
}

.panel{
  display:none;border-radius:var(--r-card);padding:20px 18px 24px;
  border:1px solid var(--line);
}
.panel.on{display:block}

#p1,#p2,#p3,#p4,#p5,#p6,#p7{background:#fff;border-color:#e6ebf2}

.panel h2{
  margin:0 0 18px;padding-left:11px;padding-right:0;font-size:24px;font-weight:800;color:var(--ink);
  border-left:4px solid currentColor;line-height:1.25;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  
}
.panel h2>span:first-child{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.pcount{
  flex:0 0 auto;font-size:14px;font-weight:700;
  color:currentColor;background:rgba(255,255,255,.75);
  border:1px solid currentColor;border-radius:999px;padding:2px 11px;line-height:1.5;
  white-space:nowrap;
}
.pcount b{font-size:16px;font-weight:800;margin-right:2px}
.pcount i{font-style:normal;opacity:.8;font-weight:600;margin-left:1px}

#p1 h2{color:var(--t1)}
#p2 h2{color:var(--t2)}
#p3 h2{color:var(--t3)}
#p4 h2{color:var(--t4)}
#p5 h2{color:var(--t5)}
#p6 h2{color:var(--t6)}
#p7 h2{color:var(--t7)}

@media(max-width:640px){
  .pcount{font-size:12.5px;padding:2px 9px}
  .pcount b{font-size:14px}
}
@media(max-width:400px){
  .panel h2{font-size:20px;gap:7px;padding-left:9px}
  .pcount{font-size:11.5px;padding:1px 7px}
  .pcount b{font-size:12.5px}
}

#p1 h2 .pcount,#p2 h2 .pcount,#p3 h2 .pcount,
#p4 h2 .pcount,#p5 h2 .pcount,#p6 h2 .pcount,#p7 h2 .pcount{color:#2c4260;border-color:rgba(44,66,96,.18);
  background:rgba(255,255,255,.86)}

#rLive{
  background:#f3f8fb;color:#0d6a80;font-weight:800;font-size:17px;
  border:1px solid #bfe7f3;cursor:default;
}
#rLive.bad{background:#fdeeee;color:var(--err);border-color:#f2cdcd;font-weight:700}

.rl-extra{
  margin-top:7px;font-size:15px;font-weight:600;line-height:1.55;color:var(--muted);
  word-break:break-word;
}
.rl-extra.bad{color:var(--err)}

.fill-tip{
  background:#e9f8fb;border:1px solid #bfe7f3;color:#0d6a80;
  border-radius:12px;padding:9px 12px;font-size:15.5px;font-weight:600;line-height:1.6;
  margin-bottom:13px;
}
.fill-tip b{font-weight:800}

.spec-ptip{
  background:#f2f7f4;border:1px solid #cfe3d6;color:#2e6b45;
  border-radius:12px;padding:9px 12px;font-size:14.5px;line-height:1.55;
  margin-bottom:13px;
}
.spec-ptip b{font-weight:800}
.spec-ptip.bad{
  background:#fdeced;border:1px solid #f3b8bd;color:#b3131c;
}

.pick-way-title{
  font-size:17px;font-weight:800;color:#1a2733;margin:16px 0 8px;
  display:flex;align-items:center;gap:8px;flex-wrap:nowrap;
}
.pick-way-title::before{content:'';width:3px;height:15px;background:var(--pri,#0d6a80);border-radius:2px;flex:0 0 auto}

.pick-way-title>span{flex:0 0 auto;white-space:nowrap}
.pick-way-title em{font-style:normal;font-weight:700;color:var(--muted);font-size:15.5px;
  flex:0 1 auto;min-width:0}

.spec-pick{
  border:1.5px solid #dfe7ec;border-radius:12px;background:#fff;padding:12px;margin-bottom:14px;
}
.spec-pick.on, .sp-main.on{border-color:var(--pri,#0d6a80);box-shadow:0 2px 10px rgba(13,106,128,.10)}

.sp-label{font-size:16px;font-weight:800;color:#1a2733;margin-bottom:7px;
  display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
.sp-label>span:first-child{flex:0 0 auto;white-space:nowrap}
.sp-label .fcnt{font-weight:800;color:#1a2733;font-size:15.5px;flex:0 1 auto;min-width:0}

.sp-label .fcnt.plain{font-weight:400;color:#93a1b3}
/* 2026-11-12：窄屏下「先选择二级分类」被压成「先选…」。
   三样东西挤一行（标题 + 提示 + 下一步按钮），微信里还有 zoom:1.12 再缩 11%，
   390px 实测提示只剩 66px 宽、显示为「先选…」，等于把引导语删了。
   改成两行网格：标题与按钮占第一行，提示独占第二行（仍左对齐），
   按钮位置不动、无需改 HTML；320/360/390/430 实测提示完整、零溢出。 */
@media(max-width:430px){
  .sp-label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 8px;align-items:center}
  .sp-label>span:first-child{grid-column:1;grid-row:1;white-space:nowrap}
  .sp-label>#fc_spec{grid-column:1;grid-row:2;white-space:normal!important;
    font-size:13.5px;line-height:1.35}
  .sp-label>#btnSpecGo{grid-column:2;grid-row:1;justify-self:end}
}
.sp-label em{font-style:normal;font-weight:600;color:var(--muted);font-size:15px}
.sp-row{display:flex;gap:8px;align-items:stretch}

.sp-row .dd{flex:1 1 auto;min-width:0}

.sp-row .dd-btn{min-height:47px;height:auto;line-height:1.45;padding-top:8px;padding-bottom:8px}
.dd-off .dd-btn{background:#f2f4f7!important;color:#a3adb9!important;border-color:#e3e8ee!important;cursor:not-allowed!important}
.dd-off .dd-btn:after{border-top-color:#c3ccd6!important}

.sp-row .btn,
.sp-label .btn{flex:0 0 auto;width:auto;min-width:0;height:34px;min-height:34px;line-height:1;
  padding:0 12px;font-size:15px;white-space:nowrap;margin-left:auto}

@media(max-width:420px){
  .sp-row .btn{min-width:58px;padding:0 7px;font-size:14.5px}
}

@media(max-width:360px){
  .sp-row .btn{min-width:52px;padding:0 6px;font-size:13.5px}
  .sp-row .dd-btn{font-size:16px}
}

@media(max-width:329px){
  .sp-row .dd-btn{padding-left:10px;font-size:15px}
}
.sp-main .hint{margin-top:8px}
.sp-alt{
  margin-top:10px;padding-top:9px;border-top:1px dashed #e3e9ee;
  font-size:15.5px;color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}

.sp-alt > span{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;word-break:break-word}

.sp-alt span, .sp-alt .fcnt{white-space:normal;overflow-wrap:anywhere;word-break:break-word}

@media (max-width:400px){
  .sp-alt{display:block}
  .sp-alt > span{display:block}
  .sp-alt > .sp-lnk{display:inline-flex;margin-top:6px}
}
.sp-lnk{
  background:none;border:none;font:inherit;font-weight:700;
  color:var(--pri,#0d6a80);cursor:pointer;text-decoration:underline;text-underline-offset:2px;
  
  padding:9px 2px;min-height:36px;display:inline-flex;align-items:center;
  -webkit-tap-highlight-color:rgba(13,106,128,.08);
}
.sp-lnk:hover{color:#0a556a}
.sp-lnk:active{color:#083d4d}

.f{margin-bottom:15px}
.f>label{
  display:block;font-size:16.5px;font-weight:700;color:var(--ink);margin-bottom:7px;
  
  
  display:flex;align-items:center;gap:4px;flex-wrap:nowrap;white-space:nowrap;
  overflow:visible;
  
  min-width:0;
  
  white-space:nowrap;
}

.f>label em{
  
  overflow:hidden; text-overflow:ellipsis;
}

.f>label>em{
  flex:0 1 auto;min-width:0;
  
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.f>label>.req{flex:0 0 auto;margin-left:2px}

.f>label>.req+.hintq,.f>label>.req~.hintq{margin-left:4px}

.rng-sub{
  margin-top:4px;font-size:13.5px;font-weight:600;color:var(--muted);
  line-height:1.45;word-break:break-word;
}

.f:has(.rng-sub){margin-bottom:20px}
.f>label>em,.f>label>span,.f>label>b{
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

@media(max-width:360px){
  .f>label, .f>label>em, .f>label>span, .f>label>b{ white-space:normal !important; }
  .f>label>.fcnt, .f>label>.req, .f>label>.hintq{ white-space:nowrap !important; }
}

.f>label>.fcnt{ flex:0 1 auto; min-width:0; }
.f>label>.lb-t, .f>label>.req, .f>label>.hintq{ flex:0 0 auto; }

.f>label>em, .f>label>span:not(.fcnt):not(.req){ min-width:0; }

.f>label>.lb-tx{
  flex:1 1 0; min-width:0; max-width:100%;
  white-space:normal; word-break:break-word; overflow-wrap:anywhere;
}

@media(min-width:391px){
  .f>label>.lb-tx{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
}

.f>label>.lb-t{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
.f>label>.hintq{flex:0 0 auto;margin:0 0 0 2px;vertical-align:middle}
.f>label .req{flex:0 0 auto}

.lb-ico{
  display:inline-block;width:3px;height:15px;border-radius:2px;
  background:#3182ce;margin-right:8px;vertical-align:-2px;flex:0 0 auto;
  
}

#p1 .lb-ico{background:var(--t1)}
#p2 .lb-ico{background:var(--t2)}
#p3 .lb-ico{background:var(--t3)}
#p4 .lb-ico{background:var(--t4)}
#p5 .lb-ico{background:var(--t5)}
#p6 .lb-ico{background:var(--t6)}
#p7 .lb-ico{background:var(--t7)}
.f>label em{
  font-style:normal;font-weight:600;font-size:15.5px;color:var(--muted);margin-left:5px;
}
.f>label .req{color:var(--err);margin-left:3px}

.f>label .fcnt{
  font-style:normal;font-weight:800;font-size:12px;color:#6b7c90;
  margin-left:6px;letter-spacing:.1px;
}

#p2 .f>label .fcnt,#p3 .f>label .fcnt,#p4 .f>label .fcnt,
#p5 .f>label .fcnt,#p6 .f>label .fcnt{color:#6b7c90}
.fcnt .n{color:#3d5266;font-weight:800}
.fcnt .u{color:#93a1b3;font-weight:700;margin:0 1px}
input[type=text],input[type=number],select{
  width:100%;height:51px;padding:0 14px;font-size:17.5px;color:var(--ink);
  background:#fff;border:1px solid #dfe6ef;border-radius:var(--r-inp);
  outline:none;transition:border-color .15s,box-shadow .15s;
  font-family:inherit;appearance:none;
}
select{
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%23384553' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:38px;
}
input:focus,select:focus{border-color:#9db8e0;box-shadow:0 0 0 3px rgba(47,128,237,.10)}
input[readonly]{background:#f4f7fb;color:#5a6b85;font-weight:700}
input.err,select.err{border-color:var(--err);box-shadow:0 0 0 3px rgba(214,40,40,.10)}
.hint{font-size:15.5px;line-height:1.6;color:var(--muted);margin-top:6px;
  
  white-space:normal;word-break:break-word;overflow-wrap:anywhere;}

.hint--q{display:none}

.f:has(>#rngDoutSubNote)>#doutSplit{grid-column:1;grid-row:2;margin:0;min-width:0}
.dout-split{display:flex;gap:0;margin:0;align-items:stretch;border:1px solid #dfe6ef;border-radius:10px;background:#fff;overflow:hidden;height:46px}
.dout-split>div{min-width:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:5px 10px}
.dout-split>div.calc{flex:0 0 42%;background:#f4f6f8;border-right:1px solid #e3e9ef}
.dout-split>div.pick{flex:1 1 auto;position:relative}
#doutAutoNote{display:none!important}
.dout-split .lb{font-size:11px;color:#8290a1;line-height:1.2;white-space:nowrap}
.dout-split .vv{display:flex;align-items:baseline;justify-content:center;gap:3px}
.dout-split .calc b{font-size:18px;color:#1f2d3d;font-weight:800;line-height:1.2}
.dout-split .calc i{font-style:normal;font-size:11px;color:#8290a1;margin-left:3px}
.dout-split .pick select{width:100%;height:22px!important;min-height:0!important;margin:1px 0 0;font-size:17px;font-weight:800;color:#1b3a5c;padding:0;border:0!important;border-radius:0!important;background:transparent;box-shadow:none!important;outline:none!important;text-align:center;text-align-last:center;font-family:inherit;line-height:22px;appearance:none}
.dout-split .pick select:focus,.dout-split .pick select:active{box-shadow:none!important;outline:none!important;border:0!important}
.dout-split>div.pick:after{content:"\25BE";position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:11px;color:#8a98a8;pointer-events:none}
.rcard .v em.dout-badge{display:block;width:max-content;font-style:normal;font-size:10.5px;color:#1d6b3a;background:#e8f7ee;border:1px solid #b7e0c2;border-radius:3px;padding:0 5px;margin-top:4px;font-weight:700;white-space:nowrap}

.f:has(>#rngDoutSubNote)>label>.hintq{margin-left:auto;background:transparent;border-color:transparent;color:#8290a1;width:14px;height:14px;font-size:11px}
.f:has(>#rngDoutSubNote)>label>.hintq:hover,.f:has(>#rngDoutSubNote)>label>.hintq.on{background:#e6edf3;border-color:#cfdae3;color:#3b5266}
.hintq{
  display:inline-flex;align-items:center;justify-content:center;
  
  width:16px;height:16px;margin:0;padding:0;flex:0 0 auto;
  font:inherit;font-size:11px;font-weight:800;line-height:1;
  color:#7b8ea1;background:#eef3f7;border:1px solid #d3dee7;border-radius:50%;
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:color .15s ease,background .15s ease,border-color .15s ease;
}
.hintq:hover,.hintq.on{color:#fff;background:#5b7c9a;border-color:#5b7c9a}
.hintq:focus-visible{outline:2px solid #5b7c9a;outline-offset:2px}
.hintpop{
  position:fixed;z-index:99999;left:0;top:0;
  max-width:min(330px,calc(100vw - 24px));
  padding:10px 12px;border-radius:10px;
  background:#fff;color:#1d2b38;border:1px solid #cfdbe5;
  font-size:13.5px;line-height:1.7;
  box-shadow:0 12px 30px rgba(6,20,40,.24);
  opacity:0;transform:translateY(4px);pointer-events:none;
  transition:opacity .14s ease,transform .14s ease;
}
.hintpop.show{opacity:1;transform:translateY(0);pointer-events:auto}
.hintpop b{color:#c0392b}
.hint b{color:#c0392b}

.qmark{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;
  background:#eef3f7;color:#7b8ea1;border:1px solid #d3dee7;font-size:11px;font-weight:800;line-height:1;cursor:pointer;
  margin:0 0 0 2px;vertical-align:1px;user-select:none;flex:0 0 auto;
  transition:color .15s ease,background .15s ease,border-color .15s ease}
.qmark:hover,.qmark.on{background:#5b7c9a;color:#fff;border-color:#5b7c9a}
.qpop{margin-top:5px;padding:8px 10px;background:#f4f8fd;border:1px solid #d6e4f2;border-radius:6px;
  font-size:12px;line-height:1.75;color:#3d4a5a}

.sd-compat{background:#eef6ff;border:1px solid #cfe2f7;border-left:3px solid #1b5fa8;
  border-radius:5px;padding:7px 10px;margin-bottom:6px;font-size:12.5px;color:#1b4a78;line-height:1.7}
.sd-card{background:#fbfcfe;border:1px solid #e3e9f0;border-radius:6px;padding:8px 10px;margin-top:2px}
.sd-hd{display:flex;align-items:baseline;gap:8px;margin-bottom:6px;padding-bottom:6px;border-bottom:1px dashed #e3e9f0}
.sd-hd b{font-size:14px;color:#1f2d3d}
.sd-hd i{font-style:normal;font-size:11px;color:#8290a1;background:#eef2f7;padding:1px 5px;border-radius:3px}
.sd-hd em{font-style:normal;font-size:11px;color:#1b5fa8;margin-left:auto}
.sd-row{display:flex;gap:8px;font-size:12.5px;line-height:1.75}
.sd-k{flex:0 0 42px;color:#8290a1}
.sd-v{flex:1;color:#3d4a5a}
.sd-note{margin-top:6px;padding-top:6px;border-top:1px dashed #e3e9f0;font-size:12px;color:#5b6b7f;line-height:1.8}
.hint--warn{background:#fff8e6;border-left:3px solid #e0a800;color:#7a5b00;
  padding:8px 10px;border-radius:8px;margin-top:8px}
.hint--warn b{color:#b8860b}
.bnd-warn{background:#fff8e6;border-left:3px solid #e0a800;color:#7a5b00;
  padding:8px 10px;border-radius:8px}
.bnd-warn b{color:#b8860b}

.dd{position:relative}
.dd-btn{
  width:100%;min-height:51px;padding:8px 32px 8px 14px;font-size:17.5px;color:var(--ink);
  background:#fff;border:1px solid #dfe6ef;border-radius:var(--r-inp);
  text-align:left;cursor:pointer;font-family:inherit;line-height:1.45;
  
  white-space:normal;overflow-wrap:anywhere;word-break:break-word;
  
  display:block;
  transition:border-color .15s,box-shadow .15s;
  
}
.dd-btn::-webkit-scrollbar{display:none;height:0}

.dd::after{
  content:'';position:absolute;top:1px;bottom:1px;right:1px;width:28px;z-index:1;
  pointer-events:none;border-radius:0 var(--r-inp) var(--r-inp) 0;
  background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%23384553' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 8px center;
}

.dd-btn .ref{color:#111820;font-weight:800;letter-spacing:-.1px}

.fcnt{
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  flex:0 1 auto;min-width:4.5em;max-width:100%;
}

.fcnt{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
       flex:1 1 auto; min-width:0; max-width:100%; }

.dd-btn.ph{color:#3d4d5c}

@media (max-width:600px){
  
  .sp-row .dd-btn{padding-right:20px}
}

@media (max-width:299px){
  .sp-row .dd-btn .ref{display:none}
}
.dd.open .dd-btn{border-color:#9db8e0;box-shadow:0 0 0 3px rgba(47,128,237,.10)}
.dd-btn.err{border-color:var(--err);box-shadow:0 0 0 3px rgba(214,40,40,.10)}
.dd-panel{
  
  display:none;position:absolute;left:0;right:auto;top:calc(100% + 5px);z-index:90;
  

  min-width:100%;width:max-content;max-width:min(94vw, 620px);
  background:#fff;border:1px solid #dfe6ef;border-radius:var(--r-inp);
  box-shadow:0 10px 28px rgba(30,50,90,.14);
  max-height:300px;overflow-y:auto;overflow-x:hidden;padding:5px 0;
  scrollbar-width:thin;
}
.dd.open .dd-panel{display:block}

.dd-opt{
  padding:13px 16px;font-size:18px;color:var(--ink);cursor:pointer;
  display:flex;align-items:center;gap:8px;line-height:1.4;
  white-space:normal;overflow-wrap:anywhere;word-break:break-word;min-width:0;
}

.dd-opt .ref{color:#111820;font-weight:800;letter-spacing:-.1px}
.dd-opt:nth-child(6n+1),.dd-opt:nth-child(6n+2),.dd-opt:nth-child(6n+3){background:#f2f5f9}
.dd-opt:nth-child(6n+4),.dd-opt:nth-child(6n+5),.dd-opt:nth-child(6n){background:#ffffff}
.dd-opt:hover{background:#e3edfb}
.dd-opt.on{background:#dbeafd;font-weight:800}
.dd-opt.dis{color:#b8c0cc;cursor:not-allowed}
.dd-opt.dis:hover{background:inherit}
.dd-opt .tag{
  flex:0 0 auto;font-size:13.5px;font-weight:800;padding:2px 7px;border-radius:8px;
  background:#e8eef7;color:#5b6b82;
}

.radios{display:flex;flex-wrap:wrap;gap:9px}
.radios label{
  display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #dfe6ef;
  border-radius:var(--r-inp);padding:11px 15px;cursor:pointer;font-size:16.5px;font-weight:600;
  transition:all .15s;flex:1 1 auto;min-width:0;
}
.radios label.on{border-color:#2f80ed;background:#eef4fe;box-shadow:0 0 0 3px rgba(47,128,237,.08)}
.radios input{accent-color:#2f80ed;width:16px;height:16px;margin:0;flex:0 0 auto}

.radios label.locked{
  background:#f1f3f6;border-color:#dde2e8;border-style:dashed;
  color:#7b8794;cursor:not-allowed;opacity:.72;
}
.radios label.locked input{cursor:not-allowed;filter:grayscale(1)}
.radios label.locked span::after{
  content:'（当前大类不支持）';font-size:14.5px;font-weight:600;color:#6b7785;margin-left:6px;
}

.chk{display:flex;align-items:flex-start;gap:9px;background:#fff;border:1px solid #dfe6ef;
  border-radius:var(--r-inp);padding:12px 14px;cursor:pointer}
.chk input{accent-color:#f59e0b;width:17px;height:17px;margin:2px 0 0;flex:0 0 auto}

.chk{ align-items:flex-start !important; }
.chk input{ margin-top:3px !important; }
.chk span{font-size:16.5px;font-weight:600}
.chk small{display:block;font-weight:500;color:var(--muted);font-size:15px;margin-top:2px}

.chk.locked{
  background:#f1f3f6;border-color:#dde2e8;border-style:dashed;
  cursor:not-allowed;opacity:.72;
}
.chk.locked input{cursor:not-allowed;filter:grayscale(1)}
.chk.locked span{color:#7b8794}
.chk.locked small{color:#6b7785}
.chk.locked small::after{
  content:' → 当前大类/工况下该项无计算结果，已置灰不可勾选';
  font-weight:700;color:#8a5a00;
}

.acts{display:flex;flex-wrap:nowrap;gap:10px;margin-top:20px;padding-top:18px;border-top:1px dashed #d7dfe9}
.acts .btn{flex:0 1 auto;min-width:0;white-space:nowrap}

.acts .btn-gh{flex:0 0 auto;padding-left:12px;padding-right:12px}

.acts .btn-main{flex:1 1 auto;padding-left:14px;padding-right:14px}

.acts.acts-multi{flex-wrap:wrap}
.acts.acts-multi .btn{flex:0 0 auto;white-space:nowrap;overflow:visible;text-overflow:clip}
.btn{
  border:0;border-radius:var(--r-inp);padding:13px 20px;font-size:17px;font-weight:700;
  cursor:pointer;font-family:inherit;transition:filter .15s,transform .1s;
}
.btn:active{transform:scale(.985)}
.btn:hover{filter:brightness(.95)}
.btn-main{background:linear-gradient(135deg,#2f80ed,#1e6fd9);color:#fff;flex:1 1 200px;box-shadow:0 4px 12px rgba(47,128,237,.22)}
.btn-ok{background:linear-gradient(135deg,#16a34a,#128c3e);color:#fff;flex:1 1 160px}
.btn-gh{background:#fff;border:1px solid #cfd8e3;color:var(--ink);flex:0 1 auto}
.btn:disabled{opacity:.55;cursor:not-allowed}

.btn{padding:12px 18px;font-size:16.5px;min-height:46px}
.btn-sm{padding:9px 14px;font-size:15.5px;min-height:42px}
@media (max-width:640px){
  .btn{padding:11px 15px;font-size:16px;min-height:46px}
  .btn-sm{padding:9px 12px;font-size:15px;min-height:42px}
  
  .dwg-viewbar{flex-wrap:wrap;gap:6px}
  .dwg-viewbar .btn{flex:1 1 auto}
  .dwg-expbar{flex-wrap:wrap;gap:6px}
  .dwg-expbar .btn{flex:1 1 auto}
  
  .acts-multi .btn{flex:1 1 auto}
  
  .acts .btn{flex:1 1 0;min-width:0;padding-left:8px;padding-right:8px}
  .acts .btn-main{flex:1.35 1 0;font-size:15.5px;letter-spacing:-.2px}
}

.prog{display:none;height:5px;border-radius:99px;background:#dfe6ef;overflow:hidden;margin-top:14px}
.prog.on{display:block}
.prog i{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,#2f80ed,#16a34a);transition:width .25s}

.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:11px;margin-bottom:18px}
.rcard{background:#fff;border:1px solid #e2e8f1;border-radius:16px;padding:13px 14px}
.rcard .k{font-size:15.5px;font-weight:600;color:var(--muted);margin-bottom:5px}
.rcard .v{font-size:22px;font-weight:800;color:var(--ink);word-break:break-all}
.rcard .v small{font-size:15.5px;font-weight:700;color:var(--muted);margin-left:3px}
.rcard.ok .v{color:#0f7a2e} .rcard.ng .v{color:var(--err)} .rcard.nm .v{color:var(--muted);font-size:19px}

.rcard .v2{font-size:14.5px;font-weight:700;color:var(--pri,#0d6a80);margin-top:3px}
.rcard.ng .v2{color:var(--err)} .rcard.ok .v2{color:#16a34a}
.rcard.warn{border-color:#f3c66a;background:#fffaf0}
.rcard.warn .v{color:#b45309}
.rcard.warn .k::after{content:' · 可用';color:#b45309;font-weight:700}
.rbig{background:linear-gradient(135deg,#eef4fe,#e5eefc);border-color:#cfe0fb}

.dwg-card{
  background:#fff;border:1px solid #e2e8f1;border-radius:16px;
  padding:14px;margin:14px 0 16px;
}

.dwg-head{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding-bottom:9px;margin-bottom:9px;border-bottom:1px solid #eef2f7;
}
.dwg-title{font-size:16.5px;font-weight:800;color:var(--ink);flex:0 0 auto}

.dwg-sub{
  font-size:14px;color:var(--muted);line-height:1.5;flex:1 1 auto;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

.dwg-views{
  display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;
  margin-bottom:9px;padding-bottom:2px;
  scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;
}
.dwg-views::-webkit-scrollbar{display:none;height:0}
.dwg-vbtn{
  flex:0 0 auto;padding:8px 12px;font-size:13px;line-height:1.5;
  border:1px solid #dbe3ec;border-radius:8px;background:#f5f8fc;color:#5a6b7a;
  cursor:pointer;font-family:inherit;font-weight:700;white-space:nowrap;
}
.dwg-vbtn:hover:not(.on){background:#e9eff7}
.dwg-vbtn.on{background:var(--ok,#2e7d32);color:#fff;border-color:var(--ok,#2e7d32)}
.dwg-card.dark .dwg-vbtn{background:#1a222c;border-color:#2a3441;color:#9aa3ad}
.dwg-card.dark .dwg-vbtn.on{background:var(--ok,#2e7d32);color:#fff;border-color:var(--ok,#2e7d32)}

.dwg-fullbar .dwg-views{margin:0 6px;flex:0 1 auto;min-width:0}

.dwg-modewrap{
  margin-left:auto;flex:0 0 auto;display:flex;gap:0;
  border:1px solid #dbe3ec;border-radius:9px;overflow:hidden;background:#f5f8fc;
}
.dwg-mode{
  
  padding:9px 12px;font-size:13px;line-height:1.5;border:none;background:transparent;
  color:#5a6b7a;cursor:pointer;font-family:inherit;font-weight:700;white-space:nowrap;
}
.dwg-mode + .dwg-mode{border-left:1px solid #dbe3ec}
.dwg-mode.on{background:var(--ok,#2e7d32);color:#fff}
.dwg-mode:hover:not(.on){background:#e9eff7}

.dwg-mode .dwg-soon{
  font-style:normal;font-size:10.5px;font-weight:800;line-height:1;
  margin-left:5px;padding:2px 4px;border-radius:4px;
  background:#fdece0;color:#a2521a;vertical-align:1px;
}
.dwg-tools{margin-bottom:9px}

.dwg-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:7px;font-size:12.5px;color:#5a6b7a}
.dwg-legend span{display:inline-flex;align-items:center;gap:5px}
.dwg-legend .lg{width:13px;height:13px;border-radius:3px;display:inline-block;flex:0 0 auto}
.dwg-legend .lg-hatch{background:repeating-linear-gradient(45deg,#9aa3ad,#9aa3ad 2px,transparent 2px,transparent 5px)}

.dwg-card.dark{background:#0f1419;border-color:#2a3441}
.dwg-card.dark .dwg-title,.dwg-card.dark .dwg-sub{color:#e6edf3}
.dwg-card.dark .dwg-head{border-color:#2a3441}
.dwg-card.dark .dwg-modewrap{background:#1a222c;border-color:#2a3441}
.dwg-card.dark .dwg-mode{color:#9aa3ad}
.dwg-card.dark .dwg-mode.on{background:var(--ok,#2e7d32);color:#fff}
.dwg-card.dark .dwg-chip{border-color:#2a3441;background:#1a222c;color:#c4ccd4}
.dwg-card.dark .dwg-chip:not(.on){opacity:.5}
.dwg-card.dark .dwg-stage{background:#0f1419;border-color:#2a3441}
.dwg-card.dark .dwg-load{background:#0f1419;color:#9aa3ad}
.dwg-card.dark .dwg-fullbar{background:#1a222c;border-color:#2a3441}
.dwg-card.dark .dwg-fulltitle,.dwg-card.dark .dwg-fullmeta{color:#e6edf3}
.dwg-card.dark .btn-gh{background:#243040;border-color:#33425a;color:#cdd6e0}
.dwg-card.dark .btn-gh:hover{background:#2c3a4d}

.dwg-viewbar{margin-top:9px;justify-content:flex-end}

.dwg-chips{
  display:flex;gap:7px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;
  padding-bottom:2px;scrollbar-width:none;-ms-overflow-style:none;
  -webkit-overflow-scrolling:touch;
}
.dwg-chips::-webkit-scrollbar{display:none;height:0}

.dwg-chips .dwg-br{display:none}

.dwg-chips.pro{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:7px 6px;flex-wrap:normal;overflow:visible;align-content:start;
}
.dwg-chips.pro .dwg-chip{justify-content:center;width:100%;min-width:0}

.dwg-chips.pro .dwg-chip{white-space:normal;overflow-wrap:anywhere;line-height:1.25}
@media (max-width:400px){
  .dwg-chips.pro .dwg-chip{font-size:12.5px;padding:6px 7px}
}
@media (max-width:345px){
  .dwg-chips.pro .dwg-chip{font-size:11.5px;padding:5px 4px;gap:3px}
  .dwg-chips.pro .dwg-chip .dot{width:7px;height:7px}
}

@media (max-width:400px){
  .dwg-chips:not(.pro){flex-wrap:nowrap;overflow-x:visible}
  
  .dwg-chips:not(.pro) .dwg-chip{font-size:12px;padding:5px 6px;gap:4px}
  .dwg-chips:not(.pro) .dwg-chip .dot{width:8px;height:8px}
}
.dwg-chip{
  font-size:13.5px;font-weight:700;padding:5px 11px;border-radius:99px;cursor:pointer;
  border:1.5px solid #dfe6ef;background:#fff;color:#64748b;user-select:none;
  display:inline-flex;align-items:center;gap:5px;transition:.12s;
  flex:0 0 auto;white-space:nowrap;
}
.dwg-chip .dot{width:9px;height:9px;border-radius:99px;background:currentColor}
.dwg-chip.on{border-color:currentColor;box-shadow:0 0 0 2px rgba(13,106,128,.08)}
.dwg-chip:not(.on){opacity:.45}

.dwg-chip{cursor:pointer;user-select:none;-webkit-user-select:none}
.dwg-chip[data-l="OUT"]{color:#1c2430}
.dwg-chip[data-l="CENT"]{color:#d32029}
.dwg-chip[data-l="DIM"]{color:#12a150}
.dwg-chip[data-l="TEXT"]{color:#1f6fd0}
.dwg-btns{display:flex;gap:7px;flex-wrap:wrap}

.btn-sm{flex:0 0 auto}

.dwg-stage{
  background:#fff;
  border:1px solid #dfe6ef;border-radius:12px;overflow:hidden;
  height:340px;min-height:220px;max-height:62vh;
  position:relative;touch-action:none;cursor:grab;
}
.dwg-stage:active{cursor:grabbing}
.dwg-stage svg,.dwg-svgwrap svg{display:block;width:100%;height:100%}
.dwg-svgwrap{width:100%;height:100%;overflow:auto}
.dwg-stage canvas{display:block;width:100%!important;height:100%!important}

.dwg-load{
  position:absolute;top:0;left:0;right:0;bottom:0;inset:0;display:flex;align-items:center;justify-content:center;
  color:#5a6b7a;font-size:15.5px;font-weight:600;background:#fff;
  pointer-events:none;transition:opacity .22s ease;
}
.dwg-load.off{opacity:0}
.dwg-load.err{color:#ff9d9d}
.dwg-full{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;inset:0;z-index:400;height:100%!important;border-radius:0;border:none}

.dwg-fullbar{
  display:flex;gap:8px;align-items:center;padding:10px 12px;
  background:#f3f7fc;border-bottom:1px solid #dfe6ef;flex-wrap:wrap;
}
.dwg-fulltitle{color:#1c2430;font-size:16px}
.dwg-fullmeta{color:#5a6b7a;font-size:15.5px}

.dwg-note{
  margin-top:8px;font-size:14.5px;line-height:1.6;font-weight:600;color:#334e68;
  background:#f4f8fd;border:0;border-left:3px solid #9dc0e8;border-radius:8px;
  padding:9px 12px;
}
.dwg-note.dwg-warn{color:#5c3d00;background:#fdf8ee;border-left-color:#e8b95c}

.dwg-exp{
  margin-top:12px;padding:12px 12px 11px;
  background:#fff;border:1px solid #e0e8f0;border-radius:12px;
  box-shadow:0 1px 3px rgba(24,45,72,.06);
}
.dwg-exp-title{
  font-size:14px;font-weight:800;color:#455a64;letter-spacing:.2px;margin-bottom:9px;
  display:flex;align-items:center;gap:6px;
}
.dwg-exp-title:before{content:'';width:3px;height:13px;border-radius:2px;background:var(--t7);display:inline-block}

.dwg-exp-grid{
  display:grid;grid-template-columns:1fr;gap:11px;
}

.dwg-fld{display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:0}
.dwg-fld>span{flex:0 0 auto;font-size:13.5px;font-weight:700;color:#5a6b7a;white-space:nowrap}
.dwg-fld select{flex:1 1 auto;min-width:0;width:100%;height:38px;font-size:14.5px;padding:0 30px 0 10px}
.dwg-hint{font-size:13.5px;font-weight:600;color:var(--muted);margin-top:8px;line-height:1.5}

.dwg-exp-btns{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
@media(max-width:430px){.dwg-exp-btns{grid-template-columns:1fr;gap:7px}}
.ebtn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  min-height:50px;padding:8px 6px;border-radius:11px;cursor:pointer;
  border:1px solid #cfdcea;background:#f7fafd;
  font-family:inherit;transition:transform .15s,box-shadow .15s,background .15s;
}
.ebtn b{font-size:15px;font-weight:800;color:#22405e;letter-spacing:.2px;white-space:nowrap}
.ebtn i{font-style:normal;font-size:12px;font-weight:600;color:#7d8fa2;white-space:nowrap}
.ebtn:active{transform:scale(.97)}
.ebtn:hover{background:#eef5fc;box-shadow:0 3px 8px rgba(24,45,72,.12)}
.ebtn.eb-dxf{border-color:#a9d8cf;background:#eefaf7}
.ebtn.eb-dxf b{color:#0b6b5c}
.ebtn.eb-dxf:hover{background:#e3f6f1;box-shadow:0 3px 10px rgba(14,158,138,.22)}

.acts.exp-acts{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:8px}
.acts.exp-acts .btn{flex:none;min-width:0;white-space:nowrap;justify-content:center}

.p7-tip{
  margin:6px 0 14px;padding:14px 16px;border-radius:12px;
  background:#fff;border:1px dashed #c8d6e4;color:#5a6b7a;
  font-size:15px;font-weight:600;line-height:1.65;text-align:center;
}
.dwg-ver{font-size:14px;font-weight:700;color:#455a64;display:flex;align-items:center;gap:7px;position:relative}
.dwg-hint{font-size:14px;font-weight:600;color:var(--muted);margin-left:auto;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}
.dwg-ver select{
  height:34px;font-size:15px;padding:0 30px 0 10px;width:auto;min-width:210px;
  background-position:right 9px center;
}
@media(max-width:640px){
  
  .dwg-stage{height:300px;min-height:200px;max-height:52vh;max-width:none}
  
  .dwg-exp-grid{grid-template-columns:1fr}
  .dwg-fld{flex-wrap:wrap}
  .dwg-hint{margin-left:0;white-space:normal;overflow:visible}
  .dwg-export{flex-direction:column;align-items:stretch}
  .dwg-tools{margin-bottom:8px}
  .dwg-viewbar .btn,.dwg-expbar .btn{flex:1 1 auto}
  .dwg-card{padding:11px;margin:12px 0 14px}
  .dwg-note{font-size:14px;padding:8px 10px;line-height:1.55}
  .dwg-tip{font-size:14px}
  
  .dwg-head{gap:6px 8px;padding-bottom:8px;margin-bottom:8px}
  .dwg-title{font-size:16px}
  .dwg-sub{font-size:13px;order:3;flex:0 0 100%;white-space:normal;overflow:visible;
    text-overflow:clip;line-height:1.45}
  .dwg-modewrap{margin-left:auto}
  
  .dwg-mode{padding:9px 10px;font-size:12.5px;min-height:34px}
  .dwg-chip{font-size:13px;padding:5px 10px}
}
.rbig .v{font-size:26px;color:#1e6fd9}

.calc-sec{margin:0 0 16px}
.calc-sec>h2{margin:20px 0 11px}
@media (max-width:640px){
  .rgrid{grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}
  .rcard{border-radius:13px;padding:9px 10px}
  .rcard .k{font-size:13.5px;margin-bottom:3px;line-height:1.35}
  .rcard .v{font-size:19px;line-height:1.25;word-break:break-all}
  .rcard .v small{font-size:13px;margin-left:2px}
  .rcard.nm .v{font-size:16px}
  .rcard .v2{font-size:13px;margin-top:2px}
  .rbig{border-radius:13px;padding:11px 12px}
  .rbig .v{font-size:23px}
  .calc-sec>h2{margin:16px 0 9px}
  .calcno{padding:9px 12px;margin-bottom:10px;border-radius:12px}
  .calcno .cn-no{font-size:17px;margin:2px 0 1px}
  .calcno .cn-meta{font-size:13.5px;line-height:1.5}
  .panel h2{font-size:20.5px;margin-bottom:9px}
}

table.dt{width:100%;border-collapse:collapse;background:#fff;border-radius:14px;overflow:hidden;font-size:16px}
table.dt th,table.dt td{padding:10px 12px;text-align:left;border-bottom:1px solid #eef2f7}
table.dt th{background:#f3f7fc;font-weight:700;color:#42566f;font-size:15px}
table.dt tr:last-child td{border-bottom:0}
table.dt td.ok{color:#16a34a;font-weight:700}
table.dt td.ng{color:var(--err);font-weight:700}
table.dt td.warn{color:#b45309;font-weight:700}

.dt-wrap{
  width:100%;overflow-x:auto;overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
  border-radius:14px;
  scrollbar-width:none;-ms-overflow-style:none;
}
.dt-wrap::-webkit-scrollbar{display:none;height:0}
.dt-wrap table.dt{width:auto;min-width:100%;white-space:nowrap}
.dt-wrap table.dt th,.dt-wrap table.dt td{white-space:nowrap}

@media (max-width:860px){
  .dt-wrap table.tbl3{width:100%;table-layout:fixed;white-space:normal;font-size:14.5px}
  .dt-wrap table.tbl3 th,.dt-wrap table.tbl3 td{
    white-space:normal;word-break:break-word;overflow-wrap:anywhere;padding:8px 7px;line-height:1.45;
  }
  .dt-wrap table.tbl3 th:nth-child(1),.dt-wrap table.tbl3 td:nth-child(1){width:34%}
  .dt-wrap table.tbl3 th:nth-child(3),.dt-wrap table.tbl3 td:nth-child(3){width:54px;text-align:center}
  .dt-wrap table.tbl3 th{font-size:14px}
}

.dt-wrap.tbl6wrap{position:relative}

@media (max-width:860px){
  .dt-wrap.tbl6wrap{overflow:visible}
  .dt-wrap table.tbl6{display:block;width:100%;white-space:normal;
    background:transparent;border-radius:0;overflow:visible}
  .dt-wrap table.tbl6 thead{display:none}
  .dt-wrap table.tbl6 tbody{display:block}
  .dt-wrap table.tbl6 tr{
    display:block;background:#fff;border:1px solid #dfe6ef;border-radius:12px;
    margin-bottom:9px;padding:10px 12px}
  .dt-wrap table.tbl6 tr[style*="background"]{border-color:#9dc0e8}
  .dt-wrap table.tbl6 tr:last-child{margin-bottom:0}
  .dt-wrap table.tbl6 td{
    display:grid;grid-template-columns:84px 1fr;gap:8px;align-items:baseline;
    padding:2px 0;border-bottom:0;white-space:normal;
    font-size:14.5px;line-height:1.5;word-break:break-word}
  .dt-wrap table.tbl6 td:nth-child(1){
    display:block;font-weight:800;color:var(--ink);font-size:15px;line-height:1.45;
    padding:0 0 7px;margin-bottom:7px;border-bottom:1px dashed #e1e9f2}
  .dt-wrap table.tbl6 td:nth-child(1) b{color:var(--ok,#2e7d32)}
  .dt-wrap table.tbl6 td::before{content:'';color:#7b8b9d;font-weight:700;font-size:13.5px}
  .dt-wrap table.tbl6 td:nth-child(2)::before{content:'计算长度 Lc'}
  .dt-wrap table.tbl6 td:nth-child(3)::before{content:'长细比 λ'}
  .dt-wrap table.tbl6 td:nth-child(4)::before{content:'临界载荷 F_cr'}
  .dt-wrap table.tbl6 td:nth-child(5)::before{content:'稳定系数 n'}
  .dt-wrap table.tbl6 td:nth-child(6)::before{content:'判定'}
}

.tips{margin-top:16px}
.tip{display:flex;gap:9px;padding:11px 13px;border-radius:13px;font-size:15.5px;margin-bottom:8px;line-height:1.55}
.tip.i{background:#eef4fe;color:#1e5aa8}
.tip.w{background:#fef7e6;color:#6b4a00}
.tip.e{background:#fdeeee;color:#a82020}
.tip.s{background:#eef9f1;color:#146c33}

.verdict{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;
         margin-top:12px;font-size:17px;font-weight:800;line-height:1.45}
.verdict .vi{flex:0 0 auto;width:30px;height:30px;border-radius:50%;display:flex;
             align-items:center;justify-content:center;font-size:19px;font-weight:900}
.verdict.ok{background:#eef9f1;color:#146c33;border:1px solid #bfe6cb}
.verdict.ok .vi{background:#2e9e56;color:#fff}
.verdict.warn{background:#fef7e6;color:#6b4a00;border:1px solid #f0dca8}
.verdict.warn .vi{background:#d99a12;color:#fff}
.verdict.err{background:#fdeeee;color:#a82020;border:1px solid #f3c9c9}
.verdict.err .vi{background:#cf3535;color:#fff}

.crit-wrap{margin-top:12px;border:1px solid #e1e9f2;border-radius:13px;background:#f8fafc;overflow:hidden}
.crit-sum{padding:11px 14px;font-size:15px;font-weight:700;color:#4a6080;cursor:pointer;
          list-style:none;display:flex;align-items:center;gap:8px;user-select:none}
.crit-sum::-webkit-details-marker{display:none}
.crit-sum::after{content:'▾';margin-left:auto;font-size:13px;color:#8fa3bb;transition:transform .18s}
.crit-wrap[open] .crit-sum::after{transform:rotate(180deg)}
.crit-body{padding:0 14px 12px}
.crit-body .tip{margin-bottom:7px;font-size:15px}

body.care{font-size:19.5px;line-height:1.75}

body.care .wrap{max-width:100%}
body.care .head h1{font-size:38px}
body.care .head .sub{font-size:15px;white-space:normal}
body.care .acct-btn{height:38px;padding:0 18px;font-size:17.5px}
body.care .tabsbar .lbl{font-size:17px}
body.care .tab{width:50px;height:50px;font-size:23px}
body.care .tabs{gap:12px}

@media(max-width:640px){
  body.care .tabs{gap:clamp(5px,2vw,12px)}
  body.care .tab{width:clamp(30px,8.4vw,50px);height:clamp(30px,8.4vw,50px);font-size:clamp(15px,4.2vw,23px)}
}
body.care .panel{padding:22px 17px 26px}
body.care .panel h2{font-size:29px}
body.care .pcount{font-size:17px}
body.care .f>label,
body.care .sp-label,
body.care .pick-way-title{font-size:21px}
body.care .pick-way-title em{font-size:18px}
body.care .fcnt{font-size:18px}
body.care input[type=text],body.care input[type=number]{height:54px;font-size:21px}
body.care .dd-btn{height:54px;line-height:52px;font-size:21px}
body.care .btn{padding:16px 24px;font-size:20.5px}
body.care .chk{padding:16px 16px}
body.care .chk span{font-size:20px}
body.care .radios label{font-size:20px;padding:15px 14px}
body.care .dd-opt{padding:13px 14px;font-size:19px}
body.care .rcard .v{font-size:28px}
body.care .rcard .k{font-size:18.5px}
body.care .unit-row,.care .grid2,.care .f{margin-bottom:16px}
body.care table th,body.care table td{font-size:19px;padding:11px 9px}
body.care .empty{font-size:20px}
body.care .tip{font-size:18px}

body.care .hint,
body.care .chk small,
body.care .dwg-hint,
body.care .dwg-note,
body.care .note{display:none !important}

.note-i{
  display:none;flex:0 0 auto;width:24px;height:24px;border-radius:50%;
  background:#f5a623;color:#fff;border:0;font-family:inherit;
  font-size:17px;font-weight:800;line-height:1;cursor:pointer;
  margin-left:8px;vertical-align:middle;
  box-shadow:0 2px 6px rgba(245,166,35,.4);
}
body.care .note-i{display:inline-flex;align-items:center;justify-content:center}
.note-i:hover{filter:brightness(.92)}

.npmask{
  position:fixed;top:0;left:0;right:0;bottom:0;inset:0;background:rgba(20,32,48,.5);z-index:200;
  display:flex;align-items:center;justify-content:center;padding:18px;
}

#acctMask{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;
  width:100%;height:100%;box-sizing:border-box;z-index:2147483646!important;
  background:transparent!important;animation:none!important;
  
  transform:translateZ(0);will-change:transform;backface-visibility:hidden;
  isolation:isolate}

#acctMask::before{content:'';position:absolute;left:0;top:0;right:0;bottom:0;
  background:#0f1a28;opacity:.55;z-index:0}
#acctMask .npdia{position:relative;z-index:1;
  box-shadow:0 18px 50px rgba(0,0,0,.32)}
.npdia{
  background:#fff;border-radius:18px;max-width:600px;width:100%;
  max-height:78vh;display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 18px 50px rgba(0,0,0,.3);
}
.nphd{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:15px 17px;border-bottom:1px solid var(--line);
  font-size:21px;font-weight:800;color:var(--ink);background:#fbfcfe;
}
.nphd button{
  width:36px;height:36px;border-radius:50%;border:1px solid #d8e0ea;background:#fff;
  font-size:24px;font-weight:700;color:#5a6b7c;cursor:pointer;font-family:inherit;line-height:1;
}
.npbd{
  padding:19px 20px 24px;overflow-y:auto;-webkit-overflow-scrolling:touch;
  font-size:20px;line-height:1.8;color:#24313f;white-space:pre-wrap;
  word-break:break-word;
}

.calcno{
  display:none;margin:0 0 13px;padding:11px 14px;border-radius:14px;
  background:linear-gradient(135deg,#f4f8ff,#eaf1ff);
  border:1px solid #d3e0f6;color:#2c4260;
}
.calcno .cn-lb{font-size:15.5px;font-weight:700;color:var(--muted)}
.calcno .cn-no{
  display:block;margin:3px 0 2px;font-size:19px;font-weight:900;color:#1e6fd9;
  letter-spacing:.6px;word-break:break-all;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
.calcno .cn-meta{font-size:14.5px;font-weight:600;color:var(--muted);line-height:1.6}
.calcno .cn-meta b{color:#2c4260;font-weight:800}

.acform{max-width:400px}
.acform .nphd{font-size:17.5px;padding:12px 14px}
.acform .nphd button{width:30px;height:30px;font-size:20px}
.acform .npbd{font-size:15.5px;line-height:1.65;padding:14px 16px 18px;white-space:normal}
.acf{margin:0 0 11px}
.acf label{display:block;font-size:14.5px;font-weight:700;color:#2c4260;margin:0 0 5px}
.acf label .opt{font-weight:600;color:#8b95a3;font-size:12.5px;margin-left:6px}
.acf input{
  width:100%;height:40px;padding:0 11px;border:1px solid #d3dce8;border-radius:8px;
  font-size:15.5px;font-family:inherit;color:var(--ink);background:#fff;box-sizing:border-box;
}
.acf input:focus{outline:none;border-color:#2f80ed;box-shadow:0 0 0 3px rgba(47,128,237,.12)}
.acf .tip{font-size:12.5px;color:var(--muted);font-weight:600;margin-top:4px}
.acbtns{display:flex;gap:9px;margin-top:14px}
.acbtns .btn{flex:1;font-size:15.5px}
.acsw{text-align:center;font-size:13.5px;color:var(--muted);font-weight:700;margin-top:11px}
.acsw a{color:#1e6fd9;cursor:pointer;text-decoration:underline;font-weight:800}
.acmsg{
  display:none;margin:0 0 11px;padding:8px 10px;border-radius:8px;font-size:13.5px;font-weight:700;
  background:#fdecec;border:1px solid #f5c2c2;color:#9b1c1c;
}
.acmsg.ok{background:#e9f8ee;border-color:#bfe6cd;color:#0f7a2e}

/* ===== 表单即时校验（2026-11-08）=====
   输入中：橙字（还在打，不算错）；离开/提交：红字 + 红边 + 轻抖。
   .acerr 只在有话说时占位，避免弹窗无端变高。 */
.acerr{display:none;margin:4px 0 0;font-size:12.5px;line-height:1.5;font-weight:700}
.acerr.warn{color:#b45309}
.acerr.error{color:#c0392b}
.acerr.ok{color:#0f7a2e}
.acerr.loading{color:#5b6b7f}
.acf.invalid input{border-color:#e06a6a!important;background:#fffafa}
.acf.invalid input:focus{border-color:#c0392b!important;box-shadow:0 0 0 3px rgba(192,57,43,.13)!important}
.acf.valid input{border-color:#7fc79b!important}
.acf.valid input:focus{border-color:#16a34a!important;box-shadow:0 0 0 3px rgba(22,163,74,.13)!important}
@keyframes acerrshake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.acerr.shake{animation:acerrshake .5s ease}
/* 关怀版（大字模式）跟着放大，否则红字比正文小一半，老人看不见 */
body.care .acerr{font-size:15.5px;line-height:1.6}
/* 会员中心「编辑资料 / 改密 / 兑换」用的是 .me-f（flex 竖排），规则同上 */
.me-f .acerr{margin-top:0}
.me-f.invalid input{border-color:#e06a6a!important;background:#fffafa}
.me-f.invalid input:focus{border-color:#c0392b!important;box-shadow:0 0 0 3px rgba(192,57,43,.13)!important}
.me-f.valid input{border-color:#7fc79b!important}

#meBody .acmsg{display:block}

@keyframes acshake{0%,100%{transform:translateX(0)}18%{transform:translateX(-6px)}38%{transform:translateX(6px)}58%{transform:translateX(-3px)}78%{transform:translateX(3px)}}
.acmsg.shake{animation:acshake .55s ease;border-color:#e08b8b}

#resBox.wm-on{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.wm-on{position:relative}
.wm-on::before{content:'';position:absolute;left:0;top:0;right:0;bottom:0;z-index:6;pointer-events:none;background-repeat:repeat;background-size:250px 148px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='250' height='148'><text x='10' y='78' font-family='Arial' font-size='23' font-weight='bold' fill='%230f3253' fill-opacity='0.13' transform='rotate(-23 125 74)'>mensam.com.cn</text><text x='10' y='112' font-family='Arial' font-size='13' fill='%230f3253' fill-opacity='0.10' transform='rotate(-23 125 106)'>液压缸选型计算器</text></svg>")}
.wm-on img,.wm-on canvas{-webkit-user-drag:none}
.wm-flash{position:fixed;left:0;top:0;right:0;bottom:0;z-index:99999;background:#0f3253;color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800;letter-spacing:.5px}
@media print{
  .wm-on::before{position:fixed!important}
  
  .wm-on ~ .wm-on::before{display:none}
}

body.acct-open{overflow:hidden}

body.acct-open{background:#0f1a28}
body.acct-open > *:not(#acctMask):not(#docMask):not(script):not(style){
  visibility:hidden!important}

body.acct-open #acctMask, body.acct-open #docMask{visibility:visible!important}

.acform .npbd{overscroll-behavior:contain}

.acgrp{margin:0 0 14px;padding:0 0 4px}
.acgrp-t{
  display:flex;align-items:center;gap:7px;margin:0 0 10px;
  font-size:14.5px;font-weight:800;color:#6b7c90;letter-spacing:.2px;
}
.acgrp-t::before{content:'';flex:0 0 auto;width:3px;height:13px;border-radius:2px;background:#2f80ed}

.acf label .req{color:#c0392b;font-weight:800;margin-left:2px}
.acf label .opt{color:#93a4b8;font-weight:700;font-size:13px;margin-left:5px}

.ac-inline{display:flex;gap:8px;align-items:center}
.ac-inline input{flex:1 1 auto;min-width:0}
.ac-inline .ac-capimg{
  flex:0 0 106px;height:42px;border:1px solid #d3dce8;border-radius:11px;
  cursor:pointer;background:#f5f7fa;object-fit:cover;display:block;
}
.ac-inline .btn{flex:0 0 auto;white-space:nowrap;height:42px;padding:0 15px}

.acpw{margin-top:7px}
.acpw-bar{height:5px;border-radius:4px;background:#e8eef6;overflow:hidden;display:flex;gap:3px}
.acpw-bar i{flex:1;background:#e8eef6;transition:background .18s ease}
.acpw-bar.i1 i:nth-child(1){background:#e5484d}
.acpw-bar.i2 i:nth-child(-n+2){background:#f5a623}
.acpw-bar.i3 i:nth-child(-n+3){background:#2f80ed}
.acpw-bar.i4 i{background:#16a34a}
.acpw-txt{margin-top:4px;font-size:13px;font-weight:700;color:var(--muted)}
.acpw-txt.bad{color:#c0392b}

.acmatch{margin-top:4px;font-size:13px;font-weight:700;display:none}
.acmatch.no{display:block;color:#c0392b}
.acmatch.yes{display:block;color:#16a34a}

.acmore{margin:0 0 13px}
.acmore>summary{
  list-style:none;cursor:pointer;user-select:none;
  font-size:14px;font-weight:800;color:#1e6fd9;
  padding:9px 12px;border:1px dashed #cddae9;border-radius:11px;background:#f7fafd;
}
.acmore>summary::-webkit-details-marker{display:none}
.acmore>summary::after{content:' ▾';color:#7f93a8}
.acmore[open]>summary::after{content:' ▴'}
.acmore-body{padding:12px 0 0}

.acperk{
  display:flex;gap:9px;align-items:flex-start;margin:0 0 4px;
  padding:11px 13px;border-radius:12px;
  background:linear-gradient(135deg,#f2f8ff,#e9f2ff);border:1px solid #d3e0f6;
}
.acperk p{margin:0;font-size:14px;font-weight:700;color:#2c4260;line-height:1.65}
.acperk b{color:#1e6fd9}

.acfoot{margin-top:4px;padding-top:13px;border-top:1px solid var(--line)}
.acbtns{display:flex;gap:10px;margin-top:0}
.acbtns .btn{flex:1;height:44px;font-size:16px;font-weight:800}
.acsw{text-align:center;font-size:14.5px;color:var(--muted);font-weight:700;margin-top:11px}
.acsw a{color:#1e6fd9;cursor:pointer;text-decoration:underline;font-weight:800}

@media (max-width:430px){
  
  .npmask{padding:6vh 10px 10px;align-items:flex-start}
  .npmask .acform{max-width:100%;max-height:92vh}
  .acform .acf input,.acform .ac-inline .btn,.acform .ac-inline .ac-capimg{height:46px}
  .acgrp-t{font-size:14px}
}

.acct-user{
  display:inline-block;color:#2c4260;font-size:17.5px;font-weight:800;white-space:nowrap;
  
  max-width:92px;min-width:0;overflow:hidden;text-overflow:ellipsis;
  flex:0 1 auto;vertical-align:bottom;
}

.foot{
  position:relative;margin:12px 0 0;padding:0;overflow:hidden;
  border-radius:12px;border-top:2px solid #2f6fb3;
  background:#222c38;color:#d5dfea;
}

/* ===== 页脚（2026-11-01 站长第 4 条：PC 端与 App／移动端完全一致）=====
   定稿形态：整体居中、单栏四行 ——
     ① 公司名（独占一行）
     ② 「15 年实体工厂 · 出口 12+国家　电话：xxx」
     ③ 网站首页 | 升级包 | 选型手册 | PDF 下载
     ④ 版权所有 © 鸣山机械 20xx · 蜀ICP备xxxx号
     ⑤ 「· 页面版 xxx」独占一行（最末，避开右下角浮动咨询按钮）
   右侧二维码整块在 PC 上也隐藏（移动端原本就 display:none），
   两端「样式 / 排版 / 内容」三者同源，不再有 PC 专有规则。
   —— 以前 PC 走 flex 两列（左信息 + 右二维码），移动端走 block 居中，
      同一份 HTML 出两种长相，站长截图对比后要求统一，故删掉 PC 那一套。 */
.foot-in{display:block;padding:11px 14px;text-align:center}
.foot-main{min-width:0}
.foot-hd{display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap;gap:0 8px}
.foot-brand{font-size:13.5px;font-weight:800;color:#fff;letter-spacing:.3px;
  white-space:nowrap;flex:0 0 100%;margin-bottom:2px}
.foot-sub{color:#93a4b8;font-size:11px;font-weight:600;white-space:nowrap}
.foot-sub .fp{display:inline-block;white-space:nowrap}
.foot-sub i{font-style:normal;color:#4b5b6d;margin:0 4px}
.foot-links{margin-top:6px;display:flex;flex-wrap:wrap;align-items:center;
  justify-content:center;column-gap:2px;row-gap:0}

.foot-links i{font-style:normal;color:#4b5b6d;margin:0 4px;font-size:11px;line-height:1}

.foot-manual{display:inline-flex;align-items:center;white-space:nowrap}
.foot-nav{color:#bcd0e4;text-decoration:none;font-size:11px;font-weight:600;
  white-space:nowrap;vertical-align:baseline;border-bottom:1px dotted #6d8095}
.foot-nav:hover{color:#fff;border-bottom-color:#bcd0e4}
.foot-dlv{display:none}

.foot-tel{white-space:nowrap;font-size:11px;font-weight:600;color:#93a4b8}
.foot-tel::before{content:none}
.foot-tel::before{content:"·";color:#4b5b6d;margin:0 5px 0 1px;font-weight:400}
.foot-tel a{color:#bcd0e4;text-decoration:none;border-bottom:1px dotted #6d8095;margin-left:2px}
.foot-tel a:hover{color:#fff;border-bottom-color:#bcd0e4}

.foot-side{display:none!important}
.foot-app-t{font-size:12.5px;font-weight:800;color:#fff;line-height:1.5;white-space:nowrap}
.foot-app-s{margin-top:2px;font-size:11px;font-weight:600;color:#93a4b8;white-space:nowrap}

.dltip-mask{position:fixed;top:0;left:0;right:0;bottom:0;z-index:2147483000;display:flex;
  align-items:center;justify-content:center;background:rgba(9,14,22,.56);padding:20px}
.dltip-mask[hidden]{display:none}
.dltip{width:100%;max-width:340px;background:#26313f;border:1px solid #3d4c61;border-radius:14px;
  box-shadow:0 18px 48px rgba(0,0,0,.5);padding:18px 18px 14px;color:#e8eef6}
.dltip-h{font-size:15.5px;font-weight:800;color:#fff;margin-bottom:10px}
.dltip-v{font-size:12.5px;color:#A8B8CC;margin-bottom:9px}
.dltip-v b{color:#fff;font-size:13.5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.dltip-note{display:block;margin:0 0 7px;padding:0 0 7px;border-bottom:1px solid #34414f;
  color:#fff;font-weight:600}
.dltip-tip{font-size:12.5px;line-height:1.75;color:#C6D4E4;margin:0 0 14px;
  background:#1e2836;border:1px solid #34414f;border-radius:9px;padding:9px 11px}
.dltip-f{display:flex;gap:9px}
.dltip-f a,.dltip-f button{flex:1 1 0;text-align:center;padding:10px 0;border-radius:9px;
  font-size:13.5px;font-weight:700;text-decoration:none;cursor:pointer;
  border:1px solid transparent;font-family:inherit;line-height:1.5}
.dltip-go{background:#2f6fb3;color:#fff}
.dltip-go:hover{background:#3a82cf}
.dltip-cancel{background:transparent;color:#A8B8CC;border-color:#42505f}
.dltip-cancel:hover{color:#fff;border-color:#5b6b7c}
@media(max-width:360px){.dltip{padding:15px 14px 12px}.dltip-h{font-size:14.5px}}

.foot-qr{flex:none;display:block;line-height:0;text-decoration:none}
.foot-qr img{display:block;width:64px;height:64px;background:#fff;border-radius:8px;padding:3px}
.foot-qr:hover img{box-shadow:0 0 0 2px #2f6fb3}

.foot-meta{
  margin-top:4px;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;
  color:#8496a9;font-size:10.5px;font-weight:600;line-height:1.4;
}
/* 「· 页面版 xxx」独占一行：原来跟在备案号后面，手机上被右下角浮动咨询按钮压住 */
.foot-build{display:block;flex:0 0 100%;margin-top:3px}
.foot-meta i{font-style:normal;color:#4b5b6d;margin:0 6px}

.foot-beian{color:#bcd0e4;text-decoration:none;border-bottom:1px dotted #6d8095}
.foot-beian:hover{color:#fff;border-bottom-color:#bcd0e4}

footer.foot .foot-main .foot-meta,
footer.foot .foot-main .foot-meta span{color:#93A6BA!important}
footer.foot .foot-main .foot-meta i{color:#67798d!important}

@media (max-width:720px){
  
  .foot-tel::before{content:none}
}
.calc-wait{
  position:fixed;top:0;left:0;right:0;bottom:0;inset:0;z-index:1200;display:none;
  align-items:center;justify-content:center;
  background:rgba(15,22,32,.42);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  opacity:0;transition:opacity .18s ease;
  touch-action:none;                 
}
.calc-wait.on{display:flex}
.calc-wait.show{opacity:1}
.cw-box{
  width:min(86vw,320px);padding:26px 22px 22px;border-radius:18px;
  background:#fff;box-shadow:0 18px 50px rgba(10,25,45,.30);
  text-align:center;position:relative;
}

.cw-spin{width:52px;height:52px;margin:0 auto 14px;position:relative}
.cw-spin i{
  position:absolute;left:50%;top:0;width:5px;height:14px;margin-left:-2.5px;
  border-radius:3px;background:#1e6fd9;transform-origin:2.5px 26px;
  animation:cwfade 1s linear infinite;
}
.cw-spin i:nth-child(1){transform:rotate(0deg);   animation-delay:-0s}
.cw-spin i:nth-child(2){transform:rotate(45deg);  animation-delay:-.125s}
.cw-spin i:nth-child(3){transform:rotate(90deg);  animation-delay:-.25s}
.cw-spin i:nth-child(4){transform:rotate(135deg); animation-delay:-.375s}
.cw-spin i:nth-child(5){transform:rotate(180deg); animation-delay:-.5s}
.cw-spin i:nth-child(6){transform:rotate(225deg); animation-delay:-.625s}
.cw-spin i:nth-child(7){transform:rotate(270deg); animation-delay:-.75s}
.cw-spin i:nth-child(8){transform:rotate(315deg); animation-delay:-.875s}
@keyframes cwfade{0%{opacity:1}100%{opacity:.12}}
.cw-t1{font-size:18px;font-weight:800;color:#1d2b3d;letter-spacing:.3px}

.cw-bar{
  height:7px;border-radius:5px;background:#e8eef6;overflow:hidden;margin:13px 0 11px;
}
.cw-bar span{
  display:block;height:100%;width:8%;border-radius:5px;
  background:linear-gradient(90deg,#2f80ed,#39b54a);
  animation:cwgrow var(--cwdur,1.6s) linear forwards;
}
@keyframes cwgrow{from{width:8%}to{width:88%}}
.calc-wait.done .cw-bar span{width:100%;transition:width .2s ease}

.cw-steps b{transition:opacity .26s ease, transform .26s ease}
.calc-wait.on .cw-steps b{transform:translateY(5px)}
.calc-wait.on .cw-steps b.cw-on{opacity:1;transform:translateY(0)}

.cw-steps{position:relative;height:23px;font-size:15.5px;font-weight:700}
.cw-steps b{
  position:absolute;left:0;right:0;top:0;
  color:#2f80ed;opacity:0;font-weight:700;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

.cw-steps b.cw-on{opacity:1}

.cw-steps b:nth-child(1){z-index:1} .cw-steps b:nth-child(2){z-index:2}
.cw-steps b:nth-child(3){z-index:3} .cw-steps b:nth-child(4){z-index:4}
.cw-steps b:nth-child(5){z-index:5} .cw-steps b:nth-child(6){z-index:6}
@media(max-width:360px){
  .cw-box{padding:22px 16px 18px}
  .cw-t1{font-size:17px}
  .cw-steps{font-size:14px}
}

.ce-mask{
  position:fixed;top:0;left:0;right:0;bottom:0;inset:0;z-index:1300;display:flex;align-items:center;justify-content:center;
  background:rgba(15,22,32,.44);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  opacity:0;transition:opacity .18s ease;padding:24px;
}
.ce-mask.show{opacity:1}
.ce-box{
  width:min(88vw,330px);background:#fff;border-radius:18px;
  box-shadow:0 18px 50px rgba(10,25,45,.30);
  padding:24px 20px 18px;text-align:center;
  transform:translateY(10px) scale(.97);transition:transform .18s ease;
}
.ce-mask.show .ce-box{transform:none}
.ce-ico{
  width:46px;height:46px;line-height:44px;margin:0 auto 12px;border-radius:50%;
  background:#fdecec;color:#d62828;font-size:26px;font-weight:900;
  border:2px solid #f7c9c9;
}
.ce-t{font-size:18px;font-weight:800;color:#1d2b3d;letter-spacing:.3px}
.ce-m{font-size:15px;line-height:1.65;color:#5a6b85;margin-top:9px;font-weight:600}
.ce-btn{
  width:100%;height:50px;margin-top:16px;border:none;border-radius:14px;
  background:#2f80ed;color:#fff;font-size:17px;font-weight:800;
  font-family:inherit;cursor:pointer;
}
.ce-btn:active{background:#1e6fd9}

.empty{text-align:center;padding:46px 16px;color:var(--muted);font-size:17.5px}

@media (max-width:640px){
  body{padding:5px 9px 8px;font-size:16px}
  .head{padding:2px 0 5px}
  .head-row{gap:6px}
  .head .brand{width:46px;height:30px}
  .head h1{font-size:22px;letter-spacing:-.2px}
  .head .sub{font-size:11.5px;margin-top:2px;letter-spacing:-.2px}
  .head .sub i{margin:0 3px}
  .panel{padding:16px 13px 20px}
  .panel h2{font-size:21.5px}
  
  .acct{margin-left:2px;gap:5px;flex:0 1 auto;min-width:104px}
  .acct-btn{font-size:14.5px}
  .acct-btn.acct-reg::before{margin-right:5px;height:11px}
  .head h1{font-size:20.5px;letter-spacing:-.4px}
  .acct-user{max-width:80px}
  .acct-tip{font-size:15px;margin-top:6px}
  
  
  .tabsbar{padding:4px 0 2px;gap:0;border-radius:0;margin-bottom:6px}
  
  
  .tabs{gap:clamp(6px,2.2vw,16px);justify-content:space-between;overflow-x:auto;padding:0 6px}
  
  
  .f>label{font-size:15.5px}
  
  
  .f-1row>label{
    flex:0 1 auto;min-width:0;max-width:58%;
    white-space:normal;overflow:visible;text-overflow:clip;
    line-height:1.2;word-break:break-word;
  }
  
  
  
  .f>label{ white-space:nowrap; overflow:visible; }
  .f>label>.fcnt{ overflow:hidden; text-overflow:ellipsis; }
  @media(max-width:360px){ .f>label{ white-space:normal; } }
  
  .f>label>.req, .f>label>.hintq{ flex:0 0 auto; }
  
  .f>label.chk, .f>label.chk span, .f>label.chk small{
    white-space:normal !important; overflow:visible !important;
    text-overflow:clip !important; word-break:break-word; overflow-wrap:anywhere;
  }
  
  .chk{padding:11px 12px}
  .chk small{font-size:14px;line-height:1.45;margin-top:3px}
  .chk.locked small::after{font-size:13px;line-height:1.5}
    .sp-row .dd{flex:1 1 auto;min-width:0}
  
  input[type=text],input[type=number]{height:42px;font-size:15.5px}
  
  input[type=text],input[type=number]{height:42px;font-size:15.5px}
  
  .dd-btn{
    
    min-height:46px;height:auto;max-height:74px;
    line-height:1.42;font-size:16px;
    padding:10px 34px 10px 12px;
    white-space:normal;overflow-wrap:anywhere;word-break:break-word;
    overflow:visible;text-overflow:clip;display:block;
  }
  
  .f>input[type=text],.f>input[type=number],.f input[type=text],.f input[type=number]{
    min-height:46px;height:auto;font-size:16px;padding:10px 12px;
  }
  
  .dd::after{top:50%;transform:translateY(-50%)}
  
  .sp-row .dd-btn{
    height:auto;min-height:47px;max-height:76px;line-height:1.4;font-size:15.5px;
    padding-top:8px;padding-bottom:8px;
    white-space:normal;overflow-wrap:anywhere;word-break:break-word;
  }
  
  
  .dd-btn>*,.dd-btn{word-break:break-word;overflow-wrap:anywhere}

.f .dd{width:100%}

.f-1row{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.f-1row>label{
  flex:0 1 auto;max-width:52%;margin-bottom:0;line-height:1.35;
}

.f-1row>input[type=text],
.f-1row>input[type=number],
.f-1row>select{
  
  flex:1 1 0;width:auto;min-width:0;
}

.f-1row>.dd{flex:1 1 0;width:auto;min-width:0}

.f-1row>.f-em{
  flex:0 0 100%;font-size:14.5px;font-weight:600;color:var(--muted);
  line-height:1.35;margin-top:-6px;
}

.f-1row>.hint:not(.rng-tip){flex:0 0 100%}

.f-1row .dd-btn{
  height:auto;min-height:51px;max-height:76px;
  padding-top:6px;padding-bottom:6px;line-height:1.35;
}

@media (max-width:360px){
  .f-1row{gap:8px}
  
  .f-1row>label{font-size:15.5px}
}
  
  .rgrid{grid-template-columns:repeat(2,1fr);gap:9px}
  .rcard .v{font-size:20px}
  .btn{padding:12px 16px;font-size:16.5px}
  
  .acts{gap:8px}
  .acts .btn{padding-left:9px;padding-right:9px}
  .acts .btn-gh{padding-left:9px;padding-right:9px}
  .acts .btn-main{font-size:15.5px;letter-spacing:-.2px}
}

@media (max-width:360px){
  
  .tabsbar{padding:3px 0 2px;gap:0}
  
  .tabs{gap:clamp(5px,2.2vw,14px);justify-content:space-between}
  
  .head .brand{width:40px}
  .acct-btn{font-size:15px}
  .acct{gap:7px;margin-left:4px}
  .head-row{gap:5px}
  .head h1{font-size:18.5px}
  .head .sub{font-size:10.5px}
  .head .sub i{margin:0 2px}
  .acts{gap:7px}
  .acts .btn{padding-left:7px;padding-right:7px;font-size:15px}
  .acts .btn-main{font-size:14.5px}
  .head-row{gap:4px;min-width:0}
  .head .brand{width:34px}
  .acct{margin-left:2px;gap:5px}
  .acct-btn{font-size:13px}
}

@media (max-width:375px){
  .acts{flex-wrap:nowrap;gap:8px}
  .acts .btn{padding-left:6px;padding-right:6px;font-size:14.5px;letter-spacing:-.3px}
  .acts .btn-gh{flex:0 0 auto;min-width:0}
  .acts .btn-main{flex:1 1 auto;min-width:0;white-space:normal;overflow:visible;
    text-overflow:clip;line-height:1.28}
  .acts.acts-multi{flex-wrap:wrap}
  .acts.acts-multi .btn{flex:0 0 auto}
}

/* 2026-11-12：删除 `@media (min-width:641px) and (max-width:900px){.tabs{max-width:372px}}`。
   372px 是 390px 手机减去左右内距后的宽度，用来防小屏七格被挤；但它一路管到 900px，
   而 721px 以上早已切换成桌面版式（.tabs 为 grid 七等分、各自 1fr）。
   于是平板上整条页签被锁在 372px 里、七格各 53px，
   「油缸选型 / 基础参数 / 工况参数…」的文字首尾粘连成一串（768/834 实测截图可见）。
   grid 的 1fr 本身就会均分，不需要这条限制：641~900 全段实测均为均分、零溢出。 */

.head-row,.head-row>*,.head h1,.head .sub,.acct,.acct-btn,
.tabsbar,.tabs,.tab,.panel h2,.pcount,
.btn,.btn-main,.btn-gh,.btn-ok,.dd-btn,
.foot-in,.foot-in *,.foot-main,.foot-hd,.foot-sub,.foot-links,.foot-side,.foot-app,.foot-app-t{min-width:0}

.head h1,.head .sub,.acct-btn,.btn,.dd-btn{max-width:100%}

.head h1,.head .sub,.acct-btn{overflow:hidden;text-overflow:ellipsis}

.btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.tabsbar{-webkit-backdrop-filter:saturate(1.15) blur(6px)}

.dwg-export,.dwg-export *,.dwg-ver,.dwg-ver *,
.dwg-expbar,.dwg-expbar *,.dwg-tools,.dwg-tools *{min-width:0}

.dwg-ver,.dwg-ver>.dd,.dwg-ver>.dd>.dd-btn{max-width:100%}
@media(max-width:640px){
  .dwg-export>.dwg-ver{width:100%}
  
  .dwg-hint{overflow-wrap:anywhere;word-break:break-word}
}

html{
  font-size:17px !important;
  -webkit-text-size-adjust:100% !important;
  text-size-adjust:100% !important;
}
body{
  -webkit-text-size-adjust:100% !important;
  text-size-adjust:100% !important;
  
  line-height:1.6 !important;
}

.wx5, .wx5 body{ -webkit-text-size-adjust:100% !important; text-size-adjust:100% !important; }
.wx5{ font-size:17px !important; }

.wx5 .head-row{flex-wrap:nowrap;justify-content:center;gap:4px}

.wx5 .head h1{font-size:clamp(15px,4.9vw,26px);letter-spacing:-.4px;
  overflow:hidden;text-overflow:ellipsis}
.wx5 .acct{margin-left:2px;gap:4px;flex:0 1 auto;min-width:0}
.wx5 .acct-btn{font-size:clamp(12.5px,3.6vw,15px);overflow:hidden;text-overflow:clip}
.wx5 .acct-btn.acct-reg::before{margin-right:4px;height:10px}
.wx5 .head .brand{width:clamp(34px,9vw,44px)}
.wx5 .head .sub{white-space:normal;overflow:visible;text-align:center;line-height:1.4;
  font-size:clamp(11px,3.3vw,13px)}

/* 2026-11-06 修正：zoom:1.12 是给手机微信补视觉尺寸的，PC 版微信窗口宽达上千像素，
   套用后整页被放大 12%，就是「文字和版面太大」的直接原因。
   这里限定只在手机宽度生效，与 index.php 里「微信 UA + 移动端 UA」双条件互为保险。 */
@media (max-width:720px){
  .wx5 body{zoom:1.12}
}

@media (max-width:340px){
  .wx5 body{zoom:1}
}

.wx5 .btn-main{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35}

@media (max-width:420px){
  .wx5 .acts{flex-wrap:nowrap;gap:8px}
  .wx5 .acts .btn{padding-left:6px;padding-right:6px;font-size:14.5px;letter-spacing:-.3px}
  .wx5 .acts .btn-gh{flex:0 0 auto;min-width:0}
  .wx5 .acts .btn-main{flex:1 1 auto;min-width:0;white-space:normal;overflow:visible;
    text-overflow:clip;line-height:1.28}
  
  .wx5 .acts.acts-multi{flex-wrap:wrap}
  .wx5 .acts.acts-multi .btn{flex:0 0 auto;white-space:nowrap}
}
.wx5 .tabs{gap:clamp(2px,.9vw,6px)}

.wx5 .chk input{width:21px;height:21px;margin-top:1px}

.wx5 .radios input[type=radio]{width:20px;height:20px}
.wx5 .tabsbar{-webkit-backdrop-filter:none;backdrop-filter:none}

.wx5 .stickyhead{position:-webkit-sticky;position:sticky}

.dr-mask{position:fixed;left:0;right:0;top:0;bottom:0;z-index:9999;
  background:rgba(18,30,48,.46);display:flex;align-items:center;justify-content:center;
  padding:18px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.dr-card{background:var(--card);border:1px solid var(--line);border-radius:20px;
  width:100%;max-width:380px;padding:20px 18px 16px;box-shadow:0 20px 50px rgba(20,35,55,.26)}
.dr-t{font-size:19px;font-weight:800;color:var(--ink);letter-spacing:-.3px;margin:0 0 8px}
.dr-b{font-size:15.5px;line-height:1.62;color:var(--muted);font-weight:600;margin:0 0 6px}
.dr-meta{font-size:14px;color:var(--muted);opacity:.82;font-weight:600;margin:0 0 16px}
.dr-acts{display:flex;gap:10px}
.dr-acts .btn{flex:1 1 0;min-width:0;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.3}
@media (max-width:360px){
  .dr-acts{flex-wrap:wrap}
  .dr-acts .btn{flex:1 1 100%}
}

.doc-mask{position:fixed;left:0;right:0;top:0;bottom:0;z-index:2147483647;display:none;
  background:rgba(18,30,48,.5);align-items:center;justify-content:center;padding:18px;
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.doc-mask.on{display:flex}
.doc-card{background:#fff;border-radius:18px;width:100%;max-width:620px;
  max-height:82vh;display:flex;flex-direction:column;
  box-shadow:0 22px 60px rgba(16,28,45,.34);overflow:hidden}
.doc-head{display:flex;align-items:center;gap:10px;padding:16px 18px 12px;
  border-bottom:1px solid #e6ecf3;flex:0 0 auto}
.doc-t{flex:1 1 auto;font-size:18.5px;font-weight:800;color:#1c2f45;letter-spacing:.3px}
.doc-x{flex:0 0 auto;width:34px;height:34px;border-radius:10px;border:1px solid #dde5ee;
  background:#f6f9fc;color:#6b7c90;font-size:22px;line-height:1;cursor:pointer;font-family:inherit}
.doc-x:hover{background:#eaf1f8;color:#33475e}
.doc-body{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:14px 20px 4px;font-size:14.5px;line-height:1.78;color:#40566e}
.doc-body p{margin:0 0 11px}
.doc-body b{color:#1c2f45}
.doc-acts{flex:0 0 auto;padding:12px 18px 16px;border-top:1px solid #e6ecf3;background:#fbfdff}
.doc-acts .btn{width:100%}
@media(max-width:430px){
  .doc-card{max-height:88vh;border-radius:14px}
  .doc-body{padding:12px 15px 4px;font-size:14px}
  .doc-t{font-size:17px}
}

.acdoc{margin:14px 0 0;padding:0;border:0;background:transparent}
.acdoc.warn{animation:acshake .32s}
@keyframes acshake{
  0%,100%{transform:translateX(0)} 20%{transform:translateX(-5px)}
  40%{transform:translateX(5px)} 60%{transform:translateX(-3px)} 80%{transform:translateX(3px)}
}
.acdoc.warn .acdoc-line{color:#c0392b}
.acdoc-line{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.7;
  font-weight:600;color:#4a5b6d}
.acdoc-line input{width:18px;height:18px;margin:2px 0 0;flex:0 0 auto;
  accent-color:#1e6fd9;cursor:pointer}
.acdoc-line span{flex:1 1 auto;min-width:0;word-break:break-word}

.acdoc-lbl{cursor:pointer}
.acdoc-a{color:#1e6fd9;text-decoration:none;font-weight:700}
.acdoc-a:hover{text-decoration:underline}
.acdoc-a.read{color:#2c7a4b}
.acdoc-hint{font-size:12px;font-weight:600;color:#8fa0b4;margin:4px 0 0 26px;line-height:1.5}
.acdoc-hint.err{color:#c0392b;font-weight:800}

.acstd{margin-top:9px;padding-top:9px;border-top:1px dashed #dde5ee}
.acstd-t{font-size:12.5px;font-weight:800;color:#2c4260;margin-bottom:5px}
.acstd-row{display:flex;gap:8px;font-size:12px;line-height:1.7;color:#5a6b7a}
.acstd-row b{flex:0 0 66px;font-weight:800;color:#3b4a5c}
.acstd-row span{flex:1 1 auto;min-width:0;font-weight:400;word-break:break-word}

.me-who{display:flex;align-items:center;gap:10px;padding:2px 0 10px}
.me-av{width:38px;height:38px;flex:0 0 38px;border-radius:50%;background:#1e6fd9;color:#fff;
  font-size:17px;font-weight:800;display:flex;align-items:center;justify-content:center}
.me-nm{font-size:15px;font-weight:800;color:#22364f}
.me-lv{font-size:12.5px;font-weight:700;color:#5a6b7a;margin-top:2px}
.me-row{display:flex;gap:8px;font-size:13px;line-height:1.9;color:#5a6b7a}
.me-row b{flex:0 0 82px;font-weight:800;color:#3b4a5c}
.me-row span{flex:1 1 auto;min-width:0;word-break:break-all}
.me-bar{height:8px;border-radius:5px;background:#e8eef6;overflow:hidden;margin-top:4px}
.me-bar i{display:block;height:100%;background:linear-gradient(90deg,#1e6fd9,#4b9bff)}
.me-use{font-size:12.5px;font-weight:700;color:#6b7c8d;margin-top:5px}
.me-lvs{display:grid;gap:8px;margin-top:2px}
.me-lv-card{border:1.5px solid #dde5ee;border-radius:10px;padding:9px 11px;background:#fff}
.me-lv-card.cur{border-color:#1e6fd9;background:#f2f7ff}
.me-lv-card.rec{border-color:#f0a02c;background:#fff9ef}
.me-lv-hd{display:flex;align-items:center;gap:8px}
.me-lv-n{font-size:14px;font-weight:800;color:#22364f}
.me-lv-p{font-size:12.5px;font-weight:700;color:#d0471e;margin-left:auto;white-space:nowrap}
.me-lv-d{font-size:12px;color:#7b8b9c;font-weight:400;margin-top:3px;line-height:1.6}
.me-tag{font-size:11px;font-weight:800;padding:1px 6px;border-radius:20px;background:#1e6fd9;color:#fff}
.me-tag.rec{background:#f0a02c}
.me-contact{margin-top:9px;padding-top:9px;border-top:1px dashed #dde5ee;
  font-size:12.5px;line-height:1.8;color:#5a6b7a}
.me-contact b{color:#3b4a5c}

.me-buy{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.me-buy button{flex:1 1 auto;min-width:76px;height:32px;border:1.5px solid #1e6fd9;background:#fff;color:#1e6fd9;
  border-radius:8px;font-size:12.5px;font-weight:800;cursor:pointer;padding:0 8px;white-space:nowrap}
.me-buy button:hover{background:#1e6fd9;color:#fff}
.me-buy button.yr{background:#1e6fd9;color:#fff}
.me-buy button.yr:hover{background:#1558b0}
.me-lv-card.lower{opacity:.62;background:#fafbfc}
.me-buy-note{font-size:12.5px;color:#8fa0b4;font-weight:600;margin-top:8px}
.paydia{max-width:400px}
.pay-amt{display:flex;align-items:baseline;justify-content:center;gap:8px;padding:2px 0 9px}
.pay-amt span{font-size:13px;color:#7b8b9c}
.pay-amt b{font-size:30px;color:#d0471e;font-weight:800;line-height:1}
.pay-meta{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;color:#5a6b7a;
  background:#f6f9fc;border-radius:8px;padding:7px 10px;margin-bottom:10px;flex-wrap:wrap}
.pay-qr{text-align:center;padding:2px 0}
.pay-qr img{border:1px solid #e6ebf2;border-radius:10px;max-height:296px;width:auto;max-width:100%}
.pay-name{text-align:center;font-size:12.5px;color:#5a6b7a;margin-top:6px}
.pay-tip{font-size:12.5px;line-height:1.7;color:#5c3d00;background:#fff8e6;border:1px solid #f0dcb4;
  border-radius:9px;padding:8px 10px;margin:10px 0}
.pay-proof{display:flex;gap:7px;margin-top:8px}
.pay-proof input{flex:1 1 auto;min-width:0;height:38px;border:1.5px solid #cfdae6;border-radius:9px;
  padding:0 11px;font-size:14px;font-weight:600;color:#22364f;background:#fff}
.pay-proof .btn{flex:none;height:38px;padding:0 14px;font-size:13.5px}
.pay-hint{font-size:12px;line-height:1.65;color:#7b8b9c;margin-top:7px}
.pay-hint b{color:#1e6fd9}
.pay-svc{text-align:center;font-size:12px;color:#8fa0b4;margin-top:9px}
.pay-ok{text-align:center;font-size:17px;font-weight:800;color:#1a7f4b;padding:12px 0 6px}
.ord-row{border:1px solid #e6ebf2;border-radius:9px;padding:8px 10px;margin-bottom:6px;font-size:12.5px;color:#3b4a5c}
.ord-sub{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:3px;color:#7b8b9c;font-size:11.5px}
.ord-st{font-style:normal;font-weight:800;padding:1px 7px;border-radius:20px;background:#eef2f7;color:#5a6b7a}
.ord-st.s1{background:#fff4e0;color:#8a5a00}
.ord-st.s2{background:#e6f7ec;color:#1a7f4b}
.ord-st.s3{background:#fdeeee;color:#b32d2d}

.stdbar{position:relative;margin-top:16px}
.stdbar-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:7px;
  height:40px;border:1.5px solid #cfdcec;border-radius:10px;background:#f6f9fd;color:#2c4260;
  font-size:13.5px;font-weight:800;cursor:pointer}
.stdbar-btn i{font-style:normal;font-size:11px;color:#7b8b9c;transition:transform .18s}
.stdbar-btn.on i{transform:rotate(180deg)}
.stdbar-pop{position:absolute;left:0;right:0;bottom:calc(100% + 6px);z-index:30;
  background:#fff;border:1.5px solid #cfdcec;border-radius:12px;
  box-shadow:0 -8px 26px rgba(23,45,72,.16);padding:12px 14px;display:none}
.stdbar-pop.on{display:block}

.doc-acts .btn:disabled{opacity:.5;cursor:not-allowed}
.doc-prog{font-size:12.5px;font-weight:700;color:#8fa0b4;margin-right:auto;padding-left:2px}
.doc-acts{display:flex;align-items:center;gap:10px}
.doc-acts .btn{width:auto;flex:1 1 auto}

#p1 #colSpec .sp-row { min-height: 51px; }
#p1 #colSpec .sp-row > button.dd-btn { min-height: 51px; }

.pcount:not(:has(b)) { visibility: hidden; }

.f:has(> .rng-sub.rng-chip) {
  display: grid;
  grid-template-columns: minmax(0,1fr) 104px;
  column-gap: 8px;
  align-items: center;
  margin-bottom: 14px;
}
.f:has(> .rng-sub.rng-chip) > label { grid-column: 1 / -1; margin-bottom: 6px; }
.f:has(> .rng-sub.rng-chip) > input { grid-column: 1; grid-row: 2; margin: 0; min-width: 0; }
.f:has(> .rng-sub.rng-chip) > .rng-chip {
  grid-column: 2; grid-row: 2; margin: 0; align-self: stretch;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px;
  height: 46px; padding: 0 6px;
  background: #eef4fa; border: 1px solid #d5e3f0; border-radius: 10px;
  color: #2c4260; font-size: 12.5px; font-weight: 800; line-height: 1.15;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  font-variant-numeric: tabular-nums; letter-spacing: 0;
}
.f:has(> .rng-sub.rng-chip) > .rng-chip::after {
  content: "常规范围"; font-size: 10px; font-weight: 600; color: #6b7c90; letter-spacing: 0;
}
.f:has(> .rng-sub.rng-chip) > .hint,
.f:has(> .rng-sub.rng-chip) > .rng-tip { grid-column: 1 / -1; }
@media (max-width: 640px) {
  .f:has(> .rng-sub.rng-chip) { grid-template-columns: minmax(0,1fr) 94px; column-gap: 6px; }
}

.fcnt.plain{color:#5E7086!important}          
.hintq{color:#4A5B70!important}               
.tab-tx{color:#177E3E!important}              
.fcnt{color:#4F6175!important}                
.head .sub i{color:#5E7086!important}         

.btn-main{background-image:linear-gradient(135deg,#1e6fd9,#155aa8)!important}  
.btn-ok{background-image:linear-gradient(135deg,#0f7a37,#0b5f2a)!important}    

footer.foot .foot-sub,
footer.foot .foot-sub i,
footer.foot .foot-links i,
footer.foot .foot-tel,
footer.foot .foot-app-s,
footer.foot .foot-meta,
footer.foot .foot-meta span,
footer.foot .foot-meta i{color:#A8B8CC!important}   

#p1 h2{color:#2E7A3B!important}
#p2 h2{color:#16688C!important}
#p3 h2{color:#155E96!important}
#p4 h2{color:#9A6200!important}
#p5 h2{color:#A02826!important}
#p6 h2{color:#5B2D72!important}
#p7 h2{color:#0B6E78!important}

.acct-user{max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  .seo-wrap{max-width:1100px;margin:18px auto 0;padding:14px 18px 16px;background:#fff;border:1px solid #e6ebf2;border-radius:16px}
  
  .seo-wrap>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;
    font-size:14.5px;font-weight:700;color:#12263F;padding:2px 0;outline:none}
  .seo-wrap>summary::-webkit-details-marker{display:none}
  .seo-wrap>summary::after{content:'展开 \25BE';font-size:12.5px;font-weight:600;color:#0f62c4;flex:none;margin-left:12px}
  .seo-wrap[open]>summary{border-bottom:1px dashed #e3e9f0;padding-bottom:10px;margin-bottom:12px}
  .seo-wrap[open]>summary::after{content:'收起 \25B4'}
  .seo-body{padding-top:2px}
  .seo-wrap h2{font-size:18px;color:#12263F;margin:0 0 10px;line-height:1.5}
  .seo-wrap h3{font-size:15px;color:#1e3a5f;margin:16px 0 6px}
  .seo-wrap p{font-size:13.5px;line-height:1.85;color:#42566f;margin:0 0 8px}
  .seo-wrap ul{margin:6px 0 0;padding-left:20px}
  .seo-wrap li{font-size:13.5px;line-height:1.85;color:#42566f;margin-bottom:4px}
  .seo-wrap .k{color:#0f62c4;font-weight:700}
  .seo-faq{border-top:1px dashed #e3e9f0;margin-top:16px;padding-top:14px}
  .h1sub{font-size:.62em;font-weight:600;color:#8fa8c8;margin-left:6px}
  @media(max-width:600px){
    .seo-wrap{margin:12px 10px 0;padding:12px 14px 14px;border-radius:12px}
    .seo-wrap>summary{font-size:14px}
    .seo-wrap h2{font-size:16px}.seo-wrap h3{font-size:14px}
    .seo-wrap p,.seo-wrap li{font-size:13px}
  }

/* ===== 需求采集卡片（页签 6「计算校核」结果下方）=====
   2026-11-01 站长拍板开启，先看效果。
   开启时修掉一个视觉瑕疵：#ndQty 是 type="number"，吃到了全站输入框的
   51px 高 / 17.5px 字 / 大圆角，和旁边三个差一整圈，四个框不在一条线上。
   这里按卡片粒度统一，不动全站 input 规则（免得影响页签 1~5 的数值框）。
   按钮：新 HTML 已把 btn-ok 换成 btn-main；这里再兜一层 btn-ok 的配色，
   防止「旧缓存 HTML + 新 CSS」时还冒出那个墨绿按钮。 */
#needCard input{
  width:100%;height:34px;padding:0 10px;font-size:13.5px;
  border:1px solid #dfe6ef;border-radius:6px;color:#3d5266;background:#fff;
  font-family:inherit;outline:none;
}
#needCard input:focus{border-color:#9db8e0;box-shadow:0 0 0 3px rgba(47,128,237,.10)}
#needCard textarea{
  width:100%;font-size:13.5px;line-height:1.55;padding:8px 10px;
  border:1px solid #dfe6ef;border-radius:6px;color:#3d5266;background:#fff;
  font-family:inherit;outline:none;
}
#needCard textarea:focus{border-color:#9db8e0;box-shadow:0 0 0 3px rgba(47,128,237,.10)}
#needCard .nd-sub{font-size:11px;line-height:1.45;color:#8a96a3;margin-top:3px}
#needCard .btn-ok,#needCard .btn-main{
  background:linear-gradient(135deg,#2f80ed,#1e6fd9);
  box-shadow:0 4px 12px rgba(47,128,237,.22);
}
@media (max-width:720px){
  #needCard input{height:40px;font-size:15.5px}
  #needCard textarea{font-size:15.5px}
}

/* ===== 页签 6 底部三按钮：窄屏重排（2026-11-01）=====
   问题：.acts .btn 是 flex:1 1 0 三份平分，390px 下每个只有 101px，
   而「← 返回修改参数」在 16.5px 字号下需要 141px —— white-space:nowrap +
   overflow:hidden + text-overflow:ellipsis，屏幕上就成了「← 返回…」。
   改法：窄屏让主操作「导图出图」独占一行（主 CTA 反而更醒目），
   另两个平分上一行；再给返回键兜一层「真放不下就换行」，不出省略号。 */
@media (max-width:560px){
  #p6 .acts{flex-wrap:wrap;gap:8px}
  #p6 .acts .btn-main{flex:1 1 100%;order:2}
  #p6 .acts .btn-gh{flex:1 1 0}
  #p6 .acts .btn-back{white-space:normal;line-height:1.2}
}

/* ===== 结果卡副行小字（2026-11-01）=====
   用途：径比 K 补「按哪个外径算的」、当量应力补判据、安全系数补要求线。
   12px 灰字，主值仍是视觉重心；窄屏降到 11px，避免 158px 卡片里折成三行。 */
.rcard .v3{font-size:12px;font-weight:600;color:#8a96a3;margin-top:4px;line-height:1.4}
@media (max-width:720px){ .rcard .v3{font-size:11px} }

/* 2026-11-06 指纹刷新：内容无实质改动，仅变更 URL 指纹以强制客户端重取上一版缓存 */

/* ===== 2026-11-06 PC 端版面收紧 =====
   站长反馈「PC 端上面的文字和版面太大」。只作用于 >720px 的桌面窗口，
   手机端一条都不动；不改结构、不改配色、不改任何交互，纯视觉收紧约 12%。
   回滚：删掉这一个 @media 块即可。 */
@media (min-width:721px){
  .wrap{font-size:15.5px}
  .head{padding:2px 0 7px}
  .head .brand{width:66px;height:43px}
  .head h1{font-size:27px;letter-spacing:.2px}
  .head .sub{font-size:12px}
  .tab{min-height:56px;padding:3px 0 6px}
}


/* =====================================================================
   以下为 2026-11-07 追加：页头重排 / 版面收拢 / 版本记录弹窗
   （源文件 assets/page.20261107h.css，整块删除即可回滚）
   ===================================================================== */
/* ============================================================================
   2026-11-07 页头重排 + 版面收拢（站长反馈：页头固定吸顶、整页松散、页头与正文两截）
   ----------------------------------------------------------------------------
   只动三件事，不动任何结构与脚本：
     1. 页头不再吸顶（position:static）—— 页头跟正文一起滚，回到「一体」的观感；
     2. 页头改成「品牌左 / 账号右 + 页签分段栏」的一条式布局，页签由漂浮圆钮
        改为等分分段栏，页头与页签共用一条白底；
     3. 版面收拢：页边距、页头高度、页签高度、卡片内边距整体收紧。
   回滚：整块删除即可，前面规则一行未改。
   ========================================================================== */

@media (min-width:721px){
  html{background:#eef2f7}
  body{padding:0;background:#eef2f7}

  .stickyhead{
    position:static;                 /* ① 取消吸顶 */
    background:#fff;
    border-bottom:1px solid #e3eaf3;
    box-shadow:0 1px 2px rgba(20,40,70,.04);
    margin:0;padding:0;
  }

  /* ---- 页头：logo + 标题组 左，账号 右 ---- */
  .head{
    max-width:none;margin:0;box-sizing:border-box;
    padding:13px 0 11px;              /* 左右留白由 .wrap 统一提供，保证与卡片严格对齐 */
    text-align:left;
  }
  .head-row{justify-content:flex-start;align-items:center;gap:12px;flex-wrap:nowrap}
  .head .brand{width:52px;height:auto;opacity:1;flex:0 0 auto}
  .head h1{
    font-size:23px;line-height:1.2;letter-spacing:.2px;font-weight:800;
    white-space:nowrap;
  }
  .head .h1sub{font-size:.58em;font-weight:600;color:#93a6bd;margin-left:7px;letter-spacing:0}
  .head .sub{
    margin:4px 0 0 64px;                 /* 与标题左端对齐（logo 52 + 间隙 12） */
    font-size:12.5px;line-height:1.3;color:#7d8fa3;letter-spacing:.2px;
    white-space:nowrap;text-align:left;
  }
  .head .sub i{margin:0 8px;color:#d2dbe8}
  .head .acct-tip{margin:4px 0 0 64px;font-size:12px}

  /* ---- 账号：两个轻量按钮，与标题同高 ---- */
  .acct{margin-left:auto;gap:8px;align-items:center;min-width:0}
  .acct-btn{
    font-size:13.5px;font-weight:700;line-height:1;
    padding:8px 15px;border-radius:8px;
    border:1px solid #d6e0ee;background:#fff;color:#1e6fd9;
    transition:background .15s,border-color .15s,color .15s,box-shadow .15s;
  }
  .acct-btn:hover{background:#f3f8ff;border-color:#b9cdea;text-decoration:none}
  .acct-btn.acct-reg{
    background:#1e6fd9;border-color:#1e6fd9;color:#fff;
    box-shadow:0 2px 6px rgba(30,111,217,.22);
  }
  .acct-btn.acct-reg::before{content:none}
  .acct-btn.acct-reg:hover{background:#1a63c4;border-color:#1a63c4}

  /* ---- 页签：等分分段栏，与页头同一条白底 ---- */
  .tabsbar{
    max-width:none;margin:0;box-sizing:border-box;
    padding:0;background:transparent;border:0;border-radius:0;
    border-top:1px solid #eef3f9;
  }
  .tabs{
    display:grid;grid-template-columns:repeat(7,1fr);gap:0;
    padding:2px 0 0;overflow:visible;
  }
  .tab{
    max-width:none;min-height:0;
    gap:5px;padding:8px 2px 9px;margin:0;
    border-radius:8px 8px 0 0;
    opacity:1;
  }
  .tab:hover{background:#f7fafd}
  .tab-ico{
    width:28px;height:28px;border-radius:9px;
    filter:saturate(.72) opacity(.88);
    transition:filter .18s,transform .18s,box-shadow .18s;
  }
  .tab-ico svg{width:16px;height:16px}
  .tab-tx{font-size:12.5px;letter-spacing:0;color:#5e7186;line-height:1.2;font-weight:600}
  .tab.on{background:#f6f8fb;opacity:1}
  .tab.on .tab-ico{filter:none;transform:none;box-shadow:0 2px 6px rgba(24,45,72,.16)}
  .tab.on .tab-tx{font-weight:800}
  .tab.on::after{
    left:0;right:0;width:auto;transform:none;
    height:3px;border-radius:3px 3px 0 0;bottom:0;opacity:1;
  }

  /* ---- 正文：收拢留白 ---- */
  .wrap{max-width:920px;margin:0 auto;box-sizing:border-box;padding:10px 20px 34px}
  #p1,#p2,#p3,#p4,#p5,#p6,#p7{border-radius:16px;box-shadow:0 1px 3px rgba(20,40,70,.05)}
  .panel{padding:15px 18px 18px}
  .panel h2{font-size:21px;margin:0 0 12px}
  .f{margin-bottom:12px}
  .f>label{font-size:15px;margin-bottom:6px}
  .hint{font-size:13.5px;margin-top:5px}
}

/* ---------- M 端：页头不吸顶，与正文同宽同底，收成一块 ---------- */
@media (max-width:720px){
  .stickyhead{
    position:static;
    background:#fff;
    border:1px solid #e3eaf3;
    border-radius:14px;
    box-shadow:0 1px 2px rgba(20,40,70,.04);
    padding:6px 9px 4px;                 /* 底部留 4px，页签文字不贴卡片下沿 */
    margin:0 0 9px;
  }
  .head{padding:3px 2px 7px;text-align:left}
  .head-row{justify-content:flex-start;gap:7px}
  .head .brand{width:36px;height:auto;opacity:1}
  .head h1{font-size:18px;line-height:1.25}
  .head .sub{margin:2px 0 0 43px;font-size:11px;text-align:left;white-space:normal}
  .acct{margin-left:auto;gap:2px;min-width:0}
  .acct-btn{font-size:13px;padding:4px 6px}
  .acct-btn.acct-reg::before{margin-right:6px}

  .tabsbar{margin:0;padding:0;border-top:1px solid #eef3f9}
  .tabs{display:grid;grid-template-columns:repeat(7,1fr);gap:0;padding:0}
  .tab{max-width:none;min-height:0;gap:4px;padding:6px 0 7px;opacity:1;border-radius:6px 6px 0 0}
  .tab-ico{width:26px;height:26px;border-radius:8px;filter:saturate(.2) opacity(.75)}
  .tab-ico svg{width:15px;height:15px}
  .tab-tx{font-size:10.5px;letter-spacing:0;color:#5e7186;font-weight:600}
  .tab.on .tab-ico{filter:none;transform:none;box-shadow:0 2px 5px rgba(24,45,72,.16)}
  .tab.on .tab-tx{font-weight:800}
  .tab.on::after{left:0;right:0;width:auto;transform:none;height:3px;border-radius:3px 3px 0 0;bottom:0}
  /* 手机微信有 zoom:1.12（等效可用宽度只剩 348px 左右），七格等分时标签会挤，
     这里把微信内的字号与字距再收一档，保证「安装配置 / 计算校验」不粘连。 */
  .wx5 .tab-tx{font-size:9.4px;letter-spacing:-.2px}
  .wx5 .tab{gap:3px;padding:5px 0 6px}
  .wrap{padding-top:0}
  .panel{padding:14px 13px 18px}
  .panel h2{font-size:20px;margin:0 0 11px}
}

/* 2026-11-07：10-21 的对比度补丁把 .tab-tx 固定成绿色（#177E3E!important），
   于是七个页签文字全绿、下划线却七彩，看着花。这里改成：
   未选中 = 中性灰（对白底约 5.4:1，仍满足 AA），选中 = 品牌蓝 + 蓝色下划线；
   图标保留各分类色 —— 颜色只用来区分分类，不用来区分状态。 */
.tab-tx{color:#5f7185!important}
.tab.on .tab-tx{color:#1b5fbe!important}
.tab.on::after{background:#1e6fd9!important}

/* 2026-11-12：删除 2026-11-07 的 `.stickyhead{position:static!important}`。
   它与文件末尾 2026-11-09「恢复吸顶」的 `.wrap>.stickyhead{position:sticky!important}`
   是一对直接打架的声明：后者特异性(0,2,0)高于前者(0,1,0)，前者从未真正生效，
   却让后来的人两次误判「吸顶坏了」。渲染结果不变，只把这条死规则拿掉。 */

/* ---------- 版本更新记录弹窗（2026-11-07 新增，页脚「检查更新」） ---------- */
.vermask{
  position:fixed;left:0;top:0;right:0;bottom:0;
  z-index:2147483645;                  /* 高于客服浮层(2147482000/2147483600)，低于声明弹层(…647) */
  background:rgba(16,32,52,.46);
  display:flex;align-items:center;justify-content:center;
  padding:20px;
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
}
.vermask[hidden]{display:none}
.verbox{
  width:min(660px,100%);max-height:min(82vh,760px);
  display:flex;flex-direction:column;
  background:#fff;border-radius:16px;overflow:hidden;
  box-shadow:0 24px 60px rgba(10,25,45,.3);
}
.verhead{
  display:flex;align-items:flex-start;gap:12px;
  padding:17px 20px 13px;border-bottom:1px solid #eef3f9;
}
.verhead-t h3{margin:0;font-size:18px;font-weight:800;color:#22364f;letter-spacing:.2px}
.versub{margin:5px 0 0;font-size:12.5px;color:#7d8fa3}
.versub b{color:#1e6fd9;font-weight:800}
.verx{
  margin-left:auto;flex:0 0 auto;width:28px;height:28px;border:0;border-radius:8px;
  background:#f3f6fa;color:#7086a0;font-size:18px;line-height:1;cursor:pointer;
}
.verx:hover{background:#e8eef6;color:#33465e}
.verlist{overflow:auto;padding:4px 20px 6px}
.verrow{padding:13px 0;border-bottom:1px dashed #e9eff7}
.verrow:last-child{border-bottom:0}
.verrow-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vtag{font-size:14.5px;font-weight:800;color:#3c5570;letter-spacing:.2px}
.vdate{font-size:12px;color:#8b9bad}
.vstage{
  font-size:11px;font-weight:700;padding:1.5px 8px;border-radius:20px;
  background:#eef3fa;color:#5a7593;
}
.vnew{font-size:10.5px;font-weight:800;padding:1.5px 8px;border-radius:20px;background:#16a34a;color:#fff}
.vget{
  margin-left:auto;font-size:12.5px;font-weight:700;color:#1e6fd9;text-decoration:none;
  border:1px solid #cfe0f5;background:#fff;border-radius:7px;padding:4px 10px;white-space:nowrap;
}
.vget:hover{background:#f2f8ff;border-color:#a9c9ee}
.vget em{font-style:normal;font-weight:600;font-size:11px;color:#8b9bad}
.verrow.on{background:#f6faff;margin:0 -20px;padding:13px 20px;border-bottom-color:#e3eefb}
.verrow.on .vtag{color:#0f57b5}
.verrow.on .vstage{background:#e3f0ff;color:#1e6fd9}
.vnotes{margin:8px 0 0;padding-left:17px;font-size:12.8px;line-height:1.68;color:#4a5b6e}
.vnotes li{margin:2px 0}
.verempty{margin:26px 0;text-align:center;color:#8b9bad;font-size:13px}
.verfoot{
  display:flex;align-items:center;gap:12px;
  padding:12px 20px;border-top:1px solid #eef3f9;background:#fbfcfe;
}
.vermore{font-size:12px;color:#6b7f95;text-decoration:none;border-bottom:1px dotted #b9c8da}
.vermore:hover{color:#1e6fd9;border-bottom-color:#1e6fd9}
.verok{
  margin-left:auto;font-family:inherit;font-size:13.5px;font-weight:700;
  color:#fff;background:#1e6fd9;border:0;border-radius:8px;padding:9px 20px;cursor:pointer;
}
.verok:hover{background:#1a63c4}
@media (max-width:720px){
  .vermask{padding:0;align-items:flex-end}
  .verbox{width:100%;max-height:88vh;border-radius:16px 16px 0 0}
  .verhead{padding:14px 15px 11px}
  .verhead-t h3{font-size:16.5px}
  .verlist{padding:2px 15px 4px}
  .verrow.on{margin:0 -15px;padding:12px 15px}
  .vnotes{font-size:12.3px}
  .verfoot{padding:10px 15px 12px;flex-wrap:wrap}
  .vermore{font-size:11.5px}
  .verok{padding:8px 16px}
}

/* ================= 布局防晃（2026-11-08 · 彻底解决页面晃动）=================
 * 病根：Windows 桌面 Chrome/Edge 的经典滚动条占 15~17px 宽。
 *   (1) 文档高度在视口临界点上下变化（结果展开/收起、弹层开合、列表异步加载）
 *       -> 滚动条出现/消失 -> 居中版式(.wrap{margin:0 auto})整体左右横移；
 *   (2) 弹层（账号/协议弹窗）打开时代码执行 html/body overflow:hidden 锁滚动
 *       -> 滚动条被摘掉 -> 内容右移一截，关掉又移回来 —— 即反复「晃动」。
 * 修复：html 预留滚动条槽位(scrollbar-gutter:stable) —— 无论滚动条在与不在，
 *   槽位永远占位，内容横向位置恒定。本地实测：锁滚动前后 .wrap X 坐标 92.5->92.5。
 * 旧内核回退：不支持 scrollbar-gutter 时改为常显滚动条(overflow-y:scroll)，效果等价。 */
html{scrollbar-gutter:stable}
@supports not (scrollbar-gutter: stable){ html{overflow-y:scroll} }
/* 页签徽标：等宽数字，计数刷新不再引起页签宽度微跳 */
.fcnt{font-variant-numeric:tabular-nums}

/* ================= 页头第一行居中（2026-11-08 · 站长要求）=================
 * 问题：2026-11-07 页头重排把 .head-row 改成 justify-content:flex-start（品牌左 /
 *   账号右），站长要求第一行回居中；且 logo 大图竖向跨过标题行与副题行（占两行）。
 * 修复：第一行（logo + 标题 + 会员名/退出）整体水平居中；logo 压到单行高度随行排列；
 *   副题行、账号提示行不再向右缩进，跟随居中。
 * 回滚：删掉本块即可，其余规则一行未改。
 * 位置：必须在文件最末 —— 级联同权重按源顺序取胜，本块要压过 11-07 重排块。 */
.head{text-align:center}
.head-row{justify-content:center}
.head .brand{width:auto;height:30px}
.head .sub{margin-left:0;margin-right:0;text-align:center}
.head .acct-tip{margin-left:0;margin-right:0;text-align:center}
.acct{margin-left:4px}
@media (max-width:720px){
  .head .brand{height:26px}
  .head .sub{white-space:nowrap}
}

/* ================= 弹窗层级高于客服悬浮球（2026-11-08）=================
 * #msbot-btn（右下角「在线咨询」）z-index:2147482000，付款/账户弹窗只有 200，
 * 手机上「提交单号」按钮正好被客服球压住，点不到。抬到客服球之上、
 * 账号弹窗与 toast 之下。回滚：删掉本块即可。 */
#payMask,#meMask{z-index:2147482500}

/* ==================================================================
   2026-11-09 · 页头 + 七个页签整块恢复吸顶（站长要求）
   三修（同日）：真机复测「上下拖动整个界面仍抖得厉害」，逐条撤/改 v2 的三处：
     ① html{overflow-x:clip}：根元素动 overflow 会把视口滚动从合成器拉回主线程，
        iOS/安卓 X5 尤其明显，手指一拖整页掉帧发抖 —— 撤掉。铺满改由
        margin-inline:calc(50% - 50vw) 自身保证（手机端实测 scrollWidth==clientWidth）。
     ② translateZ(0) 提层：sticky 元素自带合成层在 iOS/微信 X5 上会让吸顶条
        随滚动手抖 —— 撤掉，transform:none。
     ③ Chromium 的滚动锚（overflow-anchor）与吸顶条同屏会来回校正，表现为整页
        上下哆嗦 —— 对吸顶条禁用滚动锚。
   另：触屏 :active 取消过渡动画（按下闪一下也算抖）；.radios label 的
   transition:all 改为只过渡颜色类属性，尺寸/位移不再被动画。
   回滚：整块删除即可，前面规则一行未改。
   ================================================================== */
.wrap>.stickyhead,
.wx5 .wrap>.stickyhead{
  position:-webkit-sticky!important;
  position:sticky!important;
  top:0!important;
  z-index:150!important;
  background:#fff!important;
  border-radius:0!important;
  border-bottom:1px solid #dfe7f1!important;
  box-shadow:0 1px 4px rgba(20,40,70,.06)!important;
  -webkit-transform:none!important;
  transform:none!important;
  will-change:auto!important;
  -webkit-backface-visibility:visible!important;
  backface-visibility:visible!important;
  overflow-anchor:none;
}
/* 吸顶条内部一律关掉毛玻璃/滤镜：滚动时它们每帧采样背后内容，弱 GPU 必掉帧 */
.wrap>.stickyhead,
.wrap>.stickyhead *{
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
  -webkit-filter:none!important;
  filter:none!important;
}
/* 页签条不是滚动容器（overflow-x:auto 会让 overflow-y 算成 auto，手势陷阱） */
.wrap>.stickyhead .tabs{
  overflow:visible!important;
  -webkit-overflow-scrolling:auto!important;
  overscroll-behavior:auto!important;
}
@media (max-width:720px){
  .wrap>.stickyhead,
  .wx5 .wrap>.stickyhead{
    margin-block:0!important;
    /* 2026-11-12 修复「界面会浮动/左右摇」：
       原写法 margin-inline:calc(50% - 50vw) + padding:calc(50vw - 50%)，
       是把吸顶条撑满到视口边缘（抵消 body 的左右内距）。平时刚好等宽，
       但在微信里 body 被 zoom:1.12 放大后，vw 与百分比不再属于同一坐标系：
       实测 390px 视口下吸顶条被算成 436.8px、left=-23.4px，
       整页 scrollWidth=413 > clientWidth=390 —— 手指左右一划整页平移 23px，
       就是客户说的「页面在摇／在浮」。安卓、iOS Safari 全部复现。
       改用与 body 左右内距同值的固定量（移动端 body padding 为 9px）：
       9px 属于布局单位，zoom 会一起缩放，任何机型都正好铺满、零溢出
       （320/360/390/430/480 × 微信/安卓/iOS 实测 overflow 全为 0）。 */
    margin-inline:-9px!important;
    padding-left:9px!important;
    padding-right:9px!important;
    border-left:0!important;
    border-right:0!important;
    border-top:0!important;
  }
}
/* 触屏：按下的元素不缩放、不过渡，只留按压底色反馈 */
@media (hover:none){
  .tab:active,.btn:active,.ebtn:active,
  .radios label:active,.dd-btn:active{
    transform:none!important;
    transition:none!important;
  }
  .tab:active{background:#eef4fb!important}
}
/* transition:all 会把尺寸/位移变化也动画掉，滚动经过时一闪一闪 */
.radios label{
  transition:background-color .15s,border-color .15s,box-shadow .15s!important;
}

/* 三修补丁：未吸时条顶与视口顶不得有落差 —— body/.wrap 的顶部留白会让
   吸/不吸的瞬间上下跳 5~10px，反复拖动就是肉眼的「抖」。留白移进条内：
   条内容视觉位置不变（6+5=11px），条顶齐住视口顶，吸住时零位移。 */
body{padding-top:0!important}
.wrap{padding-top:0!important}
.wrap>.stickyhead,
.wx5 .wrap>.stickyhead{padding-top:11px!important}

/* ==================================================================
   2026-11-12（第三轮）：整页「浮动 / 摇动」的最后一层兜底
   ------------------------------------------------------------------
   现场视频（安卓 App 内 WebView，640×1422，逐帧相位相关测算）得到两条事实：
     ① 页头被视口顶部裁掉、随内容一起上下走 —— sticky 在该内核里没有生效
        （或旧缓存里的 static 还在）。位移与内容逐帧相等（差 0~2px）。
     ② 一个周期净位移≈0：手指在顶部小幅搓动时整页被 overscroll 拉走 27px
        又弹回，约 5 帧一次 —— 这就是肉眼看到的「浮」和「摇」。
   对策分两层，任一层失效另一层仍成立：
     A. 关掉整页橡皮筋（overscroll-behavior）与滚动锚定回弹
        （overflow-anchor:none）—— 两者都会在滚动中产生非用户意图的位移。
     B. sticky 运行时兜底：JS 一旦发现「吸顶没生效」，给 body 打
        data-shfix="1"，本段立刻把页头换成 fixed + 等高占位。
        fixed 由合成器按视口直接定位，不存在「吸住 / 没吸住」的中间态。
   为何必须 !important：文件上方已有 `.wrap{padding-top:0!important}`（0,1,0），
   这里的 body[data-shfix="1"] .wrap 是 (0,2,1)，能压过它。
   PC 端 sticky 实测正常，不会触发 data-shfix，故本段收在 900px 以内，
   保证桌面版一个字都不变。回滚：整段删除即可。
   ================================================================== */
html,body{overscroll-behavior-y:none}
html{overflow-anchor:none}

@media (max-width:900px){
  body[data-shfix="1"] .wrap>.stickyhead,
  body[data-shfix="1"] .wx5 .wrap>.stickyhead{
    position:fixed!important;
    top:0!important;
    left:0!important;
    right:0!important;
    width:auto!important;
    margin-inline:0!important;
    padding-left:9px!important;
    padding-right:9px!important;
  }
  body[data-shfix="1"] .wrap{
    padding-top:var(--shh,0px)!important;
  }
}

/* 2026-11-12：底部行动条在 381–413px 这一段主按钮放不下文案。
   实测 390px：.acts 宽 344，按 flex:1.35 : 1 分给主按钮 189px，
   而「下一步：油缸基础参数 →」在 15.5px 下需要 195px —— 被 text-overflow
   截成「下一步：油缸基础参…」；380px 下更窄（183px）。
   这一段把比例改成 2 : 1（390 下主 224 / 重置 112），
   文案完整且主操作更突出。414px 以上本来就放得下，360px 以下走另一套字号，
   都不受影响。回滚：删除本段。 */
@media (min-width:376px) and (max-width:413px){
  .acts .btn-main{flex:2 1 0}
}

/* ======================================================================
   2026-11-13 版式修复包 —— 页签 6「密封系统」/ 页签 7「导图出图」
   ----------------------------------------------------------------------
   实测方式：无头 Chromium 打开线上页，四档视口（1440 / 768 / 390 / 360）
   逐个元素比 scrollWidth 与 clientWidth、右边界与视口边界。现象与结论：

   [页签 6] 密封系统卡片被 .ss-chk 的固定两列网格撑到 465px（视口 390），
            右侧整列校核格跑到屏幕外 —— 就是「密封系统排版乱套」的直接原因。
            另有 .ss-spec-n（规格列）在 PC 上也差 21px，文字被切掉尾巴。
   [页签 7] ① 导出区所有 .dwg-hint 说明被压成单行 + 省略号，
              #wmExpNote 溢出 74px@1440、241px@768；
            ② 图纸抬头 #dwgMeta 在 768 下差 68px 被截断；
            ③ 8 个视图按钮排成一条横向滚动条，390 屏有 4 个永远在屏外；
            ④ 缩放条 4 个按钮不收缩，「−」被挤到第二行单独一个；
            ⑤「← 返回计算结果」「下载密封选型校核单（HTML/PDF）」
              「导出三维模型 JSON」按钮文案被截断。

   根因统一为「容器能缩、内容不缩」：断点只写到大类，没有针对这些
   多列/多按钮组件单独收口。本段只做覆盖与作用域收窄，不改任何上方
   既有声明，回滚即删除整段。
   ====================================================================== */

/* ① 收窄 .dwg-hint 的 nowrap。
      原第 881 行把 margin-left:auto + nowrap + ellipsis 写成了全局选择器，
      本意只作用于 .dwg-ver（图纸版本那行右侧的灰字），结果导出区
      每一条说明都被压成一行并以「…」收尾。这里把通用提示恢复为可换行，
      再把 nowrap 精确还给 .dwg-ver。 */
.dwg-hint{margin-left:0;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.dwg-ver>.dwg-hint{margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}

/* ② 图纸抬头允许折行（768 平板下原本被省略号吃掉 68px 的图元信息） */
.dwg-sub{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.55}

/* ③ 密封校核单导出的两个按钮：等宽、允许文案折行，不再一长一短 */
.ss-zone-c .btn{flex:1 1 0;min-width:0;white-space:normal;line-height:1.35;
  height:auto;min-height:46px;padding-top:10px;padding-bottom:10px}

/* ④ 底部多按钮条（导出 DXF / BOM / 三维模型…）允许文案折行 */
.exp-acts .btn{white-space:normal;line-height:1.3;height:auto}

/* ⑤ 宽度 ≤640：组件级断点 */
@media (max-width:640px){
  /* 视图按钮改为换行排列，8 个标签全部可见（原来是横滑，屏外看不见） */
  .dwg-views{flex-wrap:wrap;overflow-x:visible;row-gap:6px}
  .dwg-vbtn{flex:1 1 auto;min-width:calc(33.333% - 5px);padding:7px 6px;
    font-size:13px;text-align:center}

  /* 缩放条 4 键等分一行，「−」不再掉到第二行 */
  .dwg-viewbar{flex-wrap:nowrap}
  .dwg-viewbar .btn{flex:1 1 0;min-width:0;padding-left:4px;padding-right:4px}

  /* 导出四键：两列两行，比单列四行短一半，比三列不空半格 */
  .dwg-exp-btns{grid-template-columns:1fr 1fr;gap:8px}
}
@media (max-width:430px){
  .dwg-exp-btns{grid-template-columns:1fr 1fr}
  /* 底部行动条：字号收一档，文案不再被截断 */
  .acts .btn{font-size:14.5px;letter-spacing:-.2px}
  .acts .btn-gh{padding-left:9px;padding-right:9px}
}

/* ⑥ 收尾微调：上面几处改完仍有 3~7px 的溢出，按实测值再压一档 */
@media (max-width:640px){
  /* 缩放条四键等分后每个约 80px，「放大看字」在 15px 下差 6px */
  .dwg-viewbar .btn{font-size:13.5px}
  /* 导出 DXF / BOM / 三维模型 JSON：文案折行，不再差 3~4px 被切 */
  .exp-acts .btn{font-size:14px;padding-left:10px;padding-right:10px}
}
@media (max-width:430px){
  /* 390：主按钮 1.35 份抢走了「← 返回计算结果」需要的宽度，改回等分 */
  .acts .btn-main{flex:1 1 0}
  .acts .btn-gh{flex:0 0 auto;min-width:0;font-size:14px;padding-left:8px;padding-right:8px}
}

/* ⑦ 提示块里的长公式（σ_eq=√(σ_h²+σ_t²…)）不会断行，390 下溢出 70px */
.tip>div{min-width:0;overflow-wrap:anywhere;word-break:break-word}

/* ⑧ 收尾：剩余 3~34px 的零星截断，逐条对位处理 */
.tip{overflow-wrap:anywhere}
.acts.acts-multi .btn{white-space:normal;line-height:1.3;height:auto}
@media (max-width:900px){
  .f>label small{white-space:normal;overflow-wrap:anywhere}
  .ss-btn.pri{padding-left:10px;padding-right:10px}
  .panel h2{flex-wrap:wrap}
  .panel h2>span:first-child{white-space:normal;overflow:visible}
}
@media (max-width:640px){
  /* 密封校核单导出两键：整行排布，长文案一行放得下（等分时会被折成三行） */
  .ss-zone-c .btn{flex:1 1 100%}
}

/* ⑨ 最后三处 4~6px 的残留（窄屏标题/标签允许整词换行，按钮再收半档字号） */
@media (max-width:640px){
  .panel h2>span{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
}
@media (max-width:430px){
  .f>label>.lb-tx{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
}
@media (max-width:900px){
  .ss-btn.pri{font-size:14.5px;padding-left:8px;padding-right:8px}
}
